Al simular el algoritmo de reemplazo de la página del reloj, cuando aparece una referencia que ya está en la memoria, ¿la manecilla del reloj todavía se incrementa?
Aquí hay un ejemplo:
Con 4 ranuras, usando el algoritmo de reemplazo de la página del reloj
Lista de referencia: 1 2 3 4 1 2 5 1 3 2 4 5
La lista inicial se vería así:
-> [1][1]
[2][1]
[3][1]
[4][1]
La siguiente referencia para insertar sería 1, luego 2. ¿La mano todavía apuntaría a 1 después de 1 y después de 2? En otras palabras, después de insertar el 5, el reloj se vería así:
-> [5][1]
[2][0]
[3][0]
[4][0]
?
fuente
Si llega una referencia para una página que ya está en la memoria, el algoritmo de reemplazo no se invoca en absoluto.
El algoritmo de reemplazo de reloj está tratando de lograr algunos de los beneficios del reemplazo de LRU, pero sin la sobrecarga masiva de manipular los bits de LRU en cada golpe de página.
Una página puede estar en uno de tres estados:
recently-used
bit estrue
. En este caso, no habrá falla de página cuando ocurra un acceso a la página, por lo que no cambiará ningún bit.recently-used
bit esfalse
. En este caso, la página también está marcada en la tabla de páginas de tal manera que si se accede a la página se producirá un error de página. (Y si la falla de la página ocurre en este caso, lo único que hace el manejador de falla de la página es cambiar el estado arecently-used
).clock-hand
. Mientrasclock-hand
apunta a una página con elrecently-used
bit establecidotrue
, volteamos elrecently-used
bitfalse
y luego lo incrementamosclock-hand
para apuntar a la página siguiente. Cuando encontramos una página querecently-used
ya está borrada, esa es la página que reemplazamos. A continuación marcamos la nueva página,recently-used
y el incremento de laclock-hand
a la próxima página.El reloj es, en el fondo, un algoritmo probabilístico para aproximar LRU. Si la velocidad a la que se accede a la página es mucho mayor que la velocidad a la
clock-hand
que regresa a la misma página, entonces la página tiene una alta probabilidad de ser marcadarecently-used
. Si la velocidad a la que se accede a la página es baja en comparación con la velocidad a laclock-hand
que regresa, entonces es más probable que la página esté en estado norecently-used
. La página utilizada más recientemente nunca será reemplazada. (¿Por qué?)fuente