Transcript Memoria
Capítulo 3 Gestión de Memoria 3.1 Gestión básica de memoria 3.2 Intercambio (swapping) 3.3 Memoria virtual 3.4 Algoritmos de sustitución de páginas 3.5 Modelando algoritmos de sustitución de páginas 3.6 Cuestiones de diseño en sistemas paginados 3.7 Cuestiones de implementación 3.8 Segmentación 1 Introducción (1) • Idealmente, los programadores quieren memoria – mucha, rápida, no volátil, barata • Historia – 1980’s: MDS (64k), monousuario, CP/M, overlays – 1980’s: VAX (4Mb), multiusuario (docenas) – 2000’s: Windows, 64Mb (normal 512 Mb) • Jerarquía de memorias – Caché: poca, rápida, cara – RAM: Mb, velocidad y precio medios – Disco: Gb, lenta y barata • Es un problema de costes 2 Introducción (2) • Trabajos del gestor de memoria – Qué memoria está libre/ocupada – Asignación/liberación de memoria a procesos – Intercambio RAM-disco • Clases de gestores de memoria – Con intercambio • Swapping y paginación – Sin intercambio 3 Gestión básica de memoria (1) Monoprogramación sin intercambio ni paginación • Solo un programa en memoria (junto con el SO) • Se carga y se queda ahí hasta que acaba (CP/M) BIOS (Basic Input Ouput System) MSDOS minis palmTop, empotrados 4 Gestión básica de memoria (2) Multiprogramación con particiones fijas 5 Gestión básica de memoria (3) Multiprogramación con particiones fijas Planificación: queda libre una partición, ¿qué trabajo cargar? – El primero en la cola que quepa • Fragmentación interna – El más grande de la cola que quepa • Se perjudica a los pequeños (y debe ser al revés) – Disponer de una partición pequeña – No retrasar un trabajo más de k veces – OS/360, MFT (Multiprogramming with a Fixed number of Task) 6 Gestión básica de memoria (4) Modelo de multiprogramación Grado de multiprogramación La utilización de CPU es función del nº. de procesos en memoria 7 Gestión básica de memoria (5) Modelo de multiprogramación - Los procesos son independientes - n: grado de multiprogramación - p: fracción de tiempo que un proceso está esperando una I/O - Utilización de la CPU = 1 – pn - Los procesos no son independientes: 1 sola CPU-> los otros en preparados (esperando). Aproximación válida. Ejemplo: 32Mb memoria, el SO ocupa 16Mb cada proceso de usuario 4Mb => n = 4; si p=0.8, CPU = 60% Si compramos 16Mb => n = 8; si p=0.8, CPU = 83%; ganancia: 38% Si compramos otros 16Mb CPU=93%; ganancia: 12% (La sección 4.1.4 no entra para el examen) 8 Gestión básica de memoria (6) Reubicación y protección Reubicación: ¿dónde reside un programa? estática, dinámica Las direcciones de un programa suelen ser relativas a su dirección de comienzo. PERO ... al montar un programa no se sabe dónde se va a ejecutar. SOLUCIONES Modificación de direcciones durante la carga (estático) Registro de Reubicación (o registro base) (permite reubicación dinámica) 6000 1345 A Dir. Virtual 4418 0 + Dirección Real 0 B 4200 747 Registro de Reubicación Ra = 2854 Rb = 4418 Rc = 512 5166 B A 2854 2341 0 C Espacio Virtual 512 C 0 Espacio Real 9 Gestión básica de memoria (7) Reubicación y protección Protección: acceso indiscriminado a cualquier área de memoria tamaño del programa dirección comienzo partición Dirección Virtual ¡ Registro Límite Registro Base < + ERROR de direccionamiento RAM ! 10 Intercambio (swapping) (1) Batch Tiempo Compartido Se aceptan tantos trabajos como quepan en memoria Suele haber más procesos de usuario de los que caben en memoria ¡ y hay que atenderlos a todos! • Dos aproximaciones: – Intercambio (entre RAM y disco) – Memoria virtual (solo una parte del programa en RAM) 11 Intercambio (swapping) (2) PARTICIONES DE TAMAÑO VARIABLE (el nº, tamaño y dirección varía con el tiempo) ¡ Fragmentación Externa ! COMPACTACIÓN 12 Intercambio (swapping) (3) P.ejem: 4 bytes: 40ns. 256Mb: 2,7 s. T4.4 (1ed) Ciertos sistemas con intercambio eliminan la fragmentación externa mediante compactación. Suponga que una computadora con 1Mb de memoria para usuario hace una compactación cada segundo. Si tarda 0,5 microseg en copiar un byte y el tamaño medio de los huecos es de 0,4 el tamaño medio de los segmentos ¿Cuál es la fracción del tiempo total de CPU que se utiliza para la compactación? 13 Intercambio (swapping) (4) ¿Puede crecer dinámicamente la memoria de un proceso? Para crecimiento B Pila de B En uso Datos de B Código de B Para crecimiento A (a) S. O. Para crecimiento Pila de A Para crecimiento Datos de A Código de A En uso (b) S. O. 14 Intercambio (swapping) (5) Gestión de memoria con mapa de bits Se debe llevar la cuenta de la memoria utilizada y de los huecos libres Mapa de Bits Lista de Bloques Libres Sistema Buddy Mapa de Bits A 0 11111000 11111111 11001111 11111000 00111111 B 8 C 16 D E 24 32 ¿Tamaño de la Unidad de Asignación? Pequeño Mapa Grande Grande Mapa Pequeño Fragmentación Interna Es caro buscar una zona libre de tamaño K. 15 Intercambio (swapping) (6) Gestión de memoria con listas enlazadas 16 Intercambio (swapping) (7) Gestión de memoria con listas enlazadas T4.4 Se trata de comparar la memoria necesaria para mantener la pista de los bloques de memoria libre utilizando un mapa de bits o una lista enlazada. La memoria es de 128 Mb y la unidad de asignación es de n bytes. Para El caso de la lista enlazada, suponer que la memoria consiste de una secuencia alternada de segmentos y huecos, cada uno de 64kb. También suponer que cada nodo en la lista necesita una dirección de memoria de 32 bits, una longitud de 16 bits y un campo (siguiente nodo) de 16 bits. ¿Cuántos bytes se necesitan para mantener el mapa de bits y cuántos para mantener la lista enlazada? ¿Qué método es el mejor? 17 Intercambio (swapping) (8) Gestión de memoria con listas enlazadas Lista de Bloques Libres (ordenados por dirección: liberación) 18 Intercambio (swapping) (9) Gestión de memoria con listas enlazadas Lista de Bloques Libres (ordenados por dirección: asignación) • El primero que sirva • siempre se comienza en la cabecera • se generan muchos huecos pequeños al principio • Siguiente que sirva • lista circular; la cabecera se desplaza • fragmentación externa: distribución uniforme • El que mejor se adapte • recorrer toda la lista: lento • desperdicia más memoria • El que peor se adapte • no es buena idea 19 Intercambio (swapping) (10) Gestión de memoria con listas enlazadas Lista de Bloques Libres (ordenados por tamaño: asignación) • Orden creciente de tamaños • el primero que sirva = el que mejor se adapte • siguiente que sirva no tiene sentido • sobrecarga: mantener la lista ordenada en: asignación y liberación (¿compactar con vecinos?) • Algoritmo Quick Fit • lista separadas por tamaño (2k, 4k, …) • asignación rápida; liberación: compactación • Cada nodo de la lista puede ser el propio bloque 20 Intercambio (swapping) (11) T4.5 Considerar un sistema de intercambio en el que la memoria consiste de Los siguientes huecos (en tamaño) en el siguiente orden en memoria: 10kb, 4kb, 20kb, 18kb, 7kb, 9kb, 12kb y 15kb ¿Qué hueco se elegirá para Satisfacer la próxima petición de memoria: a) 12kb b) 10kb c) 9kb Para los algoritmos: 1) El primero que sirva 2) El que mejor se adapte 3) El que peor se adapte 4) El siguiente que sirva 1) 2) 3) 4) 20, 10, 18 12, 10, 9 20, 18, 15 20, 18, 9 21 Memoria Virtual (1) No es necesario tener todo el programa en memoria RAM •Se podrían ejecutar programas mayores que la RAM •Se podrían tener más procesos en memoria principal •Menos E/S por intercambio: más velocidad Se ocupa de tener la memoria de un proceso partida en trozos, e ir cargando en memoria principal el trozo que es necesario para poder continuar su ejecución. Trozos Iguales Trozos de tamaño variable PAGINACIÓN SEGMENTACIÓN 22 Memoria Virtual (2). Paginación Posición y función de la MMU 23 Memoria Virtual (3). Paginación La memoria virtual se divide en páginas La memoria física en marcos de página tamaño página = tamaño marco Conversión: MOV REG, 0 - Dirección 0 está en página 0 - Página 0 está en marco 2 - Dirección física es 8192 MOV REG, 8192 - Dirección 8192 está en página 2 - Página 2 está en marco 6 - Dirección física es 24576 ¿ MOV REG, 32780 ? 24 Memoria Virtual (4). Paginación 32780 está en la página 8 (32768) La página tiene X La MMU genera un TRAP FALTA de PÁGINA: 1. 2. 3. 4. Elegir víctima Escribir a disco (si hace falta) Cargar la nueva página. Reiniciar MOV REG, 32780 P.ejem: 1. Víctima la del marco 1. 2. ¿escribir? Indicar que página 1: X 3. Cargar página 8 en marco 1. Indicar que página 8 en marco 1 1. Reiniciar MOV REG, 32780 Dirección física: 4108 25 Memoria Virtual (5). Paginación 26 Memoria Virtual (6). Tabla de páginas Tabla de páginas: marco = TP (página) • • Tamaño de la tabla Velocidad de traducción Pag. 0 Pag. 1 Pag. 2 Pag. 3 CPU dir. virtual Tabla de Páginas Marco 0 Marco 1 ... Marco 2 ... ... ... ... ... ... ... ... ... Marco m ... Pag. n Memoria Principal Espacio de Direcciones Virtuales 27 Memoria Virtual (7). Tabla de páginas Tamaño de la tabla: • • • Direcciones virtuales = 32 bits (232 = 4Gb) Si tamaño página = 4Kb (212) Número de páginas = 232/212 = 220 = 1Mg = nº de entradas TP • • • Dirección virtual = 64 bits (264) Si tamaño de página = 4Kb (212) Número de páginas = 264/212 = 252=222*230=222 G = 4,5 Peta entradas = 4,5 * 1015 entradas Cada proceso tiene su propia tabla de páginas. El nº de entrada * tamaño (bytes) de cada entrada. 28 Memoria Virtual (8). Tabla de páginas Tablas de página multinivel: - Evita mantener todas las tablas de página en memoria Stack Gap Datos 4 Mb (210*212=22*220) Texto 29 Memoria Virtual (9). Tabla de páginas dirección virtual: 0x00403004 (4206596, 0000 0000 0100 0000 0011 0000 0000 0100) PT1 = 0000 0000 01 (4M-8M) Solo cargadas 4 TP PT2 = 00 0000 0011 Offset = 0000 0000 0100 + dir. física 1023 3 2 1 0 nº marco 12288 4Mb (4194304)) 30 Memoria Virtual (10). Tabla de páginas Estructura de una entrada: 32 bits aprox. Número de marco en el que reside Presente/ausente: 1 está; 0 no está. Protección: 0 RW; 1 R o RWX Modificada (bit de ensuciado): 1 sucia; 0 limpia Referenciada: 0 cuando se carga; 1 cuando RW. Para sustitución Caching disabled: máquinas con E/S mapeada en memoria. No usar una copia vieja de la caché (de la página que contiene la memoria E/S) 31 Memoria Virtual (11). Tabla de páginas T4.13 Una computadora con direcciones de 32 bits utiliza una tabla de páginas de dos niveles. Las direcciones virtuales se dividen en un campo de 9 bits para la tabla de nivel superior y un campo de 11 bits para la tabla de nivel secundario; el resto es para el desplazamiento dentro de una página. ¿Cuál es el tamaño de la página? ¿Cuántas páginas existen en el espacio virtual de direccionamiento? 32 Memoria Virtual (12). TLB Tabla de páginas: Velocidad de traducción • • Una instrucción: 1, 2 o más referencias a memoria Cada referencia a memoria: consulta a la TP Soluciones: • Todas las entradas en registros • Muy caro (hw) • Mucho tiempo en cambio contexto • Toda la tabla en memoria (de todos los procesos) • Registro RBTP (Registro Base de la Tabla de Páginas) • Dir. Entrada = [RBTP] + (nº.pag * tamaño de la entrada) • Cambio de contexto: recargar RBTP • Mantener en memoria sólo la TP del proceso ejecutándose • ¿Otras soluciones? 33 Memoria Virtual (13). TLB Localidad referencial TLB (Translation Lookaside Buffers) (memoria asociativa) dentro de la MMU (La sección “Software TLB Management” no entra para el examen) 34 Memoria Virtual (14) T4.17 En un ordenador los procesos tienen un espacio de direccionamiento de 1024 páginas y mantienen en memoria su tabla de páginas. La sobrecarga por lectura de una palabra desde la tabla de páginas es de 5 ns. Para reducir esta sobrecarga, el ordenador tiene una TLB con 32 entradas (página virtual, num. marco) que tarda 1 ns en realizar una consulta. ¿Cuál debe ser la tasa de aciertos en dicha memoria asociativa para reducir la sobrecarga a 2 ns.? 35 Memoria Virtual (15) Tabla invertida de páginas Tabla de páginas: Velocidad de traducción (Proceso, página virtual) 36 Memoria Virtual (16). T4.21 Un ordenador con páginas de 8kB, memoria principal de 256MB y un espacio de direccionamiento virtual de 64GB, utiliza una tabla invertida de páginas para implementar su memoria virtual. ¿Cómo de grande debería ser la tabla hash para asegurar que por término medio la cadena hash tiene una longitud menor que 1? Suponga que el tamaño de la tabla hash es potencia de 2. 37 Memoria Virtual (17) T4.12 Una máquina tiene un espacio de direcciones de 32 bits y una página de 8k. la tabla de páginas está en hardware, con una palabra de 32 bits por cada entrada. Al iniciar un proceso, la tabla de páginas se copia al hardware desde la memoria, con una palabra cada 100ns. Si cada proceso se ejecuta durante 100ms (incluyendo el tiempo de carga de la tabla de páginas), ¿cuál es la fracción del tiempo de CPU que se dedica a la carga de las tablas de páginas? 38 Algoritmos de sustitución de páginas (1) Se produce una falta de página y no hay memoria libre: 1. 2. 3. 4. 5. Elegir victima Llevar victima a disco (si sucia) En TP: victima no presente Traer nueva página al marco donde estaba la víctima Actualizar TP: nueva está presente y marco y demás info ¿Cómo elegir la víctima? Algoritmos de sustitución de página Problemas similares: • Memoria caché • Caché de un servidor web 39 Algoritmos de sustitución de páginas (2) Objetivo de todos los algoritmos de sustitución: Elegir páginas que generen el menor número de faltas de página. En todos los algoritmos hay una constante: el nº de marcos existentes Algoritmo Óptimo de sustitución de páginas Quitar la página que tardará más tiempo en ser referenciada Imposible implementar 40 Algoritmos de sustitución de páginas (3) No utilizada recientemente (NRU: Not Recently Used) Basado en los bits R (referenciada) y M (modificada, ensuciado) Inicialmente todas las páginas (en TP) R=0 M=0 Cada interrupción de reloj, todas las páginas R=0 Clase 0: Clase 1: Clase 2: Clase 3: R M 0 0 0 1 1 0 1 1 no referenciada, no modificada no referenciada, modificada referenciada, no modificada referenciada, modificada Seleccionar una de la menor clase no vacía. ¿Por qué mejor eliminar de la clase 1 antes que de la clase 2? 41 Algoritmos de sustitución de páginas (4) FIFO (First-In First-Out) El SO mantiene una lista de todas las páginas en memoria La primera es la más vieja; la última, la más reciente • • 7 cab. cola Eliminar la primera de la lista Añadir la nueva a la cola de la lista 0 7 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 0 0 1 2 3 0 4 2 2 2 3 0 0 0 1 2 7 0 0 1 1 2 3 0 4 2 3 3 3 0 1 1 1 2 7 0 1 2 2 3 0 4 2 3 0 0 0 1 2 2 2 7 0 1 15 Faltas de Página Desventaja: la página más vieja puede que sea frecuentemente accedida 42 Algoritmos de sustitución de páginas (5) FIFO (Anomalía de Belady) Suposición: cuantos más marcos menos faltas de página, ¡¡ PERO !! 43 Algoritmos de sustitución de páginas (6) Segunda Oportunidad (Second Chance) Variante del FIFO para evitar sacar una página (vieja) muy utilizada Si es la más vieja y no ha sido referenciada (R=0), es la víctima Si es la más vieja y ha sido referenciada (R=1) entonces: - R=0 - poner al final de la cola (como si fuese la más nueva) - Mirar la siguiente página en la lista 44 Algoritmos de sustitución de páginas (7) Segunda oportunidad (Reloj) Segunda oportunidad mueve páginas al final de la lista: Si todas tienen R=1, las mueve todas (al final es FIFO) Mejora mantener una lista circular (en forma de reloj) 45 Algoritmos de sustitución de páginas (8) Menos recientemente utilizada (LRU: Least Recently Used) Supone que las páginas utilizadas recientemente, se utilizarán de nuevo Víctima: la página que lleva más tiempo sin ser referenciada Hay que mantener una lista de todas las páginas en memoria Cabeza: más recientemente utilizada Cola: menos recientemente utilizada Problemas: • ¡¡actualizar la lista en cada referencia a memoria!! • Sobrecarga en buscar una página, eliminarla, moverla a la cabeza Implementaciones – Por hardware – Por software 46 Algoritmos de sustitución de páginas (9) Menos recientemente utilizada (LRU) Hardware (1): Contador por cada entrada en la TP En HW hay un contador C especial C se incrementa después de ejecutar cada instrucción Después de cada referencia a memoria, se almacena C en la entrada correspondiente Se elige como victima la que tenga el contador más pequeño Problemas eficiencia: - Almacenar el contador en cada referencia a memoria Buscar en la TP el contador más pequeño Hardware (2): matriz NxN (N = nº marcos que existen) Se referencia el marco k: 1. Fila k a 1’s 2. Columna k a 0`s La fila con menor valor binario es la menos recientemente utilizada 47 Algoritmos de sustitución de páginas (10) Menos recientemente utilizada (LRU) 0 1 2 3 1 0 3 2 2 3 48 Algoritmos de sustitución de páginas (11) Menos recientemente utilizada (LRU) Software (1): Mantener una pila con las páginas en memoria Cuando se referencia una página, a la cima La página del fondo de la pila es la menos recientemente usada Problemas eficiencia: actualizar la pila en cada referencia a memoria 7 0 7 cima 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 0 1 2 2 3 0 4 2 2 0 3 3 1 2 0 1 7 0 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 12 Faltas de Página. Con FIFO 15 49 Algoritmos de sustitución de páginas (12) Menos recientemente utilizada (LRU) Software (2): aging Cada página con un contador inicialmente a 0 Cada interrupción de reloj mirar el contador de cada página - - Desplazar un bit a la derecha cada contador Sumar a la izquierda el bit R La víctima es la página con menor contador Problemas: - No se distingue qué página fue la última referenciada en un mismo intervalo de reloj Los contadores tienen un número finito de bits 50 Algoritmos de sustitución de páginas (13) Menos recientemente utilizada (LRU) Software (2): aging 51 Algoritmos de sustitución de páginas (14) Resumen de los algoritmos de sustitución Optimo: No implementable No utilizada recientemente: fácil implementar, pero los hay mejores FIFO: puede expulsar páginas importantes Segunda oportunidad: mejora sobre FIFO Segunda oportunidad (reloj): más eficiente que el anterior LRU: excelente, pero difícil de implementar Aging: buena aproximación a LRU (Las secciones 4.4.8 y 4.4.9 no entra para el examen) 52 Algoritmos de sustitución de páginas (15) T4.29 Un ordenador tiene cuatro marcos de página. El tiempo de carga, el tiempo del último acceso y los bits R y M para cada página son los que aparecen a continuación. Página 0 1 2 3 (a) (b) (c) (d) cargada 126 230 120 160 última referencia 280 265 270 285 R 1 0 0 1 M 0 0 0 1 ¿Qué pagina es reemplazada por NRU? ¿Qué pagina es reemplazada por FIFO? ¿Qué pagina es reemplazada por LRU? ¿Qué pagina es reemplazada por segunda oportunidad? 53 Cuestiones de diseño en sistemas paginados (1) Conjunto de Trabajo y Trasiego Los programas exhiben localidad en sus referencias Conjunto de Trabajo: El conjunto de páginas que actualmente está usando un proceso Trasiego (Thrashing) Un proceso causa faltas de página cada pocas instrucciones Solución: mantener en memoria el conjunto de trabajo Problema: ¿Qué páginas forman el conjunto de trabajo? W (k,t): tamaño del conjunto de trabajo - en el instante t - tomando las k últimas referencias 54 Cuestiones de diseño en sistemas paginados (2) Conjunto de Trabajo y Trasiego k Debe determinarse el valor de k para obtener w(k,t) W(k,t) indica el conjunto de marcos que necesita un proceso en t 55 Cuestiones de diseño en sistemas paginados (3) Política de asignación local vs. global Local: asignación de memoria constante Global: asignación de memoria variable 56 Cuestiones de diseño en sistemas paginados (4) Política de asignación local vs. global La global da mejores resultados si cambia el tamaño conjunto de trabajo ¿Cuánta memoria se asigna a cada proceso? Algoritmo PFF (Page Fault Frequency) indica cuándo incrementar/decrementar el tamaño del conjunto de trabajo no indica qué página reemplazar frente a una falta de página 57 Cuestiones de diseño en sistemas paginados (5) Control de carga • A pesar de todo, el sistema puede entrar en trasiego • PPF indica – Algún proceso necesita más memoria – Pero no que un proceso necesita menos • Solución : Reducir el número de procesos que compiten por memoria – Sacar uno o más a disco y repartir sus páginas – Reconsiderar el grado de multiprogramación 58 Cuestiones de diseño en sistemas paginados (6) Tamaño de la página Deben considerarse varios factores en competencia. No existe ningún óptimo global Si el tamaño de un programa no llena un número exacto de páginas Programa: 26.000 bytes Tamaño de página: 4.096 bytes ¡ Queda espacio sin utilizar en la última de ellas Necesita 7 páginas Ocupa 6 páginas completas: 6x4.096 = 24.576 De la última página ocupa: 26.000-24.576 = 1.424 Desaprovecha: ! 4.096-1.424 = 2.672 Fragmentación Interna Para un tamaño de página t, por término medio, se desaprovecha t/2 por programa Interesan páginas pequeñas 59 Cuestiones de diseño en sistemas paginados (7) Tamaño de la página PERO Páginas pequeñas Muchas páginas Tabla de Páginas grande Hw. más caro, máquina más cara Más tiempo de transferencia desde memoria secundaria 60 Cuestiones de diseño en sistemas paginados (8) Tamaño de la página Si solo consideramos la fragmentación interna y la tabla de páginas: s, tamaño del programa (bytes) p, tamaño de la página (bytes) e, tamaño de cada entrada a la TP (bytes) Desperdicio = se/p + p/2 Primera derivada con respecto a p e igualando a 0: -se/p2 + ½ = 0; p 2se s = 1Mb, p = 4kb e = 8 bytes (Las secciones 4.6.4, 4.6.5, 4.6.6 y 4.6.7 no entra para el examen) 61 Cuestiones de diseño en sistemas paginados (9) T4.31 Un ordenador proporciona a cada proceso 65536 bytes de espacio virtual De direccionamiento, dividido en páginas de 4KB. Un programa particular tiene un segmento de texto de tamaño 32768 bytes, un tamaño de datos de 16386 bytes y un tamaño de pila de 15870 bytes ¿Cabe este programa en el espacio de direccionamiento? Si el tamaño de la página fuese de 512 bytes ¿cabría? Recuerde que una página no debe contener partes de dos segmentos distintos. 62