Title: Memoria Virtual
1Memoria Virtual
- Gestión de Memoria Virtual
Pedro Rodríguez Moreno Arquitectura de
Computadores Departamento de Sistemas de
Información Facultad de Ciencias Empresariales
2Tipos de Espacio de Direcciones
- Espacio de Direcciones Reales la memoria
principal o RAM de la máquina. - Espacio de Direcciones Lógica o Virtual la
memoria que percibe o conoce el proceso. Cada
proceso tiene su propio espacio de direcciones
lógico virtual. - Existen tres momentos o tiempos para mapear
direcciones lógicas a reales - Directa de lógica a física (o real) en tiempo de
compilación. - Relocalización estática direcciones reales
calculadas en tiempo de carga. - Relocalización dinámica direcciones reales
calculadas en tiempo de ejecución.
3Jerarquía de Almacenamiento
CPU
Caché de datos e Instrucciones
Memoria Principal
Controlador de Discos
Controlador Ethernet
Registros
Discos
Hacia Servidores de Archivos
- La idea central es almacenar los datos más
frecuentemente accesados en niveles de
almacenamiento de menor capacidad (más cercanos
a la CPU) y los datos menos frecuentemente
accesados en dispositivos menos caros (pero de
mayor capacidad). - En un sistema típico
- La caché de instrucciones y los registros del
procesador mantienen instrucciones y/o datos que
actualmente están siendo accesados. - La memoria principal mantiene la porción menos
frecuentemente usada de un programa. - El disco mantiene la porción de un programa no
usada recientemente. - Servidores de archivos mantienen archivos
remotos.
4Paginación Ideas Generales
- Los sistemas de paginamiento resuelven el
problema de la asignación usando bloques de igual
tamaño de memoria física (llamados page frames,
marcos de página, o páginas físicas). - El espacio de direcciones lógico de un proceso se
subdivide en páginas virtuales. - Las páginas virtuales deben ser cargadas en las
páginas reales de memoria para lograr que un
proceso se ejecute. - Un page fault o fallo de página, se produce
cuando se hace referencia a una página que no
está cargada en ningún marco de página. - Se requieren de estrategias de reemplazo de
páginas (es decir, cuál página reemplazar, o page
out) puesto que el espacio de direcciones virtual
total de todos los procesos excede el tamaño del
almacenamiento físico (por lo tanto, algunas
páginas deben ser expulsadas de la memoria real,
es decir, hacer page out sólo sobre esa página). - Objetivo minimizar el número de fallos de
página. - Cuándo deber ser re-ingresada (page in) una
página que ha sido expulsada (page out)? - Paginamiento por demanda traer una página (page
in) cuando sea solicitada (es decir, cada vez que
se detecte un page fault). - Prefetching traer un conjunto de páginas antes
de comenzar un largo proceso de I/O, o bloqueo
por scheduling. - Clustering traer varias páginas a la vez
(paginamiento por demanda anticipada).
5La Memoria Física Mantiene Algunas Páginas de
cada Proceso.
6Paginación por demanda
- Es la técnica mas popular para implementar
memoria virtual. - Combina paginación con intercambio (swap).
- Las páginas que se encuentran en memoria física
se consideran como válidas. - Requerimientos Funcionales
- Administración de Espacio de Direcciones.
- Traducción de Direcciones.
- Administración de Memoria Física.
- Protección de Memoria.
- Memoria Compartida.
- Monitoreo de la Carga del Sistema.
- Otras Prestaciones (mapeo de archivos en memoria,
ejecución de programas en nodos remotos, enlace
dinámico a librerías compartidas, área de swap). - Reemplazo de páginas eficiente.
7Políticas de reemplazo de páginas
- Estas políticas tienen que ver en cómo el kernel
decide qué página expulsar desde memoria física. - El candidato ideal, es aquella página que nunca
será solicitada nuevamente (páginas muertas). - Si no existen páginas muertas, entonces el kernel
puede utilizar dos políticas de reemplazo local
o global. - Local la página seleccionada es alguna de las
páginas que pertenece al proceso. Son necesarias
cuando es necesario garantizar ciertos tipos de
recursos a los procesos. - Global página seleccionada puede ser de
cualquier proceso. Son más simples de implementar
y más adecuados para sistemas de tiempo
compartido. - Idealmente se desea mantener en memoria aquellas
páginas que van a ser necesitadas en el futuro.
Este conjunto de páginas se denomina Working set
o conjunto de trabajo. - No es posible determinar con antelación el
desempeño en la referencia de páginas de un
proceso, de ser así, se podría determinar con
exactitud el conjunto de trabajo de cada proceso. - De acuerdo a esto, se ha determinado
empíricamente que un proceso tiende a exhibir una
cierta localidad de referencia. - Localidad de referencia quiere decir, que un
proceso tiende a concentrar sus referencias en un
cierto subconjunto pequeño de páginas, y este
subconjunto cambia lentamente.
8Requerimientos Hardware
- MMU (Memory Management Unit) que la encontramos
integrada en el microprocesador. - La principal tarea de la MMU es traducir las
direcciones virtuales a direcciones reales. - Muchos sistemas utilizan, para la traducción,
tablas de páginas, la TLB (Translation Look-Aside
Buffer), o ambas. - Común y teóricamente, existe una tabla de páginas
para el Kernel y otra para el proceso. - La MMU divide la dirección virtual en un número
de página virtual y un offset (dentro de la
página). - La MMU puede determinar que una traducción ha
fallado por - Bound Error la dirección no cae dentro del rango
de direcciones válidas. No existe una entrada en
la tabla de página para esa página (segmentation
fault). - Error de Validación La página está marcada cómo
inválida. La página no está residente en memoria
(page fault). - Error de Protección La página no permite el tipo
de acceso deseado (intento de escribir sobre una
página de sólo lectura).
9Microprocesador Intel Pentium
10Mecanismo de Traducción con paginación
Tabla de Páginas del Proceso
Espacio de Direcciones paginado del Proceso
Memoria Real
k bits 32 - k
0
0
0
1
2
1
1
.
.
2
v
r
v
Nro. de página real o marco de página
V, W, R, D r
Dirección Virtual
V O
Atributos Traducción
offset
Nro. de página virtual
r O
Dirección Real
Offset o desplazamiento dentro de la página
11Paginación Multinivel
- Objetivo evitar tener siempre en memoria tablas
de páginas completas y muy grandes. - Solución dividir la tabla en sub-tablas y
mantener en memoria sólo las que sean necesarias
en cada momento
dirección lógica o virtual
Dirección física
Memoria Física
p2
p1
d
f
d
p1
p2
Tabla de páginas de nivel superior
Tablas de páginas de segundo nivel
12Esquema de Paginamiento de dos Niveles en Intel
13Entrada en la tabla de páginas bajo arquitectura
Intel
PFN Page Frame Number D Dirty A Accessed
(Referenced) U User (0)/Supervisor (1) W Read
(0)/Write (1) P Present (válido)
14 Uso de la TLB o memoria asociativa
Dirección Virtual
Número de Página P
Desplazamiento d
TLB
Acierto de TLB
Tag
Válido
Marco de página
d
N Página Entrada
Fallo de página
Fallo de TLB
N Marco f
d
f
Dirección Real
Memoria Principal
Memoria Secundaria
Tabla de Páginas
15Algoritmos de Reemplazo de Páginas
16Algoritmos de Reemplazo de Páginas Los mas malos
- Random Es el peor de todos los métodos, pero
fácil de implementar. - Fifo Reemplaza la página que lleva más tiempo
residente en memoria real. Fácil de implementar
puesto que la información de control es una lista
FIFO de páginas. - Consideremos un proceso con 5 páginas y la
secuencia de referencias - W 1 2 3 4 1 2 5 1 2 3 4 5
- Supongamos que existen 3 páginas reales.
-
PF9
Páginas físicas
17Optimo o ideal
- Reemplaza la página con distancia forward (en el
futuro) más grande. -
PF7
Páginas físicas
18LRU Least Recently Used
- LRU ? Least Recently Used. Reemplaza la página
con la distancia backward (en el pasado) más
grande. Es decir, la menos recientemente usada. - Consiste en reemplazar aquella página que no
halla sido referenciada en el mayor periodo. La
idea de este algoritmo es que las páginas que no
se han referenciado en un buen periodo de tiempo
difícilnmente serán referenciadas en un tiempo
cercano. - Es el mejor método que puede ser implementado
debido a que el pasado es usualmente un buen
indicador del futuro. - Esta estrategia requiere de una enorme asistencia
del hardware es decir, se puede colocar un
registro del tiempo de cada acceso en memoria
dentro de la tabla de páginas o mantener una
lista ordenada de referencias por páginas. - A veces es caro de implementar.
PF10
Páginas físicas
19El Reloj (clock)
- Es una variante de LRU y le da a cada página una
segunda oportunidad de permanecer en memoria
real. - Este algoritmo ordena las páginas reales en una
lista circular, y la recorre en el sentido
horario. - Cuando se inserta una nueva página, ésta tiene su
bit R 0. - Por cada referencia a una página con V 1,
entonces su bit R 1. - Cuando hay un page fault, se debe reemplazar la
primera página que se encuentre cuyo bit R0. - También se le conoce como el algoritmo de
reemplazo de segunda oportunidad.
20Estrategia del reloj con una manecilla
a
b
c
21Aplicación del algortimo del (1)
22Aplicación del algortimo del (2)
Total PF 10
23Algoritmo del reloj con dos manecillas
- El algoritmo de aquí es igual al anterior solo
que existen dos punteros, uno va delante del
otro. - El primer puntero verifica el bit R de la página,
si éste es igual a 1 se pone en 0, luego cuando
pase el segundo puntero verifica el estado del
bit R, si es 0 entonces intercambia la página
sino lo pone en 0 y apunta a siguiente página. - El objetivo de este algoritmo es privilegiar a
aquellas páginas mas referenciadas para que se
queden en memoria. - Solaris utiliza este algoritmo.
24El reloj con dos manecillas
25Localidad de Referencias
- Se da un fenómeno particular en los procesos en
la cual éstos usan sólo un conjunto limitado de
sus páginas durante un período de tiempo
particular de su ejecución. - Este conjunto de páginas se denomina localidad
del proceso durante ese tiempo. - Un proceso tiene buena localidad si sus
referencias se concentran siempre en el mismo
conjunto de páginas. - Si su localidad es mala el proceso tenderá a
sufrir de muchos fallos de páginas.
26Thrashing o Hiperpaginación
- Concepto decimos que un sistema está en
thrashing cuando pasa más tiempo paginando que
ejecutando procesos. - Si el número de marcos disponibles es inferior al
tamaño del conjunto de trabajo, se producirán
frecuentes fallos de página. - Un proceso hiperpaginado pasa más tiempo
intercambiando páginas que ejecutándose, y puedo
robar páginas a otros procesos, provocando
también su hiperpaginación. - Como consecuencia, hay una baja importante de
performance del sistema, por lo tanto podría
provocar un colapso del rendimiento, debido a los
excesivos page faults. - El Thrashing está relacionado directamente con el
grado de la multiprogramación. - En general, reduciendo el nivel de la
multiprogramación se alivia este problema. - El demonio de páginas (pager, con PID 2), está a
cargo de la paginación y debe mantener un
conjunto de páginas físicas libres para evitar el
thrashing. - La hiperpaginación significa simplemente que el
proceso exhibe una mala localidad.
27 Mal uso de una estrucura de datos
include ltstdio.hgt include lterrno.hgt define
NUM_PAGES 1024 //número de páginas int
matrizNUM_PAGES1024 main() int i,
j for ( i0 i lt 300 i ) if (
fork() 0 ) proceso_hijo() wait(0)
proceso_hijo() int i,j for ( j0
j lt 1024 j ) for ( i0 i lt NUM_PAGES
i ) matrizij rand() 100
exit(0)
Peligroso, hiperpaginación!!
28Leyendo la matriz por columnas Situación de
hiperpaginación.
- Cada fila de la matriz ocupa una página.
- El acceso es por columnas.
- Cada número que accesa lo hará a través
- de una página distinta.
- Alto riesgo de hiperpaginación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
. . .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
29Situación normal
include ltstdio.hgt include lterrno.hgt define
NUM_PAGES 1024 //número de páginas int
matrizNUM_PAGES1024 main() int i,
j for ( i0 i lt 300 i ) if (
fork() 0 ) proceso_hijo() wait(0)
proceso_hijo() int i,j for ( i0
i lt NUM_PAGES i ) for (j0 j lt 1024
j) matrizij rand() 100
exit(0)
30Leyendo la matriz por columnas Situación de
hiperpaginación.
- Cada fila de la matriz ocupa una página.
- El acceso es por filas.
- Cada número que accesa dentro de una fila
- lo hará a través de la misma página.
- Se minimiza el riesgo de hiperpaginación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
. . .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
31Working Set o Conjunto de Trabajo
- Conjunto de Tabajo (WS) Es el conjunto de
páginas que un proceso requiere en un intervalo
de tiempo de su ejecución. - Informalmente, el working set de un proceso en un
momento dado se refiere a la colección más
pequeña de sus páginas que deben residir en
memoria real para asegurar algún nivel de
eficiencia aceptable. - En el modelo del working set se permite la
ejecución de un proceso si su working set se
encuentra completamente en la memoria. Una página
no puede ser removida (desde memoria) si ésta es
un miembro del working set del proceso. Es típico
encontrar que el tamaño de la ventana es de 1
seg. (pero de tiempo de virtual de ejecución). - El concepto de conjunto de trabajo puede ser
utilizado por el algoritmo de reemplazo de
páginas, pues a parte de chequear, por ejemplo,
el bit R se puede ver si esa página pertenece o
no al conjunto de trabajo.
32La estrategia del Working Set
- Se define WSP(?t) como el conjunto de páginas
virtuales del proceso P que han sido accesadas en
los últimos ?t segundos de tiempo virtual de P. - La estrategia del working-set calcula para P el
valor WSP(?t) cada vez que P completa ?t
segundos de uso de la CPU (tiempo virtual). Esto
se hace de la siguiente forma - Consultar el bit R de cada página q residente en
memoria real de P. - Si el bit R de q está en 1, la página está en el
WS y se coloca el bit en 0. - Sino, la página no ha sido accesada desde hace ?t
segundos y por lo tanto no pertenece al WS de P.
La página se agrega al conjunto C que agrupa las
páginas candidatas a ser reemplazadas, de todos
lo procesos. - Cuando ocurre un page-fault se lleva a cabo lo
siguiente - Mientras C no esté vacío,
- (a) Sea q una página en C.
- (b) Extraer q de C.
- (c) Si el bit R de q está en 0, se retorna q como
la página elegida para ser reemplazada. - (d) Si el bit R está en 1, quiere decir que esa
página fue accesada a pesar de no estar en el
WS del proceso, por lo que se descarta y se
contínua la búsqueda con otra página. - El conjunto C está vacío por lo que hay que hacer
swapping. - Si una página pasa al conjunto C, el tiempo
transcurrido desde su último acceso está
comprendido entre ?t y 2?t.
33Tamaño del Working Set
- El tamaño del WS de un proceso depende de tres
factores - La localidad de los accesos que haga el proceso a
la memoria. Mientras mejor sea la localidad menor
será el tamaño del working-set . Este es un
factor que depende únicamente de las
características del proceso. - El tiempo ?t entre cálculos del working-set.
Mientras mayor sea esta cifra, mayor será la
probabilidad de que una página haya sido accesada
y por lo tanto mayor será el working-set. Este
factor sí debe ser controlado por el scheduler de
páginas del sistema operativo. - El tamaño de la página. En la práctica, el tamaño
de una página es fijo para una arquitectura. Si
fuese posible reducirlo a la mitad, el tamaño del
WS en número de páginas crecería a un poco menos
del doble. - Por lo tanto el único factor que puede controlar
el scheduler de páginas es ?t. Este valor se
hace variar en forma independiente para cada
proceso en función del sobrecosto máximo tolerado
para el paginamiento en demanda.
34Resumen El potencial de la paginación por demanda
- Extensión automática de la pila en caso de
desborde. - Extensión explícita de los datos, es decir del
segmento de datos del proceso (usando primitiva
sbrk(int)). - Implementación de fork() es más eficiente.
- Utiliza técnica copy-on-write, lo que significa
que no copia automáticamente el segmento de datos
y el pila. - El hijo recibe una copia del mapa de traducción
de direcciones del padre y comparte esas páginas
como sólo lectura. - Esas páginas son marcadas como copy-on-write.
- Si el padre o el hijo tratan de modificar una
página, entonces se produce un page-fault (porque
las páginas están marcadas como sólo lectura). - El sistema crea un copia de escritura sólo de las
páginas a modificar, y no hace una copia completa
del epacio de direcciones. - Swapping de procesos, a cargo del proceso swapper
(con PID 0).
35Los threads y los Fallos de Páginas
- Dependiendo del modelo que utilice un programa
One-To-One, Many-To-One o Many-To-Many. - Para el Kernel de Solaris son los LPWs quienes
producen PF por separado. - En Linux, también los threads pueden producir PF
en forma separada. - Windows NT sucede algo similar a Linux.