La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Soporte HW para Administración de Memoria Cecilia Hernández 2007-1."— Transcripción de la presentación:

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

2 Paginación nmp npv dirección virtual dirección física Marco Pag 0 Marco Pag 1 Marco Pag 3 Marco Pag 4 Marco Pag N...... offset nmp npv: Num. página virtual nmp: Num. marco página Marco Pág 2 Cada Proceso tiene su propia tabla de página

3 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

4 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

5 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 2 20 = 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

6 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

7 Tablas de páginas de 2 niveles nmp npv2 dirección virtual dirección física Marco Pag 0 Marco Pag 1 Marco Pag 3 Marco Pag 4 Marco Pag N...... offset nmp npv1: Num. página virtual a nivel 1 npv2: Num. página virtual a nivel 2 nmp: Num. marco página Marco Pág 2 Cada Proceso tiene sus propias tablas de página npv1

8 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 2 12 = 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 2 10 = 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

9 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

10 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

11 Tabla de páginas como tabla hash m2 p dirección virtual dirección física Marco Pag 0 Marco Pag 1 Marco Pag 3 Marco Pag 4 Marco Pag N...... offset p: Num. página virtual nmp: Num. marco página Marco Pág 2 Cada Proceso tiene su propia tabla de página apm1m2 hash

12 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

13 Tabla de página invertida m p dirección virtual dirección física Marco Pag 0 Marco Pag 1 Marco Pag 3 Marco Pag 4 Marco Pag N...... offset p Marco Pág 2 Una tabla de página en el SO para todos los procesos pid m búsqueda

14 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

15 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

16 dirección virtual numero pag offset = Tag numero pag Datos numero marco offset numero marco dirección física TLB hit TLB miss numero pag Memoria Física Ilustración con TLB TLB Tabla de página

17 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

18 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

19 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

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

21 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

22 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

23 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


Descargar ppt "Soporte HW para Administración de Memoria Cecilia Hernández 2007-1."

Presentaciones similares


Anuncios Google