Esercizio - Code multiple con SRTF, round robin e FCFS (eserciziario, esercizio 26)
In questa pagina 3
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizio 26). Dieci processi:
| processo | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| arrivo | 0 | 2 | 8 | 11 | 2 | 4 | 9 | 3 | 5 | 7 |
| burst | 4 | 2 | 1 | 4 | 5 | 4 | 3 | 7 | 8 | 2 |
La lettera indica la coda in cui il processo viene ammesso. Scheduling a code multiple con prelazione: la coda è gestita con SRTF, la coda con Round Robin con quanto di 2 ms, la coda con FCFS; ha priorità su , e su . Si descriva la sequenza di esecuzione con un Gantt, si calcoli l'istante di completamento di ogni job e il tempo medio di attesa. 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 →.
Regole
- Si serve sempre la coda di priorità più alta che contiene un processo pronto; un arrivo in una coda più alta prelaziona il processo di una coda più bassa.
- Coda : tra i processi pronti si sceglie quello con tempo residuo minore (e arrivo precedente a parità).
- Coda : round robin, quanto 2; un processo prelazionato da un job di torna in fondo alla coda e il suo quanto riparte da zero la volta successiva. I nuovi arrivi nell'istante in cui scade un quanto entrano prima del prelazionato.
- Coda : FCFS (nell'ordine di arrivo), senza prelazione tra i processi di .
Svolgimento
Si tiene aggiornato lo stato della coda (a sinistra il prossimo) e ogni volta si guarda prima la coda .
| intervallo | esegue | coda dopo il turno | motivo |
|---|---|---|---|
| 0 .. 4 | (arrivato 2), (arrivato 4) | unico processo di pronto. A arriva (burst 2) ma il residuo di è 2: SRTF prelaziona solo con burst strettamente minore, quindi prosegue e finisce a 4 | |
| 4 .. 6 | invariata | ha priorità su e (che sono pronti da 2): finisce a 6 | |
| 6 .. 8 | , | è vuota: si serve in RR, esegue un quanto (residuo 3) e va in fondo | |
| 8 .. 9 | , | a arriva (burst 1): coda non vuota, finisce a 9 | |
| 9 .. 11 | , , | arriva a 9, quindi entra in coda dopo ; esegue un quanto (residuo 2) e va in fondo | |
| 11 .. 15 | invariata | arriva a 11 (burst 4): prelazione sulla coda , finisce a 15 | |
| 15 .. 17 | , , | (residuo 3 -> 1) | |
| 17 .. 19 | , , | (residuo 3 -> 1) | |
| 19 .. 21 | , | (residuo 2 -> 0): finisce a 21 | |
| 21 .. 22 | residuo 1: finisce a 22 | ||
| 22 .. 23 | residuo 1: finisce a 23 | ||
| 23 .. 30 | e vuote: coda in FCFS ( è il primo arrivato, a 3): finisce a 30 | ||
| 30 .. 38 | finisce a 38 | ||
| 38 .. 40 | finisce a 40 |
Sequenza completa (coincide con quella del corso): , , , , , , , , , , , , , . Il corso commenta: " arriva dopo il quanto dato a , viene messo nella coda dopo : dopo l'esecuzione di avrò nella coda ".
Tempi di completamento e attesa
Attesa fine arrivo burst:
| arrivo | burst | fine | attesa | |
|---|---|---|---|---|
| 0 | 4 | 4 | 0 | |
| 2 | 2 | 6 | 2 | |
| 8 | 1 | 9 | 0 | |
| 11 | 4 | 15 | 0 | |
| 2 | 5 | 22 | 15 | |
| 4 | 4 | 21 | 13 | |
| 9 | 3 | 23 | 11 | |
| 3 | 7 | 30 | 20 | |
| 5 | 8 | 38 | 25 | |
| 7 | 2 | 40 | 31 |
Somma delle attese ; media ms (come nel corso).
Domande d'esame
Cosa significa che la coda ha priorità assoluta sulla coda ? Che rischio comporta? Traccia. Finché in c'è un processo pronto, e non girano, e un nuovo arrivo in prelaziona subito. I processi delle code basse possono soffrire di starvation (qui parte solo a 23); si evita con feedback e aging.
Versione ripasso
- Dati: , , , , , , , , , . Coda : SRTF; : RR ; : FCFS; priorità con prelazione. 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 →.
- Regole: coda alta non vuota sempre prima; SRTF prelaziona solo con burst strettamente minore; prelazionato di in fondo alla coda .
- Gantt: -, -, -, -, -, -, -, -, -, -, -, -, -, -.
- Attese: , , , , , , , , , ; media 11,7 ms.
- Errori tipici: prelazione con burst uguale; dimenticare l'ordine della coda dopo una prelazione; far girare prima che e siano vuote.