Esercizio - Round robin con arrivi e conteggio dei processi in coda (eserciziario, esercizio 31)
In questa pagina 4
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizio 31). La CPU è assegnata con Round Robin e quanto . Processi:
| arrivo | 0 | 3 | 3 | 7 | 8 | 10 | 13 | 15 | 23 | 23 |
| durata | 1 | 2 | 5 | 4 | 4 | 3 | 1 | 1 | 1 | 1 |
(1) Tempo medio di turnaround, quando due processi arrivano nello stesso istante ha priorità l'indice minore. (2) Tempo medio di attesa in coda. (3) Numero medio di processi nella coda dei pronti. 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 →.
La convenzione da fissare
In RR, quando un quanto scade nello stesso istante in cui arriva un processo nuovo, bisogna decidere chi entra per primo in coda. Il corso usa la convenzione: il processo prelazionato entra prima del nuovo arrivato; solo gli arrivi strettamente prima della fine del quanto stanno davanti. Con la convenzione opposta i risultati cambiano (vedi il confronto in fondo).
Svolgimento
Si tiene la coda dei pronti (a sinistra il prossimo):
| t | evento | coda dopo l'evento | esegue |
|---|---|---|---|
| 0 | arriva | (0 .. 1), finisce | |
| 1 | CPU inattiva fino a 3 | ||
| 3 | arrivano e (ordine per indice) | (3 .. 5), finisce | |
| 5 | (5 .. 8), residuo 2 | ||
| 8 | quanto scaduto; in coda erano arrivati (7); arriva a 8 | (8 .. 11), residuo 1 | |
| 11 | in coda arriva (10) prima del prelazionato | (11 .. 13), finisce | |
| 13 | arriva (13) | (13 .. 16), residuo 1 | |
| 16 | arrivano (15) prima, poi in coda | (16 .. 19), finisce | |
| 19 | (19 .. 20), finisce | ||
| 20 | (20 .. 21), finisce | ||
| 21 | (21 .. 22), finisce | ||
| 22 | (22 .. 23), finisce | ||
| 23 | arrivano e | (23 .. 24), poi (24 .. 25) |
Diagramma di Gantt (un'unità per colonna dove serve):
| 0-1 | 1-3 | 3-5 | 5-8 | 8-11 | 11-13 | 13-16 | 16-19 | 19-20 | 20-21 | 21-22 | 22-23 | 23-24 | 24-25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| idle |
(Il processo che a 8 è prelazionato con residuo 2 ritorna a 11; è prelazionato a 11 con residuo 1.)
(1) Turnaround
Turnaround fine arrivo:
| fine | 1 | 5 | 13 | 20 | 23 | 19 | 21 | 22 | 24 | 25 |
| turnaround | 1 | 2 | 10 | 13 | 15 | 9 | 8 | 7 | 1 | 2 |
Media .
(2) Attesa in coda
Attesa turnaround durata: . Media .
(3) Numero medio di processi in coda
Si conta, per ogni istante intero, quanti processi sono pronti ma non in esecuzione:
| istante | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| in coda | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 4 | 4 | 4 | 4 | 3 | 2 | 1 | 0 | 1 | 0 |
Somma , istanti (da 0 a 25), media . Come nell'esercizio precedente coincide con la somma delle attese diviso la durata (Little).
Controllo con la convenzione opposta
Se il nuovo arrivato entra prima del prelazionato, la sequenza cambia (per esempio a la coda diventa invece di ) e il turnaround medio diventa (attesa media , coda media ): la scelta della convenzione conta, e va dichiarata. Risultati ricalcolati con una simulazione; quelli del corso (6,8; 4,5; 1,8) sono confermati con la prima convenzione.
Domande d'esame
Cosa succede in RR se un processo arriva nello stesso istante in cui scade il quanto di un altro? Traccia. Dipende dalla convenzione: se il testo non la dice, si dichiara. Con "prelazionato per primo" il processo interrotto entra in coda prima del nuovo arrivato.
Versione ripasso
- Dati: ; arrivi 0, 3, 3, 7, 8, 10, 13, 15, 23, 23; durate 1, 2, 5, 4, 4, 3, 1, 1, 1, 1. 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 →.
- Convenzione: all'istante di fine quanto il prelazionato entra prima dell'arrivo di pari istante; a parità di arrivo, indice minore.
- Gantt: (0-1), idle (1-3), (3-5), (5-8), (8-11), (11-13), (13-16), (16-19), (19-20), (20-21), (21-22), (22-23), (23-24), (24-25).
- Fine: 1, 5, 13, 20, 23, 19, 21, 22, 24, 25. Turnaround 1, 2, 10, 13, 15, 9, 8, 7, 1, 2 -> media 6,8. Attesa 0, 0, 5, 9, 11, 6, 7, 6, 0, 1 -> 4,5.
- Coda media: somma delle lunghezze 45 su 25 istanti 1,8 (anche = somma attese / durata).
- Con la convenzione opposta: 7,1 / 4,8 / 1,92.
- Errori tipici: nuovo arrivato prima del prelazionato senza dichiararlo; dimenticare il tempo inattivo; contare il processo in esecuzione nella coda.