La memoria virtual permite desacoplar la memoria que la CPU ve

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