Transcript Page frame

Page Replacement Algorithms
Algoritmos de Substitucion de
Paginas de Memoria.
Terminologia:



Memory page: Segmento de memoria
virtual.
Page frame: Segmento de memoria
real.
Page fault: Error que ocurre cuando
un programa intenta utilizar un
“memory page” que no se encuentra
en un “page frame”.
¿Por que hay que hacer
“paging”?





Los programas necesitan que todas las
pagina de memoria que esta utilizando
esten en memoria real.
Los programas ven “virtual memory”.
La memoria virtual es inlimitada.
La memoria real no lo es.
No es posible tener todas las paginas de
memoria en memoria real al mismo tiempo.
Solución:

Cada vez que ocurre un “page fault”,
el OS remueve una pagina de
memoria real y la sustituye con la
pagina de memoria que el programa
necesitaba.
¿Que pasa con la pagina
removida?


Si la pagina había sido modificada, es
necesario almacenarla en el disco
antes de sustituirla.
Si la pagina no había sido modificada,
se puede sustituir sin problemas.
¿Eso es todo? ¿Cuál es el
problema?


Si, el algoritmo básico de sustitución
de paginas es simple.
El problema es determinar que pagina
removemos de la memoria real.
Solución:

Muchos diferentes algoritmos que intentan
solucionar el problema. Entre ellos:










Optimal.
Not Recently Used.
FIFO
Second Chance
Clock
Least Recently Used
Not Frequently Used
Aging
Working Set
Working Set + Clock
The Optimal Page
Replacement Algorithm


Observación: Algunas paginas van a
ser utilizadas por el programa muy
pronto, otras mas tarde y otras mucho
mas tarde.
Facil! Remueve la ultima pagina que
vaya a ser utilizada por el programa.
Un pequeño problema:

Es imposible saber de ante mano cual
va a ser la ultima pagina en ser
utilizada por el programa.
¿Que podemos hacer?


Podemos correr el programa, observar
que paginas busca y utilizar esta
información para optimizar futuras
ejecuciones.
Podemos utilizar este algoritmo para
comparar el rendimiento de otros
algoritmos.
Estrategias generales.

Bits de status:




El bit R es marcado si la pagina fue
“referenciada”.
El bit M es marcado si la pagina fue modificada.
Estos bits pueden estar implementados en
hardware o simulados en software por el
OS.
R y M son utilizados por diferentes
algoritmos para seleccionar la pagina a ser
removida.
The “Not Recently Used” Page
Replacement Algorithm

Estrategia: Se clasifican las paginas
dependiendo del valor d R y M





Class 0: “not referenced, not modified”
Class 1: “not referenced, modified”
Class 2: “referenced, not modified”
Class 3: “referenced, modified”
Periodicamente el “clock interrupt” limpia el
bit R para distinguir las paginas que no han
sido referenciadas recientemente.
¿Como funciona?

Se una pagina al azar de la clase mas
baja.

Este algoritmo es facil de entender,
facil de implementar eficientemente
con un rendiemiento adecuado.
The First-in, First-out Page
Replacement Algorithm

Estrategia: El OS guarda una lista de
todas las paginas en memoria, con las
paginas mas viejas al principio y las
mas recientes al final.
¿Como funciona?

Cuando ocurre un “page fault”, la
primera pagina de la lista es removida
y se añade la pagina nueva al final de
las lista

FIFO es su forma mas pura casi nunca
se utiliza.
The Second Chance Page
Replacement Algorithm




Variacion del algoritmo FIFO.
Se verifica el bit R de la pagina mas
vieja (la primera en la lista).
Si R = 0, se remueve la pagina,
normalmente.
Si R=1, se limpia el bit R, se mueve la
pagina al final de la lista, y se busca la
proxima pagina vieja que tenga R=0.
The Clock Page Replacement
Algorithm



Variacion del algoritmo “Second
Chance”.
En lugar de usar una lista, se usa una
lista circular y se guarda un pointer a
la pagina mas vieja.
En lugar de mover paginas del
principio al final, se mueve el pointer.
The “Least Recently Used”
Page Replacement Algorithm


Observación: Las paginas que fueron
usadas recientemente, probablemente
sean utilizadas pronto.
Estrategia: Remueve la pagina que
mas tiempo lleva sin ser utilizada.
Problema:


Es necesario guardar un link list de
todas las paginas en memoria y
actualizarla cada vez que se
referencia una pagina de memoria.
Sin embargo, es posible implementar
este algoritmo con hardware
especializado.
The “Not Frecuently Used”
Page Replacement Algorithm


Implementacion en software de
algoritmo LRU.
Utiliza un counter que se incrementa
cada vez que la pagina es
referenciada.
The Aging Page Replacement
Algorithm

Variacion del algoritmo NFU que
realiza shifts en el counter para
“olvidar” referencias que hayan
ocurrido hace mucho tiempo.
Terminología Adicional




“demand paging”: buscar las paginas y
guardarlas en memoria real solo cuando el
programa las busca.
“virtual time”: tiempo transcurrido desde
que el proceso comenzo a ejecutar.
“working set” : colleccion de paginas que
un proceso esta utilizando. Se define a base
del “virtual time”
“trashing”: proceso que causa “page
faults” frecuentemente.
The Working Set Page
Replacement Algorithm


Algoritmo que intenta mantener en
memoria el “working set” the un
proceso todo el tiempo.
Cuando hay que remover una pagina,
se remueve una que no pertenesca al
“working set”.
The “Working Set + Clock”
Page Replacement Algorithm


Variacion del algoritmo “Working Set”
que utiliza la idea del algoritmo de
“Clock”.
En lugar de leer toda la tabla de
memoria para localizar paginas a ser
removidas, se utiliza un pointer que se
mueve cada vez que se busca una
pagina candidata para ser removida.
Modelaje de Algoritmos de
Sustitucion de Paginas.

Anomalía de Belady


Algunos algoritmos causan mas “page faults”
mientras mas “page frames” estan disponible.
Stack algorithms

Algoritmos que cuando son re-ejecutados con
mas “page frames” (m+1), obtienen los mismos
“pages” que obtuvieron con menos “page
frames” (m) mas “pages” adicionales.