Sistemas Operativos

Sesión 6: Planificación de CPU

FCFS (FIFO), SJF y Round Robin: cómo construir el Gantt, cómo medir y cómo justificar una elección.

Hoy pasamos de “sé que existe un scheduler” a “puedo demostrar con números y con una línea de tiempo qué algoritmo favorece respuesta, espera promedio, equidad o throughput”.

Navegación: | Home End | F pantalla completa | Táctil: desliza la página actual /

Plan de trabajo (150 min)

¿Qué haremos y por qué?

  • 0–10: Activación: conectamos estados (Ready/Running/Blocked) con “selección de CPU”.
  • 10–35: Métricas: definimos (sin ambigüedad) espera, retorno y respuesta, y cómo leerlas desde un Gantt.
  • 35–60: Algoritmos: FCFS, SJF (no expropiativo) y RR (con quantum).
  • 60–70: Pausa.
  • 70–130: Actividad guiada: caso único → 3 Gantt → tabla completa → conclusión argumentada.
  • 130–150: Socialización + mini evaluación individual (exit ticket).

Resultado esperado: al final tendrás una “plantilla mental” reutilizable para ejercicios y para el proyecto: (1) Gantt, (2) FirstRun/Finish, (3) T/W/R, (4) argumento de decisión.

Puente con la sesión anterior

¿Dónde “vive” la planificación?

En el modelo de estados, un proceso que está en Ready está “listo para correr” pero no tiene CPU. El scheduler decide cuál Ready pasa a Running (y, si hay preempción, cuándo vuelve a Ready).

No expropiativo

El proceso mantiene CPU hasta que termina o se bloquea (no se le quita a la fuerza).

Ejemplo típico: FCFS clásico y SJF clásico (versión simple).

Expropiativo

Un evento (como el timer) puede quitarle la CPU y devolverlo a Ready.

Ejemplo típico: Round Robin.

Idea clave: el algoritmo cambia el “orden de paso” por Running, y eso cambia tiempos medibles.

Métricas: medir para decidir

Definiciones operativas (las que usaremos hoy)

Para cada proceso i:
FirstRun: primer instante en que recibe CPU.
Finish: instante en que termina su burst total (en este ejercicio, todo es CPU).

Retorno / Turnaround (T)

Tiempo total en el sistema: desde llegada hasta fin.

T = Finish - Arrival
Espera (W)

Tiempo total “listo pero sin CPU”.

W = T - Burst
Respuesta (R)

Tiempo hasta la primera vez que corre (clave para interactividad).

R = FirstRun - Arrival

Lo importante no es memorizar fórmulas: es saber “de dónde salen” mirando el Gantt. Si el Gantt es correcto, la tabla sale casi sola.

Algoritmo 1

FCFS / FIFO (First Come, First Served)

FCFS es la política más simple: se ejecutan en el orden de llegada a la cola Ready. Funciona bien cuando quieres minimizar complejidad y la carga es “parecida” (procesos de tamaño similar), pero puede ser mala para interactividad cuando hay procesos largos que “arrastran” a muchos cortos.

Ventajas
  • Implementación simple.
  • Baja sobrecarga de decisión.
  • Se entiende fácil y se depura fácil.
Problema típico

Convoy effect: un trabajo largo al frente hace que los cortos esperen demasiado, incluso si el sistema podría “atender rápido” varias tareas pequeñas.

Algoritmo 2

SJF (Shortest Job First) — versión no expropiativa

SJF elige, entre los procesos que ya llegaron y están listos, el que tiene menor burst de CPU. En escenarios “ideales” tiende a reducir la espera promedio, pero plantea una pregunta práctica: ¿cómo sabe el sistema cuál será el burst real? En la vida real se estima y se controla equidad.

Qué suele mejorar
  • Espera promedio (W) en cargas batch.
  • Tiempo de retorno (T) promedio en muchos casos.
Riesgo

Starvation: si siguen llegando trabajos cortos, los largos pueden esperar “demasiado”. La solución real suele incluir envejecimiento (aging) o políticas híbridas.

Hoy lo usamos como herramienta didáctica: si entiendes SJF, entiendes por qué “ordenar por tamaño” cambia drásticamente W y T.

Algoritmo 3

Round Robin (RR)

Round Robin reparte CPU por turnos: cada proceso recibe un quantum fijo (por ejemplo, 2 ms), y si no termina, el timer lo preempta y vuelve al final de la cola Ready. Es una política natural para sistemas interactivos: busca que “todos avancen” y que la respuesta sea rápida.

Qué suele mejorar
  • Tiempo de respuesta (R) promedio (mejor percepción de fluidez).
  • Equidad (todos reciben CPU periódicamente).
Costo

Si el quantum es muy pequeño, el número de cambios de contexto aumenta, y con él la sobrecarga. Si es muy grande, RR se parece a FCFS.

El “arte” de RR no es la idea, es el quantum: balancea interactividad vs overhead.

Actividad guiada (60 min)

Qué vas a construir (y qué vamos a evaluar)

Vas a resolver un caso único con tres políticas (FCFS, SJF, RR) y vas a entregar evidencia de proceso: tu Gantt, tu tabla de métricas y tu conclusión argumentada.

Entregable
  • 3 Gantt (uno por algoritmo).
  • 1 tabla completa con Arrival, Burst, FirstRun, Finish, T, W, R.
  • Conclusión (5–8 líneas): “en un sistema ___ prefiero ___ porque optimiza ___; acepto ___”.
Criterio rápido
  • Gantt consistente con llegadas y reglas del algoritmo.
  • Cálculos coherentes (W = T - Burst).
  • Conclusión con métrica + escenario (no solo “promedio menor”).

En la siguiente diapositiva verás un ejemplo completo (formato “exacto”) de lo que se espera.

Ejemplo (lo que debes entregar)

Ejemplo resuelto: FCFS

Caso Procesos con llegada (A) y ráfaga CPU (Burst)

P1: A=0, Burst=5 P2: A=1, Burst=3 P3: A=2, Burst=1 P4: A=3, Burst=2
P1 P2 P3 P4 0 5 8 9 11
P1 P2 P3 P4
Proceso A Burst FirstRun Finish T = Finish-A W = T-Burst R = FirstRun-A
P10505500
P21358744
P32189766
P432911866

Observa el procedimiento: el Gantt te “regala” FirstRun y Finish. De ahí salen T, W y R. En tu entrega, escribe al menos dos frases de interpretación (por ejemplo: “P3 espera mucho en FCFS porque llega temprano pero queda detrás de P1 y P2”).

Ejemplo (enfoque de RR)

RR: cómo justificar un Gantt distinto (si lo tienes)

En Round Robin, dos personas pueden terminar con Gantt diferentes si aplican reglas distintas sin notarlo (por ejemplo, “¿re-encolo primero al que fue preemptado o primero a los que llegaron durante el quantum?”). Para que tu solución sea válida, debes poder mostrar el estado de la cola en cada corte de quantum.

Regla que usaremos hoy
  • Quantum = 2.
  • Si un proceso no termina, vuelve al final de la cola.
  • Los que llegan se encolan cuando llegan.
  • La cola es FIFO.
Mini-traza de cola (inicio)
t=0: cola = [P1] 0–2: corre P1 (resta 3) t=2: llegan P2 y P3 → cola = [P2, P3, P1] 2–4: corre P2 (resta 1) t=4: llega P4 → cola = [P3, P1, P4, P2]

En tu entrega, si tu RR difiere del de otro grupo, no “pelees el dibujo”: comparen la cola en cada corte. Si la cola está bien, el Gantt está bien.

Actividad (tu turno)

Resuelve el caso con 3 algoritmos

Caso (mismo del ejemplo): P1(A=0,B=5), P2(A=1,B=3), P3(A=2,B=1), P4(A=3,B=2).
RR: quantum=2.

Plantilla de entrega
1) Gantt FCFS: [dibujo] 2) Gantt SJF: [dibujo] 3) Gantt RR(q=2):[dibujo] Tabla por algoritmo: Proceso | A | Burst | FirstRun | Finish | T | W | R Conclusión: - Algoritmo recomendado para un sistema interactivo: - Algoritmo recomendado para un sistema batch: - Trade-off aceptado:
Checklist (antes de entregar)
  • ¿FirstRun está claro en tu Gantt?
  • ¿Finish coincide con el final del último bloque del proceso?
  • ¿W = T - Burst para todos?
  • ¿Tu conclusión menciona una métrica concreta (W/T/R) y un tipo de sistema?

Si terminas: discute con tu pareja qué pasaría si quantum=5 y escribe una frase de predicción (“RR se acerca a FCFS porque…”).

Errores comunes (y cómo evitarlos)

Si te equivocas, casi siempre es por esto

  • Confundir respuesta con retorno: R es “primera vez que corre”, T es “cuando termina”.
  • Olvidar llegadas: SJF y RR solo pueden elegir entre los que ya llegaron.
  • En RR, perder el orden de la cola: audítalo con una traza simple (cola por cortes).
  • Recalcular “a ojo”: si cambias el Gantt, recalcula FirstRun/Finish y luego todo lo demás.

Regla de oro: si tu tabla no “cierra” con W = T - Burst, tu Gantt o tus tiempos están mal. Esa ecuación funciona como prueba de consistencia.

Preguntas individuales (exit ticket)

Responde en 5–7 minutos

  1. Define W, T y R en una línea cada una (sin ejemplos).
  2. Explica por qué RR necesita un timer (una frase y un ejemplo mental).
  3. Describe un escenario donde SJF no sea buena idea aunque baje la espera promedio.
  4. ¿Qué sucede con RR si el quantum es muy grande? (comparación con FCFS).

Criterio claridad + precisión + coherencia con lo trabajado hoy.

Próxima sesión

Sesión 7: Hilos (threads) y concurrencia

Vamos a ampliar el modelo: ya no basta con “procesos”, porque los hilos cambian el costo de alternancia y la forma de pensar la planificación.

Veremos
  • Proceso vs hilo: qué comparten y qué no.
  • Por qué los hilos aumentan concurrencia “percibida”.
  • Puente hacia sincronización y bloqueos.
Trae
  • Tu tabla de métricas (plantilla).
  • Tus 3 Gantt (aunque no estén perfectos).
  • Tu conclusión escrita (para refinarla).

Recuerda: el objetivo del curso no es “dibujar bonito”, es argumentar decisiones de sistema.