Sistemas Operativos [Administración de la memoria] M. en C. Sergio Luis Pérez Pérez UAM C UAJIMALPA , M ÉXICO, D. F. Trimestre 13-O Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 1 / 56 La memoria básica La memoria básica I La mayorı́a de las computadoras tienen una jerarquı́a de memoria. La jerarquı́a de memoria se refiere a la organización piramidal de la memoria en niveles. El objetivo es conseguir el rendimiento de una memoria de gran velocidad al costo de una memoria de baja velocidad. Lo anterior se logra con base en el principio de cercanı́a de referencias. La cercanı́a de referencias es el agrupamiento de las lecturas de memoria por medio del procesador. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 2 / 56 La memoria básica La memoria básica II La cercanı́a de referencias permite que los programas que cuentan con un cierto número de ciclos y subrutinas iterativas produzcan referencias repetidas que consideren un pequeño conjunto de instrucciones. Las agrupaciones de uso con el tiempo son variables, pero son fijas dentro de perı́odos cortos de tiempo. También, permite que un programa en ejecución no necesite todas sus páginas cargadas en la memoria principal. Con esto es posible tener más procesos en memoria listos para correr y no se tienen que cargar y descargar sus páginas en el momento de un intercambio. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 3 / 56 La memoria básica La memoria básica III La localidad de las referencias (principio de localidad), basándose en el pasado reciente de un programa, permite predecir qué instrucciones y datos se utilizarán en un futuro. Se dividen en tres grupos: Localidad temporal. Cuando una posición de memoria es referenciada, entonces muy probablemente la misma ubicación vuelva a ser referenciada en un futuro cercano. Localidad espacial. Si una localización de memoria es referenciada en un momento concreto, probablemente las localizaciones cercanas a ella sean también referenciadas pronto. Localidad secuencial. Las direcciones de memoria que se están utilizando suelen ser contiguas. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 4 / 56 La memoria básica La memoria básica IV Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 5 / 56 La memoria básica La memoria básica V La parte del sistema operativo que administra la jerarquı́a de memoria se llama administrador de memoria. Las funciones del administrador de memoria son: Determinar cuáles partes de la memoria están en uso y cuáles no. Asignar memoria a los procesos cuando la necesitan y liberarla cuando terminan. Administrar los intercambios entre la memoria principal y el disco. A continuación se describen algunos mecanismos para la administración de la memoria. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 6 / 56 La memoria básica La memoria básica VI Mono-programación sin intercambio ni paginación Consiste en ejecutar un sólo programa a la vez, repartiendo la memoria entre ese programa y el sistema operativo. Hay tres enfoques: 1 El SO estaba en la parte más baja de la RAM y en lo demás un programa de usuario (mainframes y minicomputadoras antiguas). 2 El SO estaba en la ROM y un programa de usuario en RAM (sistemas integrados). 3 Los controladores en la parte más alta de la ROM y el resto del sistema en la parte más baja de la RAM (la parte del sistema que estaba en ROM era el BIOS). Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 7 / 56 La memoria básica La memoria básica VII Multiprogramación con particiones fijas La multiprogramación permite la ejecución de varios procesos a la vez. Si un proceso se bloquea en espera de una operación de E/S, entonces otro puede usar el procesador al mismo tiempo. Una forma sencilla de multiprogramación consiste en dividir la memoria en n particiones no necesariamente iguales. Dicha partición puede realizarse de forma manual al arrancar el sistema. Cuando llega un trabajo éste se coloca en la partición más pequeña que cabe. Con este método hay parte de la memoria que se desperdicia. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 8 / 56 La memoria básica La memoria básica VIII Estrategias para la multiprogramación con particiones fijas 1 Se crea una cola por cada partición de la memoria, donde se encuentran esperando los procesos que caben en ella 2 Se crea una cola para todos los procesos y cada uno de ellos es colocado en la partición disponible mas pequeña en la que cabe. 3 Teniendo una sola cola, ésta es analizada y se elige al programa más grande que cabe en cada partición disponible. 4 Para evitar la discriminación de procesos se establece un lı́mite en el número de veces que se puede ignorar un proceso. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 9 / 56 La memoria básica La memoria básica IX Modelado de la multiprogramación Una forma de modelar la multiprogramación es de forma probabilı́stica. Sea p la fracción de su tiempo que un proceso espera a que terminen operaciones de E/S. Si hay n procesos en la memoria la probabilidad de que todos estén esperando a la vez es pn . El aprovechamiento del procesador (AP) está dado entonces por la fórmula: AP = 1 − pn El aprovechamiento de un procesador está en función de n que se conoce como grado de multiprogramación. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 10 / 56 La memoria básica La memoria básica X Ejercicio Suponga que una computadora tiene 64 MB de memoria de los cuales 32 MB son ocupados por el SO. Supongamos que cualquier programa de usuario utiliza 8 MB. Si la espera media de un proceso en operaciones E/S es el 80 %. ¿Cuál es el AP de dicha computadora? ¿Cual serı́a el AP de esta computadora si incrementamos la memoria en 32 MB? ¿Cuánta memoria debe ser agregada si deseamos obtener un AP de 90 %? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 11 / 56 La memoria básica La memoria básica XI Con la multiprogramación se deben resolver dos problemas importantes: la reubicación y la protección. La reubicación se refiere al problema de reubicar las direcciones absolutas de un programa (indicadas en el archivo binario) en direcciones relativas (considerando la partición donde es colocado el programa). Una solución es modificar las instrucciones en el momento que el programa se carga en la memoria. Por ejemplo si el programa se carga en la partición que inicia en la posición 100 KB entonces se suman 100 KB a cada una de las direcciones mencionadas en el. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 12 / 56 La memoria básica La memoria básica XII La protección se refiere al problema de evitar que programas mal intencionados escriban y lean de la memoria perteneciente a otros usuarios. Una solución es utilizar dos registros especiales de hardware: base y lı́mite. En el registro base se carga la dirección de inicio de la partición asignada a un proceso calendarizado. El registro lı́mite se carga con la longitud de la partición. El registro lı́mite se encarga de verificar que las direcciones utilizadas por el programa no intenten hacer acceso a memoria fuera de la partición actual. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 13 / 56 Administración de memoria Administración de memoria Cuando no hay suficiente memoria principal para contener a todos los procesos activos se acostumbra tener a los procesos excedentes en disco. Existen dos enfoques generales para realizar esta administración de memoria: el intercambio (swapping) y la memoria virtual. El intercambio es un enfoque que consiste en traer a la memoria un proceso, ejecutarlo un tiempo y devolverlo a disco. La memoria virtual permite que los programas se ejecuten aunque sólo una parte de ellos este en memoria la principal. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 14 / 56 Administración de memoria Intercambio (swapping) Intercambio (swapping) I Cuando se realiza intercambio en una máquina con memoria con particiones fijas el intercambio es sencillo pues las direcciones de las particiones no cambian. Si la memoria se administra mediante particiones variables el problema es que las direcciones de las particiones cambian constantemente. La ventaja de las particiones fijas es que la administración es sencilla pero el desperdicio es grande. La ventaja de las particiones variables es que el desperdicio es mı́nimo pero la asignación y liberación de memoria es complicado y lento. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 15 / 56 Administración de memoria Intercambio (swapping) Intercambio (swapping) II Se puede utilizar la técnica de compactación de memoria para ayudar a administrar la memoria durante los intercambios. Dicha técnica se utiliza cuando se crean huecos durante el intercambio. La compactación de memoria permite unir tales huecos en uno sólo más grande, tal que los procesos activos son desplazados hacia una ubicación. Por otro lado si se conoce de antemano la cantidad de memoria a asignar a un proceso el intercambio es sencillo. Si la cantidad de memoria que puede manejar un proceso es variable entonces puede ocurrir lo siguiente: Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 16 / 56 Administración de memoria Intercambio (swapping) Intercambio (swapping) III Si existe espacio adyacente libre entonces éste es asociado a el proceso. Si no existe espacio adyacente libre pero existe un espacio disponible que lo soporte entonces se mueve el proceso. Si ya no hay espacio disponible (ni en la memoria ni en disco) el proceso tendrá que esperar o terminar. Cuando los procesos tienen dos segmentos diferentes capaces de crecer (datos y pila) se puede utilizar una organización tal que ambos segmentos puedan crecer dentro de un espacio previamente reservado. Existen dos formas de administración de memoria basadas en intercambio: con mapas de bits y con listas ligadas. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 17 / 56 Administración de memoria Intercambio (swapping) Intercambio (swapping) IV Administración de memoria con mapas de bits Un mapa de bits divide la memoria en unidades de asignación y asigna un 1 a las unidades ocupadas y 0 a las desocupadas. Si el número de unidades de asignación es grande entonces se requiere un mapa de bits costoso. Si el número de unidades de asignación es pequeño el mapa de bits es barato. ¿Qué es mejor, tener muchas unidades de asignación o tener pocas? El problema de los mapas de bits son las búsquedas de espacio. Para un proceso que requiere k unidades se requiere un método de búsqueda de k unidades consecutivas disponibles. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 18 / 56 Administración de memoria Intercambio (swapping) Intercambio (swapping) V Administración de memoria con listas ligadas Se mantiene una lista ligada con cuatro campos: Tipo de entrada. H para hueco y P para proceso. La dirección donde comienza. Que es la suma de las longitudes de sus predecesores. La longitud. Longitud de la memoria asignada al proceso o hueco. Un apuntador a la siguiente entrada. ¿Que ocurre con la estructura cuando un proceso X termina de ejecutarse? Pista: Existen 4 casos (A,X,B), (A,X,H), (H,X,B), (H,X,H). ¿Ayudarı́a la organización en forma de lista doblemente ligada? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 19 / 56 Administración de memoria Intercambio (swapping) Intercambio (swapping) VI Algoritmos de administración de memoria con listas ligadas Primer ajuste. Se explora la lista hasta encontrar un espacio donde quepa el proceso. Siguiente ajuste. Se explora la lista pero continuando donde se quedó la búsqueda anterior. Mejor ajuste. Se explora toda la lista y se elige el tamaño más adecuado. Peor ajuste. Se elige siempre el tamaño más grande. Ajuste rápido. Mantiene listas de los tamaños más solicitados en forma común. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 20 / 56 Administración de memoria La memoria virtual La memoria virtual I Éste método fue ideado por Fotheringham en 1961. Esta idea surge de considerar que el tamaño combinado de un programa, sus datos y su pila pueden exceder la memoria fı́sica. De este modo se mantiene en memoria principal la parte del programa en ejecución y en disco el resto. La paginación es la forma más común de administración para la memoria virtual. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 21 / 56 Administración de memoria La memoria virtual La memoria virtual II Paginación I Cuando se escribe un programa, éste realiza operaciones de escritura y lectura a memoria. Sin embargo en lugar de escribir sobre la memoria fı́sica la mayorı́a de los sistemas escriben en una memoria virtual. De modo que las direcciones generadas por un programa se conocen como direcciones virtuales. Las direcciones virtuales viven en lo que se conoce como espacio de direcciones virtual. Cuando se utiliza memoria virtual las direcciones no se van de forma directa al bus de memoria. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 22 / 56 Administración de memoria La memoria virtual La memoria virtual III Paginación II Las direcciones virtuales son administradas por una unidad de administración de memoria (MMU Memory Management Unit). El espacio de direcciones se divide en unidades llamadas páginas. Las unidades en la memoria fı́sica que les corresponden a las páginas se denominan marcos de páginas. Se utiliza una tabla de páginas que mantiene la relación entre las direcciones virtuales y la memoria fı́sica. Las unidades de las páginas y de los marcos de páginas son siempre del mismo tamaño. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 23 / 56 Administración de memoria La memoria virtual La memoria virtual IV Paginación III La memoria virtual permite que un programa de 128 MB pueda ser ejecutado en un sistema con 64 MB. No todas las páginas tienen correspondencia con un marco de página en todo momento. Un fallo de página es cuando un programa trata de usar una página que no tiene correspondencia en memoria fı́sica. El sistema resuelve los fallos de página de la siguiente manera: Busca un marco de página poco utilizado y lo reescribe en el disco. Va por la página que fue referenciada y la pone en el marco recién desocupado. Modifica el mapa y reinicia la instrucción interrumpida. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 24 / 56 Administración de memoria La memoria virtual La memoria virtual V ¿Cómo funciona la MMU? I Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 25 / 56 Administración de memoria La memoria virtual La memoria virtual VI ¿Cómo funciona la MMU? II Supongamos que se desea procesar la dirección virtual 20818. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 26 / 56 Administración de memoria La memoria virtual La memoria virtual VII Tablas de página En términos de funciones la tabla de páginas es una función que toma un una página virtual y devuelve una dirección fı́sica (aunque quien hace la labor es la MMU). Los principales problemas de las tablas de páginas son: La tabla de páginas puede ser muy grande. La transformación debe ser rápida. Las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Si se consideran páginas de 4KB entonces un espacio de 32 bits puede tener como un millón de páginas. Por tanto la tabla de páginas debe tener un millón de entradas. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 27 / 56 Administración de memoria La memoria virtual La memoria virtual VIII Tablas de página multinivel Este tipo de tablas elimina el problema de almacenar enormes tablas de páginas en la memoria. Una forma de manejar direcciones virtuales de 32 bits es como sigue: Se utiliza un dirección virtual de 32 bits, dividida en tres registros de 10(TN1), 10(TN2) y 12(desplazamiento) bits respectivamente. Lo anterior significa que hay 220 páginas de 4KB cada una de ellas. También se utiliza una tabla de Nivel 1 con 210 entradas y 210 tablas de Nivel 2 con 210 entradas cada una. Suponga que un proceso requiere 12MB de memoria, divididos en 4MB para texto del programa, 4MB para datos y el resto para la pila. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 28 / 56 Administración de memoria La memoria virtual La memoria virtual IX Cómo opera la MMU las tablas de página multinivel Del ejemplo anterior, primero la MMU toma primero el campo TP1 de la dirección virtual. Ese valor sirve como ı́ndice para consultar la tabla de Nivel 1. Cada entrada de la tabla de Nivel 1 representa 4MB (el espacio total es de 4GB). La entrada de la tabla de Nivel 1 proporciona el ı́ndice de la correspondiente tabla de Nivel 2. La entrada de Nivel 2 proporciona el número de marco donde se encuentra la página. ¿Como se procesarı́a la dirección virtual 0x00403004? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 29 / 56 Administración de memoria La memoria virtual La memoria virtual X Estructura de una entrada de tabla de páginas El campo más importante es el número de marco de página. Después se encuentra el bit presente/ausente (A). Luego siguen los bits de protección (P) que indican los tipos de acceso que se encuentran permitidos. Luego viene el bit modificada (M) que se enciende en automático (vı́a hardware) cuando se escribe en una página. Luego sigue el bit solicitada (R) que se enciende cuando se hace referencia a una página. Finalmente, el bit opcional uso de caché (C), habilita o deshabilita el uso de caché para páginas que corresponden a registros. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 30 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas I Cuando ocurre un fallo de página el SO debe elegir la página a sacar de la memoria y colocar la que traerá a disco. Si la página a quitar fue modificada durante su estancia en memoria esta debe ser reescrita en disco. Finalmente se sobreescribe la página a reemplazar. ¿Qué página es la que debe ser reemplazada? El mismo problema se presenta cuando se utiliza caché. Para resolver esta pregunta a continuación se presentan diversos algoritmos. Algoritmo óptimo de reemplazo de páginas. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 31 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas II Algoritmo de reemplazo de páginas no utilizadas recientemente. Algoritmo de reemplazo de páginas de PEPS (FIFO). Algoritmo de reemplazo de páginas de segunda oportunidad. Algoritmo de reemplazo de páginas tipo reloj. Algoritmo de reemplazo de página menos utilizada recientemente. Simulación de LRU en software. Algoritmo de reemplazo de páginas de conjunto de trabajo. Algoritmo de reemplazo de páginas WSClock. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 32 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas III Algoritmo óptimo de reemplazo de páginas Suponga que cada página se rotula con el número de instrucciones que se ejecutarán antes de que se haga referencia a esa página. Cuando ocurre un fallo de página lo ideal entonces es liberar la página con el número más grande. ¿Por que no liberar la página con el número más pequeño? ¿El sistema operativo tiene forma de saber cuándo se volverá a hacer referencia a cualquiera de las páginas? ¿Serı́a posible implementar este algoritmo? ¿Cómo? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 33 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas IV Algoritmo de reemplazo de páginas no utilizadas recientemente Supongamos que a cada página se encuentran asociados los bits R y M. Lo anterior da pie a categorizar las páginas como sigue: Clase 0 0 0 No solicitada, no modificada Clase 1 0 1 No solicitada, modificada Clase 2 1 0 Solicitada, no modificada Clase 3 1 1 Solicitada, Modificada Cuando se presenta un fallo de página el SO examina todas las páginas y elegirá al azar una de las páginas con la clase más baja. ¿Cómo es posible que ocurra la clase 1? ¿Qué tienen que ver las interrupciones? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 34 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas V Algoritmo de reemplazo de páginas de PEPS (FIFO) En este caso el SO mantiene una lista de todas las páginas que están actualmente en memoria. Además la lista está ordenada colocando la página más antigua al principio de la lista y las más nueva al final. Cuando ocurre un fallo de página se libera la página al principio de la lista. ¿Qué problemas tiene este algoritmo? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 35 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas VI Algoritmo de reemplazo de páginas de segunda oportunidad Este algoritmo además de llevar la cuenta de la antigüedad de cada página considera el bit R. En el momento que ocurre un fallo de página, si la página que se encuentra al principio de la lista tiene encendido el bit R entonces se apaga el bit. Después, dicha página se coloca al final de la lista como si fuera una nueva página. ¿Qué significa el hecho de que el bit R de una página antigua se encuentre encendido? ¿Que ocurre con éste algoritmo en el peor de los casos? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 36 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas VII Algoritmo de reemplazo de páginas tipo reloj Es similar al algoritmo anterior pero con la diferencia de que las páginas no se cambian de ubicación. En lugar de ello se mantiene un apuntador a la página más antigua y éste se mueve en forma de manecillas del reloj. Este algoritmo también se conoce como de cola circular. Gráficamente, ¿cómo visualiza este método? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 37 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas VIII Algoritmo de reemplazo de página menos utilizada recientemente I Si una página se ha utilizado bastante recientemente probablemente se siga utilizando durante las siguientes instrucciones. Un algoritmo factible consistirı́a en liberar la páginas que no se han utilizado mucho recientemente. Esta estrategia se conoce como LRU (Least recently used). Una forma de implementarla serı́a utilizando un contador hardware C digamos de 64 bits. Además cada página tiene como entrada un campo de 64 bits para almacenar el valor de dicho contador. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 38 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas IX Algoritmo de reemplazo de página menos utilizada recientemente II Después de cada referencia a memoria el valor de C se almacena en la entrada de la página referenciada. La página con el contador más bajo es la menos utilizada recientemente. Otra implementación, también en hardware, serı́a utilizar una matriz de tamaño nxn considerando que hay n marcos de página. Cada que se utiliza la página i todas las columnas del renglón i se activan y todas las filas de la columna i se pagan. ¿Cuáles son las ventajas y desventajas de ambas implementaciones? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 39 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas X Simulación de LRU en software I Se pueden realizar dos implementaciones. La primera implementación consiste en asociar un contador a cada página e ir sumando el valor del bit R cada interrupción de reloj. Cuando ocurre un fallo de página se elige la página con el contador más bajo. El problema de este método es que no necesariamente se consideran las páginas menos utilizadas recientemente para su liberación. ¿Por qué puede ocurrir esta situación? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 40 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas XI Simulación de LRU en software II La segunda implementación también consiste en utilizar una variable de página pero con un comportamiento diferente. Con la segunda implementación ahora cada interrupción de reloj se realiza un corrimiento a la derecha de cada variable de cada marco de página. El bit R se suma en la parte alta de la variable en lugar de en la baja. Cuando ocurre el fallo de página se libera la que tiene el menor valor en su variable. Las implementaciones suelen utilizar 8 bits si el tic de reloj ocurre cada 20 milisegundos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 41 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas XII Algoritmo de reemplazo de páginas de conjunto de trabajo I Con este método todos los procesos comienzan sin tener páginas en la memoria. La primera instrucción ejecutada provoca un fallo de página y según se requiere el proceso trae sus demás páginas a memoria. A esta estrategia también se le conoce como paginación por demanda. Pocas veces los procesos referencı́an a todas sus páginas durante su tiempo de ejecución, esto por el principio de localidad. El conjunto de páginas que un proceso utiliza en un momento dado se conoce como conjunto de trabajo. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 42 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas XIII Algoritmo de reemplazo de páginas de conjunto de trabajo II Si el proceso no logra tener en memoria a todo su conjunto de trabajo provocará demasiados fallos de página, lo que se conoce como hiperpaginación. Si se logra determinar cuál será el conjunto de trabajo de un proceso entonces se puede utilizar la técnica de prepaginación. Para implementar la técnica de prepaginación se suele utilizar un valor por defecto k y cada vez que se carga un proceso debieron haberse precargado las k referencias más recientes a la memoria. Otro criterio es considerar sólo las páginas empleadas durante los últimos X milisegundos de ejecución. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 43 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas XIV Algoritmo de reemplazo de páginas de conjunto de trabajo III Sin embargo, la idea es desalojar páginas que no pertenecen al conjunto de trabajo actual. Para esto es necesario introducir dos conceptos: Tiempo virtual. Es el tiempo de procesador utilizado por un proceso desde que inició su ejecución. Tiempo real. Es el tiempo total que lleva un proceso desde el inicio de su ejecución. Se fija un parámetro τ que considerará dentro del conjunto de trabajo actual a todas aquellas páginas referenciadas en los últimos τ segundos del tiempo virtual. La decisión sobre desalojar una página al ocurrir un fallo se decide en base a τ . Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 44 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas XV Algoritmo de reemplazo de páginas WSClock I Es una combinación del algoritmo de conjunto de trabajo con el algoritmo de reloj. Se utiliza una lista en forma de anillo inicialmente vacı́a. Además se necesitan considerar el bit R y el tiempo virtual de vida de la página. Cada que se necesita una página se añade a la lista. La lista tendrá un lı́mite tan grande como el número de marcos existentes. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 45 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas XVI Algoritmo de reemplazo de páginas WSClock II Cuando ocurre un fallo primero se recorre la lista buscando los marcos con el bit R = 0. Si el bit es cero, entonces se checa su edad τ y si el valor es más grande que τ entonces la página se calendariza para copiarse a disco (si es que es requerido) o simplemente se libera. Para reducir el tráfico a disco sólo se podrı́a considerar calendarizar hasta n páginas. ¿Que ocurre si la manecilla da toda la vuelta y regresa a su punto de partida? 1 2 Se pudo haber calendarizado al menos una escritura. Pudieron no calendarizarse escrituras. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 46 / 56 Algoritmos para el reemplazo de páginas Algoritmos para el reemplazo de páginas XVII Algoritmo de reemplazo de páginas WSClock III En el primer caso la manecilla sigue avanzando hasta que una de las páginas calendarizadas quede limpia. La primera página encontrada será reemplazada por la que se requiere. En el segundo caso quiere decir que todas las páginas caen en el conjunto de trabajo. Lo más sencillo será desalojar cualquier página limpia (con bit M = 0). Si ninguna página está limpia, entonces se debe calendarizar una (cualquiera) para escribirse a disco y luego se desalojará. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 47 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página I ¿Cuando ocurre la paginación? Cuando se crea un proceso. Cuando se ejecuta un proceso. Cuando se presenta un fallo de página. Cuando termina un proceso. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 48 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página II Cuando se crea un proceso El SO operativo debe determinar que tamaño tendrá al principio el programa y los datos. Se crea una tabla de páginas para el programa y datos. La tabla de páginas no debe estar residente mientras el proceso esta en estado listo pero sı́ cuando se está ejecutando el proceso. Además se le debe asignar algún espacio en disco para que en los intercambios de páginas éstas tengan a donde ir. Por último se registra en la tabla de procesos información acerca de la tabla de páginas y del área de intercambio en disco. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 49 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página III Cuando se ejecuta un proceso Se debe preparar la MMU para el nuevo proceso. Se debe actualizar la tabla de páginas del nuevo proceso. Puede que antes de comenzar a ejecutar el proceso sean traı́das todas sus páginas a memoria. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 50 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página IV Cuando se presenta un fallo de página El SO debe de leer los registros a fin de determinar la dirección que causó el fallo de página. Con esa información el SO debe determinar cuál es la página que se requiere traer de disco. El SO toma una decisión sobre la página a desalojar y trae la nueva a memoria. Finalmente el SO retrocede el PC para que apunte a la instrucción que causó el fallo. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 51 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página V Cuando termina un proceso El SO debe liberar la tabla de páginas, las páginas y el espacio en disco ocupado por el proceso. Si las mismas páginas son utilizadas por otros procesos, éstas sólo podrán ser liberadas cuando el último proceso termine de utilizarlas. Otro aspecto importante es cómo se lleva a cabo el manejo de fallos de página. Independientemente del algoritmo implementado para escoger la página a liberar de la memoria, el proceso que ocurre durante un fallo de página es el mismo. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 52 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página VI 1 El hardware salta al kernel y almacena el PC en la pila. 2 Se ejecuta una rutina en lenguaje ensamblador que guarda los registros importantes y dicha rutina manda llamar al SO. 3 El SO se da cuenta que hay un fallo de página y averigua cuál es la página que necesita. Esto puede ser con ayuda de uno de los registros almacenados en hardware o bien el SO debe recuperar el PC del programa y trata de deducir cuál es la página necesaria. 4 Si la dirección requerida es válida entonces el SO busca un marco libre o bien ejecuta el algoritmo de reemplazo de páginas, de lo contrario el SO mata el proceso. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 53 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página VII 5 Si el marco escogido está modificado el SO calendariza su escritura a disco además de que cambia de contexto eligiendo otro proceso a ejecutar (en lo que se mueve el marco a disco). 6 Una vez que el marco de página esta listo el SO calendariza una operación de disco para traer la página que requiere. Mientras esto se realiza otro proceso puede ser calendarizado. 7 Cuando la interrupción de disco indica que llego la página entonces se actualiza la tabla de páginas. 8 La instrucción que causó el fallo se regresa a su estado inicial. 9 El proceso que causó el fallo se calendariza. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 54 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página VIII 10 El SO regresa a la rutina de lenguaje ensamblador que lo invoco. 11 Esta rutina vuelve a cargar los registros y demás información de estado para continuar con la ejecución del proceso original. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 55 / 56 Aspectos de paginación y fallos de página Aspectos de paginación y fallos de página IX ¿Cómo funciona el retroceso de instrucciones? Para reiniciar una instrucción el SO debe determinar dónde está el primer byte de la instrucción. Ej. una instrucción que hace 2 referencias a memoria contempla 3 direcciones diferentes donde podrı́a haber ocurrido el fallo. De éste modo el SO no sabrá si la dirección donde ocurrió el fallo es un cod. de oper. o una dirección de memoria asociada a éste. Una solución hardware es un registro interno oculto que ofrecen algunas máquinas donde copian el valor del PC antes de que se ejecuta cada instrucción. Sin dicho dato el SO se las debe arreglar para resolver el problema. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 56 / 56