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.