Agenda Sistemas Operativos Clase # 26 Administración de Memoria Administración de Memoria: – Paginación Martes, 22 de Octubre de 2002 Iván Bernal, Ph.D. Escuela Politécnica Nacional email: imbernal@mailfie.epn.edu.ec Copyright @2002, I. Bernal 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 1 Memoria virtual: paginación (1) La idea principal de la memoria virtual es que el tamaño combinado del programa, datos y stack pueden exceder el tamaño de memoria física disponible. El SO guarda aquellas partes del programa que se estén usando en memoria principal, y el resto en el disco duro. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 3 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 2 Memoria virtual: paginación (2) Que los procesos tengan que usar un espacio contiguo de la memoria es un impedimento para optimizar el uso de la memoria. Se propone que las direcciones lógicas sean contiguas, pero que no necesariamente correspondan a direcciones físicas contiguas. – Se divide la memoria física en bloques de tamaño fijo, llamados marcos ( frames frames). ). – Se divide a la memoria lógica (la que los procesos ven) en bloques del mismo tamaño llamados páginas páginas.. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 4 1 Memoria virtual: paginación (3) Memoria virtual: paginación (4) Las direcciones que un programa genera se llaman “direcciones virtuales” y conforman el “espacio de direcciones virtuales”. Las direcciones virtuales no van directamente al bus de memoria. Las direcciones virtuales van al MMU (Memory Management Unit Unit). ). – Traduce direcciones virtuales en direcciones físicas. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 5 Memoria virtual: paginación (5) 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 6 Memoria virtual: paginación (6) Se usa una tabla de páginas para saber en que marco se encuentra cada página. – Se requiere apoyo del hardware. Cada vez que la CPU intenta acceder a una dirección, la dirección se divide en un número de página p y un desplazamiento (offset) (offset) d. p se transforma en el marco correspondiente, antes de acceder físicamente la memoria. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 7 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 8 2 Memoria virtual: paginación (7) Memoria virtual: paginación (8) El tamaño de las páginas es una potencia de 2, típicamente entre 0.5 y 8K. Si las direcciones son de m bits y el tamaño de página es 2n, entonces los primeros m-n bits de cada dirección forman p, y los restantes n forman d. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 9 Memoria virtual: paginación (9) 22/10/2002 – Cuando la CPU se asigna a otro proceso, hay que cambiar la tabla de páginas a la del nuevo proceso. La paginación en general encarece los cambios de contexto. La seguridad se obtiene directamente, ya que cada proceso sólo puede acceder las páginas que están en su tabla de páginas. Fragmentación: Sólo interna, y de media página por proceso, en promedio. Iván Bernal, Ph.D Ph.D.. 10 Memoria virtual: paginación (10) – Si las direcciones son de m bits y el tamaño de página es 2n, la tabla de páginas puede llegar a contener 2m-n entradas. – En una CPU moderna, m=32 (incluso 64), y n=12 ó 13, lo que significa que se requerirían cientos de miles de entradas: – Se puede manejar la tabla de páginas de cada proceso completamente en memoria, y usar sólo un registro que apunte a la ubicación de la tabla. Para cambiar de un proceso a otro, sólo se cambia ese registro. Desventaja: costo de cada acceso a memoria se duplica, porque primero hay que acceder la tabla (indexada por el número de página). O sea, si sin paginación cada acceso costaba 70ns, ¡ahora cuesta 140! – Esto sugeriría que conviene usar páginas pequeñas, pero eso aumentaría el costo de administrar las páginas. – En general, el tamaño de página ha aumentado con el tamaño de la memoria física de una máquina típica. Sistemas Operativos Iván Bernal, Ph.D Ph.D.. Tablas de páginas: Cada proceso tiene su propia tabla: 22/10/2002 Sistemas Operativos 11 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 12 3 Memoria virtual: paginación (11) Memoria virtual: paginación (12) TLB (translation (translation looklook -aside buffer ) – Pequeño y rápido caché especial de memoria asociativa. – La memoria asociativa guarda pares (clave, valor), y cuando se le presenta la clave, busca simultáneamente en todos sus registros, y retorna, en pocos ns, el valor correspondiente. – La memoria asociativa es cara; los TLBs rara vez contienen más de 64 registros. – El TLB forma parte de la MMU, y contiene los pares (página, marco) de las páginas más recientemente accedidas. Cuando la CPU genera una dirección lógica a la página p, la MMU busca una entrada (p (p, f ) en el TLB. Si se encuentra, se usa el marco f, sin acudir a la memoria. Sólo si no hay una entrada para p, la MMU debe acceder la tabla de páginas en memoria (e incorporar una entrada para p en el TLB, posiblemente eliminando otra). 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 13 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 14 Memoria virtual: paginación (13) Memoria virtual: paginación (14) Por pequeño que sea el TLB, la probabilidad de que la página esté en el TLB (tasa ( tasa de aciertos) aciertos) es alta, porque los programas suelen hacer muchas referencias a unas pocas páginas. Otra ventaja de paginación: – Si la tasa de aciertos es del 90% y un acceso al TLB cuesta 10ns, entonces, en promedio, cada acceso a memoria costará 87ns (¿por qué?). – O sea, sólo un 24% más que un acceso sin paginación (70ns). – En cada cambio de contexto, hay que limpiar el TLB, lo que puede ser barato, pero hay que considerar un costo indirecto: si los cambios de contexto son muy frecuentes, la tasa de aciertos se puede reducir (para cada cambio de contexto se debe llenar el TLB) 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 15 – Permite que procesos compartan páginas. – Por ejemplo, varios procesos ejecutando el mismo código: las primeras páginas lógicas apuntan a las mismas páginas físicas, que contienen el código. El resto, apunta a datos locales, propios de cada ejecución. Un factor importante que se ha mencionado es si los programas exhiben una característica denominada `localidad‘: – Muchos programas tienden a usar las instrucciones que están cercanas a la localidad de la instrucción que se está ejecutando actualmente. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 16 4 Memoria virtual: paginación (15) Page fault – Cuando se está buscando una página cualquiera y ésta no está cargada, surge lo que se conoce como un `fallo de página' (page (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. 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. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 17 Memoria virtual: paginación (16) – 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. Algoritmos para reemplazo de páginas – Páginas modificadas deben primero salvarse. – Páginas NO modificadas deben simplemente ser sobreescritas. – La primera en entrar, primera en salir: 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. 22/10/2002 Memoria virtual: paginación (17) – 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. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 19 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 18 Segmentación (1) Aprovecha que los programas se dividen en partes lógicas, datos, código y stack stack.. Asigna particiones de memoria a cada segmento de un programa. Facilita el compartir de segmentos (Ejem Ejem:: librerías compartidas). Facilita el intercambio entre memoria y disco duro. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 20 5 Segmentación (2) Segmentación (3) Por ejemplo, en la versión de UNIX SunOS 3.5, no existían librerías compartidas para algunas herramientas, como 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 MB 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). La mayor parte del editor es común para todos los usuarios, la primera vez que cualquier usuario lo invocaba, se reservaba un MB como antes, pero para el segundo, tercero y resto de usuarios, cada editor extra sólo consumía 20 KB de memoria. El ahorro es impresionante. Particiones de memoria son de tamaño variable, en contraste con páginas de tamaño fijo en la paginación pura. La traducción de direcciones es muy similar a la llevada a cabo en la paginación. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 21 – Diferencia: el tamaño de los bloques a controlar son variables, por lo que cada entrada en la tabla debe contener la longitud de cada segmento. – La dirección virtual se compone de un número de segmento (s) y un desplazamiento (d) para ubicar un byte dentro de dicho segmento. – El desplazamiento no debe ser mayor que el tamaño del segmento. 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 22 Sistemas Combinados (1) La paginación y la segmentación puras son métodos de manejo de memoria bastante efectivos. 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 es para aprovechar los conceptos de la división lógica de los programas (segmentos) con la granularidad de las páginas. Un proceso estará repartido en la memoria real en pequeñas unidades (páginas) cuya liga son los segmentos. Es factible el compartir segmentos a medida que las partes necesitadas de los mismos se van referenciando (páginas) 22/10/2002 Sistemas Operativos Iván Bernal, Ph.D Ph.D.. 23 6