2. Fundamentos
Solo parte del programa necesita estar en
memoria para su ejecución.
Espacio de direcciones lógicas puede ser más
grande que el espacio físico.
Hace falta sacar páginas de memoria a área de
swap.
Memoria Virtual puede ser implementado por:
– Demanda de páginas.
– Demanda de segmentos.
3. Paginación por demanda
Se llevan páginas a memoria sólo cuando se
necesiten.
Ventajas
– menos memoria necesitada por proceso
– menos tiempo de I/O
– más proceso atendidos
Una página debe ser referenciada para ser usada
– si la referencia es inválida entonces abort
– si no está en memoria, buscarla y llevarla a
memoria
5. Bit de Valido/Invalido
Cada entrada de la tabla de página tiene asociado
el bit de valido/invalido
– bit = 1 entonces página en memoria.
– bit = 0 entonces página NO en memoria.
Inicialmente todas las entrada tienen su bit
inicializado en 0.
Si durante la translación de dirección el bit de
valido/invalido esta apagado (0) entonces ocurre
un fallo de página o page fault.
7. Fallo de página
La primera referencia causará un fallo de página
Chequea si la referencia es válida o no
Si es válida y la página no está en memoria se
debe traer.
Encontrar frame libre
Ordenar al disco leer y llevar la página al frame
escogido.
Actualizar la tabla de páginas, bit V=1.
Reiniciar la instrucción que causó el fallo
8. Reemplazo de Página
Que sucede si no hay frame libre?
– Encontrar un frame en memoria que pueda
sacarse a área de swap (disco).
– Hace falta un algoritmo para reemplazo de páginas
– Queremos un algoritmo que tenga buen
desempeño, es decir un algoritmo que resulte en
el menor número de fallos de páginas
9. Tiempo de Acceso Efectivo
Sea p la probabilidad de fallo de página.
PF denota page fault
TAE = (1-p)Tacc mem + p( Tiempo servicio del PF )
10. Reemplazo de Página
Si no hay frames libres la rutina de servicio del
fallo de página debe ser modificada en forma tal
que incluya reemplazo de página.
Dicha modificación debe ser tal que no aumente
en promedio el tiempo de atención de un page
fault.
Usar bit de modificado o bit de dirty para reducir
el overhead de transferencia de la página
Sólo hace falta escribir a disco aquellas páginas
que han sido modificada.
11. Algoritmos de Reemplazo
Queremos algoritmos con baja tasa de Page fault
Cómo evaluamos los algoritmos?
– Los algoritmos se corren con un particular string
de referencia a memoria y contamos el número de
page fault que provoca.
String de referencia a usar como ejemplo
– 123412512345
13. Algoritmos de Reemplazo
FIFO (First-In-First-Out)
• 4 frames disponibles
• string de referencia : 1 2 3 4 1 2 5 1 2 3 4 5
1
2
3
4
4
5
1
2
3
4
4
5
2
= 10 PF
Anomalia de Balady´s
Mas frames no implica menos Fallos de Páginas.
14. Algoritmos de Reemplazo
Óptimo
Reemplazar la página que no se usará por largo
período de tiempo.
4 frames disponibles
string de referencia : 1 2 3 4 1 2 5 1 2 3 4 5
1
2
3
4
4
4
2
3
5
2
= 6 PF
15. Algoritmos de Reemplazo
Optimo
Cómo se puede conocer dicha información?
– No se puede conocer. El SO no tiene forma de
conocer los eventos futuros.
Por que se estudia?
– Como medida de referencia o comparación con los
otros algoritmos.
16. Algoritmos de Reemplazo
LRU
Reemplazar la página que no ha sido referenciada
por más largo tiempo.
4 frames disponibles
string de referencia : 1 2 3 4 1 2 5 1 2 3 4 5
1
2
3
4
4
1
2
5
3
2
5
2
4
3
2
= 8 PF
17. LRU implementación
Contador: cada página tiene un contador. Cada
vez que la página es referenciada, se copia el
clock en el contador.
Cuando se necesita buscar una página para
reemplazo, se ven los contadores para determinar
la que tiene el contador mas bajo.
Desventaja: overhead.
18. LRU implementación
Stack: lleva en la pila el número de la página
referenciada
– La página referenciada es movida al tope de la pila
– Puede ser implementada por medio de una lista
doblemente enlazada.
– Cada actualización del tope requiere en promedio
la actualización de 6 pointers
– La página a reemplazar está en el bottom de la
pila.
19. LRU implementación
Implementación de LRU necesita gran apoyo del
hardware.
Pocos sistemas proveen tal soporte
Otros algoritmos deben ser usados.
Muchos sistemas soportan el bit de referencia.
Asociado a cada página, el bit de referencia es
actualizado por hardware al momento en que la
página es referenciada.
Instrucciones especiales para el manejo del bit de
referencia.
20. Aproximación a LRU
Bit de Referencia
– A cada página se le asocia un bit, inicializado en 0
– Cuando la página es referenciada el bit es
colocado en 1.
– Reemplazar una página con bit en 0.
– Usar 8-bits
guardar historia de los accesos a cada página
hardware actualiza los bits.
– No garantiza páginas únicas
sol: sacarlas todas.
FIFO
21. Second Chance
Second Chance
– Es básicamente el FIFO pero con bit de referencia
FIFO
me dá la página posible a reemplazar
Examinamos el bit de referencia
– Si bit R = 1 entonces
se limpia el bit de referencia
se deja la página en memoria, segundo chance
se busca la siguiente víctima. Bajo las mismas reglas
que antes.
– Si bit R = 0 entonces la página es la victima
Si
llegamos a la última página en la revisión,
continuamos la revisión por la primera.
22. Otros Algoritmos
Algoritmos que usan contador con el número de
referencias a cada página
– LFU (Least Frequently Used)
reemplaza
la página con el contador mas pequeño
Para solventar la situación de tener contadores altos y no
se está usando la página, se usa decrementar a
intervalos regulares los contadores de páginas
– MFU (Most Frequently Used)
reemplaza
la página con el contador mas grande. Se
basa en la hipótesis de que la página con el contador
mas bajo son las que todavía no han sido usadas.
23. Clases de Páginas
Se define clases de páginas
– Clase Características
0
(0,0) no referenciada, no modificada
1
(0,1) no referenciada, modificada
2
(1,0) referenciada, no modificada
3
(1,1) referenciada, modificada
– Se reemplaza aquella página que pertenezca a la
menor clase. Si existen muchas, se elige alguna
política de selección. Ej. FIFO, Random, etc.
24. Asignación de Frames
Como distribuir los frames libres a los procesos?
– Asignación fija
– Asignación por prioridades.
Cada proceso necesita un número mínimo de
frames para su ejecución.
El mínimo número de frames a asignar está
determinado por el set de instrucciones de la
arquitectura.
25. Asignación
Equitativa: si M frames y N procesos el número de
frames asignados es igual a M/N.
Proporcional: se le asigna una cantidad de frames
que es proporcional a su tamaño.
– si tamaño del proceso Pi
– S = sumatoria(si)
– m = número total de frames.
#fi = ( si / S )*m
26. Asignación
Se puede pensar en un esquema como el
proporcional pero en lugar de usar el tamaño se
toma en cuenta la prioridad.
Otro enfoque para cambiar el número de frames
de un proceso es:
– Cuando un PF:
usar
para reemplazo uno de los frames del proceso
usar para reemplazo frames de procesos con prioridad
menor que la del mismo.
27. Asignación Global/local
Reemplazo Global: el frame a reemplazar es
tomado del conjunto de frames que se tiene. Un
proceso puede tener frames de otros procesos.
Reemplazo Local: solo se pueden seleccionar
frames de los propios del procesos.
28. Thrashing
Muy Alta actividad de paginación. El proceso
emplea mas tiempo en estar paginandose que
ejecutandose.
Esto conduce a:
– bajo utilización de CPU
– SO concluye que debe aumentar su nivel de
multiprogramación.
– SO suma otro proceso al sistema
Thrashing es equivalente a tener el proceso
ocupado en swap in y swap out
30. Working Set
Working Set está basado en el modelo de
localidad.
Localidad: conjunto de páginas las cuales son
usadas juntas. Localidad está definida por la
estructura del programa y datos.
Definamos un tamaño de ventana donde se
encuentra un número fijo de referencias a páginas
y llamemolos Delta
∆
31. Working Set
Working set es el número total de páginas
referenciadas en la ventana mas reciente.
Si la ventana es muy pequeña no abarcará la
entera localidad.
Si la ventana es muy grande contendrá mas de
una localidad.
Si la ventana tiende a infinito tendrá todo el
programa.
Si el total de marcos demandados es superior al
número total de marcos disponibles entonces
thrashing
32. Working Set
Si el número total de frames demandados es
mayor que el total de frames, entonces un
proceso debe ser suspendido.
33. Frecuencia de Page Fault
Una forma de controlar thrashing es por medio
del PFF (Page Fault Frequency).
Siempre que la PFF se eleve por encima de un
umbral, toda página referenciada que no está en
memoria es lleva a memoria SIN reemplazo de
alguna página. Esto implica incrementa sus
frames.
Si PPF cae por debajo de un umbral, aquellos
frames que no han sido referenciado desde la
última ocurrencia de PF, son liberados. Esto
implica decrece sus frames.
34. Otras Consideraciones
Prepaging : búsqueda anticipada de páginas.
Tiene su justificación cuando el costo del
prepaging es menor que lo que cuesta servir el
PF. correspondiente.
Selección Tamaño de la página
– Como seleccionar el tamaño?
Tamaño
de la tabla de páginas
Utilización mejor de la memoria (fragmentación interna)
tiempo requerido para leer y escribir páginas
reducir tasa de fallo de páginas (localidad)
35. Tamaño de Página
Paginas pequeñas:
– Menor fragmentación interna.
– Mas páginas por procesos.
– Largas tablas de páginas
– Largas porciones de la tabla de páginas en
memoria virtual
– Muchas páginas en memoria principal
– Refleja la localidad.
36. Tamaño de Página
Paginas grandes:
– Memoria secundaria diseñada para transferencia
eficiente de grandes bloques de datos.
– Mas de una localidad por página.
– Menor número de fallos de páginas.
– Aumenta la fragmentación
37. Otras Consideraciones
Selección cuidadosa de las estructuras de datos y
programación puede incrementar localidad, lo que
implica disminuir la tasa de PF y el número de
páginas en el working set.
I/o Interlock
– algunas veces es necesario anclar frames a
memoria. Ej I/O sobre memoria usuario.
– Lockbit se le asocia al frame.