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 .

de procesos en memoria 7 .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º.

ganancia: 12% (La sección 4.Utilización de la CPU = 1 – pn . CPU = 60% Si compramos 16Mb => n = 8.Los procesos no son independientes: 1 sola CPU-> los otros en preparados (esperando).8.1.n: grado de multiprogramación . Ejemplo: 32Mb memoria. ganancia: 38% Si compramos otros 16Mb CPU=93%. Aproximación válida. si p=0. si p=0.p: fracción de tiempo que un proceso está esperando una I/O .Los procesos son independientes . el SO ocupa 16Mb cada proceso de usuario 4Mb => n = 4.8.Gestión básica de memoria (5) Modelo de multiprogramación .4 no entra para el examen) 8 . CPU = 83%.

. 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. dinámica Las direcciones de un programa suelen ser relativas a su dirección de comienzo.Gestión básica de memoria (6) Reubicación y protección Reubicación: ¿dónde reside un programa? estática. Virtual Registro de Reubicación Ra = 2854 Rb = 4418 Rc = 512 + Dirección Real 5166 0 4418 747 4200 0 B A 2854 2341 0 C Espacio Virtual B 512 C 0 Espacio Real 9 . PERO .. al montar un programa no se sabe dónde se va a ejecutar.

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 ! 1 .

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) 1 .

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 1 .

Si tarda 0.Intercambio (swapping) (3) P. T4.7 s.5 microseg en copiar un byte y el tamaño medio de los huecos es de 0.ejem: 4 bytes: 40ns.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? 1 .4 (1ed) Ciertos sistemas con intercambio eliminan la fragmentación externa mediante compactación. 256Mb: 2. Suponga que una computadora con 1Mb de memoria para usuario hace una compactación cada segundo.

O. Para crecimiento Para crecimiento Datos de A En uso Código de A (b) S. 1 . O.Intercambio (swapping) (4) ¿Puede crecer dinámicamente la memoria de un proceso? Pila de B Para crecimiento B Datos de B En uso Código de B Pila de A Para crecimiento A (a) S.

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. 1 .

Intercambio (swapping) (6) Gestión de memoria con listas enlazadas 1 .

¿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? 1 . cada uno de 64kb. La memoria es de 128 Mb y la unidad de asignación es de n bytes.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.Intercambio (swapping) (7) Gestión de memoria con listas enlazadas T4. Para El caso de la lista enlazada. suponer que la memoria consiste de una secuencia alternada de segmentos y huecos. una longitud de 16 bits y un campo (siguiente nodo) de 16 bits. También suponer que cada nodo en la lista necesita una dirección de memoria de 32 bits.

Intercambio (swapping) (8) Gestión de memoria con listas enlazadas Lista de Bloques Libres (ordenados por dirección: liberación) 1 .

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 1 .

liberación: compactación • Cada nodo de la lista puede ser el propio bloque 2 . …) • asignación rápida. 4k.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.

18 12. 9 2 . 9 20. 15 20. 7kb. 4kb. 18. 9kb.Intercambio (swapping) (11) T4. 18. 20kb. 10. 10.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. 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. 18kb.

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
2

Memoria Virtual (2). Paginación

Posición y función de la MMU
2

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 ?

2

Reiniciar MOV REG.Memoria Virtual (4). 2. 3.ejem: 1. 32780 Dirección física: 4108 2 . Cargar página 8 en marco 1. 2. Reiniciar MOV REG. Indicar que página 8 en marco 1 1. Víctima la del marco 1. 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. 4. Elegir víctima Escribir a disco (si hace falta) Cargar la nueva página. 32780 P. ¿escribir? Indicar que página 1: X 3.

Paginación 2 .Memoria Virtual (5).

. . 1 Pag. n Memoria Principal Espacio de Direcciones Virtuales 2 . Marco m . dir ica fís Marco 2 ... . Tabla de páginas Tabla de páginas: marco = TP (página) • • Tamaño de la tabla Velocidad de traducción Pag. ... ....... ....Memoria Virtual (6). 2 Pag. virtual Tabla de Páginas Marco 0 Marco 1 ... Pag.. 3 CPU dir.. .. 0 Pag. .... . .

5 * 1015 entradas Cada proceso tiene su propia tabla de páginas.5 Peta entradas = 4. 2 . 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.Memoria Virtual (7). El nº de entrada * tamaño (bytes) de cada entrada.

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 2 .

física 1023 3 2 1 0 nº marco 12288 4Mb (4194304)) 3 . 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.Memoria Virtual (9).

Protección: 0 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) 3 . Tabla de páginas Estructura de una entrada: 32 bits aprox.Memoria Virtual (10). 1 R o RWX Modificada (bit de ensuciado): 1 sucia. Número de marco en el que reside Presente/ausente: 1 está. 0 no está. 0 limpia Referenciada: 0 cuando se carga. 1 cuando RW.

13 Una computadora con direcciones de 32 bits utiliza una tabla de páginas de dos niveles.Memoria Virtual (11). ¿Cuál es el tamaño de la página? ¿Cuántas páginas existen en el espacio virtual de direccionamiento? 3 . 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. Tabla de páginas T4. el resto es para el desplazamiento dentro de una página.

TLB Tabla de páginas: Velocidad de traducción • • Una instrucción: 1. Entrada = [RBTP] + (nº. 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.Memoria Virtual (12).pag * tamaño de la entrada) • Cambio de contexto: recargar RBTP • Mantener en memoria sólo la TP del proceso ejecutándose • ¿Otras soluciones? 3 .

TLB Localidad referencial TLB (Translation Lookaside Buffers) (memoria asociativa) dentro de la MMU (La sección “Software TLB Management” no entra para el examen) 3 .Memoria Virtual (13).

el ordenador tiene una TLB con 32 entradas (página virtual. marco) que tarda 1 ns en realizar una consulta.? 3 . num. Para reducir esta sobrecarga.Memoria Virtual (14) T4. ¿Cuál debe ser la tasa de aciertos en dicha memoria asociativa para reducir la sobrecarga a 2 ns. La sobrecarga por lectura de una palabra desde la tabla de páginas es de 5 ns.17 En un ordenador los procesos tienen un espacio de direccionamiento de 1024 páginas y mantienen en memoria su tabla de páginas.

Memoria Virtual (15) Tabla invertida de páginas Tabla de páginas: Velocidad de traducción (Proceso. página virtual) 3 .

Memoria Virtual (16). 3 . utiliza una tabla invertida de páginas para implementar su memoria virtual. memoria principal de 256MB y un espacio de direccionamiento virtual de 64GB. T4. ¿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.21 Un ordenador con páginas de 8kB.

Al iniciar un proceso.Memoria Virtual (17) T4. la tabla de páginas se copia al hardware desde la memoria. con una palabra cada 100ns. ¿cuál es la fracción del tiempo de CPU que se dedica a la carga de las tablas de páginas? 3 . Si cada proceso se ejecuta durante 100ms (incluyendo el tiempo de carga de la tabla de páginas). la tabla de páginas está en hardware. con una palabra de 32 bits por cada entrada.12 Una máquina tiene un espacio de direcciones de 32 bits y una página de 8k.

Algoritmos de sustitución de páginas (1) Se produce una falta de página y no hay memoria libre: 1. 4. 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 3 . 2. 5. 3.

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 4 .

ensuciado) Inicialmente todas las páginas (en TP) R=0 M=0 Cada interrupción de reloj.Algoritmos de sustitución de páginas (3) No utilizada recientemente (NRU: Not Recently Used) Basado en los bits R (referenciada) y M (modificada. 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 referenciada. ¿Por qué mejor eliminar de la clase 1 antes que de la clase 2? 4 . modificada referenciada. no modificada no referenciada. modificada Seleccionar una de la menor clase no vacía.

cola 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 4 . la última.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 más reciente Eliminar la primera de la lista Añadir la nueva a la cola de la lista • • 7 cab.

¡¡ PERO !! 4 .Algoritmos de sustitución de páginas (5) FIFO (Anomalía de Belady) Suposición: cuantos más marcos menos faltas de página.

R=0 . es la víctima Si es la más vieja y ha sido referenciada (R=1) entonces: .poner al final de la cola (como si fuese la más nueva) .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).Mirar la siguiente página en la lista 4 .

las mueve todas (al final es FIFO) Mejora mantener una lista circular (en forma de reloj) 4 .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.

eliminarla.Algoritmos de sustitución de páginas (8) Menos recientemente utilizada (LRU: Least Recently Used) Supone que las páginas utilizadas recientemente. moverla a la cabeza Implementaciones – Por hardware – Por software 4 . 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.

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. Columna k a 0`s La fila con menor valor binario es la menos recientemente utilizada 4 .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. Fila k a 1’s 2.

Algoritmos de sustitución de páginas (10) Menos recientemente utilizada (LRU) 0 1 2 3 1 0 3 2 2 3 4 .

Con FIFO 15 4 .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.

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 5 .

Algoritmos de sustitución de páginas (13) Menos recientemente utilizada (LRU) Software (2): aging 5 .

8 y 4.4.4. 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.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 difícil de implementar Aging: buena aproximación a LRU (Las secciones 4.9 no entra para el examen) 5 .

29 Un ordenador tiene cuatro marcos de página. el tiempo del último acceso y los bits R y M para cada página son los que aparecen a continuación. El tiempo de carga.Algoritmos de sustitución de páginas (15) T4. 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? 5 .

tomando las k últimas referencias 5 .en el instante t .t): tamaño del conjunto de trabajo .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.

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 5 .

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 5 .

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 5 .

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 5 .

424 = 2.096 = 24.576 De la última página ocupa: 26.096-1.424 Desaprovecha: ! 4. No existe ningún óptimo global Si el tamaño de un programa no llena un número exacto de páginas Programa: 26.576 = 1.Cuestiones de diseño en sistemas paginados (6) Tamaño de la página Deben considerarse varios factores en competencia. por término medio.096 bytes ¡ Queda espacio sin utilizar en la última de ellas Necesita 7 páginas Ocupa 6 páginas completas: 6x4.672 Fragmentación Interna Para un tamaño de página t.000 bytes Tamaño de página: 4.000-24. se desaprovecha t/2 por programa Interesan páginas pequeñas 5 .

máquina más cara Más tiempo de transferencia desde memoria secundaria 6 .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.

7 no entra para el examen) 6 . 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.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. 4.6 y 4.6.6.6.4.6. 4. p  2se s = 1Mb. tamaño del programa (bytes) p.5. p = 4kb e = 8 bytes (Las secciones 4.

6 .31 Un ordenador proporciona a cada proceso 65536 bytes de espacio virtual De direccionamiento.Cuestiones de diseño en sistemas paginados (9) T4. 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. dividido en páginas de 4KB. Un programa particular tiene un segmento de texto de tamaño 32768 bytes.