Esercizio - Round robin con due quanti di tempo (eserciziario, esercizio 61)
In questa pagina 4
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizio 61, tradotto). In un sistema con scheduling preemptive circolare (round robin) i processi, solo di calcolo (nessun I/O), hanno i tempi di arrivo ed esecuzione seguenti (unità in millisecondi):
| processo | arrivo | esecuzione |
|---|---|---|
| 0 | 500 | |
| 100 | 300 | |
| 300 | 400 | |
| 600 | 1000 | |
| 700 | 600 |
Si valuta l'effetto del quanto, con valori 200 e 500 ms. Per ciascuno: (1) l'istante di fine di ogni processo; (2) il tempo di turnaround; (3) tempo di servizio e di attesa; (4) il turnaround normalizzato; (5) tempo medio di attesa; (6) turnaround medio. Teoria: Scheduling della CPU - FCFS, SJF, priorità e round robinLo scheduler della CPU sceglie tra i processi pronti quello a cui dare il core (il dispatcher esegue il cambio, con latenza di dispatch); lo scheduling è non preemptive (il processo tiene la CPU finché termina o si blocca) o preemptive (la CPU gli può essere tolta, con rischio di race condition); i criteri sono utilizzo della CPU e throughput (da massimizzare), tempo di attesa, di turnaround (completamento meno arrivo) e di risposta (da minimizzare); FCFS è semplice ma soffre dell'effetto convoglio (esempio 24, 3, 3: attesa media 17 contro 3); SJF è ottimo per l'attesa media ma richiede la lunghezza del prossimo burst, stimata con la media esponenziale tau(n+1) = alfa t(n) + (1-alfa) tau(n); SRTF è la versione preemptive (esempio con attesa media 6,5 contro 7,75); round robin dà a ciascuno un quanto q e nessuno attende più di (n-1)q; la priorità causa starvation, risolta con l'aging; code multilivello e a feedback (MLFQ) combinano le politiche.Scheduling della CPU - FCFS, SJF, priorità e round robin →.
Definizioni usate. Turnaround fine arrivo. Tempo di servizio tempo di CPU effettivo burst. Attesa turnaround servizio. Turnaround normalizzato turnaround / servizio (quante volte il processo dura più del necessario). Quando un processo arriva nell'istante esatto in cui scade un quanto, qui entra in coda prima di quello prelazionato (v. sotto).
Quanto
Sequenza dei turni, con la coda dei pronti subito dopo ogni turno (tra parentesi i residui; il processo appena prelazionato è in fondo alla coda):
| turno | esegue | residuo | coda dopo il turno |
|---|---|---|---|
| 0 .. 200 | 300 | (arrivato a 100), | |
| 200 .. 400 | 100 | , (arrivato a 300), | |
| 400 .. 600 | 100 | , , (arriva a 600), | |
| 600 .. 800 | 200 | , , , (arrivato a 700), | |
| 800 .. 900 | 0, finisce a 900 | , , , | |
| 900 .. 1100 | 800 | , , , | |
| 1100 .. 1200 | 0, finisce a 1200 | , , | |
| 1200 .. 1400 | 400 | , , | |
| 1400 .. 1600 | 0, finisce a 1600 | , | |
| 1600 .. 1800 | 600 | , | |
| 1800 .. 2000 | 200 | , | |
| 2000 .. 2200 | 400 | , | |
| 2200 .. 2400 | 0, finisce a 2400 | ||
| 2400 .. 2800 | 0, finisce a 2800 |
Attenzione al caso : il quanto di scade proprio quando arriva . In questo esercizio le soluzioni del corso mettono il nuovo arrivato davanti al processo prelazionato (la coda diventa ), cioè la convenzione opposta a quella dell'esercizio 31 (Esercizio - Round robin con arrivi e conteggio dei processi in coda (eserciziario, esercizio 31)). Qui si segue questa, per trovare i risultati del corso; le due soluzioni del corso non usano la stessa regola, per cui in un compito conviene dichiararla.
Diagramma di Gantt riassuntivo:
| 0-200 | 200-400 | 400-600 | 600-800 | 800-900 | 900-1100 | 1100-1200 | 1200-1400 | 1400-1600 | 1600-1800 | 1800-2000 | 2000-2200 | 2200-2400 | 2400-2800 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| fine | turnaround | servizio | attesa | turnaround normalizzato | |
|---|---|---|---|---|---|
| 1200 | 1200 | 500 | 700 | 2,40 | |
| 900 | 800 | 300 | 500 | 2,67 | |
| 1600 | 1300 | 400 | 900 | 3,25 | |
| 2800 | 2200 | 1000 | 1200 | 2,20 | |
| 2400 | 1700 | 600 | 1100 | 2,83 | |
| media | 1440 | 880 | 2,67 |
Quanto
Con nessun processo di burst viene prelazionato (, , finiscono in un turno): RR si comporta come FCFS per loro.
| 0-500 | 500-800 | 800-1200 | 1200-1700 | 1700-2200 | 2200-2700 | 2700-2800 |
|---|---|---|---|---|---|---|
| fine | turnaround | servizio | attesa | turnaround normalizzato | |
|---|---|---|---|---|---|
| 500 | 500 | 500 | 0 | 1,00 | |
| 800 | 700 | 300 | 400 | 2,33 | |
| 1200 | 900 | 400 | 500 | 2,25 | |
| 2700 | 2100 | 1000 | 1100 | 2,10 | |
| 2800 | 2100 | 600 | 1500 | 3,50 | |
| media | 1260 | 700 | 2,23 |
Confronto
| quanto | attesa media | turnaround medio | normalizzato medio |
|---|---|---|---|
| 200 | 880 | 1440 | 2,67 |
| 500 | 700 | 1260 | 2,23 |
Con il quanto più grande diminuiscono sia l'attesa media sia il turnaround medio (meno prelazioni, quindi meno ritardi aggiunti ai lunghi); la risposta, però, peggiora (per esempio riceve la CPU per la prima volta a 1200 invece che a 900). Qui si trascura il costo del cambio di contesto, che andrebbe sommato a ogni prelazione e penalizza il quanto piccolo. I valori coincidono con le tabelle del corso (880 / 2,67 e 700 / 2,23). I numeri sono stati ricalcolati con una simulazione in Python.
Domande d'esame
Cosa succede al turnaround medio aumentando il quanto fino a infinito? Traccia. RR tende a FCFS: qui con l'ordine è di arrivo, e il turnaround medio vale quello del FCFS sugli stessi dati.
Versione ripasso
- Dati: (arrivo, burst) (0, 500), (100, 300), (300, 400), (600, 1000), (700, 600); e . Teoria: Scheduling della CPU - FCFS, SJF, priorità e round robinLo scheduler della CPU sceglie tra i processi pronti quello a cui dare il core (il dispatcher esegue il cambio, con latenza di dispatch); lo scheduling è non preemptive (il processo tiene la CPU finché termina o si blocca) o preemptive (la CPU gli può essere tolta, con rischio di race condition); i criteri sono utilizzo della CPU e throughput (da massimizzare), tempo di attesa, di turnaround (completamento meno arrivo) e di risposta (da minimizzare); FCFS è semplice ma soffre dell'effetto convoglio (esempio 24, 3, 3: attesa media 17 contro 3); SJF è ottimo per l'attesa media ma richiede la lunghezza del prossimo burst, stimata con la media esponenziale tau(n+1) = alfa t(n) + (1-alfa) tau(n); SRTF è la versione preemptive (esempio con attesa media 6,5 contro 7,75); round robin dà a ciascuno un quanto q e nessuno attende più di (n-1)q; la priorità causa starvation, risolta con l'aging; code multilivello e a feedback (MLFQ) combinano le politiche.Scheduling della CPU - FCFS, SJF, priorità e round robin →.
- Definizioni: turnaround = fine arrivo; attesa = turnaround servizio; normalizzato = turnaround / servizio. Arrivo in un istante di fine quanto (): prima del prelazionato (opposto all'esercizio 31).
- : Gantt (fine 1200, 900, 1600, 2800, 2400 per ); attesa 700, 500, 900, 1200, 1100 -> 880; turnaround medio 1440; normalizzato 2,67.
- : ; fine 500, 800, 1200, 2700, 2800; attesa 0, 400, 500, 1100, 1500 -> 700; turnaround 1260; normalizzato 2,23.
- Conclusione: più grande -> meno prelazioni, attese minori, risposta peggiore.
- Residui : 500 300 100 0; 300 100 0; 400 200 0; 1000 800 600 400 0; 600 400 200 0. Coda a 600: (nuovo arrivo davanti al prelazionato).
- Normalizzato : 1,00; 2,33; 2,25; 2,10; 3,50 (media 2,23); con : 2,40; 2,67; 3,25; 2,20; 2,83 (media 2,67).
- Errori tipici: attesa senza sottrarre il servizio; dimenticare i residui; confondere servizio e turnaround.