Salta al contenuto
Note per Studenti Esercizio - Code multiple con SRTF, round robin e FCFS (eserciziario, esercizio 26)

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 A1A_1 A2A_2 A3A_3 A4A_4 B1B_1 B2B_2 B3B_3 C1C_1 C2C_2 C3C_3
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 AA è gestita con SRTF, la coda BB con Round Robin con quanto di 2 ms, la coda CC con FCFS; AA ha priorità su BB, e BB su CC. 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 AA: tra i processi pronti si sceglie quello con tempo residuo minore (e arrivo precedente a parità).
  • Coda BB: round robin, quanto 2; un processo prelazionato da un job di AA torna in fondo alla coda BB 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 CC: FCFS (nell'ordine di arrivo), senza prelazione tra i processi di CC.

Svolgimento

Si tiene aggiornato lo stato della coda BB (a sinistra il prossimo) e ogni volta si guarda prima la coda AA.

intervallo esegue coda BB dopo il turno motivo
0 .. 4 A1A_1 B1B_1 (arrivato 2), B2B_2 (arrivato 4) unico processo di AA pronto. A t=2t=2 arriva A2A_2 (burst 2) ma il residuo di A1A_1 è 2: SRTF prelaziona solo con burst strettamente minore, quindi A1A_1 prosegue e finisce a 4
4 .. 6 A2A_2 invariata AA ha priorità su BB e CC (che sono pronti da 2): A2A_2 finisce a 6
6 .. 8 B1B_1 B2B_2, B1B_1 AA è vuota: si serve BB in RR, B1B_1 esegue un quanto (residuo 3) e va in fondo
8 .. 9 A3A_3 B2B_2, B1B_1 a t=8t=8 arriva A3A_3 (burst 1): coda AA non vuota, A3A_3 finisce a 9
9 .. 11 B2B_2 B1B_1, B3B_3, B2B_2 B3B_3 arriva a 9, quindi entra in coda dopo B1B_1; B2B_2 esegue un quanto (residuo 2) e va in fondo
11 .. 15 A4A_4 invariata A4A_4 arriva a 11 (burst 4): prelazione sulla coda BB, finisce a 15
15 .. 17 B1B_1 B3B_3, B2B_2, B1B_1 B1B_1 (residuo 3 -> 1)
17 .. 19 B3B_3 B2B_2, B1B_1, B3B_3 B3B_3 (residuo 3 -> 1)
19 .. 21 B2B_2 B1B_1, B3B_3 B2B_2 (residuo 2 -> 0): finisce a 21
21 .. 22 B1B_1 B3B_3 residuo 1: finisce a 22
22 .. 23 B3B_3 residuo 1: finisce a 23
23 .. 30 C1C_1 AA e BB vuote: coda CC in FCFS (C1C_1 è il primo arrivato, a 3): finisce a 30
30 .. 38 C2C_2 finisce a 38
38 .. 40 C3C_3 finisce a 40

Sequenza completa (coincide con quella del corso): A1(0-4)A_1(0\text{-}4), A2(4-6)A_2(4\text{-}6), B1(6-8)B_1(6\text{-}8), A3(8-9)A_3(8\text{-}9), B2(9-11)B_2(9\text{-}11), A4(11-15)A_4(11\text{-}15), B1(15-17)B_1(15\text{-}17), B3(17-19)B_3(17\text{-}19), B2(19-21)B_2(19\text{-}21), B1(21-22)B_1(21\text{-}22), B3(22-23)B_3(22\text{-}23), C1(23-30)C_1(23\text{-}30), C2(30-38)C_2(30\text{-}38), C3(38-40)C_3(38\text{-}40). Il corso commenta: "B3B_3 arriva dopo il quanto dato a B1B_1, viene messo nella coda dopo B1B_1: dopo l'esecuzione di B2B_2 avrò nella coda B1→B3→B2B_1 \to B_3 \to B_2".

Tempi di completamento e attesa

Attesa == fine −- arrivo −- burst:

arrivo burst fine attesa
A1A_1 0 4 4 0
A2A_2 2 2 6 2
A3A_3 8 1 9 0
A4A_4 11 4 15 0
B1B_1 2 5 22 15
B2B_2 4 4 21 13
B3B_3 9 3 23 11
C1C_1 3 7 30 20
C2C_2 5 8 38 25
C3C_3 7 2 40 31

Somma delle attese =117= 117; media =117/10=11,7= 117/10 = 11{,}7 ms (come nel corso).

Domande d'esame

Cosa significa che la coda AA ha priorità assoluta sulla coda BB? Che rischio comporta? Traccia. Finché in AA c'è un processo pronto, BB e CC non girano, e un nuovo arrivo in AA prelaziona subito. I processi delle code basse possono soffrire di starvation (qui CC parte solo a 23); si evita con feedback e aging.

Versione ripasso

Teoria collegata