Esercizio - Scheduling FCFS e SJF con tempo di turnaround e processi in coda (eserciziario, esercizi 29 e 30)
In questa pagina 4
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizi 29 e 30).
Esercizio 29. All'istante arrivano nella coda dei processi pronti, prima vuota, sei processi con i burst seguenti: , , , , , . (a) Si disegni il diagramma di Gantt con scheduling in ordine di arrivo (FCFS) e si calcolino tempo medio di turnaround, tempo medio di attesa in coda e numero medio di processi in attesa nella coda. (b) Come cambiano le risposte con scheduling per brevità (SJF), a parità di durata ha priorità il processo con indice minore?
Esercizio 30. Con SJF senza prelazione si calcoli il tempo medio di turnaround dei processi di tabella e si mostri il diagramma di Gantt; poi si risponda cosa cambia con prelazione (SRTF).
| processo | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| arrivo | 0 | 8 | 11 | 15 | 17 | 19 | 20 | 21 | 23 | 28 |
| burst | 3 | 8 | 1 | 1 | 5 | 6 | 6 | 1 | 1 | 1 |
Esercizio 29(a): FCFS
I processi arrivano tutti a 0 nell'ordine .
| t | 0 .. 3 | 3 .. 8 | 8 .. 10 | 10 .. 16 | 16 .. 23 | 23 .. 26 |
|---|---|---|---|---|---|---|
| CPU |
- Turnaround (fine 0): 3, 8, 10, 16, 23, 26; media .
- Attesa (turnaround burst): 0, 3, 8, 10, 16, 23; media .
- Numero medio di processi in coda. Si conta, istante per istante, quanti processi sono pronti ma non in esecuzione, e si media sui 26 istanti:
| istanti | 0-2 | 3-7 | 8-9 | 10-15 | 16-22 | 23-25 |
|---|---|---|---|---|---|---|
| processi in coda | 5 | 4 | 3 | 2 | 1 | 0 |
Il valore 60 coincide con la somma dei tempi di attesa (60): è la legge di Little, numero medio in coda (somma delle attese) / (durata totale). Il corso riporta 2,31, corretto.
Esercizio 29(b): SJF
Ordine per burst crescente: (2), (3), (3), (5), (6), (7).
| t | 0 .. 2 | 2 .. 5 | 5 .. 8 | 8 .. 13 | 13 .. 19 | 19 .. 26 |
|---|---|---|---|---|---|---|
| CPU |
Turnaround: , , , , , ; media . Attese: 0, 2, 5, 8, 13, 19; media . Processi in coda: (con 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1 seguiti da zeri: somma 47).
| turnaround medio | attesa media | processi in coda | |
|---|---|---|---|
| FCFS | 14,33 | 10 | 2,31 |
| SJF | 12,17 | 7,83 | 1,81 |
Esercizio 30: SJF senza prelazione
Ad ogni fine di burst si sceglie tra i processi già arrivati quello più breve (parità per indice).
| t | processi pronti | scelto |
|---|---|---|
| 0 | (0 .. 3) | |
| 3 .. 8 | nessuno | CPU inattiva |
| 8 | (8 .. 16) | |
| 16 | (1), (1) | (16 .. 17) |
| 17 | (1), (5) | (17 .. 18) |
| 18 | (5), (6), (6) | (18 .. 23) |
| 23 | , , (1), (1) | (23 .. 24) |
| 24 | , , | (24 .. 25) |
| 25 | (6), (6) | (25 .. 31) |
| 31 | (6), (1) | (31 .. 32) |
| 32 | (32 .. 38) |
Turnaround fine arrivo: , , , , , , , , , . Media .
Con prelazione (SRTF)
| t | 0 .. 3 | 8 .. 11 | 11 .. 12 | 12 .. 15 | 15 .. 16 | 16 .. 18 | 18 .. 21 | 21 .. 22 | 22 .. 24 | 24 .. 25 | 25 .. 28 | 28 .. 29 | 29 .. 32 | 32 .. 38 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CPU |
(nell'intervallo 3-8 la CPU è inattiva). Per esempio a arriva (burst 1) mentre ha ancora 5 unità: lo prelaziona; a arriva (1) con a 2 unità dalla fine: lo prelaziona. Turnaround: , , , , , , , , , ; media . I valori del corso (6,5 e 5,7) sono confermati da una simulazione.
Domande d'esame
Perché il numero medio di processi in coda si può ricavare dai tempi di attesa? Traccia. Legge di Little: la somma, istante per istante, dei processi in coda è uguale alla somma dei tempi di attesa di tutti i processi (ogni processo contribuisce 1 per ogni istante in cui attende); si divide per la durata totale. Con FCFS: .
Versione ripasso
- 29 (burst 3, 5, 2, 6, 7, 3, arrivo 0). 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 →.
- FCFS (): fine 3, 8, 10, 16, 23, 26; turnaround medio 14,33; attese 0, 3, 8, 10, 16, 23 -> 10; processi in coda 2,31 (5 per 3 istanti, 4 per 5, 3 per 2, 2 per 6, 1 per 7).
- SJF (): fine 2, 5, 8, 13, 19, 26; turnaround 12,17; attesa 7,83; coda 1,81.
- Little: media in coda somma delle attese / durata.
- 30: SJF non preemptive: , ( da 8), , , , , , , , ; turnaround 3, 8, 6, 3, 6, 12, 18, 3, 2, 4 -> 6,5. SRTF: 5,7 (turnaround 3, 10, 1, 1, 7, 13, 18, 1, 2, 1). CPU inattiva tra 3 e 8.
- 30, tabella di scelta (SJF non preemptive): 0: ; 3-8: CPU inattiva; 8: (fino a 16); 16: o (burst 1, indice minore ); 17: ; 18: (5); 23: , 24: (burst 1); 25: (6, indice minore di ); 31: ; 32: .
- Coda media e attese: somma delle lunghezze della coda = somma dei tempi di attesa (60 per FCFS, 47 per SJF) su 26 istanti.
- Errori tipici: attesa senza sottrarre l'arrivo; ignorare i tempi morti; SRTF confrontato con il burst intero.