soporte hw para administración de memoria cecilia hernández 2007-1

23
Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Upload: salud-fiel

Post on 23-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Soporte HW para Administración de Memoria

Cecilia Hernández2007-1

Page 2: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Paginación

nmp

npvdirección virtual

dirección física

Marco Pag 0Marco Pag 1

Marco Pag 3Marco Pag 4

Marco Pag N

.

.

.

offset

offset

nmp

npv: Num. página virtualnmp: Num. marco página

Marco Pág 2

Cada Proceso tiene su propia tabla de página

Page 3: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Fallos de Páginas

Interrupción (por fallo de página) hace que SO se ejecute SO salva estado de proceso en ejecución y salta a

rutina de interrupción para atender fallo Encuentra un marco de lista libre o reemplazada de

proceso (mismo u otro) Si se requiere E/S (acceso a disco) bloquea proceso

y ejecuta otro Encuentra en disco página de proceso que necesita

cargarse en memoria (*) Bloquea proceso y ejecuta otro entre tanto

Cuando E/S terminan Setea entrada de página con marco, V=1, R = 1 y

M =0 y bits protección apropiados Pone proceso en cola de listos

Page 4: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Página de disco a memoria

SO sabe id de proceso responsable de fallo de página y dirección virtual que produce fallo

Id de proceso almacenado en PCB PCB proceso tiene puntero a tabla de página Dirección virtual contiene número página virtual

que produce fallo SO tiene estructura de datos similar a tabla de

página que contiene direcciones a disco de páginas Un arreglo con entradas por cada página en el

espacio de direccionamiento

Page 5: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Problemas con paginación

Accesos a memoria para direccionar memoria física 2 referencias a memoria por traducción

A tabla de página y memoria Solución

Usar cache para almacenar tabla de página (TLB: Translation lookaside buffer)

Requerimiento de memoria Una entrada por página virtual En arquitectura de 32 bits y páginas de 4KB

Número de páginas virtuales 220 = 1.048.576 de entradas en tabla de páginas

4 bytes por entrada = 4* 1.048.576 = 4MB Cada proceso tiene su propia tabla de página

Para 50 procesos 50 *4MB = 200 MB sólo para almacenar tablas de páginas

Solución Paginar tablas de páginas

Page 6: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Paginando tablas de página

Observación Procesos en ejecución sólo necesitan una

porción del espacio de direccionamiento en memoria

Idea de conjunto de trabajo expuesta por proceso de acuerdo a localidad

Puede que proceso no use su espacio completo de direccionamiento 32/64 bits

Proceso puede que no referencie algunas partes de direccionamiento nunca

Caso de rutinas de manejo de errores, si proceso no expone errores en tiempo de ejecución

Page 7: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Tablas de páginas de 2 niveles

nmp

npv2

dirección virtual

dirección física

Marco Pag 0Marco Pag 1

Marco Pag 3Marco Pag 4

Marco Pag N

.

.

.

offset

offset

nmp

npv1: Num. página virtual a nivel 1npv2: Num. página virtual a nivel 2nmp: Num. marco página

Marco Pág 2

Cada Proceso tiene sus propias tablas de página

npv1

Page 8: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Ejemplo

Espacio de direccionamiento de 32 bits, páginas de 4KB, cada entrada en tabla de páginas de 4 bytes Bits para offset?

Se necesitan 12 bits para direccionar 4KB 212 = 4KB

Si tabla de primer nivel debe estar contenida en una página

Distribución de campos en dirección virtual? 4KB/4 = 1KB = 1024 entradas en tabla primer nivel

10 bits 210 = 1024 1024 tablas de segundo nivel Si se usan los 32 bits, se requieren 32 -10 -12 =

10 bits para índices a tablas de segundo nivel, luego cada tabla de segundo nivel tambien es contenida en 1 página

Page 9: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Generalización

En un principio arquitecturas usaban tablas de 1 nivel

VAX, P-II tablas de 2 niveles SPARC usa tres niveles 68030 usa cuatro niveles Tabla de nivel inferior debe

contener información de marcos de página

Page 10: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Otros esquemas

Tabla de página es tabla hash Esquema útil para espacios de

direccionamiento grandes (64 bits) y evitar tabla de páginas muy grandes

Número de página se usa como hash Para manejar colisiones

Cada entrada en la tabla hash contiene una lista enlazada de elementos

Cada elemento en la lista enlazada contiene el número de página virtual, la entrada en la tabla de página y el puntero a siguiente elemento en la lista

Page 11: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Tabla de páginas como tabla hash

m2

pdirección virtual

dirección física

Marco Pag 0Marco Pag 1

Marco Pag 3Marco Pag 4

Marco Pag N

.

.

.

offset

offset

p: Num. página virtualnmp: Num. marco página

Marco Pág 2

Cada Proceso tiene su propia tabla de página

a pm1 m2

hash

Page 12: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Otros esquemas Tabla de página invertida

Para evitar usar mucha memoria para tablas de página Tabla tiene una entrada por cada marco de página Cada entrada contiene la página virtual almacenada en

el marco de página Sólo se necesita una tabla en el sistema

No una por proceso Para identificar páginas virtuales de procesos cada

entrada tambien tiene pid de proceso Luega cada entreda contiene pid y página virtual PowerPC y UltraSPARC usan este esquema

Uso de memoria menora para almacenar tabla de página, pero búsqueda puede ser lenta

Para mejorar búsqueda se usa tabla de página usando hash

Luego, cada traducción requiere 2 referencias a memoria una para hash y otra para tabla invertida

Page 13: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Tabla de página invertida

m

p

dirección virtual

dirección física

Marco Pag 0Marco Pag 1

Marco Pag 3Marco Pag 4

Marco Pag N

.

.

.

offset

offset

p

Marco Pág 2

Una tabla de página en el SO para todos los procesos

pid

pid

m

búsqueda

Page 14: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Mejorando desempeño con TLB

Tablas de páginas de un nivel 2 referencias para acceso a información

Tablas de páginas de 2 niveles 3 referencias para acceso a información

Como hacer para que sobrecarga de traducción sea mínima Usar TLB cache dentro de CPU Traducción de dirección virtual a física en

Hardware TLB manejada por MMU (Memory Management

Unit) MMU encargada de traducción virtual a física

Page 15: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

TLB

Traduce páginas virtuales a marcos Acceso para extraer marco de página Puede realizarlo en un ciclo de reloj

TLB implementada en HW Cache completamente asociativa (todas las entradas

accesadas paralelamente) Tags en cache son los números de páginas virtuales Datos en cache son los marcos de página

Marco de página mas offset dirección física MMU puede calcular dirección física

TLB explota localidad Procesos contienen conjunto de paginas en conjunto de

trabajo Típicamente TLB contiene entre 16-48 entradas (64-192 KB)

Aciertos en TLB son muy importantes Costos de fallos hacen traducción virtual a física muy cara

Page 16: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

dirección virtual

numero pag offset

=

Tagnumero pag

Datosnumero marco

numero marcooffset

numero marco

dirección física

TLB hit

TLB miss

numero pag

Memoria Física

Ilustración con TLB

TLB

Tabla de página

Page 17: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Manejando TLBs

La idea es que la traducción virtual a física sea realizada por la TLB la mayoría de las veces

Típicamente aciertos son > 99% En caso de fallo, MMU va a tabla de página y extrae

marco para página virtual y lo pone en la TLB MMU

Sabe donde están las tablas de página en memoria OS las mantiene y HW de MMU las accesa directamente

Formato de tablas de página debe ser definido en HW Así se hace en arquitecturas x86

TLB cargada por software Fallo en TLB capturado por SO, SO encuentra marco para

página virtual y lo carga en TLB Debe ser rápido, pero normalmente toma entre 20-200

ciclos de reloj ISA de la CPU tiene instrucciones para manipular la TLB SO decide el formato de la tabla de página MIPS3000

Page 18: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Manejando TLBs

SO debe asegurar consistencia entre TLB y tabla de página

Cuando SO cambia bits de protección en entrada de tabla de página debe invalidar entrada en TLB si es que tambien esta ahí

Qué ocurre en cambio de contexto? Cada proceso tiene sus propias tablas de página Luego SO necesita invalidar todas las entradas en la TLB

Una de las principales fuentes de sobrecarga en cambio de contexto

Cuando hay un fallo en TLB y TLB esta completamente ocupada hay que elegir una reemplazo, dado que se necesita cargar una nueva

Luego, debe haber un algoritmo de reeplazo en la TLB Normalmente LRU implementado en HW

Page 19: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Implementaciones con paginación

Memoria compartida Dos procesos pueden compartir memoria física

Leer/escribir en un espacio compartido Ejecutar código perteneciente a una biblioteca

Cada proceso tiene su tabla de página, con números de página virtual correspondientes a cada proceso.

Mismo marco en entradas de cada tabla de página Copy-on-write (COW)

Para caso fork(), en lugar de copiar espacio de direccionamiento, hacer que hijo comparta lo del padre hasta que hijo escriba

Hacer que hijo solo pueda leer Cuando hijo quiere escribir, SO atiende SO asigna

un nuevo marco al hijo y lo mapea en su tabla de página y luego lo resume

Page 20: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Implementaciones con paginación

Archivos mapeados a memoria En lugar de usar llamadas a sistema open,

read, write, close Mapear archivo a espacio de direccionamiento

virtual Inicialmente todas las páginas en región

mapeadas están inválidas SO lee una página de archivo de disco cuando

accesa a página inválida SO escribe una página a archivo cuando es

reemplazada y su bit M (dirty bit)

Page 21: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Resumen

Traducción de memoria virtual a física Usa TLB, tablas de páginas de múltiples niveles

(normalmente en HW : MMU) Cuando hay fallos en TLB se accesa memoria

conteniendo tabla de página Si págino no esta en tabla de página : Fallo de página

SO Maneja fallos de página Salva estado de proceso y lo bloquea Ejecuta algoritmo de reemplazamiento cuando se

ve escaso de marcos libres Encuentra marco libre, trae lo que necesita de

disco y lo copia en marco Actualiza entrada en tabla de página Pone proceso en cola de listos

Page 22: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Resumen

Dos problemas en traducción Desempeño

Ciclos requerido por traducción Solución: usar TLB

Cantidad de memoria para contener tabla de página por procesos

Tablas de múltiples niveles Esto hace uso de TLB más importante porque

costo de fallos incrementa Tablas invertidas con uso de tablas hash

Page 23: Soporte HW para Administración de Memoria Cecilia Hernández 2007-1

Detalles de TLB

Implementado en HW Cache completamente asociativa

Todas las entradas accesadas en paralelo en búsqueda de marco para cada traducción

Tag en TLB corresponden a número de página virtual Datos en TLB corresponden a marcos de página Con marco y offset MMU puede directamente calcular dirección

física TLBs son pequeñas entre 16 y 64 entradas

AMD operon tiene 2 niveles de TLB Para traducción de dir virtual a física son accesadas antes

de acceso a tabla de página Acierto. Marco de página se encuentra en TLB para página

virtual referenciada por CPU Fallo. Traducción requiere acceso a tabla de página, trae marco

a entrada en TLB (si es necesario saca otra, normalmente algoritmo LRU)

En Cambio de contexto: Entradas en TLB son invalidadas porque referencias pertenecen a proceso que sale de CPU