← Planificación de la CPU Bloque 3 · Primero en llegar, primero en ser atendido · Tema 11 de 44

Tema 11

El efecto convoy

En FCFS, si un proceso con una ráfaga muy larga llega primero, todos los procesos cortos que llegan después deben esperarlo. Es el efecto convoy: un proceso lento bloquea a los rápidos, como un camión en una carretera de un solo carril. En este tema verás cómo ocurre, cuánto cuesta en términos de tiempo de espera, por qué el orden de llegada cambia el promedio y qué se puede hacer al respecto.

1. Qué es el efecto convoy

El efecto convoy ocurre cuando un proceso con una ráfaga de CPU muy larga se ejecuta primero en FCFS y hace que todos los procesos cortos que llegan después esperen. Los procesos cortos, que podrían haber terminado rápidamente, quedan atrapados detrás del proceso largo.

El nombre viene de la idea de un convoy: un grupo de vehículos que avanza a la velocidad del más lento. En la planificación, el «convoy» es el conjunto de procesos que esperan detrás del proceso largo; todos avanzan (en tiempo de espera) a la velocidad (duración) de ese proceso.

El efecto convoy es la principal crítica a FCFS. No es un error del algoritmo (FCFS hace exactamente lo que promete: atender en orden de llegada), sino una consecuencia inevitable de no conocer las ráfagas y de no poder apropiarse de la CPU.

El efecto convoy no es un bug

FCFS no está «roto» cuando ocurre el efecto convoy: está haciendo exactamente lo que se le pidió. El problema es que la regla «primero en llegar, primero en ser atendido» no tiene en cuenta cuánto trabajo trae cada proceso. Es una crítica al algoritmo, no un error de implementación.

2. La analogía del camión

Imagina una carretera de un solo carril. Un camión lento entra primero; detrás vienen varios coches rápidos. Los coches no pueden adelantar, así que todos avanzan a la velocidad del camión. Si el camión tarda 10 minutos en atravesar la carretera, cada coche tarda 10 minutos más su propio tiempo de viaje.

En la CPU, el camión es el proceso con ráfaga larga y los coches son los procesos cortos. La carretera de un solo carril es la CPU (un solo núcleo). El adelantamiento que no se puede hacer es la apropiación: FCFS no puede quitarle la CPU al proceso largo.

La analogía también muestra la solución: si los coches pudieran adelantar (apropiación), cada uno llegaría a su destino a su propia velocidad. Eso es lo que hacen SRTF y Round Robin.

3. Un ejemplo desarrollado

Cuatro procesos, todos llegando en 0, con ráfagas 10, 2, 2 y 1:

ProcesoLlegadaRáfaga
P1 (el camión)010
P202
P302
P401

En FCFS, P1 se ejecuta primero (10 unidades), luego P2 (2), P3 (2) y P4 (1). El Gantt es:

Gantt FCFS: P1 0-10, P2 10-12, P3 12-14, P4 14-15. P1 (10) P2 P3 P4 010121415
FCFS con un proceso largo primero. P2, P3 y P4 esperan 10 unidades.

Las métricas:

ProcesoRáfagaInicioTerminaciónRespuestaEsperaRetorno
P1100100010
P221012101012
P321214121214
P411415141415
Promedio9,009,0012,75

P2 solo necesitaba 2 unidades de CPU, pero esperó 10. P4 necesitaba 1 y esperó 14. El tiempo de respuesta promedio es 9: un usuario que lanzara un proceso corto esperaría 9 unidades de media para ver la primera respuesta.

4. Cuánto cuesta: el cálculo

El costo del efecto convoy se puede calcular exactamente. Si un proceso de ráfaga L se ejecuta primero y hay k procesos cortos detrás, cada uno con ráfaga media c, el tiempo de espera adicional que sufre cada proceso corto es aproximadamente L (la duración del proceso largo).

El tiempo de espera promedio con el proceso largo primero es:

W̄convoy = (0 + L + (L+c) + … + (L+(k−1)c)) / (k+1) ≈ L + c·(k−1)/2.

Si el proceso largo se ejecuta último, el tiempo de espera promedio es:

W̄sin convoy = (0 + c + 2c + … + (k−1)c + k·c + … ) / (k+1) ≈ c·k/2.

La diferencia es aproximadamente L: el proceso largo al principio añade su duración completa al tiempo de espera de todos los procesos que van detrás.

La diferencia es la duración del proceso largo

Poner el proceso largo al principio añade aproximadamente L unidades al tiempo de espera promedio. Si L es grande (segundos o minutos), el costo es enorme.

5. Cómo el orden cambia el promedio

Comparemos los dos órdenes extremos para el mismo conjunto (ráfagas 10, 2, 2, 1):

OrdenP1 (10)P2 (2)P3 (2)P4 (1)Espera promedioRetorno promedio
Largo primero (FCFS)01012149,0012,75
Cortos primero (SJF)150134,758,50

Con los cortos primero, el tiempo de espera promedio baja de 9,00 a 4,75 (un 47 % menos) y el de retorno de 12,75 a 8,50. El proceso largo (P1) espera 15 unidades en lugar de 0, pero los tres cortos esperan mucho menos.

Este es el trade-off fundamental: optimizar el promedio perjudica al proceso largo. Si P1 fuera el trabajo del usuario más importante, el «mejor» orden lo perjudicaría. Elegir qué se optimiza es una decisión de diseño.

El promedio no es todo

El mejor orden para el promedio no es necesariamente el justo. En el ejemplo, P1 espera 0 en el primer orden y 15 en el segundo. Si P1 fuera una tarea crítica, el «mejor» orden sería inaceptable.

6. Por qué ocurre en FCFS

El efecto convoy ocurre en FCFS por dos razones:

  1. FCFS no conoce las ráfagas. No sabe que P1 es largo y los demás cortos. Atiende en orden de llegada sin mirar la duración. ignorancia
  2. FCFS es no apropiativo. Aunque supiera que P1 es largo, no podría interrumpirlo una vez que empezó. La CPU queda bloqueada hasta que P1 termine. no apropiación

Si FCFS conociera las ráfagas (SJF), ordenaría los cortos primero y evitaría el convoy. Si FCFS fuera apropiativo (SRTF), interrumpiría P1 cuando llegara un proceso más corto. Pero FCFS no hace ninguna de las dos cosas.

El efecto convoy es, en el fondo, el precio de la simplicidad. FCFS es trivial de implementar porque no necesita conocer las ráfagas ni manejar interrupciones. El costo de esa simplicidad es que un proceso largo puede bloquear a todos los demás.

7. Cuándo es un problema real

El efecto convoy es un problema cuando:

El efecto convoy NO es un problema cuando:

En la práctica, el efecto convoy se mitiga con apropiación (Round Robin) y con predicción de ráfagas (SJF/SRTF). Ningún sistema operativo moderno usa FCFS puro para la CPU.

8. Cómo se evita

Hay tres formas de evitar o mitigar el efecto convoy:

SoluciónCómo funcionaCosto
SJFEjecuta primero los procesos más cortos. Evita el convoy si se conocen las ráfagas.Necesita conocer las ráfagas (difícil en la práctica).
SRTFInterrumpe el proceso largo cuando llega uno más corto. Evita el convoy con apropiación.Más cambios de contexto; necesita conocer las ráfagas restantes.
Round RobinDa turnos cortos a todos los procesos. El proceso largo se ejecuta en varios turnos, dejando que los cortos se intercalen.Peor tiempo de espera y retorno promedio; más cambios de contexto.

Round Robin es la solución más usada en la práctica, porque no necesita conocer las ráfagas. El proceso largo se ejecuta en turnos de q unidades, y los procesos cortos se ejecutan en los intervalos entre turnos. El efecto convoy desaparece porque ningún proceso espera más de q unidades para recibir su primer turno.

En el ejemplo anterior, con Round Robin y quantum 4, el Gantt sería: P1(0-4), P2(4-6), P3(6-8), P4(8-9), P1(9-13), P1(13-15). P2 ya recibió la CPU en t=4 (respuesta 4) en lugar de esperar 10.

9. Simulador interactivo

Este simulador muestra el efecto convoy: genera un proceso largo seguido de varios cortos y ejecuta con FCFS. Cambia la ráfaga del primer proceso y observa cómo cambian las esperas:

Simulador · efecto convoy

ProcesoRáfagaInicioFinEsperaRetorno

10. Resumen

11. Preguntas de repaso

Intenta responder cada una antes de abrir la respuesta.

1. ¿Qué es el efecto convoy?

Un proceso con ráfaga larga se ejecuta primero en FCFS y hace que todos los procesos cortos que llegan después esperen.

2. ¿Por qué se llama «convoy»?

Porque es como un convoy de vehículos que avanza a la velocidad del más lento: todos los procesos esperan a que termine el más largo.

3. ¿Cuál es el costo aproximado del efecto convoy?

La duración del proceso largo se añade al tiempo de espera de cada proceso que va detrás. El promedio sube aproximadamente en L (la duración del largo).

4. ¿Por qué ocurre el efecto convoy en FCFS?

Porque FCFS no conoce las ráfagas (no sabe quién es largo) y es no apropiativo (no puede interrumpir al proceso largo).

5. ¿En qué situaciones el efecto convoy NO es un problema?

Cuando las ráfagas son similares, cuando el sistema es por lotes, o cuando los procesos llegan espaciados (el largo termina antes de que lleguen los cortos).

6. ¿Cómo evita Round Robin el efecto convoy?

Dando turnos cortos a todos los procesos. El proceso largo se ejecuta en varios turnos, dejando que los cortos se intercalen entre ellos.

7. ¿Qué trade-off implica evitar el efecto convoy?

Optimizar el promedio perjudica al proceso largo: en SJF, el proceso largo espera más (hasta el final) para que los cortos salgan antes.

8. ¿Es el efecto convoy un error de FCFS?

No. FCFS hace exactamente lo que promete (atender en orden de llegada). El efecto convoy es una consecuencia de la simplicidad del algoritmo.

9. ¿Qué algoritmo evita el convoy sin necesidad de conocer las ráfagas?

Round Robin, porque da turnos cortos a todos los procesos sin importar su duración.

10. En el ejemplo del tema, ¿cuánto bajó el tiempo de espera promedio al poner los cortos primero?

De 9,00 a 4,75 (un 47 % menos). El proceso largo pasó de esperar 0 a esperar 15.

Para practicar

  1. Modifica el simulador para añadir un proceso medio (ráfaga 5) y observa cómo afecta al convoy.
  2. Calcula las métricas para ráfagas 20, 3, 3, 2, 1 en FCFS y compara con el orden inverso.
  3. Dibuja el Gantt de Round Robin (quantum 3) para el mismo conjunto y compara las respuestas.
  4. Explica por qué el efecto convoy es peor en sistemas interactivos que en sistemas por lotes.
  5. Demuestra que si todos los procesos tienen la misma ráfaga, no hay efecto convoy.
  6. Calcula el tiempo de espera promedio si el proceso largo (10) llega después de los cortos (2, 2, 1) en FCFS.