250 likes | 418 Views
Page Replacement Algorithms. Algoritmos de Substitucion de Paginas de Memoria. Terminologia: . Memory page: Segmento de memoria virtual. Page frame: Segmento de memoria real.
E N D
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.