domingo, 2 de diciembre de 2012

Unidad 6.8 Cifrado.

El uso creciente de las redes de computadoras y la importancia del trafico cursado hace necesario proteger a los datos [7, Deitel].
La Oficina Nacional de Estándares de EE. UU. (NBS) ha adoptado la norma de cifrado de datos (DES) para la transmisión de información federal delicada.
La criptografía es el uso de la transformación de datos para hacerlos incomprensibles a todos, excepto a los usuarios a quienes están destinados.
El problema de la intimidad trata de cómo evitar la obtención no autorizada de información de un canal de comunicaciones.
El problema de la autentificación trata sobre cómo evitar que un oponente:
 Modifique una transmisión.
 Le introduzca datos falsos.
El problema de la disputa trata sobre cómo proporcionar al receptor de un mensaje pruebas legales de la identidad del remitente, que serían el equivalente electrónico de una firma escrita.
Un Sistema de Intimidad Criptográfica
El remitente desea transmitir cierto mensaje no cifrado (texto simple) a un receptor legítimo:
 La transmisión se producirá a través de un canal inseguro:
 Se supone que podrá ser verificado o conectado mediante un espía.
El remitente pasa el texto simple a una unidad de codificación que lo transforma en un texto cifrado o criptograma:
 No es comprensible para el espía.
 Se transmite en forma segura por un canal inseguro.
 El receptor pasa el texto cifrado por una unidad de descifrado para regenerar el texto simple.
Criptoanálisis
Es el proceso de intentar regenerar el texto simple a partir del texto cifrado, pero desconociendo la clave de ciframiento:
 Es la tarea del espía o criptoanalista:
 Si no lo logra, el sistema criptográfico es seguro.
Sistemas de Clave Pública
La distribución de claves de un sistema criptográfico debe hacerse por canales muy seguros.
Los sistemas de clave pública rodean el problema de distribución de claves:
 Las funciones de cifrado y descifrado están separadas y utilizan distintas claves.
 No es computacionalmente posible (en un tiempo "razonable") determinar la clave de desciframiento "D" a partir de la clave de ciframiento "C".
 "C" puede hacerse pública sin comprometer la seguridad de "D", que permanece privada:
 Se simplifica el problema de la distribución de claves.
Firmas Digitales
Para que una firma digital sea aceptada como sustituta de una firma escrita debe ser:
 Fácil de autentificar (reconocer) por cualquiera.
 Producible únicamente por su autor.
En los criptosistemas de clave pública el procedimiento es:
 El remitente usa la clave privada para crear un mensaje firmado.
 El receptor:
 Usa la clave pública del remitente para descifrar el mensaje.
 Guarda el mensaje firmado para usarlo en caso de disputas.
Para mayor seguridad se podría actuar como sigue:
 El remitente puede codificar el mensaje ya cifrado utilizando la clave pública del receptor.
 La clave privada del receptor permite recuperar el mensaje cifrado firmado.
 La clave pública del remitente permite recuperar el texto simple original.
Aplicaciones
La criptografía es especialmente útil en los sistemas multiusuario y en las redes de computadoras.
Se debe utilizar para proteger a las contraseñas, almacenándolas cifradas.
Se puede utilizar también para proteger todos los datos almacenados en un sistema de computación; se debe considerar el tiempo de cifrado / descifrado.
También es aplicable en los protocolos de redes de capas, que ofrecen varios niveles de cifrado.
En el cifrado de enlace la red asume la responsabilidad de cifrado / descifrado de cada nodo:
 Los datos se transmiten cifrados entre los nodos.
 En cada nodo se descifran, se determina a dónde transmitirlos y se los vuelve a cifrar.
En el cifrado punto a punto un mensaje se cifra en su fuente y se descifra solo una vez, en su destino:
 Existen ciertas limitaciones tales como la legibilidad de la dirección de destino en cada nodo:
 Debe ser legible para el encaminamiento del mensaje.
 Ej.: sistemas de conmutación de paquetes de almacenamiento y reenvío con cifrado punto a punto; en este caso la dirección de destino asociada a un paquete no puede ser cifrada.

Unidad 6.7 Validación y amenazas al sistema.

Los tipos de amenazas a la seguridad de un sistema informático los podemos caracterizar teniendo en cuenta como esta información es suministrada por el sistema. En general, hay un flujo de información de una fuente a un destino:

   
   

 Figura #.3    Flujo normal.


Teniendo esto en cuenta, podemos señalar cuatro categorías de amenazas:


•Interrupción: Un elemento del sistema es destruido o se hace inservible. Es una amenaza a la disponibilidad. Ejemplos son la destrucción de algún elemento hardware (discos, líneas de comunicación, etc.) y la desactivación del sistema de gestión de ficheros.
   

 Figura #. 4   Interrupción.

* Intercepción: Una parte no autorizada obtiene acceso a un elemento relacionado con la seguridad. Es una amenaza a la privacidad. La parte no autorizada puede ser una persona, un programa o un computador. Ejemplos son la copia ilícita de programas y la visualización de ficheros que han de permanecer ocultos.

   

 Figura #. 5    Intercepción.

* Modificación: Una parte no autorizada no sólo obtiene acceso sino que puede modificar un elemento relacionado con la seguridad. Es una amenaza a la integridad. Ejemplos son la alteración del contenido de un fichero y modificar un programa para que funcione de forma diferente.

   

 Figura #. 6    Modificación.


* Fabricación: Una parte no autorizada inserta nuevos elementos en el sistema. Es una amenaza a la integridad. Ejemplos son adición de registros a un fichero y la inclusión de mensajes espúreos en una red.


La mayoría de los métodos de autenticación se basan en identificar algo que el usuario tiene o conoce. El mecanismo más común de autenticación consiste en que todo usuario ha de introducir una , que es solicitada por el programa de conexión cuando el usuario introduce su nombre. El inconveniente de este método es que las contraseñas pueden ser fácilmente averiguables si el usuario utiliza su nombre, dirección, o similar como contraseña. Otra forma de averiguar una contraseña consiste en probar todas las combinaciones de letras, números y símbolos de puntuación hasta adivinar la contraseña.

Existen variantes como que el sistema le añada a cada contraseña un número aleatorio, o asignarle a cada usuario un libro con una secuencia de contraseñas, de forma que cada vez que se conecta tiene que introducir la palabra de paso siguiente.

Otros tipos de mecanismos de autenticación se pueden basar en objetos que únicamente cada
usuario puede tener, como tarjetas con banda magnética, al estilo de los cajeros automáticos. Otra posibilidad es medir o comprobar ciertas características que están indisolublemente unidas a cada persona, como la voz, escritura, huellas dactilares, etc.

En instalaciones en las que la seguridad es prioritaria, estas medidas se pueden complementar con restricciones de acceso a la habitación en la que se encuentran los terminales, asignar a cada usuario un terminal concreto, establecer un horario concreto de trabajo, etc.


Amenazas de Origen Software

Uno de las los tipos más sofisticados de amenazas tienen su origen en programas que explotan las debilidades de los sistemas. Estos programas se dividen en dos grupos: aquellos que necesitan un programa anfitrión y aquellos que son independientes. Los primeros son trozos de programas que no pueden existir de forma autónoma, mientras que los segundos son programas completos que pueden ser planificados y ejecutados por el sistema operativo.

También hay que distinguir entre aquellos programas que no se replican y los que lo hacen. Estos últimos son programas o trozos de programas que cuando se ejecutan pueden generar una o más copias de ellos mismos, que serán posteriormente activadas en la computadora.

Podemos distinguir seis tipos de amenazas de origen software:

• Bomba Lógica: Es un código incrustado en un programa que comprueba si ciertas condiciones se cumplen, en cuyo caso ejecuta alguna acción no autorizada. Estas condiciones pueden ser la existencia de ciertos ficheros, una fecha particular, la ejecución de una aplicación concreta, etc. Una vez que la bomba explota, puede alterar o eliminar datos, parar el sistema, etc. Un ejemplo de uso de bomba lógica es el caso de un programador que vende un programa a una empresa. Si transcurrido un cierto tiempo la empresa no ha pagado, el programador revela la existencia de la bomba lógica con el fin de obtener su dinero.
• Puerta Falsa (Trapdoor): Es un punto de entrada secreto en un programa, de forma que alguien que conozca la existencia de dicha puerta puede obtener permisos de acceso sin tener que pasar por los mecanismos normales de autentificación. La puerta falsa es un código que reconoce alguna secuencia de entrada especial o se dispara si es ejecutado por cierto usuario o por la ocurrencia de una secuencia determinada de sucesos.

• Caballo de Troya (Trojan Horse): Es una rutina oculta en un programa de utilidad. Cuando el programa se ejecuta, se ejecuta la rutina y ésta realiza acciones no autorizadas y perniciosas. Estos programas permiten realizar de forma indirecta acciones que no puede realizar de forma directa. Por ejemplo, un programa caballo de troya puede ser un editor que cuando es ejecutado modifica los permisos de los ficheros que edita de forma que éstos puedan ser accedidos por cualquier usuario. El autor del programa suele inducir a su utilización colocándolo en un directorio común y dándole un nombre de forma que aparente ser un programa de utilidad.

• Virus: Es código introducido en un programa que puede infectar otros programas mediante la copia de sí mismo en dichos programas. Además de propagarse, un virus realiza alguna función no permitida.

• Bacteria: Programa que consume recursos del sistema replicándose asimismo, pero no daña explícitamente ningún fichero. Se suele reproducir exponencialmente, por lo que puede acaparar recursos como CPU, memoria y disco.

• Gusano (Worm): Es un programa que usa las redes de computadores para pasar de unos sistemas a otros. Una vez que llega a un sistema, el gusano se puede comportar como un virus o una bacteria, puede implantar programas caballo de troya, o puede realizar acciones no autorizadas. Para replicarse, los gusanos emplean algunos programas que proporcionan servicios de red, como correo electrónico, ejecución remota de programas y conexión a sistemas remotos.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_33.html

Ataques Genéricos a Sistemas Operativos
Los principales ataques genéricos a los S. O. son los siguientes [7, Deitel]:
Asincronismo:
• Se tienen procesos múltiples que progresan asincrónicamente.
• Un proceso podría modificar los parámetros ya validados por otro proceso pero aún no utilizados.
• Un proceso podría pasar valores malos a otro aún cuando el segundo realice una verificación extensa.
Rastreo:
• Un usuario revisa el sistema intentando localizar información privilegiada.
Entre líneas:
• Se utiliza una línea de comunicaciones mantenida por un usuario habilitado que está inactivo.
Código clandestino:
• Se modifica el S. O. bajo una presunta depuración pero se incorpora código que permite ingresos no autorizados.
Prohibición de acceso:
• Un usuario escribe un programa que bloquea el acceso o servicio a los usuarios legítimos mediante:
o Caídas del sistema, ciclos infinitos, monopolio de recursos, etc.
Procesos sincronizados interactivos:
• Se utilizan las primitivas de sincronización del sistema para compartir y pasarse información entre sí.
Desconexión de línea:
• El intruso intenta acceder al trabajo de un usuario desconectado:
o Luego de una desconexión de línea.
o Antes de que el sistema reconozca la desconexión.
Disfraz:
• El intruso asume la identidad de un usuario legítimo luego de haber obtenido la identificación apropiada por medios clandestinos.
Ataque “nak”:
• Si el S. O. permite a un usuario:
o Interrumpir un proceso en ejecución mediante una “tecla” de “reconocimiento negativo”.
o Realizar otra operación.
o Reanudar el proceso interrumpido.
• Un intruso podría “encontrar” al sistema en un estado no protegido y hacerse con el control.
Engaño al operador:
• Con un engaño se hace realizar al operador una acción que comprometa la seguridad del sistema.
Parásito:
• Mediante equipamiento especial el intruso:
o Intercepta los mensajes entre un usuario habilitado y el procesador.
o Los modifica o reemplaza totalmente.
Caballo de Troya:
• El intruso coloca un código dentro del sistema que luego le permita accesos no autorizados.
• Puede permanecer en el sistema.
• Puede borrar todo rastro de sí mismo luego de la penetración.
Parámetros inesperados:
• El intruso suministra valores inesperados a una llamada al núcleo.
• Intenta aprovechar una debilidad de los mecanismos de verificación de la legalidad del S. O.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO14.htm#Crip

Unidad 6.5 Concepto de seguridad.

La evolución de la computación y de las comunicaciones en las últimas décadas [7, Deitel]:
• Ha hecho más accesibles a los sistemas informáticos.
• Ha incrementado los riesgos vinculados a la seguridad.
La vulnerabilidad de las comunicaciones de datos es un aspecto clave de la seguridad de los sistemas informáticos; la importancia de este aspecto es cada vez mayor en función de la proliferación de las redes de computadoras.
El nivel de criticidad y de confidencialidad de los datos administrados por los sistemas informáticos es cada vez mayor:
• Ej.: correo personal, transferencia de fondos, control de manufactura, control de sistemas de armas, control de tráfico aéreo, control de implantes médicos (marcapasos, etc.).
• Los sistemas deben funcionar ininterrumpidamente y sin problemas.
El sistema operativo, como administrador de los recursos del sistema:
• Cumple una función muy importante en la instrumentación de la seguridad.
• No engloba a todos los aspectos de la seguridad.
• Debe ser complementado con medidas externas al S. O.
La simple seguridad física resulta insuficiente ante la posibilidad de acceso mediante equipos remotos conectados.
La tendencia es que los sistemas sean más asequibles y fáciles de usar, pero la favorabilidad hacia el usuario puede implicar un aumento de la vulnerabilidad.
Se deben identificar las amenazas potenciales, que pueden proceder de fuentes maliciosas o no.
El nivel de seguridad a proporcionar depende del valor de los recursos que hay que asegurar.
Requisitos de Seguridad
Los requisitos de seguridad de un sistema dado definen lo que significa la seguridad, para ese sistema [7, Deitel].
Los requisitos sirven de base para determinar si el sistema implementado es seguro:
• Sin una serie de requisitos precisos tiene poco sentido cuestionar la seguridad de un sistema.
• Si los requisitos están débilmente establecidos no dicen mucho sobre la verdadera seguridad del sistema.
Algunos ejemplos de formulación de los requisitos de seguridad son los siguientes:
• Directiva DOD 5200.28 (EE. UU.):
o Especifica cómo debe manipularse la información clasificada en sistemas de procesamiento de datos.
• Manual de Referencia de Tecnología de Seguridad de la Computadora (EE. UU.):
o Especifica cómo evaluar la seguridad de los sistemas de computación de la Fuerza Aérea.
• Ley de Intimidad de 1974 (EE. UU.):
o Requiere que las Agencias Federales aseguren la integridad y seguridad de la información acerca de los individuos, especialmente en el contexto del amplio uso de las computadoras.
Un Tratamiento Total de la Seguridad
Un tratamiento total incluye aspectos de la seguridad del computador distintos a los de la seguridad de los S. O. [7, Deitel].
La seguridad externa debe asegurar la instalación computacional contra intrusos y desastres como incendios e inundaciones:
• Concedido el acceso físico el S. O. debe identificar al usuario antes de permitirle el acceso a los recursos: seguridad de la interfaz del usuario.
La seguridad interna trata de los controles incorporados al hardware y al S. O. para asegurar la confiabilidad, operabilidad y la integridad de los programas y datos.
Seguridad Externa y Seguridad Operacional
Seguridad Externa
La seguridad externa consiste en [7, Deitel]:
• Seguridad física.
• Seguridad operacional.
La seguridad física incluye:
• Protección contra desastres.
• 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 pérdida.
La seguridad física trata especialmente de impedir la entrada de intrusos:
• Se utilizan sistemas de identificación física:
o Tarjetas de identificación.
o Sistemas de huellas digitales.
o 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 [7, Deitel].
La autorización determina qué acceso se permite y a quién.
La clasificación divide el problema en subproblemas:
• Los datos del sistema y los usuarios se dividen en clases:
o A las clases se conceden diferentes derechos de acceso.
Un aspecto crítico 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:
o Se otorgan distintos conjuntos de responsabilidades.
o No es necesario que se conozca la totalidad del sistema para cumplir con esas responsabilidades.
o Para poder comprometer al sistema puede ser necesaria la cooperación entre muchas personas:
 Se reduce la probabilidad de violar la seguridad.
o Debe instrumentarse un gran número de verificaciones y balances en el sistema para ayudar a la detección de brechas en la seguridad.
o El personal debe estar al tanto de que el sistema dispone de controles, pero:
 Debe desconocer cuáles 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 qué grado de seguridad se desea (y cuánto se está dispuesto a gastar en seguridad).
• Analizar las contramedidas disponibles.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO14.htm#Intro

Unidad 6.3 Implantación de matrices de acceso.

El modelo de protección puede ser visto mediante una matriz de acceso. Las filas representan dominios y las columnas representan objetos. Las entradas de la matriz representan el conjunto de derechos para el objeto en cuestión, para determinado dominio.
IMPLANTACION DE MATRICES CON DERECHOS DE ACCESO.
Un modelo de protección puede ser visto abstractamente como una matriz, llamada matriz de derecho. Los renglones de la matriz representan dominios y las columnas representan objetos. Cada entrada en la matriz contiene un conjunto de derechos de acceso. Dado que los objetos son definidos explícitamente por la columna, se puede omitir el nombre del objeto en el derecho de acceso. La entrada "Matriz[i, j]" define el conjunto de operaciones que un proceso ejecutándose en el dominio "Dj" puede realizar sobre el objeto "Oj".
Hay 4 dominios y 5 objetos: 3 Archivos ("A1", "A2", "A3") 1 Puerto Serial y 1 impresora. Cuando un proceso se ejecuta en O1, puede leer los archivos "A1" y "A3".
Un proceso ejecutándose en el dominio "D4" tiene los mismos privilegios que en "D1", pero además puede escribir en los archivos. Nótese que en el puerto serial y la impresora solo se pueden ser ejecutados por procesos del dominio "D2".
ESTRUCTURAS DE PROTECCIÓN DINAMICAS.
Las matrices de acceso vistas hasta el momento, en las que no cambian los derechos en cada dominio durante su ejecución, son un ejemplo de Estructuras de Protección Estáticas. Con el fin de ofrecer flexibilidad y de implementar eficientemente la protección, un Sistema Operativo debe soportar cambios en los derechos de acceso. Para esto se requiere implementar alguna estructura de protección dinámica.
En este caso continuaremos considerando las matrices de acceso, aunque en su versión dinámica. Básicamente se requieren cuatro nuevos derechos de acceso: Copia, Cambio, Propietario y Control.
DERECHO DE ACCESO COPIA.
Este derecho de acceso da la facultad a un proceso de copiar derechos existentes en un dominio hacia otro dominio para el objeto en cuestión. O sea, este derecho genera copias en columnas.
En este caso estará indicado el derecho copia añadiendo el signo (+) al nombre de los derechos que pueden ser copiados.
En la tabla se indica que un proceso ejecutándose en el dominio 1 podrá copiar hacia cualquier otro dominio, el derecho enviar sobre el objeto "COM1" y que un proceso ejecutándose en el dominio "D2" podrá copiar el derecho "Leer" hacia cualquier otro dominio sobre el objeto "Archivo2".
De esta manera, en algún momento posterior, la situación de la tabla podría ser la siguiente:
En la que se ha copiado el derecho "Enviar" del dominio "D1" al dominio "D4" sobre el objeto "COM1" y se ha copiado el derecho "Leer" del dominio "D2" al dominio "D1" sobre el objeto "Archivo 2".
Puede observarse que los derechos "copiados" no contienen el signo (+), o sea, se ha realizado una copia limitada. En general se podría hablar de 3 variantes del derecho "copia": Copia Limitada, Copia Completa, Translación.
COPIA LIMITADA. La copia no incluye el derecho "Copia", con lo que no se podrán hacer copias sucesivas del derecho. Se puede indicar con el signo (+).
COPIA COMPLETA. La copia incluye el derecho "Copia", por lo que se pueden realizar copias sucesivas del derecho. Se puede indicar con el signo (*).
TRANSLACIÓN. El derecho en cuestión junto con el derecho copia se eliminan del dominio original y se coloca en el nuevo dominio. Esta es una forma básica de retirar derechos de un dominio para asignarlo a otro. Se puede indicar con el signo
DERECHO DE ACCESO CAMBIO.
Este derecho de acceso indica la posibilidad de un proceso para cambiarse de un dominio a otro. La operación cambio actúa sobre dominios, o sea, en este caso los dominios son los objetos. Entonces, para considerar este derecho de acceso se deberán incluir los dominios como objetos adicionales en la matriz de acceso. Considérese la siguiente matriz de acceso:
Esta tabla indica que un proceso ejecutándose en "D1" puede cambiarse al dominio "D4" (a); un proceso ejecutándose en "D2" puede cambiarse a "D3"(b) y un proceso ejecutándose en el dominio "D4" puede cambiarse a "D1"(c).

Unidad 6.2 Funciones del sistema de protección.

FUNCIONES DE UN SISTEMA DE PROTECCIÓN.
Dado que los sistemas de computo se han venido haciendo cada vez más sofisticados en sus aplicaciones, la necesidad de proteger su integridad, también ha crecido. Los aspectos principales de protección en un Sistema Operativo son:
1. Protección de los procesos del sistema contra los procesos de usuario.
2. Protección de los procesos de usuario contra los de otros procesos de usuario.
3. Protección de Memoria.
4. Protección de los dispositivos.
Funciones de un sistema de protección.


Dado que los sistemas de cómputo se han venido haciendo cada vez más sofisticados en sus aplicaciones, la necesidad de proteger su integridad, también ha crecido. Los aspectos principales de protección en un Sistema Operativo son:

1. Protección de los procesos del sistema contra los procesos de usuario.
2. Protección de los procesos de usuario contra los de otros procesos de usuario.
3. Protección de Memoria.
4. Protección de los dispositivos.

Protección = Control de empleo de la información + Recursos


FUNCIONES:

 Las funciones de un sistema de protección son asegurar la independencia entre objetos que lógicamente son independientes y la de asegurar el control de acceso a la información y puede ser control asociado al tipo de información o puede ser el control asociado al usuario que solicita el acceso.

 Todos los mecanismos dirigidos a asegurar el sistema informático, siendo el propio sistema el que controla dichos mecanismos,  se engloban en lo que podemos denominar seguridad interna.



• Seguridad del procesador

 Los mecanismos de protección de procesador son:

• Estados protegidos (kernel) o no protegidos (usuarios).
• Reloj hardware para evitar el bloqueo del procesador.

• Seguridad de la memoria

 Se trata de mecanismos para evitar que un usuario acceda la información. Entre ellos citaremos dos:

• Registros límites o frontera.
• Estado protegido y no protegido del procesador.

 Además se emplean para la memoria métodos como el de utilizar un bit de paridad o el checksum.

• Bit de paridad. Consiste en añadir un bit a cada octeto o palabra que se transmita para con él conseguir que la suma de unos sea par (paridad par) o impar (paridad impar). Con este método se detectan errores al variar un bit o un número impar de ellos sin que se detecten variaciones de un número par de bits.

• Si se prevé que los daños esperados en una transmisión no sean de un bit en un octeto o palabra, sino en una secuencia de ellos, se puede utilizar un algoritmo que permita realizar una suma denominada suma de chequeo (checksum) y aplicar el método denominado de redundancia cíclica durante la transmisión, de tal forma que al terminar éste se repite con el destino el mismo algoritmo de suma, comprobándose si el valor final de la suma es el mismo.



• Seguridad de los archivos

 La finalidad principal de las computadoras es el del tratamiento de la información que se almacena permanentemente en los archivos. La pérdida o alteración no deseada de la información causa trastornos irreparables en algunos casos. Por eso es necesario tomar medidas de seguridad que se deben enfocar desde dos aspectos diferentes: La disponibilidad y la privacidad de los archivos.

1) Disponibilidad de los archivos

Un archivo debe tener la información prevista y estar disponible en el momento que un usuario la necesite. Se debe de tener presente la necesidad de asegurar las circunstancias y se deben realizar las siguientes acciones:

.Copias de seguridad (Backup). Consiste en que cada cierto tiempo (hora, día, semana ...) se realice una copia del contenido de los archivos, de forma que si se destruyen éstos, es posible la recuperación de los datos a partir de la última de las copias. La operación de realizar las copias y la recuperación a partir de las mismas, se realizan por medio de programas de utilidad del sistema operativo.

.Archivos log. Se usan en sistemas de tiempo compartido, con muchos usuarios trabajando simultáneamente, en estos sistemas se recurre a archivos auxiliares donde se registran todas las operaciones que realiza un usuario sobre sus archivos, almacenándose la nueva información o aquella que difiere de la ya existente.
Estos archivos reciben el nombre de archivos log y son tratados por utilidades del sistema operativo conjuntamente con las copias de seguridad para los procesos de recuperación. Esta segunda técnica permite asegurar la consistencia del contenido de los archivos ante caídas inesperadas del sistema, evitando que una información se quede a medias de escribir.

 Para solucionar problemas de consistencia, algunos sistemas no dan la operación de escritura por realizada hasta que no se refleja en el log, y esto se hace una vez confirmada la escritura en el disco. Al volver a arrancar, el sistema inspecciona el log buscando operaciones iniciadas y no acabadas, finalizándolas antes de permitir de nuevo el trabajo de los usuarios.


2) Privacidad de los archivos

 Los archivos se deben proteger de posibles accesos no deseados, el sistema de protección debe permitir acceso de forma controlada, según reglas definidas y con las siguiente autorización:

*  Cada usuario, al comenzar la sesión en un sistema tras su identificación, tiene asignado por el sistema de protección un dominio compuesto de una serie de recursos y de operaciones permitidas, por ejemplo, una serie de archivos a los que acceden, no teniendo permitido el acceso al resto de archivos.
 En general, los sistemas operativos almacenan la información relativa a los dominios en los que se denomina matriz de dominios, cuyas filas indican los dominios existentes y las columnas los recursos. Cada elemento de la matriz indica el derecho a utilizar el recurso correspondiente en el dominio. Figura # 2.


 A1 A2 A3 A4 A5 A6 I S
D1 E L     
D2   L L,E  E E
D3     L  E L

Figura # 2. Matriz de acceso.
http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_32.html

Unidad 6.1 Concepto y objetivos de protección.

Refiere a los mecanismo para controlar el acceso de programas, usuarios o proceso a los recursos definido en el sistema. Un sistema es un conjunto de recursos (CPU, memoria, impresoras, etc.) en donde cada objeto o recurso tiene un nombre único. Las operaciones que se pueden hacer sobre cada objeto dependen del objeto.
Dominios de proteccion.-
Cada proceso opera dentro de su dominio de protección, que indica las operaciones que el proceso puede hacer sobre un determinado conjunto de objetos. La habilidad de un proceso de ejecutar una operación sobre un objeto se denomina derecho (acces right). Un dominio es un conjunto de derechos cada uno de los cuales es un par ordenado <objeto, lista de derechos>
Un dominio puede estar definido de varias formas:
Un usuario es un dominio. El conjunto de objetos que pueden ser accedidos dependen de la identidad del usuario.
Un proceso es un domino. El conjunto de objetos que pueden ser accedidos dependen de la identidad del proceso.
Un procedimiento es un dominio.
Protección

La aparición de la multiprogramación introdujo en los computadores la posibilidad de compartir recursos entre varios usuarios. Entre los recursos compartidos están la CPU, la memoria, los dispositivos de entrada/salida, los programas y los datos. El hecho de poder compartir recursos es lo que introdujo la necesidad de protección.

Existen varios motivos por lo que la protección es necesaria. El más obvio es la necesidad de prevenir intentos de violación de restricciones de acceso por parte de un usuario. El más importante es, sin embargo, la necesidad de asegurar que cada proceso use los recursos del sistema de forma consistente de acuerdo con las políticas establecidas para el uso de esos recursos. Este requisito es fundamental para que un sistema sea fiable.

El papel de la protección en un sistema informático es proporcionar un conjunto de mecanismos que permita llevar a cabo las políticas que gobiernan el uso de los recursos. Estas políticas pueden ser fijas, establecidas en el diseño del sistema operativo, pueden ser formuladas por el administrador del sistema, o incluso puede ser establecidas por los usuarios.

Un principio importante es la separación entre política y mecanismo. Los mecanismos determinan hacer cierta cosa, mientras que las políticas deciden es lo que hay que hacer. En el ámbito de la protección, la política define qué datos han de ser protegidos y el mecanismo la forma de llevar a cabo la política. Esta separación favorece la flexibilidad. Debido a que las políticas pueden cambiar con el tiempo o con el lugar, es deseable que el sistema operativo ofrezca un conjunto general de mecanismos por medio de los cuales se puedan establecer políticas diferentes.


3.4.1 Dominios de Protección.

Un computador contiene un conjunto de objetos que han de ser protegidos. Estos objetos pueden ser tanto hardware (CPUs, segmentos de memoria, discos, impresoras, etc.) como software (procesos, ficheros, semáforos, etc.). Cada objeto tiene un identificador único en el sistema y un conjunto de operaciones que le pueden ser aplicadas. Las operaciones posibles dependen del objeto. Por ejemplo, los segmentos de memoria pueden ser leídos o escritos, mientras que un fichero puede ser creado, abierto, leído, escrito, cerrado y borrado. El mecanismo de protección ha de prohibir a los procesos el acceso a aquellos objetos.

 Para estudiar los diferentes mecanismos de protección se introduce el concepto de dominio de protección. Un dominio de protección es un conjunto de pares objeto-derechos, de forma que cada par especifica un objeto y algún subconjunto de operaciones que se pueden realizar sobre dicho objeto.


 

Unidad 5.7 Mecanismos de recuperación en caso de falla.

La perdida de la información es uno de los factores que se le debe de dar mayor importancia, por la sencilla razón de que al perder información se puede perder lo que no nos podemos imaginar en cuanto a la misma y ocasionar perdidas hasta hablar de una gran cantidad de dinero.
  Para solucionar este o estos problemas todo sistema operativo cuenta con al menos una herramienta de software que nos permite recuperar información perdida hasta cierta medida, esto obedece de acuerdo al daño causado o los daños. Si el sistema no cuenta con la herramienta necesaria, deberá adquirirse el software apropiado de algún fabricante especializado en el ramo, por ejemplo Norton.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_48.html

Unidad 5.6 Manejo de espacio en memoria secundaria

Manejo del espacio de memoria secundaria.


 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 blokc 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), ver figura # 5.



2 3



Figura # 5. Lista ligada.



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.
Para manejar los espacios en disco existen los siguientes métodos:
• Contiguos
• Ligados
• Indexados

• Contiguos. Esta asignación requiere que cada archivo ocupe un conjunto de direcciones contiguas en el disco, su asignación es definida por la dirección del primer bloc y la longitud del archivo.
• Asignación ligada. Cada archivo es una lista ligada de blocks y el directorio contiene un apuntador al primer bloc y al último. Figura # 7.

• Asignación Indexada. Cada archivo tiene su propio bloc de índice el cual es un arreglo de direcciones de bloc

 En un sistema de cómputo, los elementos que se declaran para almacenamiento son los Fyle System.

 Cuándo existe una solicitud de almacenamiento o manejo de bloc libres en un file system surge una interrogante ¿cómo atenderlas? esto se lleva a cabo mediante una planificación de discos y para esto existen las siguientes políticas de planificación.

a) FCFS

b) SSTF

b) SCAN

c) SCAN de n-pasos

d) C-SCAN

f) Esquema Eschenbach

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_46.html


Unidad 5.5 Mecanismos de acceso a los archivos

Mecanismos de acceso a los archivos.


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

 Descriptores de archivos. A cada uno de los archivos se le asigna un descriptor el cual contendrá toda la información que necesitará el sistema de archivos para ejecutar con él los comandos que se le soliciten. El descriptor se mantendrá en memoria principal desde que el archivo es abierto hasta que sea cerrado, y debe tener al menos la siguiente información, identificación del archivo, lugar de almacenamiento, información del modo de acceso.
 Identificación del archivo consiste de dos partes que es el nombre simbólico que es el que le da el usuario y un identificador interno que es asignado por el sistema operativo (número).
Lugar de almacenamiento así como el tamaño del archivo.
 Modo de acceso. Se debe indicar en forma explícita quien puede accesar el archivo y conque derecho.

 El sistema de archivos es un componente importante de cualquier sistema operativo, en general contienen:

• Métodos de acceso: Se ocupan de la forma en que se obtiene acceso a los datos almacenados en archivos.
• Administración de archivo. Se ocupa de ofrecer los mecanismos para almacenar, compartir y asegurar archivos, y hacer referencia a ellos.
• Administración de almacenamiento secundario: Se ocupa de asignar espacio a los archivos en dispositivos de almacenamiento secundario.
• Mecanismos de integridad de los archivos: Se ocupan de garantizar que no se corrompa la información en un archivo. Cuando se asegura la integridad de los archivos, cualquier información que debe estar en un archivo estará ahí, la información que no deba estar en un archivo se mantiene fuera de él.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_45.html

Unidad 5.4 Organización lógica y física.

ORGANIZACIÓN DE ARCHIVOS
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.
DE ARCHIVOS LOGICOS. Contempla la organización desde el punto de vista lógico. Por ejemplo, secuencial, directo, etc.
DE ARCHIVOS FISICOS. Contempla la administración de archivos desde la perspectiva física, particularmente la organización del almacenamiento en disco a nivel de pistas y sectores. Este tipo de organización muestra a su vez, 2 aspectos importantes: Métodos De Asignación De Espacio Libre y Asignación De Espacio De Almacenamiento Del Archivo.
Organización lógica y física.

Pueden leerse o escribirse registros arbitrarios, pero no pueden insertarse o suprimirse registros a la mitad de un archivo.
La tercera organización es un árbol de bloques de disco, donde cada cavidad contiene n registros con clave. Los registros pueden cerrarse por clave y pueden insertarse otros en cualquier parte del árbol.

 Si se agrega un registro a un bloque que está repleto, éste se divide en su secuencia alfabética correcta. Este método se aplica en muchas macrocomputadoras, donde se llaman ISAM (método de acceso secuencia indizado).
 La organización física es llevada a cabo en un sistema por medio de Directorios.
 Para llevar el control de los archivos, el sistema de archivos proporciona directorios, los cuales en muchos sistemas, son archivos.


 Un directorio puede tener varias entradas, donde cada un describe un archivo. Las entradas pueden contener cierta información acerca del archivo o bien apuntar a otras estructuras que la tengan.

 La manera más simple consiste en que el sistema conserve un solo directorio que contenga todos los archivos de todos los usuarios. Si hay muchos usuarios y éstos eligen los mismos nombres de archivos (por ejemplo, mail y games), habrá conflictos y la confusión volverán el sistema impracticable. Este modelo de sistema es utilizado solamente por los sistemas operativos de microcomputadoras más primitivos.
 Una mejora a la idea de tener un solo directorio para todos los archivos consiste en tener un directorio por usuario. Figura #


 Este método elimina conflictos de nombre entre los usuarios, pero no es muy satisfactorio para usuarios con muchos archivos.
 Es necesaria una jerarquía general (o sea, un árbol de directorios). Con este método, cada usuario puede tener tantos directorios como se necesiten de manera que los archivos se puedan agrupar en formas naturales.

 Cuando el sistema de archivos se organiza como un árbol de directorios, se necesita contar con alguna manera de especificar nombres de archivos. Comúnmente se emplean dos métodos:

• Nombre de ruta absoluta. Que consta de la ruta que va del directorio raíz al archivo. Ejem: La ruta /usr/ast/mailbox el directorio raíz contiene un subdirectorio usr el cual contiene un subdirectorio ast, que contiene el archivo mailbox. Los nombres de ruta absoluta siempre comienzan en el directorio raíz y son únicos.
• Nombre de ruta relativa. Se utiliza junto con el concepto directorio de trabajo (ó directorio actual). Un usuario puede designar un directorio como el directorio de trabajo actual. En UNIX, todos los nombres de ruta que comienzan con una diagonal / son absolutos; todos los otros son relativos al directorio de trabajo actual del usuario. Si el directorio de trabajo actual es /usr/ast/mailbox puede referirse simplemente como mailbox.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_44.html

Unidad 5.3 Componentes de un sistema de archivos.

COMPONENTE DE UN SISTEMA DE ARCHIVO
EL SISTEMA DE ARCHIVOS DE UN SISTEMA OPERATIVO. Lo conforman todas aquellas rutinas encargadas de administrar todos los aspectos relacionados con el manejo de Archivos.
COMPONENTES DEL SISTEMA DE ARCHIVOS. 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.
Mecanismos De Integridad. Se ocupan de garantizar que no se corrompa la información de un archivo, de tal manera que solo la información que deba estar en el, se encuentre ahí.
Componentes de un sistema de archivos.

                Reg. lógico

             Reg. físico


Figura # 1. Componentes, niveles de un sistema de archivos.



1. Contiene las diferentes rutinas y comandos atravéz de los cuales el usuario podrá estructurar sus archivos virtuales.

2. Convierte los identificadores simbólicos de los archivos en identificadores internos, los cuales apuntarán a su descriptor o a una estructura que permite encontrar el archivo.

3. Su objetivo es el de activar y desactivar a través de las rutinas de abrir y cerrar archivos y verifica el modo de acceso.

4. Traslada las direcciones lógicas en direcciones físicas correspondientes a las estructuras de memoria secundaria y los buffers en memoria principal necesarios para la transferencia de datos.

5. Por cada petición de acceso al archivo real, este mecanismo genera la secuencia de operaciones elementales de entrada y salida que se necesita.

6. En este nivel es donde se tiene el número de peticiones pendientes así como de las que se están realizando y lleva el control y asignación de tiempo de CPU a las diferentes peticiones de E/S.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_43.html

Unidad 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

Archivo Real: Es un objeto que contiene programas, datos o cualquier otro elemento.

 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.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_42.html
Archivos
Se considerará el punto de vista del usuario.
Nombre de los Archivos
Las reglas exactas para los nombres de archivos varían de sistema a sistema [23, Tanenbaum].
Algunos sistemas de archivos distinguen entre las letras mayúsculas y minúsculas, mientras que otros no.
Muchos S. O. utilizan nombres de archivo con dos partes, separadas por un punto:
• La parte posterior al punto es la extensión de archivo y generalmente indica algo relativo al archivo, aunque las extensiones suelen ser meras convenciones.
Estructura de un Archivo
Los archivos se pueden estructurar de varias maneras, las más comunes son [23, Tanenbaum]:
• “Secuencia de bytes”:
o El archivo es una serie no estructurada de bytes.
o Posee máxima flexibilidad.
o El S. O. no ayuda pero tampoco estorba.
• “Secuencia de registros”:
o El archivo es una secuencia de registros de longitud fija, cada uno con su propia estructura interna.
• “Árbol ”:
o El archivo consta de un árbol de registros, no necesariamente de la misma longitud.
o Cada registro tiene un campo key (llave o clave) en una posición fija del registro.
o El árbol se ordena mediante el campo de clave para permitir una rápida búsqueda de una clave particular.
Tipos de Archivos
Muchos S. O. soportan varios tipos de archivos, por ej.: archivos regulares, directorios, archivos especiales de caracteres, archivos especiales de bloques, etc., donde [23, Tanenbaum]:
• Los Archivos Regulares son aquellos que contienen información del usuario.
• Los Directorios son archivos de sistema para el mantenimiento de una estructura del sistema de archivos.
• Los Archivos Especiales de Caracteres:
o Tienen relación con la e / s.
o Se utilizan para modelar dispositivos seriales de e / s (terminales, impresoras, redes, etc.).
• Los Archivos Especiales de Bloques se utilizan para modelar discos.
Acceso a un Archivo
Los tipos de acceso más conocidos son:
• Acceso Secuencial: el proceso lee en orden todos los registros del archivo comenzando por el principio, sin poder:
o Saltar registros.
o Leer en otro orden.
• Acceso Aleatorio: el proceso puede leer los registros en cualquier orden utilizando dos métodos para determinar el punto de inicio de la lectura:
o Cada operación de lectura (read) da la posición en el archivo con la cual iniciar.
o Una operación especial (seek) establece la posición de trabajo pudiendo luego leerse el archivo secuencialmente.
Atributos de Archivo
Cada archivo tiene:
• Su nombre y datos.
• Elementos adicionales llamados atributos, que varían considerablemente de sistema a sistema.
Algunos de los posibles atributos de archivo son [23, Tanenbaum]:
• “Protección”: quién debe tener acceso y de qué forma.
• “Contraseña”: contraseña necesaria para acceder al archivo.
• “Creador”: identificador de la persona que creó el archivo.
• “Propietario”: propietario actual.
• “Bandera exclusivo - para - lectura”: 0 lectura / escritura, 1 para lectura exclusivamente.
• “Bandera de ocultamiento”: 0 normal, 1 para no exhibirse en listas.
• “Bandera de sistema”: 0 archivo normal, 1 archivo de sistema.
• “Bandera de biblioteca”: 0 ya se ha respaldado, 1 necesita respaldo.
• “Bandera ascii / binario”: 0 archivo en ascii, 1 archivo en binario.
• “Bandera de acceso aleatorio”: 0 solo acceso secuencial, 1 acceso aleatorio.
• “Bandera temporal”: 0 normal, 1 eliminar al salir del proceso.
• “Banderas de cerradura”: 0 no bloqueado, distinto de 0 bloqueado.
• “Longitud del registro”: número de bytes en un registro.
• “Posición de la llave”: ajuste de la llave dentro de cada registro.
• “Longitud de la llave”: número de bytes en el campo llave.
• “Tiempo de creación”: fecha y hora de creación del archivo.
• “Tiempo del último acceso”: fecha y hora del último acceso al archivo.
• “Tiempo de la última modificación”: fecha y hora de la última modificación al archivo.
• “Tamaño actual”: número de bytes en el archivo.
• “Tamaño máximo”: tamaño máximo al que puede crecer el archivo.
Operaciones con Archivos
Las llamadas más comunes al sistema relacionadas con los archivos son [23, Tanenbaum]:
• Create (crear): el archivo se crea sin datos.
• Delete (eliminar): si el archivo ya no es necesario debe eliminarse para liberar espacio en disco. Ciertos S. O. eliminan automáticamente un archivo no utilizado durante “n” días.
• Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es permitir que el sistema traslade los atributos y la lista de direcciones en disco a la memoria principal para un rápido acceso en llamadas posteriores.
• Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio interno.
• Read (leer): los datos se leen del archivo; quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos.
• Write (escribir): los datos se escriben en el archivo, en la posición actual. El tamaño del archivo puede aumentar (agregado de registros) o no (actualización de registros).
• Append (añadir): es una forma restringida de “write”. Solo puede añadir datos al final del archivo.
• Seek (buscar): especifica el punto donde posicionarse. Cambia la posición del apuntador a la posición activa en cierto lugar del archivo.
• Get attributes (obtener atributos): permite a los procesos obtener los atributos del archivo.
• Set attributes (establecer atributos): algunos atributos pueden ser determinados por el usuario y modificados luego de la creación del archivo. La información relativa al modo de protección y la mayoría de las banderas son un ejemplo obvio.
• Rename (cambiar de nombre): permite modificar el nombre de un archivo ya existente.
Archivos Mapeados a Memoria
Algunos S. O. permiten asociar los archivos con un espacio de direcciones de un proceso en ejecución [23, Tanenbaum].
Se utilizan las llamadas al sistema “map” y “unmap”:
• “Map”: utiliza un nombre de archivo y una dirección virtual y hace que el S. O. asocie al archivo con la dirección virtual en el espacio de direcciones, por lo cual las lecturas o escrituras de las áreas de memoria asociadas al archivo se efectúan también sobre el archivo mapeado.
• “Unmap”: elimina los archivos del espacio de direcciones y concluye la operación de asociación.
El mapeo de archivos elimina la necesidad de programar la e / s directamente, facilitando la programación.
Los principales problemas relacionados son:
• Imposibilidad de conocer a priori la longitud del archivo de salida, el que podría superar a la memoria.
• Dificultad para compartir los archivos mapeados evitando inconsistencias, ya que las modificaciones hechas en las páginas no se verán reflejadas en el disco hasta que dichas páginas sean eliminadas de la memoria.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO4.htm

Unidad 5.1 Concepto.

Sistema de Archivos: La estructura de un sistema de archivos es en forma de árbol. El sistema de archivos son los archivos y directorios. Las funciones son crear y eliminar archivos, compartir archivos para intercambiar información, agrupar archivos en forma conveniente al usuario, respaldo y recuperación, el acceso de los usuarios a la información sin la necesidad de conocer la ubicación física (sabiendo solo los nombres simbólicos).
Un archivo es un conjunto de información, que se encuentra almacenada o guardada en la memoria principal del computador, en el disco duro, en el disquete flexible o en los discos compactos (Cd-Rom).
Antes de que un archivo pueda leerse o escribirse en él, debe abrirse, momento en el cual se verifican los permisos. Estos archivos se abren especificando en el computador la ruta de acceso al archivo desde el directorio raíz, que es la unidad principal del disco del computador, este puede ser un disco duro o disco flexible. Entonces el sistema operativo visualiza el entorno al abrir un archivo.
Uno de los problemas mas frecuentes en el manejo de archivos son los deadlock, un deadlock es una situación no deseada de espera indefinida y se da cuando en un grupo de procesos, dos o más procesos de ese grupo esperan por llevar a cabo una tarea que será ejecutada por otro proceso del mismo grupo, entonces se produce el bloqueo. Los bloqueos se dan tanto en los sistemas operativos tradicionales como en los distribuidos, solo que en estos últimos es más difícil de prevenirlos, evitarlos e incluso detectarlos, y si se los logra detectar es muy complicado solucionarlos ya que la información se encuentra dispersa por todo el sistema.
Una vez que un deadlock se detecta, es obvio que el sistema está en problemas y lo único que resta por hacer es una de dos cosas: tener algún mecanismo de suspensión o reanudación que permita copiar todo el contexto de un proceso incluyendo valores de memoria y aspecto de los periféricos que esté usando para reanudarlo otro día, o simplemente eliminar un proceso o arrebatarle el recurso, causando para ese proceso la pérdida de datos y tiempo.
Funciones del Sistema de Archivos
Los usuarios deben poder crear, modificar y borrar archivos.
Se deben poder compartir los archivos de una manera cuidadosamente controlada [7, Deitel].
El mecanismo encargado de compartir los archivos debe proporcionar varios tipos de acceso controlado:
• Ej.: “Acceso de Lectura”, “Acceso de Escritura”, “Acceso de Ejecución”, varias combinaciones de estos, etc.
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:
o Los dispositivos particulares.
o Dónde serán almacenados los datos.
o El formato de los datos en los dispositivos.
o Los medios físicos de la transferencia de datos hacia y desde los dispositivos.

El Sistema de Archivos
Un “Archivo” es un conjunto de registros relacionados [23, Tanenbaum].
El “Sistema de Archivos” es un componente importante de un S. O. y suele contener [7, Deitel]:
• “Métodos de acceso” relacionados con la manera de acceder a los datos almacenados en archivos.
• “Administración de archivos” referida a la provisión de mecanismos para que los archivos sean almacenados, referenciados, compartidos y asegurados.
• “Administración del almacenamiento auxiliar” para la asignación de espacio a los archivos en los dispositivos de almacenamiento secundario.
• “Integridad del archivo” para garantizar la integridad de la información del archivo.
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.
Los nombres de archivos solo necesitan ser únicos dentro de un directorio de usuario dado.
El nombre del sistema para un archivo dado debe ser único para el sistema de archivos.
En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele estar formado como el “nombre de la trayectoria” del directorio raíz al archivo.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO4.htm

Unidad 4.4 Operaciones de Entrada /salida.

Los dispositivos de entrada salida se dividen, en general, en dos tipos: dispositivos orientados a bloques y
dispositivos orientados a caracteres. Los dispositivos orientados a bloques tienen la propiedad de que se pueden
direccionar, esto es, el programador puede escribir o leer cualquier bloque del dispositivo realizando primero una
operación de posicionamiento sobre el dispositivo. Los dispositivos más comunes orientados a bloques son los
discos duros, la memoria, discos compactos y, posiblemente, unidades de cinta. Por otro lado, los dispositivos
orientados a caracteres son aquellos que trabajan con secuencias de byes sin importar su longitud ni ningúna
agrupación en especial. No son dispositivos direccionables. Ejemplos de estos dispositivos son el teclado, la
pantalla o display y las impresoras.
La clasificación anterior no es perfecta, porque existen varios dispositivos que generan entrada o salida que no
pueden englobarse en esas categorías. Por ejemplo, un reloj que genera pulsos. Sin embargo, aunque existan
algunos periféricos que no se puedan categorizar, todos están administrados por el sistema operativo por medio
de una parte electrónica - mecánica y una parte de software.
Los controladores de dispositivos (también llamados adaptadores de dispositivos) son la parte electrónica de los
periféricos, el cual puede tener la forma de una tarjeta o un circuito impreso integrado a la tarjeta maestra de la
computadora. Por ejemplo, existen controladores de discos que se venden por separado y que se insertan en una
ranura de la computadora, o existen fabricantes de computadoras que integran esa funcionalidad en la misma
tarjeta en que viene la unidad central de procesamiento (tarjeta maestra).
Los controladores de dispositivos generalmente trabajan con voltajes de 5 y 12 volts con el dispositivo
propiamente, y con la computadora a través de interrupciones. Estas interrupciones viajan por el 'bus' de la
computadora y son recibidos por el CPU el cual a su vez pondrá en ejecución algún programa que sabrá qué
hacer con esa señal. A ese programa se le llama 'manejador de disposito' (device driver). Algunas veces el mismo
controlador contiene un pequeño programa en una memoria de solo lectura o en memoria de acceso aleatoria no
volátil y re-escribible que interactúa con el correspondiente manejador en la computadora.

Unidad 4.3 Estructuras de datos para manejo de dispositivos.

4.3 Estructuras de datos para manejo de dispositivos.

Hay estructuras que se crean en memoria durante la ejecución de los procesos relacionadas con el uso que estos hacen de los archivos.

El sistema cuenta con una tabla de archivos abiertos (open file table) general donde figura información sobre los archivos activos (que están siendo usados por los procesos) e índices de referencia al archivo. Algunos sistemas requieren hacer un open previo al primer read.

La llamada a sistema open toma el nombre de archivo, busca en el directorio, copia la entrada del directorio en la tabla de archivos abiertos. Todo esto si estas acciones son permitidas de acuerdo a los modos de protección del archivo.

Un puntero para accederlo rápidamente es también puesto en la tabla de archivos abiertos.

En un sistema multiusuario, un archivo puede ser abierto por mas de dos usuarios simultáneamente, cada uno con su puntero.

Hay dos tipos de tablas. La tabla por proceso contiene información sobre los archivos abiertos por el proceso y contiene un apuntador a la segunda tabla, la de los archivos abiertos en todo el sistema. Esta segunda tabla tiene información independiente del proceso que lo ejecute como ubicación del archivo en el disco, medida del archivo, etc.

La tabla del sistema tiene también la cantidad de procesos que tienen abierto el archivo, y con cada close este valor se va decrementando. Cuando queda en cero, se remueve esa entrada.

La información asociada a un archivo abierto es:

Puntero (File pointer)
Contador de aperturas del file (File open count) cuando lo tiene abierto mas de un
proceso simultáneamente

Ubicación del archivo en el disco

Hay sistemas que permiten compartir entre varios procesos, secciones de un archivo: un archivo ejecutable que reside en disco y es llevado a memoria y forma parte del espacio de direcciones de varios procesos; o archivos de datos cuyos bloques en memoria son accedidos por varios procesos.

Unidad 4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers).

4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers).

Los manejadores de dispositivos tienen la función de comenzar las operaciones de E/S en un dispositivo y procesar la terminación de una solicitud de E/S.

El sistema de archivos básico trata con bloques de datos que son los que se intercambian con los discos o cintas. Ubica estos bloques en el almacenamiento secundario o en el intermedio en memoria principal. Este sistema normalmente se considera parte del SO.

El supervisor básico de E/s se responsabiliza de iniciar y terminar la E/s con archivos, Selecciona el dispositivo donde se realizará la E/S, según el archivo seleccionado. Planifica los accesos a disco y cinta, asigna los buffers de E/S y reserva la memoria secundaria. Es parte del SO.

La E/S lógica tiene la función de permitir a los usuarios y aplicaciones acceder a los registros.

El método de acceso es el nivel mas cercano al usuario, proporcionando una interfaz entre las aplicaciones y los archivos.

Los usuarios y las aplicaciones tratan con registros y la E/S se realiza de a bloques. Los registros deben bloquearse para la salida, y desbloqueaser en la lectura. Para manejar la E/S con bloques deben proveerse las funciones para ello: por ejemplo, se debe gestionar el almacenamiento secundario (asignación de bloques libres de memoria secundaria a los archivos, gestionar el espacio libre, manejar la solicitud de bloques individuales. Todo esto debe organizarse optimizando el rendimiento

Unidad 4.1 Dispos itivos y manejadores de dispositivos (device drivers).

Dispositivos de Entrada - Salida
Los dispositivos de entrada salida se dividen, en general, en dos tipos: dispositivos orientados a bloques y dispositivos orientados a caracteres. Los dispositivos orientados a bloques tienen la propiedad de que se pueden direccionar, esto es, el programador puede escribir o leer cualquier bloque del dispositivo realizando primero una operación de posicionamiento sobre el dispositivo. Los dispositivos más comunes orientados a bloques son los discos duros, la memoria, discos compactos y, posiblemente, unidades de cinta. Por otro lado, los dispositivos orientados a caracteres son aquellos que trabajan con secuencias de byes sin importar su longitud ni ningúna agrupación en especial. No son dispositivos direccionables. Ejemplos de estos dispositivos son el teclado, la pantalla o display y las impresoras.
La clasificación anterior no es perfecta, porque existen varios dispositivos que generan entrada o salida que no pueden englobarse en esas categorías. Por ejemplo, un reloj que genera pulsos. Sin embargo, aunque existan algunos periféricos que no se puedan categorizar, todos están administrados por el sistema operativo por medio de una parte electrónica - mecánica y una parte de software.
Controladores de Dispositivos ( Terminales y Discos Duros)
Los controladores de dispositivos (también llamados adaptadores de dispositivos) son la parte electrónica de los periféricos, el cual puede tener la forma de una tarjeta o un circuito impreso integrado a la tarjeta maestra de la computadora. Por ejemplo, existen controladores de discos que se venden por separado y que se insertan en una ranura de la computadora, o existen fabricantes de computadoras que integran esa funcionalidad en la misma tarjeta en que viene la unidad central de procesamiento (tarjeta maestra).
Los controladores de dispositivos generalmente trabajan con voltajes de 5 y 12 volts con el dispositivo propiamente, y con la computadora a través de interrupciones. Estas interrupciones viajan por el 'bus' de la computadora y son recibidos por el CPU el cual a su vez pondrá en ejecución algún programa que sabrá qué hacer con esa señal. A ese programa se le llama 'manejador de disposito' (device driver). Algunas veces el mismo controlador contiene un pequeño programa en una memoria de solo lectura o en memoria de acceso aleatoria no volátil y re-escribible que interactúa con el correspondiente manejador en la computadora. En la figura 6.1 se muestra un esquema simple de dispositivos orientados a bloques y otros a caracteres.
Por ejemplo, la terminal (CRT) tiene un 'chip' que se encarga de enviar cadenas de bits por medio de un cable serial que a su vez son recibidos por un controlador de puerto serial en la computadora. Este 'chip' también se encarga de leer secuencias de bits que agrupa para su despiegue en la pantalla o para ejecutar algunas funciones de control. Lo importante en todos estos dispositivos es que se debe ejercer un mecanismo para sincronizar el envío y llegada de datos de manera concurrente.
Para intercambiar datos o señales entre la computadora y los controladores, muchas veces se usan registros o secciones predefinidas de la memoria de la computadora. A este esquema se le llama 'manejo de entrada - salida mapeado por memoria' (memory mapped I/O). Por ejmplo, para una IBM PC se muestran los vectores de interrupción y las direcciones para la entrada -salida en la tabla 6.1.
Controlador Dirección(Hex) Vector de Interrupción
Reloj 040 - 043 8
Teclado 060 - 063 9
Disco Duro 320 - 32F 13
Impresora 378 - 37F 15
Monitor Mono 380 - 3BF -
Monitor Color 3D0 - 3DF -
Disco Flexible 3F0 - 3F7 14

Unidad 3.4 Administración de memoria virtual.

Estrategias de Administración del Almacenamiento Virtual
Las diferentes organizaciones de almacenamiento virtual generalmente implementadas son [7, Deitel]:
• Paginación.
• Segmentación.
• Segmentación y paginación.
Las estrategias para la administración de sistemas de almacenamiento virtual condicionan la conducta de los sistemas de almacenamiento virtual que operan según esas estrategias.
Se consideran las siguientes estrategias:
• “Estrategias de búsqueda”:
o Tratan de los casos en que una página o segmento deben ser traídos del almacenamiento secundario al primario.
o Las estrategias de “búsqueda por demanda” esperan a que se haga referencia a una página o segmento por un proceso antes de traerlos al almacenamiento primario.
o Los esquemas de “búsqueda anticipada” intentan determinar por adelantado a qué páginas o segmentos hará referencia un proceso para traerlos al almacenamiento primario antes de ser explícitamente referenciados.
• “Estrategias de colocación”:
o Tratan del lugar del almacenamiento primario donde se colocará una nueva página o segmento.
o Los sistemas toman las decisiones de colocación de una forma trivial ya que una nueva página puede ser colocada dentro de cualquier marco de página disponible.
• “Estrategias de reposición”:
o Tratan de la decisión de cuál página o segmento desplazar para hacer sitio a una nueva página o segmento cuando el almacenamiento primario está completamente comprometido.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.4.2 Técnicas de reemplazo de páginas.
Reemplazo de Página.-
Si al momento de generarse un page fault no hubiera ningún frame disponible, se debe proceder a reemplazar una pagina de memoria. LA rutina de page fault debe ser modificada para incluir reemplazo de páginas:
1. Encontrar un frame disponible.
2. Si hay un frame disponible usarlo
3. Si no hay frames disponibles utilizar algoritmo de reemplazo de paginas para seleccionar la víctima
4. Escribir la pagina víctima a disco y actualizar tabla de paginas .
Estrategias de Reposición de Página
Las principales son:
• El principio de optimización.
• Reposición de páginas al azar.
• Primero en entrar - primero en salir.
• Menos recientemente usada.
• Menos frecuentemente usada.
• No usada recientemente.
• Conjuntos de trabajo.
El Principio de Optimización
El “principio de optimización” indica que para obtener un rendimiento óptimo, la página que se va a reponer es una que no se va a utilizar en el futuro durante el período de tiempo más largo.
El problema es que no es factible predecir el futuro.
Reposición de Página al Azar
Consiste en escoger al azar la página que va a ser reemplazada.
Todas las páginas del almacenamiento principal deben tener la misma probabilidad de ser reemplazadas.
Debe poder seleccionar cualquier página, incluyendo la que va a ser referenciada a continuación (peor selección).
Este esquema es raramente usado.
Reposición de Página por el Sistema de Primero en Entrar -Primero en Salir (FIFO)
Se registra el momento en que cada página ingresa al almacenamiento primario.
Para reemplazar una página, se selecciona aquella que ha estado más tiempo almacenada.
Se presenta el inconveniente de que se pueden reemplazar páginas muy usadas, que serán llamadas de nuevo al almacenamiento primario casi de inmediato.
Se puede presentar la llamada “anomalía FIFO”:
• Belady, Nelson y Shedler descubrieron que con la reposición FIFO, ciertos patrones de referencias de páginas causan más fallos de páginas cuando se aumenta el número de marcos (celdas) de páginas asignados a un proceso: en esto consiste la “anomalía FIFO”.
• Esta anomalía contradice a la intuición (ver Figura 3.34 [7, Deitel]).


Reposición de Página Menos - Recientemente - Usada (LRU)
Esta estrategia selecciona para ser reemplazada la página que no ha sido usada durante el mayor período de tiempo.
Se basa en la heurística de que el pasado reciente es un buen indicador del futuro próximo.
Requiere que cada página reciba un “sello de tiempo” cada vez que se referencia:
• Puede significar una sobrecarga adicional importante.
• No se implementa frecuentemente.
La página seleccionada para reemplazo podría ser la próxima en ser requerida, por lo que habría que paginarla de nuevo al almacenamiento principal casi de inmediato.
Reposición de Página Menos - Frecuentemente - Usada (LFU)
Acá interesa la intensidad de uso que haya tenido cada página.
La página que será reemplazada es aquella que ha sido usada con menos frecuencia o que ha sido referida con menos intensidad.
El inconveniente es que se puede seleccionar fácilmente para su reposición la página equivocada:
• Ej.: La página de uso menos frecuente puede ser la página de entrada más reciente al almacenamiento principal, y por lo tanto existe una alta probabilidad de que sea usada de inmediato.
Reposición de Página No Usada - Recientemente (NUR)
Presupone que las páginas que no han tenido uso reciente tienen poca probabilidad de ser usadas en el futuro próximo y pueden ser reemplazadas por otras nuevas.
Es deseable reemplazar una página que no ha sido cambiada mientras estaba en el almacenamiento primario.
La estrategia NUR se implementa con la adición de dos bits de hardware por página:
• “Bit referenciado”:
o = 0 si la página no ha sido referenciada.
o = 1 si la página ha sido referenciada.
• “Bit modificado” (también llamado “bit sucio”):
o = 0 si la página no ha sido modificada.
o = 1 si la página ha sido modificada.
La selección de la página que será reemplazada comienza buscando una página que no ha sido referenciada, pero si no la encuentra habrá que reemplazar una página que ha sido referenciada.
Si una página ha sido referenciada se comprueba si ha sido modificada o no:
• Si no ha sido modificada se la reemplaza:
o Su reposición representa menos sobrecarga que la de una página modificada, ya que debería grabarse de nuevo en el almacenamientos secundario.
• Si no se encuentra una página que no ha sido modificada será reemplazada una página modificada.
Con el transcurso del tiempo la mayoría de los “bits referenciados” serán activados:
• Se pierde la capacidad para distinguir las páginas más deseables para ser reemplazadas.
• Para evitarlo se ajustan periódicamente todos los “bits referenciados” a “0”:
o Se logra un nuevo inicio.
o Se vuelve vulnerable al reemplazo aún a las páginas activas, pero solo brevemente, mientras se reajustan los bits.
Los “bits modificados” no se ajustan periódicamente según esta estrategia.
Localidad
El concepto de “localidad” expresa [7, Deitel]:
• “Los procesos tienden a hacer referencia al almacenamiento en patrones no uniformes y muy localizados”.
La “localidad” se manifiesta en el “tiempo” y en el “espacio”:
• Es una propiedad empírica (observada).
• Nunca está garantizada pero es altamente probable.
• Ej.: Los procesos tienden a favorecer ciertos subconjuntos de páginas, las que tienden a ser adyacentes entre sí en el espacio de direcciones virtuales del proceso.
• Está relacionada con la forma en que se escriben los programas y se organizan los datos.
“Localidad temporal ”: significa que las localidades de almacenamiento referenciadas recientemente tienen una alta probabilidad de ser referenciadas en un futuro próximo:
• Se apoya en la utilización de:
o Formación de ciclos (loops).
o Subrutinas.
o Pilas.
o Variables usadas para contar y totalizar.
“Localidad en el espacio”: significa que las referencias de almacenamiento tienden a acumularse de manera tal que, una vez que se hace referencia a una localidad, es muy probable que las localidades cercanas sean también referenciadas:
• Se apoya en la utilización de:
o Recorrido de arreglos.
o Ejecución secuencial de código.
o Tendencia de los programadores a colocar definiciones de variables relacionadas, próximas entre sí.
Un programa puede ejecutar eficientemente mientras su subconjunto de páginas preferido se encuentre en el almacenamiento primario.
El número de fallos de páginas de un proceso depende de la cantidad de almacenamiento primario disponible para sus páginas.
Generalmente los procesos no muestran patrones de referencias aleatorios uniformemente distribuidos por sus diferentes páginas.
Al reducir el número de marcos (celdas) de páginas disponibles para un proceso existe un intervalo durante el cual la razón de fallos de páginas no se afecta excesivamente.
En determinado punto, cuando se reduce más el número de marcos de páginas, el número de fallos de páginas aumenta drásticamente.
Mientras el subconjunto de páginas favorecidas por un proceso permanezca en el almacenamiento primario, el número de fallos de páginas no aumenta mucho.
Tan pronto como las páginas del subconjunto favorecido son retiradas del almacenamiento primario, la actividad de paginación del proceso aumenta en gran medida al referenciar y traer de nuevo estas páginas al almacenamiento primario.
Los “subconjuntos favorecidos” también son llamados “conjuntos de trabajo” o “working sets” (ver Figura 3.35 [7, Deitel]).

Inicio:    Fin: 
Conjuntos de Trabajo
Denning desarrolló un punto de vista de la actividad de paginación de un programa llamado la “teoría de conjunto de trabajo del comportamiento de un programa” [7, Deitel].
Un “conjunto de trabajo” es una colección de páginas a las cuales un proceso hace activamente referencia.
Denning sostenía que para que un programa se ejecutara eficientemente, su conjunto de trabajo debe ser mantenido en el almacenamiento primario, para evitar la “hiperpaginación”.
Una “política de administración de almacenamiento por conjunto de trabajo” trata de mantener el conjunto de trabajo de los programas activos en el almacenamiento primario.
La decisión de añadir un nuevo proceso al conjunto activo de procesos (aumentar el nivel de multiprogramación):
• Se basa en si hay suficiente espacio disponible en el almacenamiento primario como para acomodar el conjunto de trabajo del nuevo proceso.
• Se toma generalmente de forma heurística ya que es imposible para el sistema conocer por anticipado el tamaño del conjunto de trabajo de un proceso dado.
El conjunto de trabajo de páginas de un proceso “w(t,w)” en el momento “t” es el conjunto de páginas referidas por un proceso durante el intervalo de tiempo del proceso “t - w” a “t ” (ver Figura 3.36 [7, Deitel]).

El “tiempo del proceso” es el tiempo durante el cual este proceso tiene la cpu.
La variable “w” se denomina “tamaño de la ventana del conjunto de trabajo”:
• La determinación del tamaño de “w” es muy importante.
• Al aumentar el tamaño de la ventana “w” aumenta el tamaño del conjunto de trabajo (ver Figura 3.37 [7, Deitel]).


“El verdadero conjunto de trabajo de un proceso es el conjunto de páginas que deben estar en el almacenamiento primario para la ejecución eficaz de este proceso”.
Los conjuntos de trabajo cambian mientras un proceso está en ejecución:
• Complica la administración precisa del almacenamiento primario en base a esta estrategia.
• “Los conjuntos de trabajo son transitorios y el siguiente conjunto de trabajo del proceso puede diferir substancialmente de su conjunto de trabajo anterior”.
• Se debe evitar un exceso de compromiso del almacenamiento primario y la consecuente hiperpaginación.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.8.3 Paginación por demanda.
Paginación por demanda.-
Es similar a lo visto para la paginación introduciendo el concepto de swapping. Los procesos residen en el disco y al ser ejecutados deben ser cargados en memoria. Cuando un proceso va a ser ejecutado, el mismo es swappeado a memoria, utilizando lazy swapping. El lazy swapping nunca trae paginas a memoria si no van a ser ejecutadas. Se necesita determinar si un pagina esta en memoria o en disco, por lo cual se utiliza el bit de válido / inválido de la tabla de páginas. Si el bit = 1 la página es valida y esta cargada en memoria si es 0 la página es inválida y no esta cargada en memoria (esta en disco).
Cuando un proceso intenta acceder a una página que no esta cargada en memoria ocurre un page fault (tomo de página). El procedimiento para manejar un page fault es el siguiente:
1. Verificar si la referencia a la pagina es valida (se utiliza una tabla interna (generalmente llevada en PCB) donde se indica las paginas validas.
2. Si la referencia no es valida, se cancela la ejecución del proceso.
3. Encontrar un frame disponible para cargarla (la página esta en disco)(por ejemplo de la free frame list)
4. Solicitar operación de I/O para leer la página de disco cargarla en el frame obtenido.
5. Modificar la tabla interna y la tabla de paginas para que ahora esta pagina figure como que esta en memoria.
6. Continuar con la ejecución del proceso en la instrucción en la que fue interrumpido.
Paginación por Demanda
Las paginas son cargadas por demanda [7, Deitel].
No se llevan páginas del almacenamiento secundario al primario hasta que son referenciadas explícitamente por un proceso en ejecución.
Las razones del atractivo de esta estrategia son:
• Los resultados de computabilidad, en especial el “problema de parada”, indican que el camino que tomará la ejecución de un programa no se puede predecir con exactitud.
• Garantiza que solo las páginas que necesita el proceso sean traídas al almacenamiento principal.
• La sobrecarga de proceso para decidir qué página traer al almacenamiento principal es mínima.
El principal inconveniente está en los procesos que requieren acumular sus páginas una por una:
• Los tiempos de espera de páginas son considerables.
• Es creciente la cantidad de almacenamiento primario afectada al proceso que espera páginas, por lo que el “producto espacio - tiempo” se incrementa.
El “producto espacio - tiempo” indica la cantidad de almacenamiento que usa un proceso y la cantidad de tiempo que lo usa.
“La reducción del producto espacio - tiempo de las esperas de páginas de un proceso es una meta importante de las estrategias de administración del almacenamiento” (ver Figura 3.38 [7, Deitel]).

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.8.4 Paginación anticipada.
Paginación Anticipada
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 [7, Deitel].
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.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA


3.8.5 Liberación de página.
Liberación de Página
Un proceso usuario puede emitir una “liberación voluntaria de página” para liberar el marco de página cuando ya no necesitara esa página [7, Deitel].
Se puede eliminar el “desperdicio” y acelerar la ejecución.
El inconveniente es que la incorporación de mandatos de liberación de páginas dentro de los programas de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones.
“Los compiladores y S. O. deberían detectar automáticamente situaciones de liberación de página mucho antes de lo que es posible con estrategias de conjuntos de trabajo”.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA


3.8.6 Tamaño de página.
Tamaño de Página
Generalmente el almacenamiento real se divide en marcos o celdas de página de tamaño fijo [7, Deitel].
Los interrogantes tienen que ver con el tamaño de las páginas, si todas las páginas tendrán igual tamaño, si en caso de utilizar páginas de diferente tamaño las páginas mayores deben ser o no múltiplos enteros de las menores, etc.
Algunas consideraciones para determinar el tamaño de página son las siguientes:
• Cuanto más pequeño sea el tamaño de una página, más páginas y marcos de páginas habrá y mayores serán las tablas de páginas:
o El desperdicio de almacenamiento debido al tamaño excesivo de las tablas de página se llama “fragmentación de tablas”.
o Esto indica la necesidad de páginas más grandes.
• Con páginas grandes, grandes cantidades de información que nunca llegaría a ser referenciada, se paginarán hacia el almacenamiento primario:
o Esto indica la necesidad de páginas más pequeñas.
• Debido a que las transferencias de e / s del disco (paginación) consumen bastante tiempo, se debe minimizar la paginación que un proceso requiera:
o Esto indica la necesidad de páginas grandes.
• Los programas tienden a mostrar la propiedad de localidad de referencia y esta localidad tiende a ser pequeña:
o Esto indica la necesidad de páginas pequeñas.
• Los procedimientos y datos rara vez comprenden un número entero de páginas, por lo que los sistemas de paginación experimentan una “fragmentación interna”:
o El desperdicio promedio es de 1 / 2 página no usada por segmento (grupo) de páginas, que estará en la última página del segmento.
o Esto indica la necesidad de páginas pequeñas.
Los tamaños de pagina mas utilizados son: 512 b, 1 kb, 2 kb, 4 kb.

Unidad 3.3 Organización de memoria virtual.

Multiprogramación en memoria virtual
La necesidad cada vez más imperiosa de ejecutar programas grandes y el crecimiento en poder de las unidades centrales de procesamiento empujaron a los diseñadores de los sistemas operativos a implantar un mecanismo para ejecutar automáticamente programas más grandes que la memoria real disponible, esto es, de ofrecer `memoria virtual'.
La memoria virtual se llama así porque el programador ve una cantidad de memoria mucho mayor que la real, y en realidad se trata de la suma de la memoria de almacenamiento primario y una cantidad determinada de almacenamiento secundario. El sistema operativo, en su módulo de manejo de memoria, se encarga de intercambiar programas enteros, segmentos o páginas entre la memoria real y el medio de almacenamiento secundario. Si lo que se intercambia son procesos enteros, se habla entonces de multiprogramación en memoria real, pero si lo que se intercambian son segmentos o páginas, se puede hablar de multiprogramación con memoria virtual.
La memoria virtual se apoya en varias técnicas interesantes para lograr su objetivo. Una de las teorias más fuertes es la del `conjunto de trabajo', la cual se refiere a que un programa o proceso no está usando todo su espacio de direcciones en todo momento, sino que existen un conjunto de localidades activas que conforman el `conjunto de trabajo'. Si se logra que las páginas o segmentos que contienen al conjunto de trabajo estén siempre en RAM, entonces el programa se desempeñará muy bien.
Otro factor importante es si los programas exhiben un fenómeno llamado `localidad', lo cual quiere decir que algunos programas tienden a usar mucho las instrucciones que están cercanas a la localidad de la instrucción que se está ejecutando actualmente.
3.3.1 Evaluación de las organizaciones de almacenamiento.
Introducción a la Organización del Almacenamiento Virtual
“Almacenamiento virtual ” significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación [7, Deitel].
Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.
Los métodos más comunes de implementación son mediante:
• Técnicas de “paginación”.
• Técnicas de “segmentación”.
• Una combinación de ambas técnicas.
Las direcciones generadas por los programas en su ejecución no son, necesariamente, aquellas contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtuales suelen seleccionarse dentro de un número mucho mayor de direcciones que las disponibles dentro del almacenamiento primario.
La evolución en las organizaciones de almacenamiento puede resumirse como sigue:
• Real:
o Sistemas dedicados a un solo usuario.
• Real:
o Sistemas de multiprogramación en memoria real:
 Multiprogramación en partición fija:
 Absoluta.
 Relocalizable (reubicable).
 Multiprogramación en partición variable.
• Virtual:
o Multiprogramación en almacenamiento virtual:
 Paginación pura.
 Segmentación pura.
 Combinación paginación / segmentación.
Conceptos Básicos de Almacenamiento 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).
Los principales conceptos son los siguientes:
• “Direcciones virtuales”:
o Son las referidas por un proceso en ejecución.
• “Direcciones reales”:
o Son las disponibles dentro del almacenamiento primario.
• “Espacio de direcciones virtuales (v)” de un proceso:
o Es el número de direcciones virtuales a que puede hacer referencia el proceso.
• “Espacio de direcciones reales (r)” de un computador:
o Es el número de direcciones reales disponibles en el ordenador.
Los procesos hacen referencia a direcciones virtuales pero éstas deben ejecutarse en el almacenamiento real:
• Las direcciones virtuales deben ser transformadas dentro de las direcciones reales, mientras el proceso está en ejecución.
• La traducción de direcciones deberá hacerse rápidamente para no degradar al sistema.
Existen varios medios para asociar las direcciones virtuales con las reales (ver Figura 3.13 [7, Deitel]).

Los mecanismos de “traducción dinámica de direcciones” (dat) convierten las direcciones virtuales en reales al ejecutarse el proceso.
Las direcciones contiguas dentro del espacio de direcciones virtuales de un proceso no tienen por qué ser contiguas dentro del almacenamiento real, a esto se denomina “contigüidad artificial ” (ver Figura 3.14 [7, Deitel]).

Organización del Almacenamiento de Niveles Múltiples
Se deben proporcionar los medios para retener programas y datos en un gran almacenamiento auxiliar para:
• Permitir que el espacio de direcciones virtuales de un usuario sea mayor que el espacio de direcciones reales.
• Soportar multiprogramación de forma efectiva en un sistema con muchos usuarios que compartan el almacenamiento real.
Se utiliza un esquema de almacenamiento de dos niveles (ver Figura 3.15 [7, Deitel]):
• Primer nivel: “almacenamiento real ”:
o En él se ejecutan los procesos y en él deben estar los datos para que un proceso pueda referirse a ellos.


• Segundo nivel: “almacenamiento auxiliar, secundario o adicional ”:
o Generalmente consta de discos de gran capacidad que pueden mantener los programas y datos que no caben al mismo tiempo en el más limitado almacenamiento real.
Cuando se va a ejecutar un proceso su código y datos se pasan al almacenamiento principal.
El almacenamiento real es compartido por varios procesos:
• Cada proceso puede tener un espacio de direcciones virtuales mucho mayor que el almacenamiento real.
• Solo se mantiene al mismo tiempo una pequeña parte de los programas y datos de cada proceso en el almacenamiento real.
Transformación de Bloques
Los mecanismos de traducción dinámica de direcciones deben mantener “mapas” que ilustren qué direcciones del almacenamiento virtual se encuentran en el almacenamiento real y dónde se encuentran [7, Deitel].
La información se agrupa en “bloques”:
• El sistema está informado del lugar del almacenamiento real donde han sido colocados los bloques de almacenamiento virtual.
• Cuanto mayor sea el bloque menor será la fracción del almacenamiento real que debe dedicarse a contener la información del mapa.
• Con bloques grandes:
o Se reduce la sobrecarga de almacenamiento del mecanismo de transformación.
o Se incrementa el tiempo de transferencia entre los almacenamientos secundario y primario.
o Consumen más almacenamiento real pudiendo limitar el número de procesos que pueden compartirlo.
• Los bloques pueden ser de tamaño:
o Igual : se denominan “páginas” y la organización de almacenamiento virtual asociada se denomina “paginación”.
o Diferente: se denominan “segmentos” y la organización de almacenamiento virtual asociada se denomina “segmentación”.
• Se pueden combinar ambas técnicas: segmentos de tamaño variable compuestos de páginas de tamaño fijo.
Las direcciones son “bidimensionales”, es decir que una dirección virtual “v” se indica por un par ordenado “(b,d)”, donde:
• “b”: número del bloque donde reside.
• “d”: desplazamiento a partir del inicio del bloque.
La traducción de una dirección virtual “v = (b,d)” a la dirección real “r” considera lo siguiente (ver Figura 3.16 y Figura 3.17 [7, Deitel]):
• Cada proceso tiene su “tabla de mapa de bloques” mantenida por el sistema en el almacenamiento real.
• Un registro especial del procesador llamado “registro origen de la tabla de bloques” se carga con la dirección real “a” de la “tabla de mapa de bloques”:
o Contiene una entrada para cada bloque del proceso.
o Las entradas se mantienen en orden secuencial para el bloque 0, bloque 1, etc.
o Se añade el bloque número “b” a la dirección base “a” de la “tabla de bloques” para formar la dirección real de la entrada de la “tabla de mapa de bloques” para el bloque “b”:
 Contiene la dirección real “b ’ ” para el bloque “b”.
 El desplazamiento “d” se añade a la dirección de inicio del bloque, “b ’ ”, para formar la “dirección real” deseada: “r = b ’ + d”.
La transformación de bloques se efectúa en forma dinámica mientras se ejecuta un proceso, por lo cual, si la implementación no es eficiente, su sobrecarga puede causar una degradación del rendimiento que podría eliminar en parte las ventajas de la utilización del almacenamiento virtual.


http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.7.2 Paginación.
Conceptos Básicos de Paginación
Frecuentemente se diferencia entre la “paginación pura” y la “combinación de paginación y segmentación”[7, Deitel].
Las páginas se transfieren del almacenamiento secundario al primario en bloques llamados “marcos de páginas”:
• Tienen el mismo tamaño que las páginas.
• Comienzan en direcciones del almacenamiento real que son múltiplos enteros del tamaño fijo de la página.
• Podrá colocarse una nueva página dentro de cualquier “marco de página” o “celda de página” disponible.
La “traducción dinámica de direcciones” incluye:
• Un proceso en ejecución hace referencia a una dirección virtual “v = (p,d)” (ver Figura 3.18 [7, Deitel]).
• Un mecanismo de transformación de páginas busca la página “p” en la “tabla de páginas” y determina si la página “p” se encuentra en el marco de página “p ’ ”.
• La dirección de almacenamiento real se forma por la concatenación de “p ’ ” y “d”.


La tabla de “mapa de páginas” debe indicar si se encuentra o no en el almacenamiento primario la página referenciada:
• En caso afirmativo dónde está en la memoria real.
• En caso negativo dónde puede estar en el almacenamiento secundario.
La dirección de almacenamiento primario “a”, donde comienza el marco de pagina “p ’ ” (suponiendo un tamaño de página “p”), está dada por: “a = (p) (p ’)”; se supone marcos de página numerados 0, 1, 2, etc. (ver Figura 3.19, Figura 3.20 y Figura 3.21 [7, Deitel]).



Traducción de Direcciones de Paginación por Transformación Directa
Un proceso en ejecución hace referencia a la dirección virtual v = (p,d).
Antes que un proceso comience su ejecución, el S. O. carga la dirección de almacenamiento primario de la “tabla de mapa de páginas” en el “registro origen de la tabla de mapa de páginas” (Ver Figura 3.22 [7, Deitel]).

La dirección base de la tabla de mapa de páginas es “b”.
El número de página es “p”.
La dirección en el almacenamiento primario de la entrada en la tabla de mapa de páginas para la página “p” es “b + p”:
• Indica que el marco de página “p ’ ” corresponde a la página virtual.
• “p ’ ” se concatena con el desplazamiento “d” par formar la dirección real “r”.
“Esto es un ejemplo de transformación directa debido a que la tabla de mapa de páginas contiene una entrada por cada una de las páginas del almacenamiento virtual de este proceso”.
La dirección virtual que se está traduciendo y la dirección base de la tabla de mapa de páginas son mantenidas en un registro de alta velocidad del control del procesador.
La tabla de mapa de páginas transformada directamente suele mantenerse en el almacenamiento primario:
• Las referencias a esta tabla requieren un ciclo completo de almacenamiento primario, que generalmente es la parte más larga de un ciclo de ejecución de instrucciones.
• Se requiere otro ciclo de ejecución de almacenamiento primario para la transformación de páginas, lo que puede ocasionar degradación equivalente a un 50%, para lo cual una solución sería tener la tabla completa de mapa de páginas de transformación directa en la “caché” de muy alta velocidad.
Traducción de Direcciones de Paginación por Transformación Asociativa
Una forma de acelerar la traducción dinámica de páginas consiste en colocar la tabla completa de mapa de páginas en un “almacenamiento asociativo” que tenga un tiempo de ciclo mucho más rápido que el almacenamiento primario.
Una variante es la “transformación asociativa pura” (ver Figura 3.23 [7, Deitel]).

Un programa en ejecución hace referencia a la dirección virtual v = (p,d).
Cada entrada en el almacenamiento asociativo se busca de forma simultánea para la página “p”:
• Se obtiene “p ’ ” como el marco de página correspondiente a la página “p”.
• Se concatena “p ’ ” con “d” formando la dirección real “r”.
Cada una de las células del almacenamiento asociativo se registra de manera simultánea:
• Hace costoso el almacenamiento asociativo.
• Implementar la transformación asociativa pura resulta demasiado costoso, tal lo ocurrido con la implementación de la transformación directa pura utilizando “caché”.
Traducción de Direcciones de Paginación por Combinación de Transformación Asociativa / Directa
Se utiliza un almacenamiento asociativo capaz de mantener solo un pequeño porcentaje del mapa completo de páginas para un proceso (ver Figura 3.24 [7, Deitel]).

Las entradas de página contenidas en este mapa reducido corresponden solo a las páginas referenciadas recientemente:
• Se presupone que una página recientemente referenciada tendrá posibilidades de serlo de nuevo próximamente.
• Los rendimientos obtenidos con este esquema de mapa asociativo parcial superan aproximadamente en un 100 % a los rendimientos obtenidos con esquemas de mapa asociativo de página completo.
Un programa hace referencia a la dirección virtual v = (p,d).
El mecanismo de traducción de direcciones intenta encontrar la página “p” en el mapa de página asociativo parcial:
• Si “p” se encuentra allí:
o El mapa asociativo devuelve “p ’ ” como el número de marco de página correspondiente a la página virtual “p”.
o “p ’ ” se concatena con el desplazamiento “d” para formar la dirección real “r” que corresponde a la dirección virtual v = (p,d).
• Si “p” no se encuentra en el mapa de pagina parcial:
o Se utiliza un mapa directo convencional.
o La dirección “b” del registro de origen de la tabla de páginas se añade a “p” para localizar la entrada apropiada a la página “p” en la tabla de mapa de páginas de transformación directa del almacenamiento primario.
o La tabla indica que “p ’ ” es el marco de página correspondiente a la página virtual “p”.
o “p ’ ” se concatena con el desplazamiento “d” para formar la dirección real “r” correspondiente a la dirección virtual v = (p,d).
Compartimiento de Recursos en un Sistema de Paginación
En sistemas multiprogramados, especialmente en los de tiempo compartido, es común que más de un usuario estén ejecutando los mismos programas:
• Para optimizar el uso de la memoria real se comparten las páginas que pueden ser compartidas:
o El compartimiento debe ser cuidadosamente controlado para evitar que un proceso modifique datos que otro proceso esta leyendo (ver Figura 3.25 [7, Deitel]).
o Los programas se encuentran divididos en áreas separadas de “procedimiento” y “datos”.
o Los procedimientos no modificables se llaman “procedimientos puros reentrantes”.
o Los datos y procedimientos modificables no pueden ser compartidos.
o Los datos no modificables (ej.: tablas fijas) son compartibles.
• Se debe identificar cada página como compartible o no.
• Habrá marcos (celdas) de páginas compartidos por varios procesos.


El compartimiento:
• Reduce la cantidad de almacenamiento primario necesario para la ejecución eficaz de un grupo de procesos.
• Puede hacer posible que un sistema determinado mantenga una cantidad mayor de usuarios (procesos).
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA
Paginación pura
La paginación pura en el majejo de memoria consiste en que el sistema operativo divide dinámicamente los programas en unidades de tamaño fijo ( generalmente múltiplos de 1 kilobyte ) los cuales va a manipular de RAM a disco y viceversa. Al proceso de intercambiar páginas, segmentos o programas completos entre RAM y disco se le conoce como `intercambio' o `swapping'. En la paginación, se debe cuidar el tamño de las páginas, ya que si éstas son muy pequeñas el control por parte del sistema operativo para saber cuáles están en RAM y cuales en disco, sus direcciones reales, etc; crece y provoca mucha `sobrecarga' (overhead). Por otro lado, si las páginas son muy grandes, el overhead disminuye pero entonces puede ocurrir que se desperdicie memoria en procesos pequeños. Debe haber un equilibrio.
Uno de los aspectos más importantes de la paginación, asi como de cualquier esquema de memoria virtual, es la forma de traducir una dirección virtual a dirección real. Para explicarlo, obsérvese la figura
Como se observa, una dirección virtual `v' = ( b,d) está formada por un número de página virtual `b' y un desplazamiento `d'. Por ejemplo, si el sistema ofrece un espacio de direcciones virtuales de 64 kilobytes, con páginas de 4 kilobytes y la RAM sólo es de 32 kilobytes, entonces tenemos 16 páginas virtuales y 8 reales. La tabla de direcciones virtuales contiene 16 entradas, una por cada página virtual. En cada entrada, o registro de la tabla de direcciones virtuales se almacenan varios datos: si la página está en disco o en memoria, quién es el dueño de la página, si la página ha sido modificada o es de lectura nada mas, etc. Pero el dato que nos interesa ahora es el número de página real que le corresponde a la página virtual. Obviamente, de las 16 virtuales, sólo ocho tendrán un valor de control que dice que la página está cargada en RAM, así como la dirección real de la página, denotada en la figura 4.3 como b' . Por ejemplo, supóngase que para la página virtual número 14 la tabla dice que, efectivamente está cargada y es la página real 2 ( dirección de memoria 8192 ). Una vez encontrada la página real, se le suma el desplazamiento, que es la dirección que deseamos dentro de la página buscada ( b' + d ).
La tabla de direcciones virtuales a veces está ubicada en la misma meoria RAM, por lo cual se necesita saber en qué dirección comienza, en este caso, existe un registro con la dirección base denotada por la letra `a' en la figura 4.3.
Cuando se está buscando una página cualquiera y ésta no está cargada, surge lo que se llama un `fallo de página' (page fault ). Esto es caro para el manejador de memoria, ya que tiene que realizar una serie de pasos extra para poder resolver la dirección deseada y darle su contenido a quien lo pide. Primero, se detecta que la página no está presente y entonces se busca en la tabla la dirección de esta página en disco. Una vez localizada en disco se intenta cargar en alguna página libre de RAM. Si no hay páginas libres se tiene que escoger alguna para enviarla hacia el disco. Una vez escogida y enviada a disco, se marca su valor de control en la tabla de direcciones virtuales para indicar que ya no está en RAM, mientras que la página deseada se carga en RAM y se marca su valor para indicar que ahora ya está en RAM. Todo este procedimiento es caro, ya que se sabe que los accesos a disco duro son del orden de decenas de veces más lentos que en RAM. En el ejemplo anterior se mencionó que cuando se necesita descargar una página de RAM hacia disco se debe de hacer una elección. Para realizar esta elección existen varios algoritmos, los cuales se describen enseguida. _ La primera en entrar, primera en salir: Se escoge la página que haya entrado primero y esté cargada en RAM. Se necesita que en los valores de control se guarde un dato de tiempo. No es eficiente porque no aprovecha ninguna característica de ningún sistema. Es justa e imparcial. _ La no usada recientemente: Se escoge la página que no haya sido usada (referenciada) en el ciclo anterior. Pretende aprovechar el hecho de la localidad en el conjunto de trabajo.
• La usada menos recientemente: Es parecida a la anterior, pero escoge la página que se usó hace más tiempo, pretendiendo que como ya tiene mucho sin usarse es muy probable que siga sin usarse en los próximos ciclos. Necesita de una búsqueda exhaustiva.
• La no usada frecuentemente: Este algoritmo toma en cuenta no tanto el tiempo, sino el número de referencias. En este caso cualquier página que se use muy poco, menos veces que alguna otra.
• La menos frecuentemente usada: Es parecida a la anterior, pero aquí se busca en forma exhaustiva aquella página que se ha usado menos que todas las demás.
• En forma aleatoria: Elige cualquier página sin aprovechar nada. Es justa e imparcial, pero ineficiente.
Otro dato interesante de la paginación es que ya no se requiere que los programas estén ubicados en zonas de memoria adyacente, ya que las páginas pueden estar ubicadas en cualquier lugar de la memoria RAM.

3.7.3 Segmentación.
Segmentación
En los sistemas de “segmentación” un programa y sus datos pueden ocupar varios bloques separados de almacenamiento real (ver Figura 3.26 [7, Deitel]).

Los bloques:
• No necesitan ser de igual tamaño.
• Los bloques separados no necesitan ser adyacentes.
• Deben estar compuestos de posiciones contiguas de almacenamiento.
Se complica la protección de bloques de memoria de un proceso de usuario.
Es más difícil limitar el rango de acceso de cualquier programa [7, Deitel].
Un esquema posible de protección es el uso de claves de protección del almacenamiento (ver Figura 3.27 [7, Deitel]):
• Las claves están bajo el control estricto del S. O.
• Un programa de usuario, a quien corresponde una cierta clave en la cpu, solo puede hacer referencia a los otros bloques del almacenamiento con igual clave de protección.


Una dirección virtual es un par ordenado v=(s,d) (ver Figura 3.28 [7, Deitel]):
• “s” es el número del segmento del almacenamiento virtual en el cual residen los elementos referidos.
• “d” es el desplazamiento en el segmento “s” en el cual se encuentra el elemento referido.


Un proceso solo puede ejecutarse si su segmento actual (como mínimo) está en el almacenamiento primario.
Los segmentos se transfieren del almacenamiento secundario al primario como unidades completas.
Un nuevo segmento puede ser colocado en una serie disponible de posiciones contiguas del almacenamiento primario de tamaño suficiente para alojar al segmento.
La traducción dinámica de direcciones utiliza una “tabla de mapa de segmentos”.
Inicio:    Fin: 
Control de Acceso en Sistemas de Segmentación
Se le otorga a cada proceso ciertos derechos de acceso a todos los segmentos y se le niega completamente el acceso a muchos otros.
Si un proceso tiene “acceso de lectura” a un segmento, puede obtener cualquier elemento de información contenido en ese segmento.
Si un proceso tiene “acceso de escritura” a un segmento, puede modificar cualquier contenido del segmento y puede introducirle información adicional, incluso destruir toda la información del segmento.
Un proceso con “acceso de ejecución” de un segmento puede ejecutarlo como si fuera un programa.
Un proceso con “acceso de adición” puede escribir información adicional al final del segmento, pero no puede modificar la información existente.
En base a los “tipos de control de acceso” indicados pueden crearse distintos “modos de control de acceso”.
Ejemplos de combinación de los accesos de lectura, escritura y ejecución para producir modos de protección útiles se dan en la Tabla 3.1 y en la Tabla 3.2 [7, Deitel].
 
Modo Lectura Escritura Ejecución Explicación
0 N N N No hay permiso de acceso
1 N N S Solo ejecución
2 S N N Solo lectura
3 S N S Lectura / ejecución
4 S S N Lectura / escritura pero no ejecución
5 S S S Acceso no limitado
Tabla 3.1: Ejemplo de combinación de accesos.

 
Modo Aplicación
0 Seguridad
1 Un programa disponible a los usuarios, que no pueden copiarlo ni modificarlo, pero sí ejecutarlo
2 Recuperación de información
3 Un programa puede ser copiado o ejecutado, pero no puede ser modificado
4 Protege los datos contra un intento erróneo de ejecutarlos
5 Este acceso se concede a los usuarios de confianza
Tabla 3.2: Ejemplo de aplicaciones de la combinación de accesos.
Inicio:    Fin: 
Traducción de Direcciones de Segmentación por Transformación Directa
Existen varias estrategias para la implementación de la traducción de direcciones de segmentación:
• Por transformación directa, asociativa o combinación de asociativa / directa.
• Con caché suficiente para alojar la tabla completa de mapa de segmentos o caché parciales que contengan solo las entradas de los segmentos de referencia más reciente (ver Figura 3.29 [7, Deitel]).


Se considerará la traducción de direcciones de segmentación con la tabla completa de mapa de segmentos en la caché.
Un proceso en ejecución hace referencia a la dirección virtual v = (s,d):
• El segmento número “s” se añade a la dirección base “b” en el registro origen de la tabla de mapa de segmentos formando la dirección de memoria real “b + s”, de la entrada para el segmento “s” de la tabla de mapa de segmentos, que contiene la dirección del almacenamiento primario “s ’ ”, donde comienza el segmento.
• El desplazamiento “d” se añade a “s ’ ” formando la dirección real “r = d + s ’ ”, correspondiente a la dirección virtual “v = (s,d)”.
Un “bit de residencia”, “r”, indica si en la actualidad el segmento se encuentra o no en el almacenamiento primario.
Si el segmento se encuentra en el almacenamiento primario “s ’ ” es la dirección en este almacenamiento donde comienza el segmento.
Si el segmento no se encuentra en el almacenamiento primario “a” es la dirección en el almacenamiento secundario de donde debe recuperarse antes que el proceso pueda continuar.
Se compara cada referencia a un segmento con los bits de protección para determinar si se permite la operación que se está intentando.
Si el segmento buscado no está en el almacenamiento primario se genera un “fallo de pérdida de segmento”:
• El S. O. obtiene el control y carga el segmento referido desde la dirección “a” del almacenamiento secundario.
• Se comprueba si el desplazamiento “d” es menor o igual a la longitud del segmento “l ”:
o Si no es así se genera un “fallo de desbordamiento de segmento” y el S. O. obtiene el control y termina la ejecución del proceso.
o Si el desplazamiento está en el rango del segmento se comprueban los bits de protección para asegurarse si se permite la operación que se está intentando:
 Si es así entonces la dirección base del segmento, “s ’ ”, en el almacenamiento primario se añade al desplazamiento “d” formando la dirección de memoria real “r = s ’ + d”, que corresponde a la dirección del almacenamiento virtual “v = (s,d)”.
 Si la operación intentada no se permite se genera un “fallo de protección de segmento” y el S. O. obtiene el control y termina la ejecución del proceso.
Inicio:    Fin: 
Compartimiento en un Sistema de Segmentación
Una de las ventajas de la segmentación sobre la paginación es que se trata más de un hecho lógico que físico:
• En un sistema de segmentación, una vez que un segmento ha sido declarado como compartido, entonces las estructuras que lo integran pueden cambiar de tamaño.
• Lo anterior no cambia el hecho lógico de que residen en un segmento compartido.
Dos procesos pueden compartir un segmento con solo tener entradas en sus tablas generales que apunten al mismo segmento del almacenamiento primario (ver Figura 3.30 [7, Deitel]).

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

Segmentación pura
La segmentación se aprovecha del hecho de que los programas se dividen en partes lógicas, como son las partes de datos, de código y de pila (stack). La segmentación asigna particiones de memoria a cada segmento de un programa y busca como objetivos el hacer fácil el compartir segmentos ( por ejemplo librerías compartidas ) y el intercambio entre memoria y los medios de almacenamiento secundario.
Por ejemplo, en la versión de UNIX SunOS 3.5, no existían librerías compartidas para algunas herramientas, por ejemplo, para los editores de texto orientados al ratón y menús. Cada vez que un usuario invocaba a un editor, se tenía que reservar 1 megabyte de memoria. Como los editores son una herramienta muy solicitada y frecuentemente usada, se dividió en segmentos para le versión 4.x ( que a su vez se dividen en páginas ), pero lo importante es que la mayor parte del editor es común para todos los usuarios, de manera que la primera vez que cualquier usuario lo invocaba, se reservaba un megabyte de memoria como antes, pero para el segundo, tercero y resto de usuarios, cada editor extra sólo consumía 20 kilobytes de memoria. El ahorro es impresionante. Obsérvese que en la segmentación pura las particiones de memoria son de tamaño variable, en contraste con páginas de tamaño fijo en la paginación pura. También se puede decir que la segmentación pura tiene una granularidad menor que la paginación por el tamanó de segmentos versus tamaño de páginas. Nuevamente, para comprender mejor la segmentación, se debe dar un repaso a la forma en que las direcciones virtuales son traducidas a direcciones reales, y para ellos se usa la figura 4.4. Prácticamente la traducción es igual que la llevada a cabo en la paginación pura, tomando en consideracióñ que el tamaño de los bloques a controlar por la tabla de traducción son variables, por lo cual, cada entrada en dicha tabla debe contener la longitud de cada segmento a controlar. Otra vez se cuenta con un registro base que contiene la dirección del comienzo de la tabla de segmentos. La dirección virtual se compone de un número de segmento (s) y un desplazamiento ( d ) para ubicar un byte (o palabra ) dentro de dicho segmento. Es importante que el desplazamiento no sea mayor que el tamaño del segmento, lo cual se controla simplemente checando que ese valor sea mayor que la dirección del inicio del segmento y menor que el inicio sumado al tamaño.
Una ves dada una dirección virtual v=( s,d ), se realiza la operación b + s para hallar el registro (o entrada de la tabla de segmentos ) que contiene la dirección de inicio del segmento en la memoria real, denotado por s'. Ya conociendo la dirección de inicio en memoria real s' sólo resta encontrar el byte o palabra deseada, lo cual se hace sumándole a s' el valor del desplazamiento, de modo que la dirección real ® r = s'+ d.
Cada entrada en la tabla de segmentos tiene un formato similar al mostrado en la figura 4.5. Se tienen campos que indican la longitud, los permisos, la presencia o ausencia y dirección de inicio en memoria real del segmento.
Según amplios experimentos [Deitel93] sugieren que un tamaño de páginas de 1024 bytes generalmente ofrece un desempeño muy aceptable. Intuitivamente parecería que el tener páginas del mayor tamaño posible haría que el desempeño fuera óptimo pero no es así, a menos que la página fuera del tamaño del proceso total. No es así con tamaños grandes de página menores que el proceso, ya que cuando se trae a memoria principal una página por motivo de un solo byte o palabra, se están trayendo muchísimos más bytes de los deseados. La dependencia entre el número de fallas respecto al tamaño de las páginas se muestra en la figura 4.6.
Un hecho notable en los sistemas que manejan paginación es que cuando el proceso comienza a ejecutarse ocurren un gran número de fallos de página, porque es cuando está referenciando muchas direcciones nuevas por vez primera, después el sistema se estabiliza, conforme el número de marcos asignados se acerca al tamaño del conjunto de trabajo.
El la figura 4.7 se muestra la relación entre el tiempo promedio entre fallas de página y el número de marcos de página asignados a un proceso. Allí se ve que el tiempo entre fallas decrece conforme se le asignan más páginas al proceso. La gráfica se curva en un punto, el cual corresponde a que el proceso tiene un número de páginas asignado igual al que necesita para almacenar su conjunto de trabajo. Después de eso, el asignarle a un proceso más páginas que las de su conjunto de trabajo ya no conviene, ya que el tiempo promedio entre fallas permanece sin mucha mejora. Un aspecto curioso de aumentar el número de páginas a un proceso cuando el algoritmo de selección de páginas candidatas a irse a disco es la primera en entrar primera en salir es la llamada `anomalía FIFO' a `anomalía de Belady'. Belady encontró ejemplos en los que un sistema con un número de páginas igual a tres tenía menos fallas de páginas que un sistema con cuatro páginas. El ejemplo descrito en [Tanxx] es injusto. Si se mira con cuidado, obviamente si se compara un sistema con 10 páginas contra otro de 5, ya de inicio el primer sistema tendrá 5 fallos de página más que el de 5, porque se necesitan diez fallos para cargarlo. A esto debería llamársele `anomalía de Belady con corrección.
3.7.4 Sistemas de paginación segmentación.
Sistemas de Paginación / Segmentación
Ofrecen las ventajas de las dos técnicas de organización del almacenamiento virtual [7, Deitel].
El tamaño de los segmentos es múltiplo del de las páginas.
No es necesario que todas las páginas de un segmento se encuentren al mismo tiempo en el almacenamiento primario.
Las páginas de almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real.
El direccionamiento es tridimensional con una dirección de almacenamiento virtual “v = (s,p,d)”:
• “s” es el número del segmento.
• “p” es el número de página.
• “d” es el desplazamiento en la página donde se encuentra asignado el elemento deseado.
Inicio:    Fin: 
Traducción Dinámica de Direcciones en Sistemas de Paginación / Segmentación
Se considera la traducción dinámica de direcciones de virtuales a reales en un sistema de paginación / segmentación utilizando la combinación de transformación asociativa / directa (ver Figura 3.31 [7, Deitel]).

El proceso en ejecución hace referencia a la dirección virtual v = (s,p,d) (ver Figura 3.32 [7, Deitel]).

Las páginas de referencia más reciente tienen entradas en un almacenamiento asociativo.
Se realiza una búsqueda asociativa para intentar localizar (s,p) en el almacenamiento asociativo:
• Si se encuentra (s,p), entonces el marco de página “p ’ ” en el cual reside dicha página en la memoria real, se concatena al desplazamiento “d” para formar la dirección de memoria real “r” correspondiente a la dirección virtual v= (s,p,d).
• Si no se encuentra (s,p), entonces:
o La dirección base “b” de la tabla de segmentos se añade al número de segmento “s” formando la dirección “b + s” de la entrada de la tabla de mapa de segmentos para el segmento “s” de la memoria real.
o La entrada de la tabla de mapa de segmentos indica la dirección base “s ’ ” de la tabla de páginas para el segmento “s”.
o El número de página “p” se añade a “s ’ ” formando la dirección “p + s ’ ” de la entrada en la tabla de páginas para la página “p” del segmento “s”:
 Indica que “p ’ ” es el número del marco correspondiente a la página virtual “p”.
 “p ’ ” se concatena con el desplazamiento “d” formando la dirección real “r ” que corresponde a la dirección virtual v = (s,p,d).
Si el segmento “s” no se encuentra en el almacenamiento primario se produce un “fallo de pérdida de segmento”, cuyo caso el S. O. localiza el segmento en el almacenamiento secundario, crea una tabla de páginas para el segmento y carga la página apropiada en el almacenamiento primario, pudiendo producir reemplazos de páginas.
Si el segmento “s” está en el almacenamiento primario y si la referencia a la tabla de mapa de páginas indica que la página deseada no se encuentra en el almacenamiento primario, se produce un “fallo de pérdida de página”, en tal caso el S. O. obtiene el control, localiza la página en el almacenamiento secundario y la carga, pudiendo reemplazar otra página.
Si una dirección de almacenamiento virtual está más allá del final del segmento se genera un “fallo de desbordamiento de segmento”, el que debe ser atendido por el S. O.
Si los bits de protección indican que la operación que se va a ejecutar en la dirección virtual referida no se permite, se genera un “fallo de protección de segmento”, el que también debe ser atendido por el S. O.
Si se utiliza un mecanismo de transformación directa pura, manteniendo el mapa completo dentro del almacenamiento primario, la referencia promedio de almacenamiento virtual requeriría:
• Un ciclo de almacenamiento para acceder a la tabla de mapa de segmentos.
• Un segundo ciclo de almacenamiento para hacer referencia a la tabla de mapa de páginas.
• Un tercer ciclo de almacenamiento para referenciar al elemento deseado del almacenamiento real.
Cada referencia a un elemento comprende tres ciclos de almacenamiento:
• El sistema correría casi a 1 / 3 de su velocidad nominal.
• La traducción de direcciones insumiría 2 / 3 del tiempo.
Con la utilización de registros asociativos (por ej. 16 registros), se logran velocidades de ejecución del 90 % o más de la velocidad total de procesamiento de sus procesadores de control.
La estructura de tablas de procesos, de mapas de segmentos y de mapas de páginas puede consumir un porcentaje importante del almacenamiento primario cuando se ejecutan un gran número de procesos.
La traducción procede mucho más rápido si todas las tablas están en el almacenamiento primario, lo que resta espacio para los procesos.
Inicio:    Fin: 
Compartimiento en un Sistema de Paginación / Segmentación
Se implementa disponiendo entradas en tablas de mapa de segmentos para diferentes procesos que apunten a la misma tabla de mapa de páginas (ver Figura 3.33 [7, Deitel]).

El compartimiento requiere una administración cuidadosa por parte del S. O., ya sea en sistemas de paginación, segmentación o paginación / segmentación, pues se debe considerar qué sucedería si una nueva página reemplazara a otra página compartida por muchos procesos.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

Sistemas combinados
La paginación y la segmentación puras son métodos de manejo de memoria bastante efectivos, aunque la mayoría de los sistemas operativos modernos implantan esquemas combinados, es decir, combinan la paginación y la segmentación. La idea de combinar estos esquemas se debe a que de esta forma se aprovechan los conceptos de la división lógica de los programas (segmentos) con la granularidad de las páginas. De esta forma, un proceso estará repartido en la memoria real en pequeñas unidades (páginas) cuya liga son los segmentos. También es factible así el compartir segmentos a medida que las partes necesitadas de los mismos se van referenciando (páginas). Para comprender este esquema, nuevamente se verá cómo se traduce una dirección virtual en una localidad de memoria real. Para la paginación y segmentacíon puras se puede decir que el direccionamiento es `bidimensional' porque se necesitan dos valores para hallar la dirección real. Para el caso combinado, se puede decir que se tiene un direccionamiento `tridimensional'. En la figura 4.8 [ Deitel93] se muestran las partes relevantes para lograr la traducción de direcciones. El sistema debe contar con una tabla de procesos (TP). Por cada renglón de esa tabla se tiene un número de proceso y una dirección a una tabla de segmentos. Es decir, cada proceso tiene una tabla de segmentos. Cuando un proceso hace alguna referencia a memoria, se consulta TP para encontrar la tabla de segmentos de ese proceso. En cada tabla de segmentos de proceso (TSP) se tienen los números de los segmentos que componen a ese proceso. Por cada segmento se tiene una dirección a una tabla de páginas. Cada tabla de páginas tiene las direcciones de las páginas que componen a un solo segmento. Por ejemplo, el segmento `A' puede estar formado por las páginas reales `a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las páginas `f','g','j','w' y `z'.
Para traducir una dirección virtual v=(s,p,d) donde `s' es el segmento, `p' es la página y `d' el desplazamiento en la página se hace lo siguiente. Primero se ubica de qué proceso es el segmento y se localiza la tabla de segmentos de ese proceso en la TP. Con `s' como índice se encuentra un renglón ( registro) en la tabla de segmentos de ese proceso y en ese renglón está la dirección de la tabla de páginas que componen al segmento. Una vez en la tabla de páginas se usa el valor `p' como índice para encontrar la dirección de la página en memoria real. Una vez en esa dirección de memoria real se encuentra el byte (o palabra) requerido por medio del valor de `d'.
Ahora, en este esquema pueden haber dos tipos de fallos: por fallo de página y por fallo de segmento. Cuando se hace referencia a una dirección y el segmento que la contiene no está en RAM ( aunque sea parcialmente ), se provoca un fallo por falta de segmento y lo que se hace es traerlo del medio de almacenamiento secundario y crearle una tabla de páginas. Una vez caragado el segmento se necesita localizar la página correspondiente, pero ésta no existe en RAM, por lo cual se provoca un fallo de página y se carga de disco y finalmente se puede ya traer la dirección deseada por medio del desplazamiento de la dirección virtual.
La eficiencia de la traducción de direcciones tanto en paginación pura, segmentación pura y esquemas combinados se mejora usando memorias asociativas para las tablas de páginas y segmentos, así como memorias cache para guardar los mapeos más solicitados.
Otro aspecto importante es la estrategia para cargar páginas ( o segmentos ) a la memoria RAM. Se usan más comunmente dos estrategias: cargado de páginas por demanda y cargado de páginas anticipada. La estrategia de caragdo por demanda consiste en que las páginas solamente son llevadas a RAM si fueron solicitadas, es decir, si se hizo referencia a una dirección que cae dentro de ellas. La carga anticipada consiste en tratar de adivinar qué páginas serán solicitadas en el futuro inmediato y cargarlas de antemano, para que cuando se pidan ya no ocurran fallos de página. Ese `adivinar' puede ser que se aproveche el fenómeno de localidad y que las páginas que se cargan por anticipado sean aquellas que contienen direcciones contiguas a la dirección que se acaba de refenciar. De hecho, el sistema operativo VMS usa un esquema combinado para cargar páginas: cuando se hace referencia a una dirección cuya página no está en RAM, se provoca un fallo de página y se carga esa página junto con algunas páginas adyacentes. En este caso la página solicitada se cargó por demanda y las adyacentes se cargaron por anticipación.