Memoria contigua Segmentación Paginación
Administración de memoria: Asignación dememoria
Gunnar Wolf
Facultad de Ingeniería, UNAM
2013-04-03 — 2013-04-08
Memoria contigua Segmentación Paginación
Índice
1 Memoria contigua
2 Segmentación
3 Paginación
Memoria contigua Segmentación Paginación
Compartiendo la memoria desde. . .
Como en tantos otros temas, comencemos viendo cómocompartían la memoria los primeros sistemasmultiprocesadosLas primeras implementaciones siempre son las mássencillas
. . . y las más ingenuas¿Cómo eran estos primeros sistemas?
Poca memoriaSin MMUNo interactivos
Memoria contigua Segmentación Paginación
Particiones fijas
Primer acercamiento: Partir la memoria en varios bloquesOriginalmente del mismo tamaño (¡más sencillo!)Por ejemplo: En 512KB de memoria física caben elsistema operativo mas otros 7 programas de 64KB (16bits) cada uno
El sistema operativo típicamente usa la región más baja,a partir de 0x0000
La memoria mapeada a los diversos dispositivos quedadentro del segmento del SO
Memoria contigua Segmentación Paginación
Particiones fijas
512K +——————–+ 0x80000
Cuadro: Particiones fijas, con 3 particiones libres
cPNK Libre
448K +——————–+ 0x70000
Proceso 5 cF0F
384K +——————–+ 0x60000
Proceso 3 cRED
320K +——————–+ 0x50000
cPNK Libre
256K +——————–+ 0x40000
cPNK Libre
192K +——————–+ 0x30000
Proceso 2 cYEL
128K +——————–+ 0x20000
Proceso 1 cGRE
64K +——————–+ 0x10000
SistemacBLUOperativo
0 +——————–+ 0x00000
Memoria contigua Segmentación Paginación
Particiones fijas: Ventajas y desventajas
¿Ventajas? Principalmente, simplicidadResolución de direcciones en tiempo de cargaRegistro base (no requiere siquiera de un registro límite)Puede limitarse simplemente con un espacio dedireccionamiento acorde en el compilador
¿Desventajas? RigidezGrado de multiprocesamiento limitado
Si hay menos de 7 procesos, se desperdician recursosSi hay más de 7, tienen que esperar a que se les abraespacio
Desperdicio de espacio (fragmentación interna)Al asignarse la memoria en bloques fijos, un procesopequeño podría desperdiciar mucho espacio
Memoria contigua Segmentación Paginación
Particiones flexibles
Cada proceso declara sus requisitos de memoria al iniciarsu ejecución
Debe indicar su uso máximo previsto de memoriaHay mecanismos para ajustar el tamaño de un procesopreexistente — ¡Pero pueden fallar! (p.ej. si faltamemoria para satisfacer una solicitud)
El OS tiene acceso directo a toda la memoria como uncontínuoCada región en memoria está limitada (ahora sí) por unregistro base y un registro límite
Memoria contigua Segmentación Paginación
Particiones flexibles
1024K +——————-+ 0x100000
Cuadro: Espacio de direcciones válidas para el proceso 3 definidopor un registro base y un registro límite
Espacio cPNKLibre
556K +——————-+<-0x08b000<–569749 (base+límite)
Proceso 3 cGRE +0x010000 +65536 (límite)
492K +——————-+<-0x07b000<–504214 (base)
Proceso 2
256K +——————-+ 0x040000
Proceso 1
128K +——————-+ 0x020000Sistema OperativocBLU
0 +——————-+ 0x000000
Memoria contigua Segmentación Paginación
Particiones flexibles: Ventajas y desventajas
¿Ventajas? Sigue siendo: SimplicidadCuando inicia la ejecución del sistema, este esquemaparece idealSobrecarga mínima, con un MMU muy básicoCada proceso puede direccionar el total de memoriadisponible
¿Desventajas? Vienen con el tiempo. . .Conforme van iniciando y terminando los procesos, sevan creando agujeros en la asignación de memoriaSegún análisis estadístico (Silberschatz, p.289), por cadaN bloques asignados se pierden del órden de 0,5N porfragmentación
Memoria contigua Segmentación Paginación
Fragmentación en la memoria
1024K +——————-+ 0x100000
Cuadro: Termina el proceso 1 (de 128K); inician 4 (de 64K), 5 (de156K) y 6 (de 128K); termina 3 (64K). Se va fragmentando lamemoria libre.
Espacio Libre cPNK
832K +——————-+ 0x0d0000
Proceso 6
704K +——————-+ 0x0b0000
Proceso 5
556K +——————-+ 0x08b000
Espacio libre cPNK
492K +——————-+ 0x07b000
Proceso 2
256K +——————-+ 0x040000
Espacio Libre cPNK
192K +——————-+ 0x030000
Proceso 4
128K +——————-+ 0x020000Sistema OperativocBLU
0 +——————-+ 0x000000
Memoria contigua Segmentación Paginación
Fragmentación interna y externa
Fragmentación interna Espacio desperdiciado dentro de lamemoria asignada a un proceso
Porque tuvo que solicitar toda la memoriaque emplearía desde un principio (y ladesperdicia la mayor parte del tiempoPor tener que alinearse a cierta frontera dememoria (p.ej. con particionespre-establecidas)
Fragmentación externa Espacio de memoria desperdiciadoentre los distintos fragmentos
En el esquema anterior, hay 320K libres,pero no puede lanzarse ningún proceso> 192K , porque no es un bloque contiguo
Memoria contigua Segmentación Paginación
¿Cómo ubicar un nuevo proceso?
Hay tres estrategias principales para dar espacio en la memoriaa un nuevo proceso:
Primer ajuste Asigna al nuevo proceso al primer bloque detamaño suficiente
Mejor ajuste Asigna al nuevo proceso al bloque más chico enque quepa
Peor ajuste Asigna al nuevo proceso al bloque más grandeque haya disponible
¿Qué ventajas / desventajas? puede tener cada uno?
Memoria contigua Segmentación Paginación
Primer ajuste
El mecanismo más fácil de implementarEjecución más rápidaPero no considera facilitar las cosas para el futuro. . .
Memoria contigua Segmentación Paginación
Mejor ajuste
Requiere revisión completa de los bloques disponibles. . . O mantenerlos en una lista ordenadaEmpleando un ordenamiento en montículo (heap), puedeser tan ágil/simple como el primer ajuste
Busca que el desperdicio sea el menor posiblePero va generando muchos bloques muy pequeños
Memoria contigua Segmentación Paginación
Peor ajuste
Requiere revisión completa de los bloques disponibles. . . O mantenerlos en una lista ordenadaEmpleando un ordenamiento en montículo (heap), puedeser tan ágil/simple como el primer ajuste
Busca que los bloques que van quedando tras la creaciónde nuevos procesos tiendan a ser del mismo tamaño
Balanceando el tamaño de los bloques remanentes
Memoria contigua Segmentación Paginación
Compactación
Independientemente del esquema que elijamos, bajoparticiones flexibles se irá fragmentando cada vez más lamemoria
Si no se hace nada al respecto, no podrán lanzarseprocesos nuevos
La compactación consiste en:Suspender temporalmente a un procesoMoverlo a otra dirección de memoriaAjustar su registro baseContinuar con el siguiente, hasta crear un sólo bloquedisponible (de los muchos existentes)
Tiene un costo alto, porque requiere:Muchas transferencias de memoriaSuspensión sensible de los procesos implicados
Memoria contigua Segmentación Paginación
Compactación
+—————-+ +—————-+
Cuadro: Compactación de la memoria de procesos en ejecución
cPNK Libre
+—————-+ | |
Proceso 4 cF0F +——+
+—————-+ | | cPNK Libre |
cPNK Libre+—————-+
+—————-+ | | |
Proceso 3 cYEL +—-+ +-> Proceso 4 cF0F
+—————-+ | +—————-+
+—> Proceso 3 cYELProceso 2 cRED +–+ +—————-+
+—————-+ | | |
cPNK Libre +—–> Proceso 2 cRED
+—————-+ +—————-+
Proceso 1 cGRE Proceso 1 cGRE
+—————-+ +—————-+
Sist. Oper.cBLU Sist. Oper.cBLU
+—————-+ +—————-+
Memoria contigua Segmentación Paginación
¿Cuándo compactar?
No hay una sóla respuesta
Basado en umbrales, verificando periódicamente el estadodel sistemaBasado en eventos, cada vez que no pueda satisfacerseuna solicitud por haber demasiada fragmentación
Señales que indican necesidad de compactar
Relación entre el número de bloques libres y ocupadosRelación entre la memoria total disponible y el tamañodel bloque más grande. . .
Memoria contigua Segmentación Paginación
Intercambio (swap)
El SO puede comprometer más memoria de la que tienedisponibleCuando inicia un sistema que no cabe en memoria, puedeelegir suspender a un proceso y grabarlo aalmacenamiento secundario
Por ejemplo, un proceso que esté bloqueado esperandoun bloqueo externo
¿Qué pasa con las operaciones E/S que tiene pendientesel proceso?
Puede exigirse que sólo se pueda hacer E/S empleandobuffers en el espacio del SO
Memoria contigua Segmentación Paginación
Costos del intercambio
Esta modalidad de swap fue popular en equipos deescritorio de fines de los 1980 y principios de 1990
Entre 1 y 8MB RAMHoy en día resultarían inaceptablemente lentos
Si un proceso ocupa 100MBY la tasa de transferencia sostenida al disco duro es de50MB/s
SATA ofrece máximos entre 150 y 600 MB/s(dependiendo de la generación)Pero típicamente hay varios procesos compitiendo por elacceso
Suspender el proceso a disco toma un mínimo de 2s deacceso exclusivoTraerlo de vuelta a memoria, otros 2s
Memoria contigua Segmentación Paginación
Índice
1 Memoria contigua
2 Segmentación
3 Paginación
Memoria contigua Segmentación Paginación
¿Cómo es la visión del programador?
El trabajo del compilador es traducir lo que ve/entiende elprogramador a algo que pueda entender la computadoraPara el programador, la memoria no es un espaciocontiguo, sino que hay separaciones muy claras
El programador no tiene por qué ver relación entre lassecciones de texto y datosNo tiene por qué preocuparse de la cercanía entre elespacio de libres y la pilaNo tiene por qué importarle la estructura representada enla pilaLas bibliotecas externas enlazadas son meras cajas negras
Memoria contigua Segmentación Paginación
Traduciendo la visión del programador
. . . ¿No podría traducirse esta separación a algo generadopor el compilador?
Y que, de paso, pueda aprovechar el sistema. . .El espacio de un proceso se traduce en varios segmentosen memoria
En vez de sólo un registro base y un registrodesplazamiento, requerimos de uno por segmento
Una tabla de segmentos por proceso.Típicamente, un juego de registros especiales en el CPU
La resolución de direcciones es análoga a la descritaanteriormente, con apoyo del MMUEl direccionamiento se hace explícitamente indicandosegmento y desplazamiento
Memoria contigua Segmentación Paginación
Conceptualización de la segmentación
file:ltxpng/segmentacion_de_memoria.dot
Memoria contigua Segmentación Paginación
Facilidades que nos brinda la segmentación
Ayuda a incrementar la modularidad de nuestroprograma, incluso facilita el proceso de carga
Aún tiene que efectuarse la resolución de direcciones,pero puede delegarse parcialmente al MMU (en tiempode ejecución)
Permite especificar permisos diferenciados por tipo dememoria
Restringir escritura en segmentos de textoRestringir ejecución en segmentos no de textoMejora la seguridad del sistema resultante
Ojo: No es magia, siguen existiendo muchos vectores deataque que explotan el acomodo en memoria
Hace más simple / conveniente el manejo del intercambio(swap)
Memoria contigua Segmentación Paginación
Intercambio (swap) parcial
Integrando la operación del SO y el MMU, puedenintercambiarse a disco algunos de los segmentos de unprocesoEs muy probable que no todos los segmentos de unproceso sean usados aproximadamente al mismo tiempo,p.ej.:
Bibliotecas de importación/exportación de archivos, noson empleadas durante una ráfaga de cálculoBibliotecas de comunicación por red, no son empleadasmientras se prepara un archivo para su almacenamiento
Memoria contigua Segmentación Paginación
Decidiendo qué y cuándo intercambiar
El proceso puede indicar al CPU que no requiere por elmomento determinado segmentoEl SO puede elegir, según ciertas métricas, cuál segmentomandar a disco
El más estorboso (grande)Apelando a la localidad de referencia: El MenosRecientemente Utilizado (LRU, Least Recently Used)
El MMU debe indicar al SO cuando el proceso solicitaacceso a un segmento intercambiado
El SO suspende al proceso y carga al segmento de vueltaa memoria. . . Aunque con poca memoria disponible, eso puedellevar a que intercambie un segmento de otro proceso (odel mismo)
Volveremos a este punto al hablar de la memoria virtual
Memoria contigua Segmentación Paginación
Rendimiento del intercambio
Cada uno de los segmentos de un proceso es(obviamente) más chico que el proceso completo
La sobrecarga por transferir un segmento de/a disco esmucho menor
El proceso puede seguir ejecutándose incluso si estáparcialmente intercambiadoEl SO puede aprovechar los permisos para reducir muchasveces a la mitad el tiempo necesario para el intercambio
Memoria contigua Segmentación Paginación
Reduciendo la transferencia basasda en permisos
Cuando un segmento no tiene permiso de escritura,sabemos que el proceso no puede cambiarloUna vez que fue intercambiado, si el SO mantiene elespacio en disco “reservado”, no requiere volver a serescrito
Tenemos garantía de que se mantendrá sinmodificaciones
Bajo ciertos supuestos, podemos incluso ahorrar la copiainicial
Cuando el segmento proviene de una bibliotecareposicionable y la imagen en disco es idéntica a laimagen en memoria, el archivo es un volcado directo delsegmento
Memoria contigua Segmentación Paginación
Ejemplificando (Finkel, p.79)
Si un proceso tiene la siguiente tabla de procesos, veamos larespuesta del MMU a diversas solicitudes
Segmento Inicio Tamaño Permisos Presente0 13426 26 RWX sí1 2309 00 R sí2 1000 23 WX sí3 - 95 W no4 10000 100 RWX sí
R = Lectura; W = Escritura; X = Ejecución
El segmento 3 está en espacio de intercambio (Inicio nulo, presente=no).
Memoria contigua Segmentación Paginación
Respuesta al atrapar una excepción
Una excepción puede lanzarse ante diversas circunstanciasVemos a continuación algunos ejemplosEl OS debe reaccionar de diferente forma ante cada unade ellas
El acceso a un segmento faltante debe llevar a suspenderel proceso y traer el segmento de vuelta a memoriaUna violación de seguridad, o un acceso fuera de rango,normalmente llevarán a que el proceso sea terminado conuna falla de segmentación (segmentation fault)
Ojo: Puede presentarse más de un evento a la vez. ¿Cómodebemos reaccionar ante ello?
Memoria contigua Segmentación Paginación
Ejemplificando (Finkel, p.79)
Dirección Tipo de Direcciónvirtual acceso física
0-0 R 134262-17 W 10172-17 R Atrapada: Violación de seguridad2-32 R Atrapada: Desplazamiento fuera de rango3-72 W Atrapada: Segmento faltante3-94 R Atrapada: Segmento faltante;
violación de seguridad4-99 X 100997-25 X Atrapada: Segmento invalido
Memoria contigua Segmentación Paginación
Limitaciones de la segmentación
Número y semántica de segmentos disponible en laarquitectura
En Intel 8086, 6 registros de segmento, mas undesplazamiento, dan el espacio de direccionamiento de 20bits (1MB); (extendido a partir de 80386):
CS Code Segment (sección de texto)DS Data Segment (sección de datos)SS Stack Segment (pila de llamadas)
ES, FS, GS Extra Segment (cualquier otro acceso)En PowerPC, hay 16 segmentos de 24 bits, que permitendireccionar hasta 52 bits
El código que mejor aprovecha una arquitectura desegmentación es muy difícil de transportar a otraarquitectura
Memoria contigua Segmentación Paginación
La segmentación hoy
La segmentación ha caído en desuso en casi todas lasarquitecturas modernas
Incluso en x86: Al entrar en modo de 64 bits, seinhabilitan casi todos los registros de segmento (quedanFS y GS)
Es muy susceptible a fragmentación (interna y externa)Es natural, al tener cada proceso no uno, sino que variosbloques en memoriaFragmentación interna →0 en secciones de datos y texto,pero alta en libres, pila
Prácticamente todos los sistemas modernos emplean unesquema de memoria plana mediante paginación
. . . Que es, precisamente, el siguiente tema
Memoria contigua Segmentación Paginación
Índice
1 Memoria contigua
2 Segmentación
3 Paginación
Memoria contigua Segmentación Paginación
Evitando la fragmentación externa
La paginación nace para evitar definitivamente lafragmentación externa
Y, por tanto, la necesidad de compactación
Requiere hardware más especializado y dar seguimiento amucha más informaciónSimplifica fuertemente las cosas desde el punto de vistadel proceso
A costo de complicarlas para el SO
Memoria contigua Segmentación Paginación
Adios a los registros base+desplazamiento
Al proceso se le muestra únicamente una representaciónlógica de la memoriaPara cada proceso, el espacio de direccionamientocomienza en 0, y llega hasta el máximo posible de laarquitecturaLa memoria está dividida en una serie de páginas, todasellas del mismo tamaño
Históricamente desde 512 bytes (29)Típicamente 4 u 8K (212 o 213)Máximos hoy, 16MB (224)
La memoria asignada ya no requiere ser contiguaA pesar de usar un modelo plano (no segmentado)
Memoria contigua Segmentación Paginación
Esquematización del proceso de paginación
Figura: Esquema del proceso de paginación, ilustrando el rol delMMU
Memoria contigua Segmentación Paginación
Ubicación física y lógica →Marcos y páginas
Cada página corresponde a un marco (frame) en lamemoria física
Relacionados a través de tablas de páginasLos marcos siempre miden lo mismo que las páginasEl tamaño siempre será una potencia de 2
La ubicación real de un marco de memoria es su ubicaciónfísicaLa dirección que conoce el proceso es su ubicación lógicaLa porción más significativa de una dirección de memoriaindica la página; la menos significativa, el desplazamiento
Memoria contigua Segmentación Paginación
Ejemplo de página y desplazamiento
Dirección especificada — 0001 1101 0111 0010Página (7 bits) ˆ /—+—\ 0001110 101110010 (0x0E)(0x172) —+—-/ V Desplazamiento (9 bits)
Memoria contigua Segmentación Paginación
La tabla de páginas (page table)
Guarda la relación entre cada página y el marcocorrespondienteEl MMU no puede ya operar basado en unos cuantosregistros
En un esquema limitado como el recién presentado,tenemos hasta 128 páginas (27)Cada entrada requiere 14 bits (7 para la página, 7 para elmarco)→1792 bytes (en un sistema bastante primitivo)
El manejo de una tabla de páginas resulta en una suertede resolución en tiempo de ejecución
Pero realizada por el MMU, transparente al programa (eincluso al procesador)Con una dirección base distinta para cada una de laspáginas
Memoria contigua Segmentación Paginación
Ejemplo (minúsculo) de tabla de páginas—-+—–+
Cuadro: Ejemplo de paginación(Silberschatz, p.292)
l c999
7—-+—–+
hgf
—-+—–+ | e | 15 | p |6—-+—–+ 14 | o | | d | 13 | n| | c | 12 | m | | b | 3—-+—–+| a | 11 | l | 5—-+—–+ 10 | k| |c999 | 9 | j | +—+—+ | | 8| i | | 3 | 2 | | | 2—-+—–++—+—+ | | 7 | h | | 2 | 1 |4—-+—–+ 6 | g | +—+—+|c999 | 5 | f | | 1 | 6 | | | 4 | e |+—+—+ | | 1—-+—–+ | 0 |5 | | | 3 | d | +—+—+3—-+—–+ 2 | c | Tabla de | p| 1 | b | páginas | o | 0 | a | | n| 0—-+—–+ | m | Memorialógica 2—-+—–+
lkji
1—-+—–+
c999
0—-+—–+ Memoria física
Direccionamiento: 5 bitsPágina: 3 bitsDesplazamiento: 2 bitsPara referirse a la letra f:
1 Dirección 00101 (5)2 Página 001 (1),
posición 01 (1)3 MMU: Página 001→marco 6 (110)
4 Dirección física: 11001(26)
Memoria contigua Segmentación Paginación
Permisos y validez
Al emplear memoria paginada, seguimos manteniendo losmodos de permisos diferenciados de la segmentación
Lectura, escritura, ejecución (RWX)
En vez de aplicarse a segmentos, se aplican página porpáginaMuchas veces, la cantidad de bits necesaria para alinearlas tablas con el acceso a memoriaUn bit adicional: Página válida / inválida
El espacio total de direccionamiento disponible al procesoes muy grande (32/64 bits)Indica cuáles páginas tiene asignadas el proceso y cuálesestán libres
Memoria contigua Segmentación Paginación
Efecto ante la fragmentación
La fragmentación externa desapareceO más bien, nos deja de preocupar
¿Y la fragmentación interna?
Al dividirse la memoria en bloques de 2n bytes, cadaproceso desperdiciará en promedio 2n
2 bytesPeor caso: 2n − 1 bytes
Podemos tener cientos o miles de procesos en el sistema
Respuesta lógica: Hagamos a n tan pequeño como seaposibleMuchas páginas, muy pequeñas. . . ¿O no?
Memoria contigua Segmentación Paginación
Efecto ante la fragmentación
La fragmentación externa desapareceO más bien, nos deja de preocupar
¿Y la fragmentación interna?
Al dividirse la memoria en bloques de 2n bytes, cadaproceso desperdiciará en promedio 2n
2 bytesPeor caso: 2n − 1 bytes
Podemos tener cientos o miles de procesos en el sistema
Respuesta lógica: Hagamos a n tan pequeño como seaposibleMuchas páginas, muy pequeñas. . . ¿O no?
Memoria contigua Segmentación Paginación
Efecto ante la fragmentación
La fragmentación externa desapareceO más bien, nos deja de preocupar
¿Y la fragmentación interna?
Al dividirse la memoria en bloques de 2n bytes, cadaproceso desperdiciará en promedio 2n
2 bytesPeor caso: 2n − 1 bytes
Podemos tener cientos o miles de procesos en el sistema
Respuesta lógica: Hagamos a n tan pequeño como seaposibleMuchas páginas, muy pequeñas. . . ¿O no?
Memoria contigua Segmentación Paginación
Impacto del tamaño de las páginas
¿En qué se expresaría la sobrecarga administrativa de tenerpáginas demasiado pequeñas?
Mayor carga en un cambio de contextoCrecimiento del PCB
Mayor número transferencias DMA requerido (p.ej. paraleer/escribir del disco)Disminución de velocidad de todas las transferencias amemoria
Memoria contigua Segmentación Paginación
Impacto en las transferencias DMA
Es mucho más eficiente hacer una transferencia larga quevarias cortas
Recordemos: Una transferencia DMA se inicia indicando:Dirección física base de memoriaCantidad de datos a transferirPuerto del dispositivoDirección de la transferencia
Tenemos que hacer (como máximo) transferencias deltamaño de la página en memoriaFragmentar la memoria física en páginas muy pequeñasreduce la velocidad de transferencia de disco
Memoria contigua Segmentación Paginación
Impacto en el PCB
Partición fija Un registro base para indicar el inicio del espaciodel proceso
Partición flexible Un registro base y un registro límite paraindicar su tamaño total
Segmentación Varios registros de segmento (p.ej. 6 en x86)Paginación Modelo presentado (128 páginas de 512 bytes,
esp. direc. 16 bits): 1792 bytes
Memoria contigua Segmentación Paginación
¿Cuánto ocuparía en una computadora real actual?
Computadora sencilla actual (páginas de 4096 bytes(212), esp. direc. 32 bits). . .
1,048,576 páginas (220)Cada entrada de 40 bits (20 para la página, 20 para elmarco)¡¿5MB para la tabla de páginas?!¡¿La tabla de páginas mide 1280 páginas?!
. . . ¿Quién se aventura a sacar números para un sistemade 64 bits?
Memoria contigua Segmentación Paginación
Almacenamiento de la tabla de páginas en memoria
Almacenar toda esta información en registros essencillamente imposible
Costo económicoTiempo perdido en el cambio de contexto
Una estrategia: Almacenar la propia tabla de páginas enmemoria
Emplear sólo dos registros especiales:PTBR Registro Base de Tabla de Páginas (Page
Table Base Register)PTLR Registro Límite de Tabla de Páginas (Page
Table Limit Register)¿Por qué el PTLR? La mayor parte de los procesos,además, nunca requerirá direccionarlo completo; para notener un mapa completo mayormente vacío, PTLR indicala extensión máxima empleada
Memoria contigua Segmentación Paginación
Desventaja de tener la tabla de páginas enmemoria:
Velocidad: Cada acceso a memoria se ve penalizado con(al menos) un acceso adicional
Para resolver dónde está la página que buscamos
Duplica el tiempo efectivo de aceso a memoria→Inaceptable.
Memoria contigua Segmentación Paginación
TLB: El buffer de traducción adelantada
¿Respuesta? Emplear un cachéPero, por su frecuencia y naturaleza de uso, un cachéespecializado
El TLB (Translation Lookaside Buffer) es una tablaasociativa (hash)
Las consultas (llaves) son las páginasLos valores son los marcos correspondientesLas búsquedas se realizan en tiempo constante
Memoria contigua Segmentación Paginación
Proceso de paginación con TLB
Figura: Esquema de paginación empleando un buffer de traducciónadelantada (Silberschatz, p.296)
Memoria contigua Segmentación Paginación
Funcionamiento del TLB
Típicamente, entre 64 y 1024 entradasBusca aprovechar la localidad de referencia
Si conoce ya a una página (TLB hit), el MMU traduce deinmediato para obtener el marco
Silberschatz: Penalización de hasta 10%Si no conoce la página (TLB miss), lanza una falla depágina (page fault) y consulta en la memoria principalcuál es el marco correspondiente
Penalización >120%; la nueva página queda registradaen el TLB
Memoria contigua Segmentación Paginación
Reemplazo de las entradas del TLB
El TLB es mucho más pequeño que el espacio de páginasdel procesoAl recibir una entrada nueva, puede ser necesarioreemplazar la entrada de una página ya conocidaReemplazar la menos recientemente utilizada (LRU)
Ventaja: Localidad de referencia; probablemente no lanecesitemos prontoDesventaja: Contabilizar los accesos dentro del TLB(muy frecuentes) agrega latencia y costo
Reemplazar una página al azarVentaja: Más simple y barato (pero. . . ¿Algo aleatorio esbarato en el cómputo?)Desventaja: Obvia. Puede reemplazarse una página enuso frecuente y causar demoras
Memoria contigua Segmentación Paginación
La obesidad de las tablas de páginas
En un equipo moderno, incluso con TLB, el espacio de la tablade páginas es demasiado grande
Como vimos, una sobrecarga de 5MB por proceso en 32bits. Y de nuevo. . . ¿en 64 bits?Tendríamos 242 entradas con páginas de 4MB (222)264/222 = 242 entradas, cada una ocupando 42 bits parala página y 42 bits para el marco242 ∗ (42+ 42) →¡336TB por proceso!
Memoria contigua Segmentación Paginación
Subdividiendo las tablas de páginas
Aprovechamos que la mayor parte del espacio dedireccionamiento de un proceso está siempre vacíoPodemos dividir una dirección de memoria en dos (o más)niveles)Por ejemplo, una dirección de 32 bits:Tabla externa 10 bits (1024 entradas; 1024 × (10 + 10)
bits 2560 bytes)Tabla interna 10 bits cada una (2560 bytes cada una)Desplazamiento 12 bits (dentro de cada página/marco)Sólo se crean las tablas internas que sean necesariasEl TLB guarda la resolución para los 20 bits de ambastablas
O los 54 bits correspondientes en una arquitectura de 64bits
Memoria contigua Segmentación Paginación
Tablas de páginas con varios niveles
Figura: Paginación en dos niveles: 10+10 bits, con marcos de 12bits.
Memoria contigua Segmentación Paginación
Los costos de los niveles adicionales
Este esquema hace tratable el direccionamiento degrandes cantidades de memoria
Pueden agregarse tres, cuatro, conco niveles. . .Pero una falla de página puede ahora triplicar el tiempode acceso a memoria en vez de duplicarlo
Porque hace falta consultar a la tabla externa y a la tablainterna
En una arquitectura de 64 bits dividida en páginas enincrementos 10 bits. . . Septuplicamos el tiempo de acceso
Memoria contigua Segmentación Paginación
Tablas de páginas con funciones digestoras (hash)
¿Qué es una función digestora?H : U → M
Una función que mapea o proyecta al conjunto U en unconjunto M mucho menorLa distribución resultante en M debe resultar homogeneaTan poco dependiente de la secuencialidad de la entradacomo sea posiblePermiten hacer mapeos a espacios muestrales mucho máspequeñosPero, en vez de apuntar a un sólo valor, deben apuntar auna lista ligada de valores
Al ser espacios más pequeños, necesariamente puedenpresentar colisiones
Memoria contigua Segmentación Paginación
Tablas de páginas con funciones digestoras (hash)
Figura: Tablas de páginas empleando funciones digestoras(Silberschatz, p. 302)
Memoria contigua Segmentación Paginación
Características de las tablas basadas en hash
Mayor complejidad →mayor latencia (¿mayor a qué?Seguramente, no a 7 accesos a memoria)
Evaluación de una función matemática (hash)Posiblemente, recorrer una lista
El tamaño de la tabla puede variar según crece el uso dememoria del proceso
Aunque requiera recalcular (rehash) la tabla, es unaoperación poco frecuente
Memoria contigua Segmentación Paginación
Memoria compartida
La memoria paginada hace simple definir áreas dememoria compartidaUso muy frecuente: Comunicación entre procesos (IPC)
Pueden compartirse estructuras complejas sin costo decopia
Uso más frecuente aún: Compartir códigoNo tiene sentido que el SO repita en memoria imágenesde bibliotecas relocalizables y reentrantesEl mismo conjunto de marcos puede incluirse en lastablas de distintos procesos, aumentando la capacidadpercibida de memoria
Memoria contigua Segmentación Paginación
Memoria compartida
+—————-+ +—————-+ +—————-++————+
Cuadro: Uso de memoria compartida: Tres procesos comparten lamemoria ocupada por el texto del programa (azul), difieren sólo enlos datos.
lllllll Proceso A cYEL
Proceso B cGRE
Proceso C cRED
Páginas de
+——–+——-+ +——–+——-+ +——–+——-+ |memoria |
Página Marco Página Marco Página Marco +————+
+——–+——-+ +——–+——-+ +——–+——-+ | 1 cYEL|
cYEL 1 3 cBLU cGRE 1 3 cBLU cRED 1 3 cBLU +————+
+——–+——-+ +——–+——-+ +——–+——-+ | 2cBLU |
cYEL 2 5 cBLU cGRE 2 5 cBLU cRED 2 5 cBLU +————+
+——–+——-+ +——–+——-+ +——–+——-+ | 3cBLU |
cYEL 3 2 cBLU cGRE 3 2 cBLU cRED 3 2 cBLU +————+
+——–+——-+ +——–+——-+ +——–+——-+ | 4cGRE |
cYEL 4 1 cYEL cGRE 4 4 cGRE cRED 4 6 cRED +————+
+——–+——-+ +——–+——-+ +——–+——-+ | 5cBLU | +————+ +——————————+ | 6 cRED |
cBLU Memoria compartida +————+
+——————————+
Memoria contigua Segmentación Paginación
La arquitectura x86-32: Paginación +Segmentación
+—–+ dirección +—————+ dirección +—————+dirección +————–+
Cuadro: Pasos de la traducción lógica a física en un Pentium
lllllll cGRElógica
cGRE Unidad delineal
cGRE Unidadfísica
MemoriaCPU ———-> segmentación ———-> de paginación ———-> física cGRE
+—–+ +—————+ +—————+ +————–+La arquitectura x86 de 32 bits permite combinarpaginación y segmentación para alcanzar un mayorespacio de direccionamiento
Comparable con la segmentación que permitía a la x86llegar a 1MB RAMLa segmentación fue (casi) eliminada para x86-64
Memoria contigua Segmentación Paginación
Segmentación en x86-32
Hay dos tablas de segmentos, almacenadas en registrosprogramables específicos:
LDT Tabla local de descriptores, segmentosprivados de cada uno de los procesos
GDT Tabla global de descriptores, segmentos quepueden ser compartidos entre diversosprocesos del sistema
La dirección de segmento es de 16 bits13 bits indican el segmento1 bit indica si es en LDT o en GDT2 bits son para los permisos
Memoria contigua Segmentación Paginación
Paginación en x86-32
La familia Pentium (y equivalentes) pueden emplearpáginas de 4KB o 4MB
La tabla de páginas está dividida en una externa de 10bits y una interna de 10 bits (y desplazamiento, 14 bits)La tabla externa incluye un bit que indica si apunta a unapágina grande o a una tabla interna
Memoria contigua Segmentación Paginación
Paginación en x86-32
Figura: Paginación en x86-32 (silberschatz, p.309)
Top Related