Sistemas Operativos IIIsistemas de paginación intentan llevar un registro del conjunto de trabajo...

16
Ing. Félix Piozzi Sistemas Operativos UTN – FRC 1 Sistemas Operativos III Tablas de páginas El número de página virtual se divide en un número de página virtual (bits superiores) y un ajuste (bits inferiores). El número de página se utiliza como un índice en la tabla de páginas para encontrar la entrada de esa página virtual. El número de marco se determina a partir de la tabla de páginas. El número de marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para así formar la dirección física que se puede enviar a la memoria. Se debe enfrentar dos aspectos fundamentales: 1.- La tabla de páginas puede ser demasiado grande 2.- La asociación debe ser rápida Tablas de páginas Se debe enfrentar dos aspectos fundamentales: 1.- La tabla de páginas puede ser demasiado grande Direcciones virtuales de 32 bits 1.106 páginas si el tamaño de páginas es de 4 K debo tener un millón de entradas!!!!! Tablas de páginas 2.- La asociación debe ser rápida: Una tabla con una entrada por página, ordenadas por el número de página virtual. No son necesarias más referencias a la memoria La tabla puede estar totalmente dentro de la memoria. Un registro en HW que apunta al inicio de la tabla. El mapa se modifica con sólo modificar un registro pero son necesarias más referencias a la memoria Tablas de páginas de varios niveles se trata de evitar que todas las tablas estén en la memoria todo el tiempo.

Transcript of Sistemas Operativos IIIsistemas de paginación intentan llevar un registro del conjunto de trabajo...

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

1

Sistemas Operativos III Tablas de páginas El número de página virtual se divide en un número de página virtual (bits superiores) y un ajuste (bits inferiores). El número de página se utiliza como un índice en la tabla de páginas para encontrar la entrada de esa página virtual. El número de marco se determina a partir de la tabla de páginas. El número de marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para así formar la dirección física que se puede enviar a la memoria. Se debe enfrentar dos aspectos fundamentales: 1.- La tabla de páginas puede ser demasiado grande 2.- La asociación debe ser rápida Tablas de páginas Se debe enfrentar dos aspectos fundamentales: 1.- La tabla de páginas puede ser demasiado grande Direcciones virtuales de 32 bits 1.106 páginas si el tamaño de páginas es de 4 K debo tener un millón de entradas!!!!! Tablas de páginas 2.- La asociación debe ser rápida:

• Una tabla con una entrada por página, ordenadas por el número de página virtual. No son necesarias más referencias a la memoria

• La tabla puede estar totalmente dentro de la memoria. Un registro en HW

que apunta al inicio de la tabla. El mapa se modifica con sólo modificar un registro pero son necesarias más referencias a la memoria

Tablas de páginas de varios niveles se trata de evitar que todas las tablas estén en la memoria todo el tiempo.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

2

Tablas de páginas

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

3

Memoria Asociativa Dispositivo de HW que asocia las direcciones virtuales con las direcciones físicas, sin tener que ir a la tabla de páginas.

Memoria Asociativa Proporción de encuentros Proporción de referencias a la memoria que pueden ser satisfechas a partir de la memoria asociativa

Tablas de páginas Tablas de páginas invertidas Con el surgimiento de los chips RISC, con espacios de direcciones virtuales de 64 bits, la cantidad de espacio de direcciones virtuales excede en mucho la cantidad de memoria física. La tabla de páginas está organizada en torno a la memoria física en vez de la memoria virtual.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

4

La entrada n contiene la información relativa a la página que utiliza el n-ésimo marco para página. El número de entradas en esta tabla corresponde a los números de marcos en la memoria física independiente-mente del número de páginas en las direcciones virtuales. Tablas de páginas invertidas

Algoritmos de reemplazo de páginas

• Optimo Consiste en etiquetar las páginas con el número de instrucciones ejecutadas antes de la primera referencia a esa página. Se debe eliminar la página con la máxima etiqueta. Es irrealizable porque no se puede saber de antemano a cual de las páginas se hará referencia. Algoritmos de reemplazo de páginas

• Según el uso no tan reciente (NRU) Bits R (referenciado) y M (modificado) Se asigna un valor 0 a los bits R y M de todas las páginas. En un fallo de página, se inspeccionan todas las páginas dividiéndose en cuatro categorías:

• Clase 0: no se ha hecho referencia , no ha sido modificada • Clase 1: no se ha hecho referencia , ha sido modificada • Clase 2: se ha hecho referencia , no ha sido modificada • Clase 4: se ha hecho referencia , ha sido modificada

NRU elimina una página en forma aleatoria de la primera clase no vacía con el número más pequeño. Es fácil, de implantación eficiente y adecuado. Algoritmos de reemplazo de páginas

• “Primero en entrar, primero en salir” (FIFO) El SO tiene una lista de todas las páginas que se encuentran en la memoria, siendo la primera la más antigua y la última la más reciente. En un fallo de página, se elimina la primera página y se coloca la nueva al final de la lista.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

5

• De la segunda oportunidad

Modificación de la FIFO. Se analiza el bit R de la página más antigua, si es 0 se elimina, si es 1, se la coloca al final de la lista. Algoritmos de reemplazo de páginas

• De la segunda oportunidad

Algoritmos de reemplazo de páginas

• Del reloj

Algoritmos de reemplazo de páginas

• “La de menor uso reciente” (LRU) Al ocurrir un fallo de página, se elimina la página que no haya sido utilizada durante el tiempo más grande. Es necesario mantener una lista ligada de todas las páginas en la memoria, donde la de uso más reciente esté al principio, por lo que necesita o un HW especial (caro) o una aproximación en SW.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

6

Sistemas de Paginación Aspectos del diseño

• El modelo del conjunto de trabajo – Paginación anticipada – Paginación por demanda

• Políticas de asignación locales vs globales • Tamaño de página

El modelo del conjunto de trabajo Conjunto de trabajo: Conjunto de páginas que utiliza en cierto momento un proceso. Paginación por demanda: Las páginas se cargan a medida que se producen los fallos de página, sólo debido a la demanda. Localidad de referencia: indica que cada proceso sólo hace referencia auna pequeña parte de sus páginas durante una fase cualquiera de ejecución. El modelo del conjunto de trabajo Modelo del conjunto de trabajo: Para evitar desperdiciar tiempo de CPU, muchos sistemas de paginación intentan llevar un registro del conjunto de trabajo de cada proceso y garantizar que esté en memoria antes de ejecutar ese proceso. Para permitir la prepaginación, se debe analizar un 1 en n bits del contador de orden superior en n marcas de reloj. Paginación anticipada (prepaginación): Con el objeto de reducir en gran medida la proporción de los fallos de página, se cargan las páginas antes de que los procesos se ejecuten. Políticas de asignación Locales vs Globales Algoritmos locales: corresponden a la asignación de una cantidad fija de memoria a cada proceso. Algoritmos globales: asignan en forma dinámica los marcos para página entre los procesos ejecutables.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

7

El modelo del conjunto de trabajo Algoritmo de asignación de marcos: asignarle a cada proceso una parte equitativa. Frecuencia de fallos de página (PFF): intenta mantener la frecuencia de paginación dentro de límites aceptables.

Tamaño de Página Requiere el balance de varios factores en competencia: a) El texto, datos o segmentos de la pila no ocuparán en su totalidad un número entero de páginas. Se desperdiciará en promedio 1/2 página (fragmentación interna). b) Programas con pasos secuenciales de baja asignación(por ej, 4k) c) Si el tamaño es muy pequeño, grandes programas necesitarán gran cantidad de páginas.Recordar que las transferencias entre memoria y disco son en general del tamaño de una página por vez, pero que este está determinado casi en su totalidad por el retraso de búsqueda y rotación, por lo que la transferencia de una páginas pequeña, tarda tanto como una grande. d) Si la tabla se carga en registros del HW, el tiempo será mayor conforme decrece el tamaño de la página. Aspectos de Implantación

• Respaldo de Instrucciones • Cerraduras de páginas en memoria • Páginas compartidas • Almacenamiento de respaldo • Demonios de paginación • Administración de los fallos de páginas

Respaldo de Instrucciones

• La instrucción que provoca un fallo de página, se detiene y hace el señalamiento

al SO. Al localizar la página el SO debe reiniciar la instrucción.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

8

• Soluciones: – Registros donde se almacene el valor del PC antes de la ejecución de

cada instrucción, valores de los registros autoincrementados o autodecrementados.

– Vaciamiento de la información interna de estado de la pila para permitir el reinicio.

Cerraduras de páginas en memoria

• Si el algoritmo de paginación es global, existe la posibilidad que ante una suspensión de un proceso de E/S, ante un fallo de página del proceso en ejecución, se retire la página del proceso suspendido, ocasionando inconvenientes (caso de transferencia DMA)

• Una solución consiste en cerrar las páginas relacionadas con E/S de forma que no puedan ser eliminadas.

• Otra solución es realizar las operaciones de E/S con buffers al núcleo y después copiar los datos a las páginas del usuario.

Páginas compartidas

• Ante la necesidad de compartir programas (editores, compiladores, etc…) es más eficiente compartir las páginas de estos.

• Se pueden compartir páginas exclusivas de lectura pero no las páginas datos. • Otra limitación ocurre cuando dos procesos comparten páginas:

– Si el planificador decide decide eliminar esas páginas de la memoria. – Si uno de ellos termina, se debe identificar las páginas en uso por los

otros procesos Almacenamiento de respaldo

• Asignar un espacio especial de disco para intercambio. Al iniciar esta área está vacía. Al iniciar los procesos se asignan bloques del tamaño de la imagen de sus núcleos. El área se administra como una lista de bloques libres.

• Se asigna a cada proceso se le asocia la dirección de intercambio. • Dirección: añadir ajuste de la página al inicio del área de intercambio. • Inicialización: copia de imagen del proceso en el área de intercambio para

recuperarla hacia la memoria; o cargar todo el proceso a la memoria y retirarlo si es necesario.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

9

• Problema: los procesos cambian de tamaño reservar áreas independientes para el texto, los datos y la pila.

• El otro extremo consiste en no asignar nada de antemano y hacerlo en forma dinámica a medida que los procesos

Demonios de paginación

• Las páginas funcionan mejor si hay muchos marcos de página libres para

utilizarse en caso de fallos de página. • Para garantizarlos se utiliza un proceso secundario demonio de paginación, que

duerme todo el tiempo, pero despierta para inspeccionar el estado de la memoria. • Si hay pocos marcos libres el mismo selecciona las páginas por eliminar según

el algoritmo elegido. Si fueron modificadas, se escriben en el disco. • Se recuerda el contenido de la página, para recuperarse si se eliminan del fondo

de marcos libres. • El demonio de paginación garantiza que los marcos libres estén limpios no

debe ser escritos a disco con urgencia Administración de los fallos de páginas 1.- HW hace un señalamiento (trap) y resguarda el PC en la pila. 2.-Inicia rutina (ensamblador) resguardo registros generales para evitar destrucción por el SO. 3.- SO identifica el fallo de página e intenta ubicar la página virtual solicitada HW tiene la información. O SO recupera PC, busca la instrucción y analizar qué se hacía en el momento del fallo. 4.- Determinada la dirección, SO verifica validez y consistencia de la protección. Si no señal al proceso o se elimina. SO busca un marco libre o realiza el reemplazo. 5.- Si la página está sucia, se transfiere la página al disco, se suspende el proceso que provocó el fallo y se permite la ejecución de otro hasta terminar la transferencia, marcando el marco para evitar que se use. Administración de los fallos de páginas 6.- Cuando el marco está limpio, SO examina la dirección y planifica la operación para recuperarla, ejecutándose otro proceso mientras se realiza la carga. Proceso que produjo el fallo sigue suspendido. 7.- Interruptor del disco señala la llegada de la página, se actualizan las tablas reflejando su posición y el marco queda en estado normal. 8.- La instrucción que produjo el fallo regresa donde inició y el Pc se modifica para que apunte a esa instrucción. 9.- El proceso que provocó el fallo se planifica, SO regresa a la rutina del ensamblador que lo llamó.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

10

10.- Se restauran con ella, los registros y demás información volátil. Regresa al espacio del usuario continuando la ejecución, como si no hubiera ocurrido un fallo de página. Segmentación Para muchos problemas, tener dos o más espacios independientes de direcciones virtuales es mejor que tener uno solo. (compilador).

Segmentación Para liberar al programador de controlar las tablas en expansión y contracción, una solución consiste en dotar a la máquina de varios espacios independientes de direcciones llamadas segmentos. Cada segmento tiene una serie lineal de direcciones desde 0 hasta un máximo. Los segmentos tienen longitudes distintas y puede variar durante la ejecución en forma independiente de los demás. En general, los segmentos son grandes y no son utilizados en su totalidad. Para especificar una dirección en esta memoria bidimensional el programa debe proporcionar una dirección con dos partes: Un número de segmento Una dirección dentro de este Puede contener: una pila, un procedimiento, un arreglo o variables escalares, pero no una mezcla. Segmentación Un segmento puede contener: una pila, un procedimiento, un arreglo o variables escalares, pero no una mezcla. Una llamada a un procedimiento en el segmento n utilizará la dirección (n,0) para dirigirse a la palabra 0. Al modificarse un procedimiento dentro de un programa no se deben modificarlos demás procedimientos.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

11

Segmentación La segmentación facilita procedimientos o datos compartidos por varios procesos. Biblioteca compartida: bibliotecas gráficas de gran tamaño que se compilan en todos los programas. El un sistema segmentado se puede colocar esa biblioteca en un segmento y compartirla para varios procesos, sin tenerla en las direcciones de cada proceso. Los segmentos pueden tener distintos tipos de protección (r - w - x), necesaria porque los usuarios son conscientes del contenido de cada segmento. La paginación es incidental, el programador no se da cuenta de que ella se realiza. Aunque es posible mediante artificios conocer el tipo de acceso de cada página. En la segmentación, el programador puede proteger cada segmento en forma independiente.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

12

Segmentación – Implantación Difiere de la implantación de la paginación en un aspecto esencial: las páginas tienen un tamaño fijo y los segmentos no.

Segmentación con Paginación - MULTICS Se paginan los segmentos. Tabla de segmentos con un descriptor por segmento. La tabla de segmentos también es un segmento, paginado. El descriptor posee la indicación si el segmento(o parte de él) se encuentra o no en la memoria principal. Si el segmento está en memoria, el descriptor contiene un apuntador de 18 bits a su tabla de páginas direcciones físicas de 24 bytes y páginas alineadas con fronteras de 64 bytes); la longitud del mismo, los bits de protección y elementos adicionales. Cada segmento es un espacio de direcciones virtuales de 1024 palabras como tamaño de página. Segmentación con Paginación - MULTICS

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

13

Segmentación con Paginación – MULTICS Dirección: Las direcciones dentro del segmento: - el segmento. - número de página. - las direcciones dentro de él. - palabra dentro de la página. Algoritmo de referencia a memoria: 1.- N° de segmento determina el descriptor de segmento. 2.- Verificación en memoria: Sí: se localiza. No: fallo de segmento (idem violación de protección). 3.- Verificación en memoria de entrada de tabla de páginas de página virtual solicitada. Sí: se localiza. La dirección en MP del principio de la página se obtiene de la entrada de la tabla de páginas. No: fallo de página. 4.- Añadir ajuste al origen de la página para obtener la dirección de la MP donde se localiza la palabra. 5.- Llevar a cabo la operación (lectura o escritura) Segmentación con Paginación - MULTICS

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

14

Segmentación con Paginación - MULTICS Utilización de la memoria asociativa de 16 bits y alta velocidad con búsqueda de datos en paralelo para una clave determinada. Se comparan en forma simultánea el número de página y segmento de todas las entradas, ganado velocidad.

Segmentación con Paginación - INTEL 386 16 k segmentos independientes, con hasta mil millones de palabras de 32 bits cada uno. Dos tablas: - LDT (Tabla de descriptores locales): segmentos locales de cada programa (código, datos, pila, etc…) - GDT (Tabla de descriptores globales): segmentos del sistema (aún el SO) Cada programa tiene su propia LDT, pero existe una única GDT compartida por todos los programas en la computadora.

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

15

Se carga un selector del segmento en uno de los seis segmentos de la máquina. En la ejecución CS mantiene el selector del segmento de código y DS el selector del segmento de datos.

Segmentación con Paginación - INTEL 386

Segmentación con Paginación - INTEL 386

Ing. Félix Piozzi Sistemas Operativos UTN – FRC

16

Segmentación con Paginación - INTEL 386