Salta al contenuto
Note per Studenti Esercizio - Round robin con arrivi e conteggio dei processi in coda (eserciziario, esercizio 31)

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 q=3q = 3. Processi:

P0P_0 P1P_1 P2P_2 P3P_3 P4P_4 P5P_5 P6P_6 P7P_7 P8P_8 P9P_9
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 P0P_0 P0P_0 P0P_0 (0 .. 1), finisce
1 CPU inattiva fino a 3
3 arrivano P1P_1 e P2P_2 (ordine per indice) P1,P2P_1, P_2 P1P_1 (3 .. 5), finisce
5 P2P_2 P2P_2 (5 .. 8), residuo 2
8 quanto scaduto; in coda erano arrivati P3P_3 (7); P4P_4 arriva a 8 P3,P2,P4P_3, P_2, P_4 P3P_3 (8 .. 11), residuo 1
11 in coda arriva P5P_5 (10) prima del prelazionato P2,P4,P5,P3P_2, P_4, P_5, P_3 P2P_2 (11 .. 13), finisce
13 arriva P6P_6 (13) P4,P5,P3,P6P_4, P_5, P_3, P_6 P4P_4 (13 .. 16), residuo 1
16 arrivano P7P_7 (15) prima, poi P4P_4 in coda P5,P3,P6,P7,P4P_5, P_3, P_6, P_7, P_4 P5P_5 (16 .. 19), finisce
19 P3,P6,P7,P4P_3, P_6, P_7, P_4 P3P_3 (19 .. 20), finisce
20 P6,P7,P4P_6, P_7, P_4 P6P_6 (20 .. 21), finisce
21 P7,P4P_7, P_4 P7P_7 (21 .. 22), finisce
22 P4P_4 P4P_4 (22 .. 23), finisce
23 arrivano P8P_8 e P9P_9 P8,P9P_8, P_9 P8P_8 (23 .. 24), poi P9P_9 (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
P0P_0 idle P1P_1 P2P_2 P3P_3 P2P_2 P4P_4 P5P_5 P3P_3 P6P_6 P7P_7 P4P_4 P8P_8 P9P_9

(Il processo P2P_2 che a 8 è prelazionato con residuo 2 ritorna a 11; P3P_3 è prelazionato a 11 con residuo 1.)

(1) Turnaround

Turnaround == fine −- arrivo:

P0P_0 P1P_1 P2P_2 P3P_3 P4P_4 P5P_5 P6P_6 P7P_7 P8P_8 P9P_9
fine 1 5 13 20 23 19 21 22 24 25
turnaround 1 2 10 13 15 9 8 7 1 2

Media =68/10=6,8= 68/10 = 6{,}8.

(2) Attesa in coda

Attesa == turnaround −- durata: 0,0,5,9,11,6,7,6,0,10, 0, 5, 9, 11, 6, 7, 6, 0, 1. Media =45/10=4,5= 45/10 = 4{,}5.

(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 =45= 45, istanti =25= 25 (da 0 a 25), media =45/25=1,8= 45/25 = 1{,}8. 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 t=8t=8 la coda diventa P3,P4,P2P_3, P_4, P_2 invece di P3,P2,P4P_3, P_2, P_4) e il turnaround medio diventa 7,17{,}1 (attesa media 4,84{,}8, coda media 1,921{,}92): 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

Esercizi su questo argomento

Teoria collegata