← Planificación de la CPU Bloque 7 · Colas multinivel · Tema 25 de 44

Tema 25

Colas multinivel con retroalimentación

Las colas multinivel del tema 24 tienen un problema: la clasificación es fija. Un proceso que empieza como interactivo y se vuelve de cálculo queda atrapado en la cola interactiva. Las colas multinivel con retroalimentación (MLFQ) resuelven esto: los procesos pueden moverse entre colas según su comportamiento observado. Si un proceso usa mucho CPU, baja de prioridad; si espera mucho, sube. En este tema verás cómo funciona MLFQ, sus reglas y un simulador interactivo.

1. Qué es MLFQ

MLFQ (Multilevel Feedback Queue) es una variante de las colas multinivel en la que los procesos pueden moverse entre colas según su comportamiento observado. Un proceso que usa mucho CPU baja de prioridad (a una cola inferior); uno que espera mucho sube (a una cola superior). La retroalimentación (feedback) es la observación del comportamiento del proceso.

MLFQ es el algoritmo más sofisticado de los clásicos. Combina lo mejor de todos: la equidad de Round Robin para los interactivos, la eficiencia de FCFS para los de cálculo, y la adaptabilidad a los cambios de comportamiento.

MLFQ es la base de los planificadores modernos: Windows, macOS y los planificadores de Linux (antes de CFS) usaban variantes de MLFQ.

Retroalimentación, no clasificación previa

En colas multinivel (tema 24), el proceso se clasifica al crearlo y no cambia de cola. En MLFQ, la clasificación se hace en tiempo de ejecución: el planificador observa el comportamiento y ajusta la cola. No necesita saber de antemano qué tipo de proceso es.

2. Por qué retroalimentación

La retroalimentación resuelve dos problemas de las colas multinivel:

Además, MLFQ no necesita conocer las ráfagas de antemano: observa el comportamiento y ajusta. Esto lo hace aplicable en la práctica, a diferencia de SJF.

3. Cómo funciona

MLFQ tiene varias colas, cada una con su propio algoritmo (típicamente Round Robin con quantum distinto). Los procesos empiezan en la cola superior (mayor prioridad). A medida que usan CPU, bajan de cola. Si esperan mucho, suben.

  1. Llega un proceso. Se coloca en la cola superior (mayor prioridad). llegada
  2. Se ejecuta. Recibe un quantum de la cola actual. ejecutar
  3. Si termina en su quantum: sale del sistema. Era un proceso corto/interactivo. terminar
  4. Si no termina en su quantum: baja una cola. Era un proceso largo/de cálculo. bajar
  5. Si espera mucho: sube a la cola superior. subir
  6. Se repite. bucle

La clave es que el quantum es distinto en cada cola: la cola superior tiene un quantum corto (para buena respuesta), y las inferiores tienen quantums más largos (para eficiencia). Un proceso que usa mucho CPU recibe quantums cada vez más largos, lo que reduce el overhead.

4. Las reglas de MLFQ

MLFQ se define por un conjunto de reglas. Las más comunes son:

ReglaDescripción
R1Si la prioridad de A > prioridad de B, A se ejecuta.
R2Si la prioridad de A = prioridad de B, se ejecutan en Round Robin.
R3Cuando un proceso llega, se coloca en la cola superior.
R4Si un proceso usa todo su quantum, baja una cola.
R5Si un proceso se bloquea en E/S antes de usar su quantum, permanece en la misma cola (o sube).
R6Periódicamente, todos los procesos suben a la cola superior (envejecimiento).

La regla R4 es la que hace que los procesos de cálculo bajen de prioridad: si un proceso usa todo su quantum, es porque tiene una ráfaga larga, así que baja. La regla R5 hace que los procesos interactivos (que se bloquean en E/S antes de usar su quantum) mantengan su prioridad alta.

La regla R6 (envejecimiento) evita la inanición: periódicamente, todos los procesos suben a la cola superior, garantizando que todos se ejecuten.

La regla R6 es esencial

Sin la regla R6, un proceso de cálculo que baja a la cola inferior nunca se ejecuta si siempre hay procesos interactivos en la cola superior. La R6 garantiza que todos los procesos reciban CPU periódicamente.

5. Un ejemplo desarrollado

Tres colas con quantums 2, 4 y 8. Procesos:

ProcesoLlegadaRáfaga
P1010
P203
P312

Simulación (sin envejecimiento):

  1. t = 0: Llegan P1 y P2. Ambos en cola 1. Round Robin con q=2: P1(0-2). P1 no termina, baja a cola 2. cola 1
  2. t = 2: P2(2-4). P2 termina (ráfaga 3 ≤ q=2? No, 3 > 2). P2 baja a cola 2. cola 1
  3. t = 4: Cola 1 vacía. Se pasa a cola 2 (q=4). P1 tiene 8 restantes, P2 tiene 1 restante. P2(4-5). P2 termina. cola 2
  4. t = 5: P1(5-9). P1 no termina (le quedan 4). Baja a cola 3. cola 2
  5. t = 9: Llegó P3 en t=1, está en cola 1. Cola 1 tiene prioridad sobre cola 3. P3(9-11). P3 termina. cola 1
  6. t = 11: Cola 1 vacía. Se pasa a cola 3 (q=8). P1 tiene 4 restantes. P1(11-15). P1 termina. cola 3

El Gantt resultante es:

Gantt MLFQ: P1 0-2, P2 2-4, P2 4-5, P1 5-9, P3 9-11, P1 11-15. P1 P2 P2 P1 P3 P1 024591115
MLFQ: los procesos bajan de cola al usar todo su quantum. P1 baja de cola 1 a 2 a 3.

Observa cómo P1 (el proceso largo) baja de cola 1 a 2 a 3, mientras que P2 (más corto) baja de 1 a 2 y termina. P3 (el más corto) se ejecuta en cola 1 cuando llega, porque tiene prioridad sobre cola 3.

6. Propiedades

Propiedad¿La cumple?Comentario
AdaptabilidadSíSe adapta al comportamiento del proceso sin conocer las ráfagas.
Buena respuestaSíLos procesos cortos se ejecutan en la cola superior con quantum corto.
Buen throughputSíLos procesos largos reciben quantums más largos en colas inferiores.
Ausencia de inaniciónSí (con R6)La regla R6 garantiza que todos se ejecuten periódicamente.
Necesita conocer ráfagasNoObserva el comportamiento y ajusta.
ComplejidadAltaMás complejo que los algoritmos simples.

7. Ventajas

8. Desventajas

MLFQ es complejo de ajustar

El número de colas, los quantums y el intervalo de envejecimiento son parámetros que afectan al comportamiento. Elegirlos mal puede hacer que MLFQ sea peor que un algoritmo simple.

9. MLFQ en Linux

Linux usaba MLFQ antes de CFS (núcleo 2.6.23). El planificador O(1) de Linux (2.6.0-2.6.22) tenía 140 colas (una por prioridad), con quantums que aumentaban en las colas inferiores. Los procesos que usaban todo su quantum bajaban de cola; los que se bloqueaban en E/S subían.

El problema era que los parámetros eran difíciles de ajustar y los procesos podían engañar al planificador. Por eso Linux adoptó CFS, que usa un enfoque diferente (vruntime) pero mantiene la idea de favorecer a los procesos interactivos.

Windows y macOS siguen usando variantes de MLFQ en sus planificadores.

10. Simulador interactivo

Este simulador ejecuta MLFQ con 3 colas y quantums 2, 4 y 8. Observa cómo los procesos bajan de cola:

Simulador · MLFQ

ProcesoLlegadaRáfagaInicioFinRespuestaEsperaRetorno

11. Resumen

12. Preguntas de repaso

Intenta responder cada una antes de abrir la respuesta.

1. ¿Qué es MLFQ?

Colas multinivel con retroalimentación: los procesos se mueven entre colas según su comportamiento.

2. ¿Qué diferencia a MLFQ de las colas multinivel?

En MLFQ, los procesos pueden cambiar de cola. En colas multinivel, la clasificación es fija.

3. ¿Qué ocurre si un proceso usa todo su quantum?

Baja una cola (prioridad menor).

4. ¿Qué ocurre si un proceso se bloquea en E/S antes de usar su quantum?

Permanece en la misma cola (o sube).

5. ¿Qué es la regla R6?

Periódicamente, todos los procesos suben a la cola superior (envejecimiento).

6. ¿Por qué los quantums aumentan en las colas inferiores?

Para reducir el overhead de los procesos de cálculo, que tienen ráfagas largas.

7. ¿Necesita MLFQ conocer las ráfagas de antemano?

No. Observa el comportamiento y ajusta.

8. ¿Qué sistema operativo usa MLFQ actualmente?

Windows y macOS. Linux usaba MLFQ antes de CFS.

9. ¿Por qué Linux abandonó MLFQ?

Porque los parámetros eran difíciles de ajustar y los procesos podían engañar al planificador.

10. ¿Qué problema resuelve la regla R6?

La inanición: garantiza que todos los procesos se ejecuten periódicamente.

Para practicar

  1. Modifica el simulador para añadir la regla R6 (envejecimiento periódico) y observa el efecto.
  2. Diseña un proceso que engañe al planificador (tema 26) y verifica.
  3. Compara MLFQ con Round Robin para la misma carga.
  4. Explica por qué los quantums aumentan en las colas inferiores.
  5. Implementa MLFQ con 4 colas y quantums 1, 2, 4, 8.
  6. Investiga cómo Windows implementa MLFQ.