Esercizio - Scheduling FCFS, SJF e priorità con sei processi (eserciziario, esercizio 24)
In questa pagina 5
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizio 24). Sei processi richiedono la CPU contemporaneamente, all'istante 0. Durata del burst di CPU e priorità (numeri bassi = priorità alta):
| processo | burst | priorità |
|---|---|---|
| 6 | 1 | |
| 4 | 2 | |
| 8 | 3 | |
| 2 | 4 | |
| 4 | 5 | |
| 6 | 6 |
Si tracci il diagramma di Gantt e si calcoli il tempo di completamento di ogni processo con (1) Shortest Job First, (2) scheduling a priorità, (3) Round Robin con quanto . Si trascura il tempo di cambio di contesto; in caso di parità si ordina per indice. 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 →.
1. Shortest Job First
Tutti arrivano a 0, quindi SJF (non preemptive) esegue i processi in ordine di burst crescente, a parità per indice: (2), (4), (4), (6), (6), (8).
| t | 0 .. 2 | 2 .. 6 | 6 .. 10 | 10 .. 16 | 16 .. 22 | 22 .. 30 |
|---|---|---|---|---|---|---|
| CPU |
Tempi di completamento (= turnaround, perché arrivano tutti a 0): , , , , , . Media: .
2. Priorità
Priorità (1) la più alta ... (6) la più bassa; poiché le priorità coincidono con l'ordine degli indici e non c'è prelazione che cambi nulla, l'ordine è (come FCFS).
| t | 0 .. 6 | 6 .. 10 | 10 .. 18 | 18 .. 20 | 20 .. 24 | 24 .. 30 |
|---|---|---|---|---|---|---|
| CPU |
Completamenti: 6, 10, 18, 20, 24, 30; media .
3. Round Robin con
Coda iniziale . Ogni giro assegna 2 unità a ciascun processo ancora attivo. Burst residui dopo ogni giro:
| giro | istanti | ||||||
|---|---|---|---|---|---|---|---|
| inizio | 6 | 4 | 8 | 2 | 4 | 6 | |
| 1 | 4 | 2 | 6 | 0 ( finisce a 8) | 2 | 4 | 0 .. 12 |
| 2 | 2 | 0 ( finisce a 16) | 4 | 0 ( finisce a 20) | 2 | 12 .. 22 | |
| 3 | 0 ( finisce a 24) | 2 | 0 ( finisce a 28) | 22 .. 28 | |||
| 4 | 0 ( finisce a 30) | 28 .. 30 |
Diagramma di Gantt completo (ogni cella 2 unità):
| 0-2 | 2-4 | 4-6 | 6-8 | 8-10 | 10-12 | 12-14 | 14-16 | 16-18 | 18-20 | 20-22 | 22-24 | 24-26 | 26-28 | 28-30 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Completamenti: , , , , , ; media .
Confronto
| politica | media | ||||||
|---|---|---|---|---|---|---|---|
| SJF | 16 | 6 | 30 | 2 | 10 | 22 | 14,33 |
| priorità | 6 | 10 | 18 | 20 | 24 | 30 | 18 |
| RR | 24 | 16 | 30 | 8 | 20 | 28 | 21 |
SJF è ottimo per il tempo medio; RR ha il turnaround più alto ma il tempo di risposta migliore (tutti partono entro 10 unità). Risultati ricalcolati con una simulazione in Python e coincidenti con quelli del corso (14,3, 18, 21).
Domande d'esame
Con quale algoritmo il turnaround medio è minimo, e perché? Traccia. SJF: eseguire prima i processi brevi riduce l'attesa di molti processi al prezzo dell'attesa di uno solo lungo; qui 14,33 contro 18 e 21.
Versione ripasso
- Dati: burst 6, 4, 8, 2, 4, 6; priorità 1..6; tutti a . 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 →.
- SJF: ordine (parità per indice); completamenti 2, 6, 10, 16, 22, 30; media 14,33.
- Priorità: ordine ; completamenti 6, 10, 18, 20, 24, 30; media 18.
- RR : Gantt (2 unità ciascuno); completamenti , , , , , ; media 21.
- Turnaround = fine arrivo (qui arrivo 0). SJF minimo per l'attesa media; RR ha la risposta migliore.
- Errori tipici: ordine sbagliato nelle parità; contare il quanto residuo male in RR; dimenticare che i processi finiti escono dal giro.