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.
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:
| Proceso | Llegada | Ráfaga |
|---|---|---|
| P1 (el camión) | 0 | 10 |
| P2 | 0 | 2 |
| P3 | 0 | 2 |
| P4 | 0 | 1 |
En FCFS, P1 se ejecuta primero (10 unidades), luego P2 (2), P3 (2) y P4 (1). El Gantt es:
Las métricas:
| Proceso | Ráfaga | Inicio | Terminación | Respuesta | Espera | Retorno |
|---|---|---|---|---|---|---|
| P1 | 10 | 0 | 10 | 0 | 0 | 10 |
| P2 | 2 | 10 | 12 | 10 | 10 | 12 |
| P3 | 2 | 12 | 14 | 12 | 12 | 14 |
| P4 | 1 | 14 | 15 | 14 | 14 | 15 |
| Promedio | 9,00 | 9,00 | 12,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.
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):
| Orden | P1 (10) | P2 (2) | P3 (2) | P4 (1) | Espera promedio | Retorno promedio |
|---|---|---|---|---|---|---|
| Largo primero (FCFS) | 0 | 10 | 12 | 14 | 9,00 | 12,75 |
| Cortos primero (SJF) | 15 | 0 | 1 | 3 | 4,75 | 8,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 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:
- 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
- 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:
- Hay procesos interactivos: un usuario que lanza un comando corto espera a que termine una compilación larga. El tiempo de respuesta se dispara.
- Las ráfagas son muy dispares: si todos los procesos tienen duraciones similares, el efecto convoy es mínimo.
- El sistema es de tiempo compartido: los usuarios esperan respuesta rápida, no que su trabajo termine antes que el de otros.
El efecto convoy NO es un problema cuando:
- Los procesos tienen duraciones similares: no hay «camión lento».
- El sistema es por lotes: los trabajos se procesan en orden y nadie espera activamente.
- Los procesos llegan espaciados: si el proceso largo termina antes de que lleguen los cortos, no hay convoy.
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ón | Cómo funciona | Costo |
|---|---|---|
| SJF | Ejecuta 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). |
| SRTF | Interrumpe 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 Robin | Da 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
| Proceso | Ráfaga | Inicio | Fin | Espera | Retorno |
|---|---|---|---|---|---|
10. Resumen
- El efecto convoy ocurre cuando un proceso largo se ejecuta primero en FCFS y bloquea a los procesos cortos que llegan después.
- Es como un camión lento en una carretera de un solo carril: todos avanzan a su velocidad.
- El costo es aproximadamente la duración del proceso largo añadida al tiempo de espera de cada proceso que va detrás.
- Poner los procesos largos primero puede multiplicar el tiempo de espera promedio.
- El efecto convoy ocurre porque FCFS no conoce las ráfagas y es no apropiativo.
- Es un problema real en sistemas interactivos y cuando las ráfagas son muy dispares.
- Se evita con SJF (si se conocen las ráfagas), SRTF (con apropiación) o Round Robin (turnos cortos).
- Round Robin es la solución más usada en la práctica, porque no necesita conocer las ráfagas.
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
- Modifica el simulador para añadir un proceso medio (ráfaga 5) y observa cómo afecta al convoy.
- Calcula las métricas para ráfagas 20, 3, 3, 2, 1 en FCFS y compara con el orden inverso.
- Dibuja el Gantt de Round Robin (quantum 3) para el mismo conjunto y compara las respuestas.
- Explica por qué el efecto convoy es peor en sistemas interactivos que en sistemas por lotes.
- Demuestra que si todos los procesos tienen la misma ráfaga, no hay efecto convoy.
- Calcula el tiempo de espera promedio si el proceso largo (10) llega después de los cortos (2, 2, 1) en FCFS.