administración de memoria: asignación de memoria

69
Memoria contigua Segmentación Paginación Administración de memoria: Asignación de memoria Gunnar Wolf Facultad de Ingeniería, UNAM 2013-04-03 — 2013-04-08

Upload: others

Post on 21-Jul-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Administración de memoria: Asignación de memoria

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

Page 2: Administración de memoria: Asignación de memoria

Memoria contigua Segmentación Paginación

Índice

1 Memoria contigua

2 Segmentación

3 Paginación

Page 3: Administración de memoria: Asignación de memoria

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

Page 4: Administración de memoria: Asignación de memoria

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

Page 5: Administración de memoria: Asignación de memoria

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

Page 6: Administración de memoria: Asignación de memoria

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

Page 7: Administración de memoria: Asignación de memoria

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

Page 8: Administración de memoria: Asignación de memoria

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

Page 9: Administración de memoria: Asignación de memoria

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

Page 10: Administración de memoria: Asignación de memoria

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

Page 11: Administración de memoria: Asignación de memoria

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

Page 12: Administración de memoria: Asignación de memoria

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?

Page 13: Administración de memoria: Asignación de memoria

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

Page 14: Administración de memoria: Asignación de memoria

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

Page 15: Administración de memoria: Asignación de memoria

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

Page 16: Administración de memoria: Asignación de memoria

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

Page 17: Administración de memoria: Asignación de memoria

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

+—————-+ +—————-+

Page 18: Administración de memoria: Asignación de memoria

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

Page 19: Administración de memoria: Asignación de memoria

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

Page 20: Administración de memoria: Asignación de memoria

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

Page 21: Administración de memoria: Asignación de memoria

Memoria contigua Segmentación Paginación

Índice

1 Memoria contigua

2 Segmentación

3 Paginación

Page 22: Administración de memoria: Asignación de memoria

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

Page 23: Administración de memoria: Asignación de memoria

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

Page 24: Administración de memoria: Asignación de memoria

Memoria contigua Segmentación Paginación

Conceptualización de la segmentación

file:ltxpng/segmentacion_de_memoria.dot

Page 25: Administración de memoria: Asignación de memoria

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)

Page 26: Administración de memoria: Asignación de memoria

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

Page 27: Administración de memoria: Asignación de memoria

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

Page 28: Administración de memoria: Asignación de memoria

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

Page 29: Administración de memoria: Asignación de memoria

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

Page 30: Administración de memoria: Asignación de memoria

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

Page 31: Administración de memoria: Asignación de memoria

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?

Page 32: Administración de memoria: Asignación de memoria

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

Page 33: Administración de memoria: Asignación de memoria

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

Page 34: Administración de memoria: Asignación de memoria

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

Page 35: Administración de memoria: Asignación de memoria

Memoria contigua Segmentación Paginación

Índice

1 Memoria contigua

2 Segmentación

3 Paginación

Page 36: Administración de memoria: Asignación de memoria

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

Page 37: Administración de memoria: Asignación de memoria

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)

Page 38: Administración de memoria: Asignación de memoria

Memoria contigua Segmentación Paginación

Esquematización del proceso de paginación

Figura: Esquema del proceso de paginación, ilustrando el rol delMMU

Page 39: Administración de memoria: Asignación de memoria

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

Page 40: Administración de memoria: Asignación de memoria

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)

Page 41: Administración de memoria: Asignación de memoria

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

Page 42: Administración de memoria: Asignación de memoria

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)

Page 43: Administración de memoria: Asignación de memoria

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

Page 44: Administración de memoria: Asignación de memoria

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?

Page 45: Administración de memoria: Asignación de memoria

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?

Page 46: Administración de memoria: Asignación de memoria

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?

Page 47: Administración de memoria: Asignación de memoria

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

Page 48: Administración de memoria: Asignación de memoria

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

Page 49: Administración de memoria: Asignación de memoria

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

Page 50: Administración de memoria: Asignación de memoria

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?

Page 51: Administración de memoria: Asignación de memoria

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

Page 52: Administración de memoria: Asignación de memoria

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.

Page 53: Administración de memoria: Asignación de memoria

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

Page 54: Administración de memoria: Asignación de memoria

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)

Page 55: Administración de memoria: Asignación de memoria

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

Page 56: Administración de memoria: Asignación de memoria

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

Page 57: Administración de memoria: Asignación de memoria

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!

Page 58: Administración de memoria: Asignación de memoria

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

Page 59: Administración de memoria: Asignación de memoria

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.

Page 60: Administración de memoria: Asignación de memoria

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

Page 61: Administración de memoria: Asignación de memoria

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

Page 62: Administración de memoria: Asignación de memoria

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)

Page 63: Administración de memoria: Asignación de memoria

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

Page 64: Administración de memoria: Asignación de memoria

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

Page 65: Administración de memoria: Asignación 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 +————+

+——————————+

Page 66: Administración de memoria: Asignación de memoria

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

Page 67: Administración de memoria: Asignación de memoria

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

Page 68: Administración de memoria: Asignación de memoria

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

Page 69: Administración de memoria: Asignación de memoria

Memoria contigua Segmentación Paginación

Paginación en x86-32

Figura: Paginación en x86-32 (silberschatz, p.309)