Sie sind auf Seite 1von 29

Sistemas de Operación

Gestión de Memoria
Prof. Homer Garcia
AGENDA
1. Algoritmos de Reemplazo de Páginas
Óptimo
No usadas recientemente (NRU)
FIFO
Segunda Oportunidad (Second Chance)
Reloj (Clock)
Menos usadas recientemente (LRU)
Envejecimiento (Aging)
Conjunto de Trabajo (Working Set) ➔ Clase Estudiantes
Reloj Conjunto de Trabajo (WSClock)
Fallo de Página
Al ocurrir el Trap ➔ SO
primero verifica que la
dirección de memoria
solicitada sea valida
Si la referencia no es
válida ➔ Proceso
finaliza
De lo contrario ➔ La
página debe ser
localizada y se debe
encontrar un marco
libre, posiblemente de
una lista de marcos
libres o producto de un
Reemplazo de Página
Algoritmos de reemplazo de páginas
• Fallo de página ➔ el SO ➔ Si no hay marcos libres ➔
Elige una página para desalojarla de memoria y hace
espacio para la página entrante

• Si página a eliminar se modificó mientras estaba en


memoria ➔ se escribe en disco ➔ actualiza copia del
mismo

• Si página no se ha modificado (Ej. texto del proceso)


➔ copia ya está actualizada y no es necesario
reescribirla

• No se quiere desalojar páginas que son


frecuentemente usadas
Algoritmos de reemplazo de páginas
• Problema tipo Reemplazo de Página ➔ ocurre en
otras áreas del diseño de computadoras ➔ Ej. Memoria
Caché

• Fallo de caché ➔ bloques mas pequeños de memoria


muy rápida ➔ Llenos ➔ elegir cual bloque de caché
eliminar

• Diferencias ➔ escala de tiempo menor (nseg. Vs mseg)


y fallos de caché se satisfacen desde memoria principal

• Otro Ej. ➔ Servidor Web ➔ mantiene páginas de uso


frecuente en caché de memoria principal ➔ cuando se
llena ➔ Reemplazo
Algoritmos de reemplazo de páginas
• Óptimo
• No usadas recientemente (Not Recently Used
NRU)
• FIFO
• Segunda Oportunidad (Second chance)
• Reloj (Clock)
• Menos usadas recientemente (Least Recently
Used LRU) ➔ Envejecimiento
• Conjunto de trabajo (Working set)
• WSClock
Reemplazo de Páginas Óptimo
• Cada página se pudiera etiquetar ➔ Con el
número de instrucciones que se ejecutarán
antes de que se referencie por primera vez
• Se elimina aquella página que no se usará antes
del tiempo mas largo ➔ La de etiqueta mayor
• No es posible implementar ➔ a menos que se
conozca cuando las páginas serán referenciadas
(bola de cristal)
• Se usa como referencia ideal
No usadas recientemente (Not Recently Used
NRU)
• Usa los bits R (Referenciada) y M
(Modificada)

• Estos bits se actualizan en cada referencia


a la página en memoria

• El algoritmo borra en cada interrupción del


reloj el bit R ➔ para diferenciar las páginas
a las que no se ha hecho referencia
recientemente, de las que si
No usadas recientemente (Not Recently Used
NRU)
• Fallo de Página ➔ el SO inspecciona todas las páginas
en memoria y las divide en 4 categorias:
• Clase 0: no referenciada, no modificada
• Clase 1: no referenciada, modificada
• Clase 2: referenciada, no modificada
• Clase 3: referenciada, modificada
• Elimina al azar ➔ una página de la clase de menor
numeración
• Es mejor eliminar una página modificada no referenciada
en al menos un pulso del reloj ➔ que una página limpia de
uso frecuente
FIFO
• Mantiene lista ordenada por tiempo ➔ última
página en arribar a memoria al final de la lista

• Se elimina la mas vieja ➔ la primera en la


lista

• Fácil de implementar

• Lo malo ➔ el más viejo puede ser el que mas


frecuentemente se usa! ➔ Ninguna información
de uso (referencia) es incluida en este algoritmo
FIFO ➔ No se usa en su forma pura
Segunda Oportunidad (Second Chance)

• Páginas ➔ en orden FIFO según su tiempo de arribo


• Pero se examina el bit R ➔ Si R=0, se elimina ➔ Si R=1, se
coloca al final de la lista (t_arribo se actualiza) y R=0
• Si R=1 para todas las páginas ➔ Se convierte en FIFO puro
• Algoritmo ineficiente ➔ mueve páginas constantemente en su
lista
Algoritmo
Reloj

• Los marcos de páginas se mantienen en una lista circular


• Si R=1, se hace R=0 y la manecilla avanza a la siguiente
página hasta encontrar un R=0 para desalojar página
• Es más rápido ➔ no manipula todos los elementos de la lista
Reloj
Menos usada recientemente (Least Recently
Used LRU)
• Descartar la página que no se haya
referenciado a memoria durante el mayor
tiempo
• Asociando contadores a cada página y
actualizandolos en cada referencia de memoria
➔ Lista enlazada ➔ con la usada mas
recientemente al frente y la de uso menos
reciente al final ➔ Consume mucho tiempo
• Implementación con Hardware especial
LRU con un arreglo de hardware
• Arreglo de nxn ➔ n marcos de páginas
➔ Cuando se hace referencia a la página k,
se coloca 1’s en la fila k y luego 0’s en la
columna k
• Fila con el menor valor ➔ Página LRU ➔
se desaloja
• Implementación fácil en hardware ➔ pocas
máquinas tienen el hardware requerido
LRU en hardware

LRU ejemplo con 4 marcos de páginas y referencias a


páginas en el siguiente orden: 0, 1, 2, 3, 2, 1, 0, 3, 2, 3
Simulación de LRU en software
• Algoritmo ➔ Envejecimiento (Aging)
• Contador de software asociado a cada página ➔
inicialmente = 0
• En cada interrupción del reloj ➔ SO inspecciona páginas
en memoria
• Cada contador se desplaza un bit a la derecha
• Se agrega el bit R, al bit mas a la izquierda
• Fallo de Página ➔ Reemplazo ➔ se elimina la página
con el contador menor
• Tamaño del contador ➔ Determina la historia que se
considera
LRU en software ➔ Envejecimiento

Ej. Seis páginas para 5 pulsos de reloj (a, b, c, d ,e)


Modelo Conjunto de Trabajo (Working Set Model)
• Forma pura de paginación ➔ procesos inician sin ninguna
de sus páginas en memoria ➔ Ejecución de 1era instrucción
➔ Fallos de páginas hasta que todas las páginas que
necesita el proceso para correr en ese momento (Conjunto
de Trabajo) están en memoria ➔ Paginación por
Demanda
• En cualquier fase de ejecución un Proceso hace referencia
sólo a una fracción relativamente pequeña de sus páginas
➔ Principio de Localidad o Localidad de Referencia
• Si Conjunto de Trabajo está en memoria ➔ Proceso se
ejecuta sin muchos fallos de página hasta próxima fase de
ejecución
Modelo Conjunto de Trabajo (Working Set Model)
• Si la memoria disponible NO puede contener el
conjunto de trabajo ➔ Proceso producirá muchos fallos
de página cada pocas instrucciones ➔ Sobrepaginación
(Trashing) ➔ Baja performace ➔ Ejecución Lenta
• En un sistema de Multiprogramación los procesos se
mueven con frecuencia a disco para que otros procesos
puedan usar la CPU ➔ Carga del conjunto de trabajo
• Muchos sistemas de Paginación llevan la cuenta del
conjunto de trabajo de cada proceso y se aseguran de
tenerlo en memoria antes de que el proceso se ejecute ➔
Modelo del Conjunto de Trabajo (Pre-paginación)
• Conjunto de trabajo de cada proceso cambia en el
tiempo
Comportamiento del Conjunto de Trabajo como
una función de k

Programas no hacen referencia a su espacio de direcciones de manera


uniforme ➔ Principio de Localidad
Conjunto de trabajo ➔ es el número de páginas en el tiempo t utilizadas
por las k referencias de memoria más recientes
w(k,t) ➔ tamaño del conjunto de trabajo en el tiempo t
Comportamiento del Conjunto de Trabajo como
una función de k

w(k,t) ➔ es monotónicamente no decreciente ➔ su límite a medida que


crece k es finito ➔ debido a que un programa no puede hacer referencia a
mas páginas de las que contiene su espacio de direcciones
Debido a este comportamiento asintótico ➔ el conjunto de trabajo no
cambia rapidamente para un amplio rango de valores de k
Reemplazo de Páginas con Conjunto de Trabajo
• Debido al comportamiento asintótico del WS ➔ es
posible hacer una buena predicción de cuales
páginas se necesitarán cuando el proceso se reinicie
➔ En base al conjunto de trabajo que tenía cuando
se detuvo
• La prepaginación consiste en cargar en memoria
estas páginas antes que el proceso de reanude
• Para implementar este modelo el SO lleva la cuenta
de cuáles páginas están en el conjunto de trabajo
• Con esta información se puede implementar un
algoritmo de reemplazo de páginas
Cómo implementar el modelo de conjunto de
trabajo
• Cuando ocurre fallo de páginas ➔ Se desaloja
página que no pertenezca al conjunto de
trabajo (si la hay)
• Es necesario escoger el valor de k
referencias a memoria recientes
• Podría mantenerse un registro de páginas en
memoria en cada referencia ➔ cada k
referencias resulta en un conjunto de trabajo ➔
muy costoso de implementar
Cómo implementar el modelo de conjunto de
trabajo
• Mejor usar tiempo virtual en lugar de k
• Mantener el registro de las últimas k páginas
referenciadas durante un periodo t de ejecución en la
CPU
• Tiempo Virtual de un proceso ➔ Tiempo de CPU
que ha usado desde que arrancó
• Es una medidad de cuanto trabajo ha hecho
• Con esta aproximación ➔ Conjunto de Trabajo de
un Proceso es el conjunto de páginas
referenciadas a memoria durante los últimos t seg
de tiempo virtual
Reemplazo de Páginas Conjunto de Trabajo

En cada interrupción del reloj ➔ SW borra R y HW setea bit R y M


Ante cada fallo de página:
Edad (age) = Tiempo virtual actual – Tiempo de ultimo uso (Current virtual time – Time of last
use)
Si todas las Pág. R == 0 y Edad <= t, se elimina la de mayor edad (menor tiempo de último uso)
Si todas las Pág. R == 1, se elimina al azar, preferentemente una página limpia
Reemplazo de Páginas Conjunto de Trabajo

• Lo malo ➔ Se debe explorar toda la


tabla de páginas en cada fallo de
página para ubicar la página a
desalojar
• Solución ➔ Usar la idea del
algoritmo de Reloj con este algoritmo
del Conjunto de Trabajo
Algoritmo Reloj Conjunto de Trabajo (WSClock)

Lista circular con Marcos de Páginas


(a) y (b) caso R == 1 ➔ no es candidata a desalojar, R = 0, manecilla avanza

(c) y (d) caso R == 0 ➔ y Edad > t y pág. Limpia. Se reemplaza con nueva pág
Algoritmo Reloj Conjunto de Trabajo (WSClock)
En este último caso (R=0 y Edad > t ), ¿Qué pasa si pág. Sucia?
Podría haber una página antigua y limpia mas adelante ➔ No se
reclama inmediatamente (se evita una conmutación de procesos) ➔ se
planifica la escritura en disco ➔ la manecilla avanza y se aplica el
algoritmo a la siguiente página
¿Qué ocurre si la manecilla llega a su punto inicial?
1. Si se ha planificado al menos una escritura en disco ➔ se
mantiene buscando una página limpia, ya que en algún momento se
completará alguna escritura y su página se marcará como limpia
2. No se ha planificado ninguna escritura ➔ Todas las páginas están
en el WS ➔ se desaloja cualquier página limpia, si no hay limpias, se
selecciona la actual y se reescribe en disco