La memoria virtual permite desacoplar la memoria que la CPU ve de la memoria física al definir dos espacios de direccionamiento: uno virtual o lógico (el que los procesos ven) y uno físico (la memoria principal). La memoria física se separa en frames o marcos y la memoria lógica se separa en páginas del mismo tamaño que los frames. Dirección lógica = p d p : n° de página d: offset Por eficiencia se agrega un intermediario que traduce las direcciones entre ambos espacios: Memory Managment Unit (MMU) Al cargar un proceso, el SO también carga en la MMU el mapa de memoria asociado a dicho proceso, el mapa de memoria está representado como un mapa de páginas. La información del mapeo está contenida en una tabla de páginas (individual por proceso). Tabla de páginas: N° de página N° de Marco Validez Las tablas son muy grandes, por lo que se almacenan en la memoria física El sistema operativo no carga la MMU con el mapa del proceso, si no que le entrega un puntero a dicha tabla. Translation Lookaside Buffer (TLB): tiene un subconjunto de la tabla de páginas solo unas entradas de la tabla de páginas. Es un caché asociativo. Swap in/out: Lo explico en el ejemplo Ejemplo (I3 Sistemas Operativos 1-2009) Nota: Algunos de los conceptos no son tratados con los mismos nombres en arqui, pero creo que los podrán reconocer y asociar con su materia. De todas formas los explicaré. Suponga un sistema con memoria virtual con paginación. Las páginas de este sistema son de 1000 bytes, y el espacio de direccionamiento es de 4000 bytes. El TLB es de 2 entradas. El sistema cuenta con 2000 bytes de memoria física, además de infinitas páginas de almacenamiento secundario disponibles para swap. El sistema usa paginación por demanda pura (1), y una política FIFO para reemplazo de páginas. Un proceso P acaba de empezar en este sistema, y su mapa de memoria establece que la primera página corresponde al código del ejecutable, y el resto está disponible para ser usado como memoria dinámica. El proceso efectúa accesos a las siguientes direcciones de memoria (en ese orden): 1 , 2, 1000, 2000, 3999, 1999 Explique qué pasa en cada acceso de memoria. En particular, muestre, en cada paso, el contenido de estas estructuras de datos del sistema operativo y hardware: 1. Tabla de páginas del proceso, con bits valid 2. Tabla de marcos 3. Tabla de utilización de swap 4. TLB R: (1) Paginación por demanda pura: Se trata de realizar paginación con swaping, el bit de validez de la tabla de páginas indica si la página está o no en memoria. * La tabla de páginas por proceso nos indica que página está asociada a que marco y si esta asociación sigue siendo válida. * La tabla de marcos indica que página está asociada a cada marco * TLB tiene un subconjunto de páginas La página y el marco asociado a ella. * Tabla de utilización de swap indica si hay paginas swapeadas. Ok, vamos a pedazos Las páginas de este sistema son de 1000 bytes, y el espacio de direccionamiento es de 4000 bytes. Esto nos indica que el sistema tiene 4 páginas: ସሺ௬௧௦ሻ ್ೞ ሻ ೌೌೞ ଵሺ El sistema cuenta con 2000 bytes de memoria física. Como las páginas tienen el mismo tamaño que los marcos, esta información nos indica que el sistema cuenta con 2 marcos: ଶሺ௬௧௦ሻ ್ೞ ሻ ೌೝ ଵሺ TLB es de 2 entradas, eso…. Entonces podemos armar nuestras tablas: Tabla de Páginas Página Marco Validez TLB Página Marco Tabla de Marcos Marco Página Swap Página Hare las primeras iteraciones, para que se entiendan algunos conceptos. Dirección 1 : para calcular la página = 1 mod 1000 = 0, asigno el primer marco disponible (paginación por demanda pura) Tabla de Páginas Página Marco Validez 0 0 1 TLB Página Marco 0 0 Tabla de Marcos Marco Página 0 0 Swap Página x x Dirección 2 : para calcular la página =2 mod 1000 = 0, ya está en el TLB Tabla de Páginas Página Marco Validez 0 0 1 TLB Página Marco 0 0 Tabla de Marcos Marco Página 0 0 Swap Página x x . Dirección 1000: para calcular la página =1000 mod 1000 = 1 Tabla de Páginas Página Marco Validez 0 0 1 1 1 1 TLB Página Marco 0 0 1 1 Tabla de Marcos Marco Página 0 0 1 1 Swap Página x x Dirección 2000, necesitamos la pagina 2 pero los marcos ya están todos asignados, por lo que utilizando una política FIFO para reemplazo de páginas hacemos Swap Out de la Página 0. Tabla de Páginas Página Marco Validez 0 0 0 1 1 1 2 0 1 TLB Página Marco 2 0 1 1 Tabla de Marcos Marco Página 0 2 1 1 Swap Página 0 x