Lección
La teoría — Reemplazo de páginas: FIFO, LRU y la política óptima
La memoria se divide en marcos de igual tamaño, y los datos de un programa, en páginas de ese mismo tamaño. Así, cualquier página cabe en cualquier marco. La cadena de referencias es la secuencia de páginas a las que accede un programa. Una referencia a una página que no está en memoria produce un fallo de página: la página se carga y, si no queda ningún marco libre, una política de reemplazo elige qué página retirar. Para una cadena dada, una política presenta la anomalía de Bélády si produce más fallos con F + 1 marcos que con F.
Qué significa cada símbolo
F- número de marcos
n- número de páginas del bucle (problema resuelto)
r- número de veces que se repite el bucle
- Supone
- Se usa paginación por demanda: una página solo se carga cuando se solicita. La memoria empieza vacía, así que la primera referencia a cada página produce un fallo con cualquier política. Si varias páginas no vuelven a necesitarse, esta versión de OPT retira la de menor número. Cada referencia corresponde a una página; no se distingue entre lecturas y escrituras, y retirar una página no tiene coste. LRU exacto necesita registrar cuándo se produce cada acceso a memoria, algo demasiado costoso. Por eso, los núcleos de los sistemas operativos usan aproximaciones con un bit de referencia por página; el algoritmo del reloj es la más conocida.
Problema resuelto al detalle
-
Cuándo LRU falla en todas las referencias 5 pasos
Pulsa Bucle, OPT e indica en qué pasos se producen sus 7 fallos. Después, considera un programa que suma los elementos de un vector que ocupa 100 páginas, repitiendo el recorrido 1.000 veces con 99 marcos. ¿Cuántos fallos produce LRU? ¿Y OPT? ¿Cuántos habría con un marco número 100?
Abre este problema en la herramienta
-
En el ejemplo de la página, las primeras 5 referencias producen fallos: 4 llenan los marcos vacíos y la quinta obliga a retirar una página. Después, los fallos se producen en los pasos 9 y 13, separados por 4 referencias: 5 + 2 = 7.
-
Con n − 1 marcos y un bucle de n páginas, siempre hay exactamente una página del bucle fuera de la memoria. Cuando se produce un fallo, la página que tardará más en volver a necesitarse es la que acabas de leer: le tocará de nuevo dentro de n − 1 referencias. En la última vuelta, algunas páginas ya no volverán a necesitarse y OPT puede retirar una de ellas. Al retirar la página recién leída, las siguientes n − 2 referencias encuentran sus páginas en memoria. Por eso, el siguiente fallo llega n − 1 referencias después.
-
LRU con 99 marcos: cuando la página p produce un fallo, todas las demás páginas están en los marcos. La que lleva más tiempo sin usarse es p + 1, justo la siguiente que solicita el bucle. Las 100 × 1.000 = 100.000 referencias producen fallos, como en el ejemplo de la página, donde fallaron las 15. FIFO retira las mismas páginas.
-
OPT: las primeras 99 referencias llenan los marcos. A partir de la referencia 100, hay un fallo cada 99 referencias: en la 100, la 199, la 298, … Son 1 + ⌊(100.000 − 100) / 99⌋ = 1 + 1.009 = 1.010 fallos. En total, 99 + 1.010 = 1.109, que corresponde a n + ⌊n(r − 1)/(n − 1)⌋ con n = 100 y r = 1.000.
-
Con un marco número 100 cabe el vector entero: 100 fallos con cualquiera de las tres políticas, uno por página. Tras la primera vuelta no hay ninguno más.
Respuesta
LRU: 100.000; OPT: 1.109; con un marco más: 100. LRU alcanza su peor resultado cuando el bucle necesita una página más de las que caben en memoria. Añadir el marco que falta reduce los fallos a la milésima parte.
-
Ruta de aprendizaje
Qué operaciones abarata una estructura de datos
Referencias (1)
- The first insight's date and attribution: the anomaly, and its formal treatment for FIFO: L. A. Belady, R. A. Nelson and G. S. Shedler, "An anomaly in space-time characteristics of certain programs running in a paging machine," Communications of the ACM 12(6), 349–353, June 1969.