Powered By Blogger

martes, 11 de noviembre de 2014

6.8 Cifrado


Existen muchas defensas frente a los ataques informáticos, que abarcan toda la gama que va desde la metodología a la tecnología. La herramienta de carácter mas general que esta a disposición de los usuarios y de los diseñadores de sistemas es la criptografia. En esta sección vamos a explicar algunos detalles acerca de la criptografia y de su uso en el campo de la seguridad informática.

En una computadora aislada, el sistema operativo puede determinar de manera fiable quienes son el emisor y el receptor de todas las comunicaciones interpretaros, ya que el sistema operativo controla todos los canales de comunicaciones de la computadora. En una red de computadoras, la situación es bastante distinta. Una computadora conectada a la red recibe bits desde el exterior, y no tiene ninguna forma inmediata y fiable de determinar que maquina o aplicación ha enviado esos bits. De forma similar, la propia computadora envía bits hacia la red sin tener ninguna forma de determinar quien puede llegar a recibirlos.

Comúnmente, se utilizan las direcciones de red para inferir los emisores y receptores potenciales de los mensajes que circulan por la red. Los paquetes de red llegan con una dirección de origen, como por ejemplo una dirección IP. Y cuando una computadora envía mensajes, indica quienes es el receptor pretendido del mismo especificando una dirección de destino. Sin embargo, para aquellas aplicaciones en que la seguridad tenga importancia, correríamos el riesgo de meternos en problemas si asumiéramos que la dirección de origen o de destino de un paquete permite determinar con fiabilidad quien a enviado o recibido dicho paquete. Una computadora maliciosa podría enviar un mensaje con una dirección de origen falsificada y, asimismo, otras muchas computadoras distintas de la especificada por la dirección de destino podrían (y normalmente hacen) recibir un paquete. Por ejemplo, todos los encaminadores ubicados en la ruta hacia el destino recibirán también el paquete. ?como puede, entonces, decidir el sistema operativo si debe conceder una solicitud, cuando no puede confiar en el origen especificado en dicha solicitud? ?y como se supone que debe proporcionar protección para una solicitud o para un conjunto de datos, cuando no puede determinar quien recibirá la respuesta o el contenido del mensaje que envié a través de la red?

Generalmente, se considera impracticable construir una red (de cualquier tamaño) en la que se pueda “confiar” en este sentido en las direcciones de origen y destino de los paquetes. Por tanto, la única alternativa es eliminar, de alguna manera, la necesidad de confiar en la red; este es el trabajo de la criptografia. Desde un punto de vista abstracto, la criptografia se utiliza para restringir los emisores y/o receptores potenciales de un mensaje. La criptografia moderna se basa en una serie de secretos, denominados clave , que se distribuyen selectivamente a las computadoras de una red y se utilizan para procesar mensajes. La criptografia permite al receptor de un mensaje verificar que el mensaje ha sido creado por alguna computadora que posee una cierta clave: esa clave es el origen del mensaje. De forma similar, un emisor puede codificar su mensaje de modo que solo una computadora que disponga de una cierta clave pueda decodificar el mensaje, de manera que esa clave se convierte en el destino . Sin embargo, a diferencia de las direcciones de red, las claves están diseñadas de modo que no sea computacionalmente factible calcularlas a partir de los mensajes que se hayan generado con ellas, ni a partir de ninguna otra información publica. Por tanto, las claves proporcionan un medio mucho mas fiable de restringir los emisores y receptores de los mensajes. Observe que la criptografia es un campo de estudio completo por derecho propio, con una gran complejidad; aquí, vamos a explorar únicamente los aspectos mas importantes de aquellas partes de la criptografia que se relacionan con los sistemas operativos.

6.7 Validación y amenazas del sistema


• Identificar cada usuario que esta trabajando en el sistema (usando los recursos).


• Uso de contraseñas.
Vulnerabilidad de contraseñas.


o Que sean complejas y difíciles de adivinar.
o Cambiarlas de vez en cuando.
o Peligro de perdida del secreto.


• La contraseña debe guardare cifrada.


Protección por Contraseña


Las clases de elementos de autentificacion para establecer la identidad de una persona son:


Algo sobre la persona:


Ej.: huellas digitales, registro de la voz, fotografía, firma, etc.
Algo poseído por la persona:
Ej.: insignias especiales, tarjetas de identificación, llaves, etc.
Algo conocido por la persona:
Ej.: contraseñas, combinaciones de cerraduras, etc.


El esquema mas común de autentificacion es la protección por contraseña:


El usuario elige una palabra clave , la memoriza, la teclea para ser admitido en el sistema computarizado:


La clave no debe desplegarse en pantalla ni aparecer impresa.


La protección por contraseñas tiene ciertas desventajas si no se utilizan criterios adecuados para:


Elegir las contraseñas.


Comunicarlas fehaciente mente en caso de que sea necesario.
Destruir las contraseñas luego de que han sido comunicadas.
Modificarlas luego de algún tiempo.


Los usuarios tienden a elegir contraseñas fáciles de recordar:


Nombre de un amigo, pariente, perro, gato, etc.


Numero de documento, domicilio, patente del auto, etc.


Estos datos podrían ser conocidos por quien intente una violación a la seguridad mediante intentos repetidos, por lo tanto debe limitarse la cantidad de intentos fallidos de acierto para el ingreso de la contraseña.


La contraseña no debe ser muy corta para no facilitar la probabilidad de acierto.


Tampoco debe ser muy larga para que no se dificulte su memorización, ya que los usuarios la anotarían por miedo a no recordarla y ello incrementaría los riesgos de que trascienda.


Contraseñas de un solo uso


• Al final de cada sesión, se le pide al usuario que cambie la contraseña.


• Si alguien “roba una contraseña”, el verdadero usuario se dará cuenta cuando vaya a identificarse de nuevo, pues el impostor habrá cambiado la contraseña, con lo que el fallo de seguridad queda detectado.


Verificación de Amenazas


Es una técnica según la cual los usuarios no pueden tener acceso directo a un recurso :


Solo lo tienen las rutinas del S. O. llamadas programas de vigilancia.


El usuario solicita el acceso al S. O.
El S. O. niega o permite el acceso.
El acceso lo hace un programa de vigilancia que luego pasa los resultados al programa del usuario.
Permite:
Detectar los intentos de penetración en el momento en que se producen.
Advertir en consecuencia.


Amenazas relacionadas con los programas


Los procesos son junto con el kernel , el único medio de realizar un trabajo útil en una computadora. Por tanto, un objetivo común de los piratas informáticos consiste en escribir un programa que cree una brecha de seguridad. De hecho, las mayorías de las brechas de seguridad no relacionadas con programas tienen por objetivos crear una brecha que si este basada en un programa. Por ejemplo, aunque resulta útil iniciar una sesión en un sistema sin autorización, normalmente es mucho mas útil dejar un demonio de tipo puerta trasera que proporcione información o que permita un fácil acceso incluso aunque se bloquee la brecha de seguridad original. En esta sección, vamos a describir algunos métodos comunes mediante los que os programas pueden provocar brechas de seguridad. Hay que resaltar que existe una considerable variación en lo que respecta a los convenios de denominación de los agujeros de seguridad, y que en este texto utilizamos los términos mas comunes o descriptivos

6.6 Clasificación de la seguridad


La seguridad interna esta relacionada a los controles incorporados al hardware y al Sistema Operativo para asegurar los recursos del sistema.

Seguridad Externa

La seguridad externa consiste en:

  • Seguridad física.
  • Seguridad operacional.La seguridad física incluye:

Protección contra desastres(como inundaciones, incendios, etc.).
Protección contra intrusos.En la seguridad física son importantes los mecanismos de detección , algunos ejemplos son:

  • Detectores de humo.
  • Sensores de calor.
  • Detectores de movimiento.La protección contra desastres puede ser costosa y frecuentemente no se analiza en detalle; depende en gran medida de las consecuencias de la perdida.
La seguridad física trata especialmente de impedir la entrada de intrusos:

  • Se utilizan sistemas de identificación física:
  • Tarjetas de identificación.
  • Sistemas de huellas digitales.
  • Identificación por medio de la voz.

Seguridad Operacional

Consiste en las diferentes políticas y procedimientos implementados por la administración de la instalación computacional.

La autorización determina que acceso se permite y a quien.

La clasificación divide el problema en subproblemas:

  • Los datos del sistema y los usuarios se dividen en clases:
  • A las clases se conceden diferentes derechos de acceso.

Un aspecto critico es la selección y asignación de personal:

  • La pregunta es si se puede confiar en la gente.
  • El tratamiento que generalmente se da al problema es la división de responsabilidades:
  • Se otorgan distintos conjuntos de responsabilidades.
  • No es necesario que se conozca la totalidad del sistema para cumplir con esas responsabilidades.
  • Para poder comprometer al sistema puede ser necesaria la cooperación entre muchas personas:
  • Se reduce la probabilidad de violar la seguridad.
  • Debe instrumentarse un gran numero de verificaciones y balances en el sistema para ayudar a la detección de brechas en la seguridad.
  • El personal debe estar al tanto de que el sistema dispone de controles, pero:
  • Debe desconocer cuales son esos controles:
  • Se reduce la probabilidad de poder evitarlos.
  • Debe producirse un efecto disuasivo respecto de posibles intentos de violar la seguridad.

Para diseñar medidas efectivas de seguridad se debe primero:

Enumerar y comprender las amenazas potenciales.
Definir que grado de seguridad se desea (y cuanto se esta dispuesto a gastar en seguridad).
Analizar las contra medidas disponibles.

6.5 Concepto de Seguridad



Los términos seguridad y protección se utilizan en forma indistinta. Sin embargo, es útil hacer una distinción entre los problemas generales relativos a la garantía de que los archivos no sea leídos o modificados por personal no autorizado, lo que incluye aspectos técnicos, de administración, legales y políticos, por un lado y los sistemas específicos del sistema operativo utilizados para proporcionar la seguridad, por el otro. Para evitar la confusión, utilizaremos el termino seguridad para referirnos al problema general y el termino mecanismo de protección para referirnos a los mecanismos especificos del sistema operativo utilizado para resguardar la información de la computadora. Sin embargo, la frontera entre ellos no esta bien definida. Primero nos fijaremos en la seguridad; mas adelante analizaremos la protección.

La seguridad tiene muchas facetas. Dos de las mas importantes son la perdida de datos y los intrusos. Algunas de las causas mas comunes de la perdida de datos son:


• Actos divinos: Incendios, inundaciones, terremotos, guerras, revoluciones o ratas que roen las cintas o discos flexibles.

• errores de Hardware o Software: Mal funcionamiento de la CPU, discos o cintas ilegibles, errores de telecomunicación o errores en el programa.

• Errores Humanos: Entrada incorrecta de datos, mal montaje de las cintas o el disco, ejecución incorrecta del programa, perdida de cintas o discos.

La mayoría de estas causas se pueden enfrentar con el mantenimiento de los respaldos adecuados; de preferencia, en un lugar alejado de los datos originales.

Un problema mas interesante es que hacer con los intrusos. Estos tienen dos variedades. Los intrusos pasivos solo desean leer archivos que no están autorizados a leer. Los intrusos activos son mas crueles: Desean hacer cambios no autorizados a los datos. Si se desea diseñar un sistema seguro contra los intrusos, es importante tener en cuenta el tipo de intruso con el que se desea tener protección. Algunas de las categorías comunes son:


• Curiosidad casual de usuarios no técnicos. Muchas personas tienen en sus escritorios terminales para sistemas con tiempo compartido y, por la naturaleza humana, algunos de ellos leerán el correo electrónico de los demás u otros archivos, si no existen barreras en frente de ellos. Por ejemplo la mayoría de los sistema UNIS tienen pre definido que todos los archivos se pueden leer de manera publica.

• Conocidos husmeando. Algunos estudiantes, programadores de sistemas, operadores y demás personal técnico consideran como un reto personal romper la seguridad del sistema de computo local. A menudo son muy calificados y están dispuestos a invertir una cantidad sustancial de su tiempo en este esfuerzo. 

• Un intento deliberado de hacer dinero. Algunos programadores en banco han intentado penetrar un sistema bancario con el fin de robarle al banco. Los esquemas han variado desde cambiar el software para truncar y no redondear el interés, para quedarse con una pequeña fracción de dinero, hasta sacar dinero de las cuentas que no se han utilizado en anos o el "correo negro" .

• Espionaje comercias o militar. El espionaje indica un intento serio y fundamentado por parte de un competidor u otro país para robar programas, secretos comerciales, patentes, tecnología, diseño de circuitos, planes de comercialización, etc. A menudo, este intento implica la cobertura de cables o el levantamiento de antenas hacia la computadora con el fin de recoger su radiación electromagnética.

Debe quedar claro que el intento por mantener la KGB lejos de los secretos militares es un poco distinto del intento por evitar que los estudiantes inserten un mensaje gracioso en el sistema. La cantidad de esfuerzo que alguien pone en la seguridad y la protección depende claramente de quien se piensa sea el enemigo.

Otro aspecto del problema de la seguridad es la privacidad: la protección de las personas respecto del mal uso de la información en contra de uno mismo. Esto implica en forma casi inmediata muchos aspectos morales y legales.

6.4 Protección basada en el lenguaje

Protección basada en el lenguaje. 
  • La especificación de protección en un lenguaje de programación permite la descripción de alto nivel de políticas para la asignación y uso de recursos. 
  • La implementación del lenguaje puede proveer software para hacer cumplir la protección cuando no se pueda validar si el hardware está soportado. 
  • Interpretar las especificaciones de protección para generar llamadas en cualquier sistema de protección provisto por el hardware y el SO.

6.3 Implementación de matrices de acceso


  • Los derechos de acceso definen que acceso tienen varios sujetos sobre varios objetos.
  • Los sujetos acceden a los objetos.
  • Los objetos son entidades que contienen información.
  • Los objetos pueden ser:
  • Concretos:
  • Ej.: discos, cintas, procesadores, almacenamiento, etc.
  • Abstractos:
  • Ej.: estructuras de datos, de procesos, etc.

  • Los objetos estan protegidos contra los sujetos.

  • Las autorizaciones a un sistema se conceden a los sujetos.

  • Los sujetos pueden ser varios tipos de entidades:

  • Ej.: usuarios, procesos, programas, otras entidades, etc.
Los derechos de acceso mas comunes son:

  • Acceso de lectura.
  • Acceso de escritura.
  • Acceso de ejecución.

Una forma de implementacion es mediante una matriz de control de acceso con:

  • Filas para los sujetos.
  • Columnas para los objetos.
  • Celdas de la matriz para los derechos de acceso que un usuario tiene a un objeto.
Una matriz de control de acceso debe ser muy celosamente protegida por el S. O.

Dominios de protección

Un sistema de cómputos contiene muchos objetos que necesitan protección. Estos objetos pueden ser el hardware, la CPU, los segmentos de memoria, terminales, unidades de disco o impresoras; o bien ser del software, como los proceso, archivos, bases de datos o semáforos.

Cada objeto tiene un único nombre mediante el cual se la hace referencia y un conjunto de operaciones que se pueden realizar en el. READ y WRITE son operaciones adecuadas para un archivo; UP y DOWN tiene sentido en un semáforo.

Es evidente que se necesita una vía para prohibir el acceso de los procesos a los objetos a los que no tiene permitido dicho acceso. Ademas, este mecanismo debe posibilitar la restricción de los procesos a un subconjunto de operaciones legales en caso necesario. Por ejemplo, puede permitirse que el proceso A lea el archivo F, pero no escriba en el.

Para tener una forma de analizar los distintos mecanismos de protección, es conveniente presentar el concepto de dominio. Un dominio es un conjunto de parejas (objeto, derechos). Cada pareja determina un objeto y cierto subconjunto de las operaciones que se pueden llevar a cabo en el. Un derecho es, en este contexto, el permiso para realizar alguna de las operaciones.

Una pregunta importante es la forma en que el sistema lleva un registro de los objetos que pertenecen a un dominio dado. Al menos una teoría, uno puede imaginar una enorme matriz, en la que los renglones son los dominio y las columnas son los objetos. Cada cuadro contiene los derechos correspondientes al objeto en ese dominio. Con esta matriz y el numero de dominio activo, el sistema puede determinar si se permite el acceso de cierta forma a un objeto dado desde un domino especifico.

6.2 Funciones del sistema de protección


Control de acceso que hace referencia a las características de seguridad que controlan quien puede obtener acceso a los recursos de un sistema operativo. Las aplicaciones llaman a las funciones de control de acceso para establecer quien puede obtener acceso a los recursos específicos o controlar el acceso a los recursos proporcionados por la aplicación.

Un sistema de proteccion debera tener la flexibilidad suficiente para poder imponer una diversidad de politicas y mecanismos.

Existen varios mecanismos que pueden usarse para asegurar los archivos, segmentos de memoria, CPU, y otros recursos administrados por el Sistema Operativo.

Por ejemplo, el direccionamiento de memoria asegura que unos procesos puedan ejecutarse solo dentro de sus propios espacios de direccion. El timer asegura que los procesos no obtengan el control de la CPU en forma indefinida.

La proteccion se refiere a los mecanismos para controlar el acceso de programas, procesos, o usuarios a los recursos definidos por un sistema de computacion. Seguridad es la serie de problemas relativos a asegurar la integridad del sistema y sus datos.

Hay importantes razones para proveer proteccion. La mas obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Otras de importancia son, la necesidad de asegurar que cada componente de un programa, use solo los recursos del sistema de acuerdo con las politicas fijadas para el uso de esos recursos.

Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la proteccion proveen maneras de distinguir entre uso autorizado y desautorizado.

Mecanismos y Politicas

El sistema de proteccion tiene la funcion de proveer un mecanismo para el fortalecimiento de las politicas que gobiernan el uso de recursos. Tales politicas se pueden establecer de varias maneras, algunas en el diseno del sistema y otras son formuladas por el administrador del sistema. Otras pueden ser definidas por los usuarios individuales para proteger sus propios archivos y programas.

Las politicas son diversas, dependen de la aplicacion y pueden estar sujetas a cambios a lo largo del tiempo. 
Un principio importante es la separacion de politicas de los mecanismos. ‘Los mecanismos determinan como algo se hara. Las politicas deciden que se hara'.

La separacion es importante para la flexibilidad del sistema.

Dentro de las funciones del sistema de protección del sistema operativo encontramos:


• Controlar el acceso a los recursos

• Asegurarse que todos los accesos a los recursos del sistema estan controlados

6.1 Concepto y Objetivos de Protección



La protección es un mecanismo control de acceso de los programas, procesos o usuarios al sistema o recursos.

Hay importantes razones para proveer proteccion. La mas obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Otras de importancia son, la necesidad de asegurar que cada componente de un programa, use solo los recursos del sistema de acuerdo con las politicas fijadas para el uso de esos recursos.

Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la proteccion proveen maneras de distinguir entre uso autorizado y desautorizado.

Objetivos

• Inicialmente proteccion del SO frente a usuarios poco confiables.

• Proteccion: control para que cada componente activo de un proceso solo pueda acceder a los recursos especificados, y solo en forma congruente con la politica establecida.

• La mejora de la proteccion implica tambien una mejora de la seguridad.

• Las politicas de uso se establecen:


• Por el hardware.

• Por el administrador / SO.

• Por el usuario propietario del recurso.

• Principio de separacion entre mecanismo y politica:


• Mecanismo → con que elementos (hardware y/o software) se realiza la proteccion.

• Politica → es el conjunto de decisiones que se toman para especificar como se usan esos elementos de proteccion.

• La politica puede variar


• dependiendo de la aplicacion,

• a lo largo del tiempo.

• La proteccion no solo es cuestion del administrador, sino tambien del usuario.

• El sistema de proteccion debe:


• distinguir entre usos autorizados y no-autorizados.

• especificar el tipo de control de acceso impuesto.

• proveer medios para el aseguramiento de la protección.

6 Protección y Seguridad

Los mecanismos de protección controlan el acceso a un sistema limitado los tipos de acceso a archivos permitidos a los usuarios. Además, los mecanismos de protección deben garantizar que sólo los procesos que hayan obtenido la adecuada autorización del sistemas operativo puedan operar sobre los segmentos de memoria, CPU y otros recursos.

jueves, 6 de noviembre de 2014

5.8 Mecanismos de recuperación en casos de falla



Recuperación

Los archivos y directorios se mantienen tanto en memoria principal como en disco, y debe tener. Se cuidado para que los fallos del sistema no provoquen una pérdida de datos o una incoherencia en los mismos.

Comprobación de coherencia.

Como hemos explicado en la Sección 11.3, parte de la información de directorios se almacena en la memoria principal (o en caché) para acelerar el acceso. La información de directorios en11a memoria principal está, generalmente, más actualizada que la correspondiente información en el disco, porque la información de directorios almacenada en caché no se escribe necesariamente en el disco nada más producirse la actualización.

Considere, entonces, el posible ejemplo de un fallo de la computadora. El contenido de la caché y de los búferes, así como de las operaciones de E/S que se estuvieran realizando en ese momento, pueden perderse, y con él se perderán los cambios realizados en los directorios correspondientes a los archivos abiertos. Dicho suceso puede dejar el sistema de archivos en un estado incoherente. El estado real de algunos archivos no será el que se describe en la estructura de directorios. Con frecuencia, suele ejecutarse un programa especial durante el reinicio para comprobar las posibles incoherencias del disco y corregidas. El comprobador de coherencia (un programa del sistema tal como fsck en UNIX o chkdsk en MS-DOS), compara los datos de la estructura de directorios con los bloques de datos del disco y trata de corregir todas las incoherencias que detecte. Los algoritmos de asignación y de gestión del espacio libre dictan los tipos de problemas que el comprobador puede tratar de detectar y dictan también el grado de éxito que el comprobador puede tener en esta tarea. Por ejemplo, si se utiliza un sistema de asignación enlazada y existe un enlace entre cada bloque y el siguiente, puede reconstruirse el archivo completo a partir de los bloques de datos y volver a crear la estructura de directorios. Por el contrario, la pérdida de una entrada de directorio en un sistema de asignación indexada puede ser desastrosa, porque los bloques de datos no tienen ningún conocimiento acerca de los demás bloques de datos del archivo. Por esta razón, UNIX almacena en caché las entradas de directorio para las lecturas, pero todas las escrituras de datos que provoquen algún cambio en la asignación de espacio o en algún otro tipo de metadato se realizan síncronamente, antes de escribir los correspondientes bloques de datos. Por supuesto, también pueden aparecer problemas si se interrumpe una escritura síncrona debido a un fallo catastrófico.

5.7 Modelo jerárquico


Directorios

El directorio contiene un conjunto de datos por cada archivo referenciado. Una posibilidad es que el directorio contenga por cada archivo referenciado:
  • El nombre.
  • Sus atributos.
  • Las direcciones en disco donde se almacenan los datos.
Otra posibilidad es que cada entrada del directorio contenga:

  • El nombre del archivo.
  • Un apuntador a otra estructura de datos donde se encuentran los atributos y las ,direcciones en disco.
Al abrir un archivo el S.O.:
  • Busca en su directorio el nombre del archivo.
  • Extrae los atributos y direcciones en disco.
  • Graba esta información en una tabla de memoria real.
Todas las referencias subsecuentes al archivo utilizarán la información de la memoria principal.El número y organización de directorios varía de sistema en sistema:

  • Directorio único: el sistema tiene un solo directorio con todos los archivos de todos los usuarios.
  • Un directorio por usuario: el sistema habilita un solo directorio por cada usuario.
  • Un árbol de directorios por usuario: el sistema permite que cada usuario tenga tantos directorios como necesite, respetando una jerarquía general.

5.6 Manejo de espacio en memoria secundaria



A diferencia de la Memoria Principal la Memoria Secundaria , auxiliar, masiva, externa no es tan veloz pero tiene gran capacidad para almacenar información en dispositivos tales como discos, cintas magnéticas, discos ópticos. Frecuentemente los datos y programas se graban en la Memoria Secundaria , de esta forma, cuando se ejecuta varias veces un programa o se utilicen repetidamente unos datos, no es necesario darlos de nuevo a través del dispositivo de entrada. En la Memoria Secundaria un archivo consta de un conjunto de bloques (correspondiente a la cantidad de información que se transfiere físicamente en cada operación de acceso (lectura o escritura). El Sistema Operativo o Sistema de Gestión de Archivos es el encargado de la asignación de bloques a archivos, de lo que surgen dos cuestiones, en primer lugar, debe asignarle el espacio de Memoria Secundaria a los archivos y, en segundo lugar, es necesario guardar constancia del espacio disponible para asignar. El sistema de archivos se ocupa primordialmente de administrar el espacio de almacenamiento secundario, sobre todo el espacio en disco. El manejo del espacio libre en disco se lleva a cabo de la siguiente manera:
  • Vector de bits
  • Lista ligada (lista libre)
  • Por conteo (agrupación)


Vector de bits. 
El espacio libre en disco es frecuentemente implementado como un mapa de bits, donde cada block es representado por un bit y si el bloc es libre el bit es cero de lo contrario está asignado.11000111

Lista ligada.
Una lista ligada de todos los blocks libres. Otra implantación se consigue guardando la dirección del primer block libre y el número de los blocks libres contiguos que le siguen. Cada entrada de la lista de espacio libre consiste de una dirección de disco y un contador (por conteo).

Por agrupación.
Se almacena la dirección en n blocks libres en el primer block libre y el último contiene la dirección de otro block que contiene la dirección de otros blocks libres.

5.5 Mecanismos de acceso a los archivos



Existen varios mecanismos para acceder los archivos: Directorios, descriptores de archivos, mecanismos de control de acceso y procedimientos para abrir y cerrar archivos.

Descriptores de archivos.
El descriptor de archivos o bloque de control de archivos es un bloque de control que contiene información que el sistema necesita para administrar un archivo. Es una estructura muy dependiente del sistema.

Puede incluir la siguiente información:
  • Nombre simbólico del archivo.
  • Localización del archivo en el almacenamiento secundario.
  • Organización del archivo (método de organización y acceso).
  • Tipo de dispositivo.
  • Datos de control de acceso.
  • Tipo (archivo de datos, programa objeto, programa fuente, etc.).
  • Disposición (permanente contra temporal).
  • Fecha y tiempo de creación.
  • Fecha de destrucción.
  • Fecha de la última modificación.
  • Suma de las actividades de acceso (número de lecturas, por ejemplo).

5.4 Organización lógica y física

Se refiere a las diferentes maneras en las que puede ser organizada la información de los archivos, así como las diferentes maneras en que ésta puede ser accesada. Dado que hay 2 niveles de visión de los archivos (físico y lógico), se puede hablar también de 2 aspectos de organización de archivos: Organización de archivos lógicos y de archivos físicos.



El sistema de archivos está relacionado especialmente con la administración del espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de disco.
Una forma de organización de un sistema de archivos puede ser la siguiente:

  • Se utiliza una “raíz ” para indicar en qué parte del disco comienza el “directorio raíz ” .
  • El “directorio raíz ” apunta a los “directorios de usuarios”.
  • Un “directorio de usuario” contiene una entrada para cada uno de los archivos del usuario.
  • Cada entrada de archivo apunta al lugar del disco donde está almacenado el archivo referenciado.

Organización lógica.


La mayoría de las computadoras organizan los archivos en jerarquías llamadas carpetas, directorios o catálogos . (El concepto es el mismo independientemente de la terminología usada.) Cada carpeta puede contener un número arbitrario de archivos, y también puede contener otras carpetas. Las otras carpetas pueden contener todavía más archivos y carpetas, y así sucesivamente, construyéndose un estructura en árbol en la que una «carpeta raíz» (el nombre varía de una computadora a otra) puede contener cualquier número de niveles de otras carpetas y archivos. A las carpetas se les puede dar nombre exactamente igual que a los archivos (excepto para la carpeta raíz, que a menudo no tiene nombre). El uso de carpetas hace más fácil organizar los archivos de una manera lógica.



Organización física.


Los datos son arreglados por su adyacencia física, es decir, de acuerdo con el dispositivo de almacenamiento secundario. Los registros son de tamaño fijo o de tamaño variable y pueden organizarse de varias formas para constituir archivos físicos.

5.3 Componentes de un sistema de archivos


Lo conforman todas aquellas rutinas encargadas de administrar todos los aspectos relacionados con el manejo de Archivos. En UNIX se define un File System como un sistema de software dedicado a la creación, destrucción, organización y lectura, escritura y control de acceso de los archivos, funcionalmente los componentes de un sistema de archivos son lenguajes de comandos, interpretador de comandos, manejador del almacenamiento secundario, sistema de entrada y salida y mecanismos de respaldo y recuperación. En general, un Sistema de Archivos está compuesto por: Métodos De Acceso, Administración De Archivos, Administración De Almacenamiento Secundario, Mecanismos De Integridad. 
  • Métodos De Acceso. Se ocupan de la manera en que se tendrá acceso a la información almacenada en el archivo. Ejemplo: Secuencial, Directo, indexado, etc.
  • Administración De Archivos. Se ocupa de ofrecer los mecanismos para almacenar, compartir y asegurar archivos, así como para hacer referencia a ellos. 
  • Administración De Almacenamiento Secundario. Se ocupa de asignar espacio para los archivos en los dispositivos de almacenamiento secundario. En la siguiente figura se muestra un ejemplo de la administración de espacio en un disco duro.

5.2 Noción de archivo real y virtual

Un archivo virtual


Es un archivo de uso temporal que es utilizado por los procesos del sistema mientras se están ejecutando dichos procesos. Estos archivos se crean durante la ejecución de un sistema y los utiliza para el almacenamiento de información, intercambio y organización mientras se ejecuta el sistema, su tamaño es muy variable y terminan al detener la ejecución del sistema, muchos de ellos son borrados, por ejemplo, los archivos *.tmp . Se le conoce como archivo virtual, aquel que contiene los datos generados por el usuario.


Archivo Real


Es un objeto que contiene programas, datos o cualquier otro elemento. Un archivo se muestra de manera real, en la información del espacio que ocupa en un disco duro o sistema de almacenamiento, en otras palabras su tamaño en bytes. 

5.1 Conceptos

Concepto 1

Son los algoritmos y estructuras lógicas utilizadas para poder acceder a la información que tenemos en el disco. Cada uno de los sistemas operativos crea estas estructuras y logaritmos de diferente manera independientemente del hardware. El desempeño de nuestro disco duro, la confiabilidad, seguridad, capacidad de expansión y la compatibilidad, estará en función de estas estructuras lógicas. 





Fat 12: 
Es el sistema de archivos de DOS, y es con el que formateamos los disquetes. Fue muy utilizado en las primeras PCs. 

Fat 16: 
Este sistema de archivos tenia muchas limitaciones, por ejemplo si el disco duro era mayor de 2 GB, era imposible particionarlos y no usaba nombre largos en los archivos, solo 8 caracteres. 

Fat 32: 
Fue utilizado a partir de 1997, y pudo ser utilizado en Windows 98, pero a medida que el tamaño de los discos duros se incrementaba, surgieron nuevas limitaciones. Se llamo Fat32, por que utiliza números de 32 bits para representar a los clusters en lugar de los 16 en los sistemas anteriores.




Especialmente creado para usarlo en Windows NT, es mas complejo que los FAT. El propósito era satisfacer la demanda y necesidades de de seguridad y eficacia para servidores y otras aplicaciones en red. No tiene limitaciones de tamaño clusters y en general en el disco. Una ventaja de este sistema de archivos es que tiene un sistema antifragmentación. Este sistema de archivos trabaja de manera totalmente distinta, las particiones del disco se colocan en el directorio raíz. Podemos incluso tener diferentes particiones y cada una de ellas tener su propio sistema de archivos.

Concepto 2


En computación, un sistema de archivos es un método para el almacenamiento y organización de archivos de computadora y los datos que estos contienen, para hacer más fácil la tarea encontrarlos y accederlos. Los sistemas de archivos son usados en dispositivos de almacenamiento como discos duros y CD-ROM e involucran el mantenimiento de la localización física de los archivos. 




Más formalmente, un sistema de archivos es un conjunto de tipo de datos abstractos que son implementados para el almacenamiento, la organización jerárquica, la manipulación, el acceso, el direccionamiento y la recuperación de datos. Los sistemas de archivos comparten mucho en común con la tecnología de las bases de datos. 
Los sistemas de archivos pueden ser representados de forma textual (ej.: el shell de DOS) o gráficamente (ej.: Explorador de archivos en Windows) utilizando un gestor de archivos. 

El software del sistema de archivos se encarga de organizar los archivos (que suelen estar segmentados físicamente en pequeños bloques de pocos bytes) y directorios, manteniendo un registro de qué bloques pertenecen a qué archivos, qué bloques no se han utilizado y las direcciones físicas de cada bloque. 
Los sistemas de archivos pueden ser clasificados en tres categorías: sistemas de archivo de disco, sistemas de archivos de red y sistemas de archivos de propósito especial. 

Ejemplos de sistemas de archivos son: FAT, UMSDOS, NTFS, UDF, ext2, ext3, ext 4, ReiserFS, XFS, etc.


Concepto 3

Los archivos son administrados por el sistema operativo como se muestra en la Figura. Su estructura, nombre, forma de acceso, uso, protección e implantación son temas fundamentales en el diseño de un sistema operativo. Aquella parte del sistema operativo que trabaja con los archivos se conoce, como un todo, como el sistema de archivos.



Concepto 4 


Debido a su importancia, es necesario que un sistema operativo tenga la capacidad de leer, escribir, acceder y mantener la integridad de un sistema de archivos. Un sistema de archivos provee al usuario con una abstracción que le permitirá crear con facilidad colecciones de datos llamados archivos. Estas colecciones deberán tener los siguientes requisitos o propiedades:

  • Existencia a largo tiempo: Los archivos deberán ser almacenados sobre una unidad de almacenamiento y deberán permanecer allí aun cuando el usuario apague el ordenador.
  • Deberán tener la capacidad de ser compartidos: Los archivos tendrán nombres que los identifique y deberán poseer permisos de acceso los cuales permitirán el compartimiento controlado entre procesos.
  • Deberán poseer una estructura definida: Dependiendo del tipo de sistema de archivos, un archivo deberá poseer una estructura definida y conveniente; permitiendo que los archivos puedan ser organizados en orden jerárquico o en cualquier otro orden para reflejar su relación con otros archivos.

El sistema de archivos como hemos dicho, posee una abstracción que permite realizar varias operaciones sobre los archivos. Entre estas operaciones tenemos:
  • Crear un archivo: El usuario o un proceso podrá crear un nuevo archivo el cual tomará una posición dentro de la estructura del sistema de archivos.
  • Borrar un archivo: Un archivo podrá ser borrado de la estructura.
  • Abrir un archivo: Un proceso podrá abrir un archivo permitiendo el acceso a la información contenida por dicho archivo. El proceso podrá ejecutar varias funciones sobre la información del archivo como leer, escribir, reemplazar, etc.
  • Cerrar un archivo: Un proceso puede cerrar el archivo dejando atrás los privilegios de acceder a dicho archivo.
  • Leer: Un proceso podrá leer parte de la información contenida en un archivo
  • Escribir: Un proceso podrá añadir o reemplazar información en un archivo
Los sistemas de archivos también mantienen una estructura de atributos asociada con cada uno de los archivos la cual provee información sobre la situación actual de un archivo, quien es su dueño, el tamaño del archivo, cuando fue creado, cuando fue modificado, privilegios de acceso, entre otros.

Se debe poder estructurar los archivos de la manera más apropiada a cada aplicación.
Los usuarios deben poder ordenar la transferencia de información entre archivos.
Se deben proporcionar posibilidades de “respaldo” y “recuperación” para prevenirse contra:
  • La pérdida accidental de información.
  • La destrucción maliciosa de información.
Se debe poder referenciar a los archivos mediante “Nombres Simbólicos” , brindando“Independencia de Dispositivos” .
En ambientes sensibles, el sistema de archivos debe proporcionar posibilidades de “Cifrado” y“Descifrado”.
El sistema de archivos debe brindar una interfase favorable al usuario:
  • Debe suministrar una “visión lógica” de los datos y de las funciones que serán ejecutadas, en vez de una “visión física”.
El usuario no debe tener que preocuparse por:
  • Los dispositivos particulares.
  • Dónde serán almacenados los datos.
  • El formato de los datos en los dispositivos.
  • Los medios físicos de la transferencia de datos hacia y desde los dispositivos.

Unidad 5 Sistema de archivos



Son los algoritmos y estructuras lógicas utilizadas para poder acceder a la información que tenemos en el disco. Cada uno de los sistemas operativos crea estas estructuras y logaritmos de diferente manera independientemente del hardware. El desempeño de nuestro disco duro, la confiabilidad, seguridad, capacidad de expansión y la compatibilidad, estará en función de estas estructuras lógicas.

martes, 28 de octubre de 2014

4.4 Operaciones de Entrada y Salida




Funciones que realizan 


Vamos a señalar las funciones que debe realizar un computador para ejecutar trabajos de entrada/salida: 

- Direccionamiento o selección del dispositivo que debe llevar a cabo la operación de E/S. 
- Transferencia de los datos entre el procesador y el dispositivo (en uno u otro sentido). 
- Sincronización y coordinación de las operaciones. 
Esta ultima función es necesaria debido a la deferencia de velocidades entre los dispositivos y la CPU y a la independencia que debe existir entre los periféricos y la CPU (por ejemplo, suelen tener relojes diferentes). 


Se define una transferencia elemental de información como la transmisión de una sola unidad de información (normalmente un byte) entre el procesador y el periférico o viceversa. Para efectuar una transferencia elemental de información son precisas las siguientes funciones: 

- Establecimiento de una comunicación física entre el procesador y el periférico para la transmisión de la unidad de información. 
- Control de los periféricos, en que se incluyen operaciones como prueba y modificación del estado del periférico. Para realizar estas funciones la CPU gestionara las líneas de control necesarias. 


Definiremos una operación de E/S como el conjunto de acciones necesarias para la transferencia de un conjunto de datos (es decir, una transferencia completa de datos). Para la realización de una operación de E/S se deben efectuar las siguientes funciones: 

- Recuento de las unidades de información transferidas (normalmente bytes) para reconocer el fin de operación. 
- Sincronización de velocidad entre la CPU y el periférico. 
- Detección de errores (e incluso corrección) mediante la utilización de los códigos necesarios (bits de paridad, códigos de redundancia cíclica, etc.) 
- Almacenamiento temporal de la información. Es más eficiente utilizar un buffer temporal específico para las operaciones de E/S que utilizan el área de datos del programa. 
- Conversión de códigos , conversión serie/paralelo, etc

4.3 Estructura de Datos para Manejo de Dispositivos


Estructura de datos para manejo de dispositivos





¿Qué es una estructura? 

Los sistemas operativos actuales son grandes y complejos, estos deben poseer una ingeniería correcta para su fácil actualización y para que puedan cumplir su función correctamente. La estructura es generalmente modular, cada modulo cumple una función determinada e interactúa con los demás módulos. 


Estructura simple 

El sistema MS-DOS es, sin duda, el mejor sistema operativo para microcomputadoras. Sin embargo, sus interfaces y niveles de funcionalidad no están bien definidos. Los programas de aplicación pueden acceder a operaciones básicas de entrada / salida para escribir directamente en pantalla o discos. Este libre acceso, hace que el sistema sea vulnerable, ya que un programa de aplicación puede eliminar por completo un disco rígido por alguna falla. Además este sistema, también esta limitado al hardware sobre el que corre. 

Otra estructura simple es la utilizada por la versión original de UNIX, esta consiste de dos partes separadas, el kernel y los programas de sistemas . El kernel fue posteriormente separado en manejadores (drivers) de dispositivos y una serie de interfaces. El kernel provee el sistema de archivos, la programación de CPU, el administrador de memoria y otras funciones del sistema operativo que responden a las llamadas del sistema enunciadas anteriormente. 


Estructura por capas (layers) 

Las nuevas versiones de UNIX se diseñaron para hardware mas avanzado. Para dar mayor soporte al hardware, los sistemas operativos se dividieron en pequeñas partes. Ahora los sistemas operativos tienen mayor control sobre el hardware y las aplicaciones que se ejecutan sobre este. 


La modularizacion de un sistema se puede presentar de varias formas, la mas utilizada es la de capas, la cual consiste en dividir al sistema operativo en un numero de capas. La capa de menor nivel es el hardware y la de mayor nivel es la interfaz con el usuario.  La principal ventaja es que cada capa cumple con una serie de funciones y servicios que brinda a las otras capas, esto permite una mejor organización del sistema operativo y una depuración mas fácil de este. Cada capa se implementa solo utilizando las operaciones provistas por la capa de nivel inferior. Una capa no necesita saber como se implementan estas funciones, solo necesita saber que operaciones puede realizar. 



4.2 Mecanismos y Funciones de los Manejadores de Dispositivos: Device Drivers.




Funciones de los manejadores de dispositivos

Funciones generalmente realizadas por el software independiente del dispositivo:
  • Interfaz uniforme para los manejadores de dispositivos.
  • Nombres de los dispositivos.
  • Protección del dispositivo.
  • Proporcionar un tamaño de bloque independiente del dispositivo.
  • Uso de buffer.
  • Asignación de espacio en los dispositivos por bloques.
  • Asignación y liberación de los dispositivos de uso exclusivo.
  • Informe de errores.

Las funciones básicas del software independiente del dispositivo son:
  • las funciones de e / s comunes a todos los dispositivos.
  • Proporcionar una interfaz uniforme del software a nivel usuario.

El software independiente del dispositivo asocia los nombres simbólicos de los dispositivos con el nombre adecuado.
Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:
  • Este nodo-i contiene el número principal del dispositivo, que se utiliza para localizar el manejador apropiado.
  • El nodo-i contiene también el número secundario de dispositivo, que se transfiere como parámetro al manejador para determinar la unidad por leer o escribir.

El software independiente del dispositivo debe:
  • Ocultar a los niveles superiores los diferentes tamaños de sector de los distintos discos.
  • Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios sectores físicos como un solo bloque lógico.

4.1 Dispositivos y Manejadores de Dispositivos: Device Drivers




4.1 Dispositivos y manejadores de dispositivos

Dispositivos de entrada/salida 

Se pueden clasificar en dos grandes categorías: 

1. Dispositivos de bloque
2. Dispositivos de carácter
Las principales características de los dispositivos de bloque son: 

- La información se almacena en bloques de tamaño fijo.
- Cada bloque tiene su propia dirección.
- Los tamaños más comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes.
- Se puede leer o escribir en un bloque de forma independiente de los demás, en                 cualquier momento. 
- Un ejemplo típico de dispositivos de bloque son los discos. 

Las principales características de los dispositivos de carácter son: 

-La información se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques. 
- No se pueden utilizar direcciones. 
- No tienen una operación de busqueda. 
- Unos ejemplos típicos de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.





4 Administración de Entrada y Salida






Funciones que realizan 

Una de las principales funciones de un sistema operativo es controlar todos los dispositivos de E/S (entrada/salida) del computador. Debe enviar los comandos a los dispositivos, atrapar interrupciones y manejar errores. También debe proporcionar una interfaz sencilla y fácil de usar entre los dispositivos y el resto del sistema. En la medida de lo posible, la interfaz deberá ser la misma para todos los dispositivos (independiente del dispositivo). El código de E/S representa una fracción importante del sistema operativo total. La forma en que administra la E/S es el tema de este capitulo.



domingo, 26 de octubre de 2014

3.4 Administración de Memoria Virtual



La clave del concepto de memoria (almacenamiento) virtual esta en la disociación:

  • De las direcciones a las que hace referencia un programa. 
  • De las direcciones disponibles en la memoria real (almacenamiento primario). 

Mientras el proceso se ejecuta con sus páginas actuales, el sistema carga las demás páginas que estarán disponibles cuando las requiera el proceso. El S. O. intenta predecir las páginas que un proceso va a necesitar y a continuación precarga estas páginas cuando hay espacio disponible Mientras el proceso ejecuta sus páginas actuales, el sistema carga páginas nuevas que estarán disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecución de un proceso se puede reducir.

3.3 Organización de Memoria Virtual


La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta ilusión permite que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria física. La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física.

Los métodos más comunes de implementación son: 

• Técnicas de “paginación”. 

• Técnicas de “segmentación”. 

• Una combinación de ambas técnicas

3.2 Memoria Real

La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos.   

La organización y administración de la “memoria principal”“memoria 
primaria” “memoria real” de un 
sistema ha sido y es uno de los factores 
mas importantes en el diseño de los 
S.O.
   
Lostérminos “memoria” “almacena ento” se consideran equivalentes.   Los programas y datos deben estar en el almacenamiento principal  para:
Poderlos ejecutar.
Referenciarlos directamente

3.1 Política y Filosofía

FILOSOFIA



La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica.
Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando.
Sea cual sea es esquema de organización del almacenamiento que se adopte para un sistema específico, es necesario decidir que estrategias se deben utilizar para obtener un rendimiento óptimo .las estrategias de administración del almacenamiento determinan el comportamiento de la administración de memoria cuando se siguen ciertas políticas.

POLÍTICAS.

FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La política FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una política de prioridades y hay procesos con la misma prioridad, a estos se les podría aplicar FIFO.
Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos.
SJF (Shortest job first - Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.

Unidad 3 Administración de Memoria

La administración de memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible.
Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá ser ejecutada por el procesador, a la memoria principal. Actualmente esta administración se conoce como Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria más extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera más eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario.
Las técnicas que existen para la carga de programas en la memoria son: partición fija, que es la división de la memoria libre en varias partes (de igual o distinto tamaño) y la partición dinámica, que son las particiones de la memoria en tamaños que pueden ser variables, según la cantidad de memoria que necesita cada proceso.
Entre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera de la memoria principal para maximizar la utilización del procesador; la protección, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en común