¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Reemplazo de páginas: FIFO y LRU

Después de esta lección: Puedo simular el reemplazo de páginas FIFO y LRU y contar los fallos de página.

Lección de 55 min2 comandosLaboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

Qué página echar cuando la memoria se llena

El reemplazo de páginas es la decisión que toma el sistema operativo cuando necesita un marco libre y no queda ninguno. Tiene que echar una página de la memoria para hacer sitio a otra.

Una mala elección provoca muchos fallos de página. Cada uno obliga a leer del disco, que es miles de veces más lento que la memoria.

Hoy simulas dos reglas y cuentas sus fallos.

Al final de esta lección

Nota

Puedo simular el reemplazo de páginas FIFO y LRU y contar los fallos de página.

Palabras clave

PalabraQué significaEjemplo
Fallo de páginase pide una página que no está en memoria
Aciertose pide una página que ya está en memoria
Cadena de referenciasla lista de páginas que pide un programa, en orden1, 2, 3, 1
FIFOse echa la página que lleva más tiempo en memoria
LRUse echa la página que hace más tiempo que no se usa

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un fallo de página cuesta una lectura

Un programa pide páginas una tras otra. Esa lista es la cadena de referencias. Si la página pedida ya está en un marco, es un acierto y no cuesta casi nada.

Si no está, es un fallo de página. El sistema la trae del disco. Si no hay marcos libres, antes debe echar otra página.

Los contadores de fallos de esta máquina

Comando
grep -E '^(pgfault|pgmajfault)' /proc/vmstat | cut -d' ' -f1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Linux cuenta los fallos leves y los graves

La orden imprime pgfault y pgmajfault. Linux apunta, junto a cada nombre, cuántos fallos van desde que arrancó la máquina. Esas cifras no se muestran aquí porque cambian siempre.

Un fallo leve se resuelve sin tocar el disco. Un fallo grave sí lee del disco, y es el caro.

FIFO echa la página más antigua

En FIFO (first in, first out) se echa la página que lleva más tiempo en memoria, aunque se esté usando. Basta una cola con el orden de llegada.

En LRU (least recently used) se echa la que hace más tiempo que nadie usa. Cada acierto la pone de nuevo como la más reciente. LRU supone que lo usado hace poco se volverá a usar.

Ejemplo: FIFO y LRU con tres marcos

PideFIFO: marcosFIFOLRU: marcosLRU
11fallo1fallo
21, 2fallo1, 2fallo
31, 2, 3fallo1, 2, 3fallo
11, 2, 3acierto2, 3, 1acierto
42, 3, 4fallo3, 1, 4fallo
13, 4, 1fallo3, 4, 1acierto
Total5 fallos4 fallos

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Por qué LRU ganó esta vez

Al pedir la página 4, FIFO echó la 1 porque entró la primera. Pero la 1 se acababa de usar y se pidió enseguida, así que FIFO falló otra vez.

LRU echó la 2, que nadie había tocado, y conservó la 1. En las columnas de LRU los marcos van del menos reciente al más reciente.

Cuántas páginas distintas hay en la cadena

Comando
python3 -c "print(len(set([1, 2, 3, 1, 4, 1])))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El mínimo es un fallo por página

La Run imprime 4: la cadena usa cuatro páginas distintas. Cada una falla al menos la primera vez que se pide, porque nunca ha estado en memoria.

Por eso ninguna regla baja de 4 fallos en este ejemplo. LRU llegó a 4, el mínimo. FIFO tuvo uno de más.

Un error frecuente

Advertencia

Mucha gente cree que con más marcos nunca hay más fallos. En FIFO a veces ocurre al revés, y se llama anomalía de Belady. Con la cadena 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, FIFO falla 9 veces con tres marcos. Con cuatro falla 10. LRU no sufre esa anomalía.

Sobre este laboratorio y su código: Laboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.