Ir al contenido

Algoritmos a mano: Gantt y métricas

🎯 Al terminar podrás

  1. Dibujar el Gantt de FCFS, SJF, SRTF, prioridad (expropiativa o no), RR y HRRN con llegadas distintas y CPU inactiva.
  2. Calcular turnaround, waiting y response por proceso y en promedio.
  3. Aplicar y declarar las convenciones: desempates, sentido de la prioridad y orden de la cola en RR.
  4. Comparar algoritmos con la tabla de Stallings y elegir uno para un escenario, justificando.

Antes necesitas: Teoría: criterios y cuándo decide el scheduler

  • Simulador predice el estado antes de pulsar el paso siguiente
  • Laboratorio sube la escalera: resuelto → completa → solo → variante
  • Debate elige una alternativa para el escenario y defiéndela
  • Examen cronométrate y no abras la solución hasta terminar
  1. Escribe la tabla de procesos: llegada, ráfaga y, si hay, prioridad.
  2. Pon t = 0. Mientras quede alguien sin terminar:
    • ¿Quién está listo? Los que ya llegaron (llegada ≤ t) y no terminaron. Si no hay nadie, la CPU queda IDLE hasta la próxima llegada.
    • ¿Quién gana? Según el criterio del algoritmo. Si hay empate, el que llegó primero; si llegaron juntos, el de menor índice (P1 antes que P2).
    • ¿Hasta cuándo corre? No expropiativo: hasta terminar. RR: hasta el quantum o hasta terminar. SRTF y prioridad expropiativa: hasta terminar o hasta la próxima llegada, y ahí vuelves a decidir.
  3. Con el Gantt, calcula fin, turnaround = fin − llegada, waiting = turnaround − ráfaga y response = primer inicio − llegada.

Ingresa los procesos y cambia el algoritmo. Abajo de la tabla, «Por qué eligió cada proceso» explica cada decisión. Úsalo para corregir tus Gantt, no para hacerlos: primero a mano, después compara.

Planificador paso a paso

Una línea por proceso: nombre llegada ráfaga [prioridad]. Desempate: llega primero; si llegan juntos, el que está más arriba en la lista. En Round Robin, los que llegan durante un turno entran a la cola antes que el proceso que acaba de agotar su quantum.

P1
P3
P2
P4
0791216
procesollegaráfagaterminaturnaroundesperarespuesta
P1077700
P223121077
P3429533
P454161177
promedio8.254.254.25
Por qué eligió cada proceso
  1. t=0: listos [P1] → elige P1 (ráfaga 7) y corre hasta t=7.
  2. t=7: listos [P2, P3, P4] → elige P3 (ráfaga 2) y corre hasta t=9.
  3. t=9: listos [P2, P4] → elige P2 (ráfaga 3) y corre hasta t=12.
  4. t=12: listos [P4] → elige P4 (ráfaga 4) y corre hasta t=16.

Se atiende por orden de llegada y sin interrumpir. Es lo más simple y no causa starvation, pero sufre el efecto convoy: un proceso largo delante de varios cortos los hace esperar a todos.

Peldaño 1 · Resueltolee cada paso y su porqué

Resuelto: el convoy de las diapositivas

Ráfagas P1 = 24, P2 = 3, P3 = 3, todos llegan en 0.

OrdenGanttEsperasPromedio
P1, P2, P3P1 0–24 · P2 24–27 · P3 27–300, 24, 2717
P2, P3, P1P2 0–3 · P3 3–6 · P1 6–306, 0, 33

Los mismos procesos, solo reordenados, pasan de 17 a 3. Lección: FCFS castiga a los cortos que llegan detrás de un largo, y por la misma razón castiga a los IO-bound que esperan detrás de un CPU-bound.

Cuando la CPU queda libre, se elige el listo con menor ráfaga y corre hasta terminar, aunque llegue uno más corto. Para procesos que llegan juntos, SJF es óptimo en espera promedio (Stallings, problema 9.3), pero hay que conocer la ráfaga y los largos pueden sufrir starvation.

Es la versión expropiativa de SJF: en cada llegada se compara la ráfaga restante del que corre con la de los recién llegados, y si alguien tiene menos, le quita la CPU. Da el menor promedio de espera, pero hay más cambios de contexto y los largos pueden sufrir starvation.

Peldaño 1 · Resueltolee cada paso y su porqué

Resuelto: el ejemplo de las diapositivas

P1 (0, 8), P2 (1, 4), P3 (2, 9), P4 (3, 5).

tListos (restante)Decisión
0P1 (8)P1 corre
1P1 (7), P2 (4)4 < 7 → P2 expropia a P1
2P1 (7), P2 (3), P3 (9)sigue P2
3P1 (7), P2 (2), P3 (9), P4 (5)sigue P2
5P1 (7), P3 (9), P4 (5)P2 terminó → P4
10P1 (7), P3 (9)P4 terminó → P1
17P3 (9)P1 terminó → P3, hasta 26

Esperas: P1 = (17 − 0) − 8 = 9, P2 = 0, P3 = (26 − 2) − 9 = 15, P4 = (10 − 3) − 5 = 2. Promedio 26/4 = 6.5, como dicen las diapositivas.

Se elige el listo de mayor prioridad. Puede ser no expropiativa (la de la hoja de ejercicios) o expropiativa (si llega alguien más prioritario, quita la CPU). SJF es un caso particular: la prioridad es la inversa de la ráfaga. Problema: starvation de los de baja prioridad. Solución: aging, que sube la prioridad de un proceso cuanto más tiempo espera.

Peldaño 2 · Complétalofaltan pasos clave: llénalos tú

Complétalo: el ejemplo de las diapositivas (número menor = más prioridad)

Todos llegan en 0: P1 (ráfaga 10, prioridad 3), P2 (1, 1), P3 (2, 4), P4 (1, 5), P5 (5, 2).

El orden empieza P2 (prioridad 1) 0–1 · P5 (prioridad 2) 1–6. Completa el resto y calcula la espera promedio.

Comparar

P1 6–16 · P3 16–18 · P4 18–19. Esperas: P1 6, P2 0, P3 16, P4 18, P5 1 → 41/5 = 8.2, como en la diapositiva. Fíjate en que P4, con ráfaga 1, espera 18: un proceso cortísimo pero de baja prioridad lo pasa muy mal.

Peldaño 3 · Solosin ayuda; luego compara

Solo: los 5 procesos de base-scheduler.c con prioridad no expropiativa (número mayor = más prioridad)

ProcesoPrioridadLlegadaRáfaga
P1307
P2123
P3442
P4254
P5585
Comparar (verificado con el programa en C)

P1 0–7 (es el único en t = 0) · en t = 7 están P2 (1), P3 (4), P4 (2) → P3 7–9 · en t = 9 ya llegó P5 (5) → P5 9–14 · P4 14–18 · P2 18–21.

P1P2P3P4P5Promedio
Turnaround719513610.0
Waiting0163915.8

Peldaño 4 · Variantecambia una condición: ¿sigue valiendo lo anterior?

Variante: el mismo conjunto, pero con prioridad expropiativa

¿Qué cambia si un proceso más prioritario que llega interrumpe al que corre?

Comparar

P1 0–4 · P3 expropia en 4 (4 > 3) y corre 4–6 · P1 6–8 · P5 expropia en 8 (5 > 3) y corre 8–13 · P1 13–14 · P4 14–18 · P2 18–21. Waiting promedio 6.4 (sube respecto de 5.8), pero P3 y P5, los más prioritarios, esperan 0. Expropiar no mejora el promedio: mejora a los prioritarios.

Cada proceso corre como mucho un quantum q y, si no termina, vuelve al final de la cola. Con n procesos listos, ninguno espera más de (n − 1)·q para su próximo turno. Es el algoritmo de Selfie.

  • q muy grande → RR se vuelve FCFS.
  • q muy chico → demasiados cambios de contexto (overhead). La regla de las diapositivas: el 80 % de las ráfagas de CPU deberían ser más cortas que q. Típicamente q = 10–100 ms, y un cambio de contexto cuesta menos de 10 µs.
  • En promedio da más turnaround que SJF, pero mejor response time.

Peldaño 1 · Resueltolee cada paso y su porqué

Resuelto: ejercicio 10 de la hoja (q = 2, todos en t = 0)

P1 = 5, P2 = 2, P3 = 4.

TurnoIntervaloCorreRestantes P1 / P2 / P3Cola después
10–2P13 / 2 / 4P2, P3, P1
22–4P23 / 0 / 4P3, P1
34–6P33 / 0 / 2P1, P3
46–8P11 / 0 / 2P3, P1
58–10P31 / 0 / 0P1
610–11P10 / 0 / 0

Fines: P2 = 4, P3 = 10, P1 = 11. El último turno de P1 dura 1, no 2: si un proceso termina antes del quantum, la CPU pasa al siguiente sin consumir el sobrante.

Peldaño 3 · Solosin ayuda; luego compara

Solo: ejercicio 6 de la hoja, RR con llegadas y q = 3 (los 5 procesos de base-scheduler.c)

Usa la tabla del peldaño anterior de prioridad (ignora la prioridad). Escribe la cola después de cada turno.

Comparar (verificado con el programa en C)
IntervaloCorreLlegan durante el turnoCola al terminar el turno
0–3P1 (le quedan 4)P2 (t = 2)P2, P1
3–6P2 (termina)P3 (4), P4 (5)P1, P3, P4
6–9P1 (le queda 1)P5 (8)P3, P4, P5, P1
9–11P3 (termina)P4, P5, P1
11–14P4 (le queda 1)P5, P1, P4
14–17P5 (le quedan 2)P1, P4, P5
17–18P1 (termina)P4, P5
18–19P4 (termina)P5
19–21P5 (termina)

La clave está en las filas 1 y 3: los que llegaron entran antes que el proceso que vuelve. Waiting promedio 7.0, turnaround promedio 11.2.

Peldaño 4 · Variantecambia una condición: ¿sigue valiendo lo anterior?

Variante: ¿qué pasa con q = 10 en el mismo conjunto?

Comparar

Ninguna ráfaga supera 10, así que nadie es expropiado: el resultado es idéntico a FCFS (P1 0–7, P2 7–10, P3 10–12, P4 12–16, P5 16–21). Es la afirmación «q grande → FCFS» con números.

Es no expropiativo. Cuando la CPU queda libre, se elige el listo con mayor razón de respuesta:

R=w+ssR = \frac{w + s}{s}

donde ww es lo que lleva esperando y ss su ráfaga. Favorece a los cortos (s chico), pero quien espera mucho sube su R y termina pasando: no hay starvation. Es el punto medio entre FCFS (favorece a los largos) y SPN (favorece a los cortos).

Peldaño 2 · Complétalofaltan pasos clave: llénalos tú

Complétalo: Stallings tabla 9.4 con HRRN

A (0, 3), B (2, 6), C (4, 4), D (6, 5), E (8, 2). A corre 0–3 y B 3–9 (en t = 3 es el único listo). En t = 9 están listos C, D y E. Calcula sus R y decide.

Comparar

En t = 9: R(C) = (5 + 4)/4 = 2.25, R(D) = (3 + 5)/5 = 1.6, R(E) = (1 + 2)/2 = 1.5 → C 9–13. En t = 13: R(D) = (7 + 5)/5 = 2.4, R(E) = (5 + 2)/2 = 3.5 → E 13–15, y D 15–20. Turnaround promedio 8.0, como en la tabla 9.5 del libro.

FCFSRRSPN (= SJF)SRT (= SRTF)HRRNFeedback
Eligemax[w]turnomin[s]min[s − e]max[(w + s)/s]por colas
Expropianosí, al vencer qnosí, al llegar alguiennosí, al vencer q
Throughputno se enfatizabajo si q es chicoaltoaltoaltono se enfatiza
Responsepuede ser altobueno para cortosbueno para cortosbuenobuenono se enfatiza
Overheadmínimomínimopuede ser altopuede ser altopuede ser altopuede ser alto
Efectopenaliza cortos e IO-boundjustopenaliza largospenaliza largosbuen balancefavorece IO-bound
Starvationnonoposibleposiblenoposible

(w = tiempo esperando, e = tiempo ya ejecutado, s = ráfaga total.)

Con el ejemplo de Stallings (A–E de arriba), el turnaround promedio da: FCFS 8.60, RR q = 1 10.80, RR q = 4 10.00, SPN 7.60, SRT 7.20, HRRN 8.00. Comprobé que el simulador de esta página da exactamente los valores de la tabla 9.5.

Autoevaluación

0/6 correctas · 0 respondidas
1. Para un lote de trabajos que llegan juntos, ¿qué algoritmo no expropiativo minimiza la espera promedio?
2. RR con un quantum mayor que todas las ráfagas se comporta como…
3. Con 4 procesos listos y q = 20 ms, lo máximo que un proceso espera para su próximo turno es…
4. ¿Cuál de estos NO puede causar starvation?
5. En HRRN, un proceso esperó 6 y su ráfaga es 3. Su R es…
6. En la hoja de ejercicios del lab, un número de prioridad mayor significa…

📈 ¿Qué tan bien lo dominas?

Elige pensando en lo que hiciste, no en lo que leíste. Para marcar 3 tienes que haber resuelto un ejercicio nuevo sin pistas y haberlo justificado. Si solo lo leíste y sientes que «ya entendí», todavía es un 1.

Fuente ·sem_12/Sema12_11-OST-Scheduling.pdf (diap. 29–44) · sem_11/Sem11-OSL-Ejercicios_Repaso.pdf (ej. 6, 7, 10) · Stallings 9e §9.2, tablas 9.3–9.5 · Soluciones propias verificadas con un script y con los programas en C