4.1. Gestión de la memoria

Sistemas Opera,vos Tema 4. Memoria © 1998-2015 José Miguel Santos – Alexis Quesada – Francisco Santana –
Belén Esteban
Contenidos n 
n 
n 
n 
Conceptos básicos Ges.ón de memoria con.gua Segmentación Paginación 2
Ges,ón de la memoria Antecedentes n 
n 
n 
La memoria 9sica es un conjunto de celdas referenciables por medio de una dirección lineal (p.ej. de la 00000h a la FFFFFh) Para que un programa se ejecute, su código y sus datos necesitan estar cargados en memoria (al menos en parte) En un sistema mul.tarea, la memoria ha de repar.rse entre los diferentes procesos 3
Ges,ón de la memoria Antecedentes (2) n 
n 
Las ru.nas del sistema opera.vo también deberán residir en memoria, en todo o en parte Puede ser que la memoria principal no tenga capacidad suficiente para todos los procesos que quieren ejecutarse 4
Ges,ón de la memoria: obje,vos n 
Rendimiento: q 
q 
q 
n 
Aprovechar al máximo la memoria disponible Conseguir tener cargados en memoria varios procesos… y que el sistema no se venga abajo Que un programa no necesite estar totalmente cargado en memoria para poder ejecutarse à apoyarse en la memoria secundaria, si es preciso Protección y compar,ción: q 
q 
q 
Proteger al SO de accesos indebidos Proteger el espacio de memoria de cada proceso Permi.r que varios procesos puedan compar.r zonas de memoria (para comunicación, o para reu.lizar código o datos) 5
Ges,ón de la memoria: cues,ones crí,cas n 
n 
n 
Reubicación: facilitar que un programa pueda residir en cualquier zona de la memoria 9sica. Fragmentación: ojo a los huecos que van quedando a medida que se asignan y liberan zonas de memoria. Tiempo de acceso: ojo al impacto de los mecanismos de ges.ón en el .empo neto de acceso a memoria. 6
Ciclo de vida de un programa programa fuente modulo.o mistring.o mistring.o otros objetos y bibliotecas libm.soo pthread.so libc.so bibliotecas dinámicas compilador módulo objeto compilación
enlazador programa ejecutable cargador carga
programa y datos binarios en memoria ejecución
HARDWARE 7
Espacios de direcciones Fichero fuente
(hola.c)
#include<stdio.h> main() { int cont; ... cont++ ... } Fichero ejecutable
(hola)
cabecera
Memoria lógica del
proceso
Memoria física
código
código
datos
inicializados
datos
inicializados
Otros datos
código
datos
inicializados
Otros datos
Proceso
heap
pila
heap
pila
Espacio de direcciones
simbólicas
Espacio de direcciones numéricas
8
Conversión de direcciones: reubicación n 
n 
n 
El compilador traduce direcciones de memoria simbólicas a direcciones binarias. Si las direcciones binarias son absolutas, el programa sólo se puede ejecutar en una zona fija de la memoria: no es reubicable. Esto es una grave limitación. 9
Conversión de direcciones: reubicación (2) n 
n 
Nos interesa que el compilador no genere direcciones defini.vas, sino direcciones provisionales, reubicables. Cuando se sepa dónde van a residir el código y los datos, se conver.rán a direcciones absolutas. ¿ En qué momento (etapa) se realiza esta reubicación ? q 
q 
Carga (enlazador o cargador) à Reubicación está.ca Ejecución (hardware) à Reubicación dinámica 10
Reubicación dinámica: ejemplo mínimo (registro base) CPU
dir. lógica
1234
+
80000
registro base
MMU
dir. física
81234
memoria
11
Reubicación dinámica: direcciones lógicas/direcciones Lsicas n 
n 
n 
Dirección lógica o virtual: la generada por la CPU. Dirección Lsica: la que llega al chip de memoria. Unidad de manejo de memoria (MMU): el disposi.vo que traduce direcciones lógicas a 9sicas. 12
Enlace dinámico / carga dinámica n 
Postergar la carga en memoria de un módulo de código hasta que se ejecute por primera vez. q 
q 
n 
n 
n 
Windows: DLL (dynamic link libraries) Unix: shared libraries La DLL se carga en memoria cuando algún proceso llama a una de sus ru.nas. Las llamadas a sus funciones se efectúan a través de una tabla de punteros. Código compar.do à si varios procesos emplean la biblioteca dinámica, sólo se man.ene una copia de ella en memoria. El SO revisa las DLL que están en memoria pero que nadie referencia. 13
Intercambio (swapping) n 
n 
n 
Si un proceso lleva mucho .empo bloqueado, su espacio de memoria está desperdiciado. Idea: se vuelca su imagen de la memoria al disco (swap out). Ese espacio queda disponible para otros. Cuando se decide reanudar el proceso, se recupera su imagen del disco (swap in). sistema operativo
P1
memoria
para usuarios
P2
14
Intercambio (swapping) (2) n 
Historia: fue una forma de conseguir mul.programación cuando había muy poca RAM q 
n 
n 
Caso extremo: sólo un proceso en memoria; en cada cambio de contexto se realiza un intercambio con disco. Problema: .empo inver.do en el intercambio Soluciones: q 
q 
Mientras se intercambia un proceso, otros procesos pueden seguir ejecutándose en otras zonas de memoria. Usar varias áreas de intercambio en diferentes disposi.vos 9sicos (se pueden hacer varias transferencias simultáneas). 15
Par,ciones múl,ples (años 50/60) n 
n 
par,ciones de tamaño fijo (MFT) – preestablecidas en el arranque del SO par,ciones de tamaño variable (MVT) – evolución del MFT -­‐ lista dinámica de huecos libres MFT
MVT
Memoria física
Memoria física
Memoria física
SO
SO
SO
Partición 1
Partición 2
Partición 3
Partición 4
Partición 1
Partición 2
Partición 3
Partición 4
16
Memoria con,gua: protección n 
Pareja de registros base y límite 5000
80000
límite
CPU
dir. lógica
1234
<
sí
base
+
dir. física
81234
memoria
no
excepción
MMU
17
Memoria con,gua: estructuras de datos n 
n 
n 
Tabla de descripción de par.ciones (TDP) – indica qué proceso posee cada par.ción El S.O. ges.onará una lista de huecos libres en memoria y seleccionará qué procesos pueden cargarse en memoria para ejecutarse Primi.vas internas de pedir y liberar memoria 18
Polí,cas de asignación de memoria n 
n 
n 
Disponemos de un conjunto de huecos libres Cada hueco tendrá un tamaño variable ¿Qué hueco damos ante una pe.ción? q 
q 
q 
q 
n 
Primer hueco (first-­‐fit) – recorremos la lista y damos el primer hueco mayor o igual que lo solicitado Siguiente hueco (next-­‐fit) – igual que first-­‐fit, pero se busca a par.r de donde se encontró el úl.mo hueco libre Mejor hueco (best-­‐fit) – buscamos el hueco que deje menor resto libre Peor hueco (worst-­‐fit) – siempre usamos el hueco más grande las polí.cas de “primer hueco” y “mejor hueco” son similares en rendimiento; y mejores que la de “peor hueco” y “siguiente hueco” 19
Fragmentación externa / compactación n 
n 
n 
n 
n 
A medida que se van asignando y liberando huecos, van quedando zonas pequeñas que no sirven para nada. Posible solución à compactación Sólo es viable si se usa reubicación dinámica (cambian los espacios 9sicos de los procesos) La compactación puede consumir mucho .empo Otra estrategia: permi.r que el programa se divida en “trozos” à memoria no con,gua q 
Segmentación / paginación 20
Segmentación n 
n 
n 
Idea: descomponer el proceso en varios segmentos de memoria (código, datos, pila...) Con el hardware adecuado, podemos ubicar esos segmentos en zonas de memoria no con.guas. Podemos reducir bastante la fragmentación T.seg.
S1
S3
S2
21
Segmentación n 
n 
n 
n 
La CPU trabaja con direcciones de memoria de dos piezas: <segmento,desplazamiento> El compilador iden.fica segmentos del programa y genera direcciones segmentadas El cargador del SO ubica cada segmento en una zona de memoria diferente La MMU traduce las direcciones <seg,desplz> a direcciones lineales que en.ende la RAM q 
Tabla de segmentos (una tabla de registros base
+límite) 22
Hardware de segmentación Tabla de segmentos
(S)
límite
S
base
D
dir. lógica
dir. física
sí
<
+
D
no
Excepción:
dirección ilegal
23
Segmentación: beneficios n 
n 
Atenúa el problema de la fragmentación Permite compar.r zonas de memoria q 
n 
ej. una DLL compar.da como un segmento en las tablas de varios procesos Los segmentos pueden tener protección por hardware: q 
q 
ej. segmentos de sólo lectura ej. sólo permi.r ejecución de instrucciones en segmentos que estén marcados como “de código” 24
Segmentación: inconvenientes n 
n 
n 
n 
n 
El compilador/enlazador debe trabajar con un espacio lógico de dos dimensiones (segmentos + desplazamientos) Necesita soporte del hardware El acceso a memoria se hace mucho más lento (hay que acceder a la tabla de segmentos) No soluciona del todo la fragmentación Su eficacia depende mucho de cómo el compilador haya troceado el proceso en segmentos 25
PAGINACIÓN 26
Paginación n 
n 
n 
n 
n 
Técnica que erradica defini.vamente la fragmentación externa. La idea: Trocear el programa en páginas de tamaño fijo (ej. 4KiB). Un programa puede residir en varias páginas no con.guas en la memoria. Las páginas disponibles en memoria se llaman marcos de página (page frames). Toda dirección lógica se descompone en dos partes: número de página y desplazamiento. La MMU se encarga de asociar cada número de página lógico con el marco de página 9sico. Para ello emplea una tabla de páginas. 27
Paginación: ejemplo 28
Paginación: ges,ón del espacio libre n 
n 
La ges.ón del espacio libre consiste simplemente en saber qué marcos están libres El SO posee una tabla de marcos de páginas (TMP) à la podemos implementar con un mapa de bits 29
Paginación: marcos libres 30
Paginación: ejemplo de traducción n 
Direcciones lógicas de 16 bits, páginas de 4KiB 16-12=4bits
Desplazamiento
dentro de la
página
Número de página
0010
000000000100
4k=212
12 bits
Dirección lógica:(8196)
Tabla de Páginas
Marco
1010
0011
0110
Marco de página
0110
000000000100
Dirección física: (24580)
31
Hardware de paginación Tabla de páginas
(P)
CPU
P
dir. lógica
D
F
F
D
Memoria
física
dir. física
32
Hardware de paginación primi,vo n 
Conjunto de registros dedicados q 
Ejemplo: Computador DEC PDP-­‐11 n 
la dirección consiste en 16 bits y el tamaño de página es de 8k) 16 bits
Dirección
n 
3 bits
13 bits
La tabla de páginas consta por tanto de ocho entradas que se man.enen en registros rápidos 33
Tabla de páginas en memoria n 
En los sistemas actuales, la TP se guarda en memoria principal. q 
q 
n 
n 
n 
Registro base de la tabla de páginas (RBTP) Registro de longitud de la tabla de páginas (RLTP) Esto permite TP grandes (ej. un proceso de 20MB con páginas de 1K .ene una TP de 20K entradas). Un registro de la CPU apunta a la TP. Problema: ¡resolver un acceso de memoria lógica necesita DOS accesos a la memoria principal! (uno a la TP, otro a la dirección solicitada). 34
TLB (Transla,on Lookaside Buffer) n 
Para qué: q 
q 
n 
Acelera el .empo de traducción Evita accesos a la TP Qué es: q 
q 
q 
Pequeña caché dentro del procesador Con.ene unas pocas entradas de la TP Tiempo de acceso muy rápido (igual que acceder a un registro de la CPU) 35
TLB: esquema general 36
TLB: cómo funciona n 
n 
n 
n 
Con.ene un conjunto de parejas <página lógica, marco 7sico> Cuando se quiere resolver una dirección y la página lógica es P, se busca P en todas las entradas de la TLB, simultáneamente. Si P se encuentra en la TLB, se ob.ene el marco M de la página P y no hace falta acceder a la TP (acierto de TLB). Si no se encuentra (fallo de TLB), se accede a la TP y se actualiza la TLB con la info de P+marco. 37
TLB: situaciones especiales n 
n 
Fallo de TLB + TLB llena à hay que reemplazar una de las actuales entradas… ¿cuál de ellas? à la más vieja, la menos usada, al azar… Cambio de contexto à hay que vaciar la TLB, o cargarla con el contenido que tenía el proceso que entra en CPU. 38
TLB: tasa de aciertos n 
Tasa de aciertos q 
q 
q 
n 
porcentaje de las veces que un número de página se encuentra en los registros asocia.vos pueden obtenerse tasas de aciertos entre 80 y 98%. Tiempo efec,vo de acceso a memoria. Si la tasa de aciertos es alta, el impacto en el .empo de acceso es mínimo (ver discusión y cálculos en el libro). Ejemplos q 
q 
Motorola 68030 à TLB de 22 entradas Intel 80486 à TLB de 32 entradas 39
Tamaño de la página: ¿pequeñas o grandes? n 
Pequeño q 
q 
n 
mejora fragmentación interna Aumenta el tamaño de la tabla de página Grande q 
q 
Peor desde el punto de vista de la fragmentación interna Tamaño de las tablas de páginas menor 40
Paginación: protección n 
n 
Las páginas pueden tener asignados bits de protección (ej. lectura, escritura, ejecución). También hay que protegerse de accesos fuera de límites del espacio lógico. Posibles medidas: q 
q 
q 
Registro de longitud de la tabla de páginas (RLTP) Tabla de páginas inver.da (sólo figuran las páginas válidas, ver más adelante) Bit de validez (entradas marcadas como no válidas) 41
Compar,ción de páginas 42
Tamaño de la tabla de páginas n 
n 
n 
En una arquitectura de direcciones de 32 bits, con páginas de 4KiB, la tabla de páginas de un proceso podría llegar a ocupar 4 megas. ¡Más grave con 48 o 64 bits! Solución “mala”: aumentar el tamaño de página à aumenta la fragmentación interna Soluciones “buenas”: q 
q 
q 
Paginación jerárquica Tabla de páginas inver.da Tabla hash de páginas 43
Paginación jerárquica n 
Paginar la tabla de páginas, con varios niveles jerárquicos (ej. 80386). 44
Paginación jerárquica: Intel x86 OJO: ¡tres accesos a memoria! La TLB se hace más
necesaria
45
Intel: arquitectura de 64 bits n 
n 
n 
Tamaños de páginas de 4K, 2M, 1G (configurable dinámicamente) Hasta cuatro niveles de jerarquía Actualmente, los chips sólo soportan 48 bits page map
page directory
page
page
unused
offset
level 4
pointer table
table
directory
63
48 47
39 38
30 29
21 20
12 11
0
46
Tabla de páginas inver,da n 
n 
n 
n 
Tiene una entrada por cada marco real de la memoria. Cada entrada consiste en la página virtual almacenada en dicho marco y el proceso al que pertenece. Por tanto, sólo hay una tabla de páginas en el sistema que con.ene una entrada por cada marco de página. Grandísimo ahorro en el espacio consumido por las TP. 47
Tabla de páginas inver,da 48
Tabla de páginas inver,da n 
n 
Ventaja: reduce la can.dad de memoria necesaria para la TP Desventaja: aumenta muchísimo el .empo de acceso a la TP q 
q 
Confiamos en los aciertos de la TLB O bien implementamos la tabla inversa como una tabla de índices hash 49
Híbrido segmentado/paginado n 
n 
La paginación y la segmentación pueden combinarse (ej. MULTICS, x86). Mo.vación: aprovecharse de las ventajas que ofrecen los esquemas por separado q 
q 
Segmentación: flexibilidad y facilidad para la organización lógica, compar.ción, protección… Paginación: solución eficiente para la fragmentación 50
Híbrido segmentado/paginado: Intel x86 51
Tamaños de páginas variables n 
Ejemplo: x86 52
Sistemas Opera,vos Tema 4. Memoria Fin del primer bloque © 1998-2015 José Miguel Santos – Alexis Quesada – Francisco Santana –
Belén Esteban