1 / 23

Soporte HW para Administración de Memoria

Soporte HW para Administración de Memoria. Cecilia Hernández 2007-1. dirección virtual. npv. offset. Marco Pag 0. Marco Pag 1. Marco Pág 2. Marco Pag 3. nmp. offset. Marco Pag 4. dirección física. nmp. npv: Num. página virtual nmp: Num. marco página. Marco Pag N.

mulan
Download Presentation

Soporte HW para Administración de Memoria

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  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 dirección virtual npv2 offset npv1 Marco Pag 0 Marco Pag 1 Marco Pág 2 Marco Pag 3 nmp offset Marco Pag 4 . . . dirección física nmp Marco Pag N Cada Proceso tiene sus propias tablas de página npv1: Num. página virtual a nivel 1 npv2: Num. página virtual a nivel 2 nmp: Num. marco página

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

  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 dirección virtual p offset Marco Pag 0 Marco Pag 1 hash Marco Pág 2 m2 offset Marco Pag 3 Marco Pag 4 dirección física . . . a m1 p m2 Marco Pag N Cada Proceso tiene su propia tabla de página p: Num. página virtual nmp: Num. marco página

  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 dirección virtual p offset pid Marco Pag 0 Marco Pag 1 Marco Pág 2 m offset Marco Pag 3 m Marco Pag 4 dirección física . . . pid p búsqueda Marco Pag N Una tabla de página en el SO para todos los procesos

  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. Ilustración con TLB dirección virtual numero pag offset Tag numero pag Datos numero marco offset numero marco TLB hit = dirección física TLB Memoria Física numero pag numero marco TLB miss 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

More Related