Salta al contenuto
Note per Studenti Esercizio - Scheduling FCFS, SJF e priorità con sei processi (eserciziario, esercizio 24)

Esercizio - Scheduling FCFS, SJF e priorità con sei processi (eserciziario, esercizio 24)

In questa pagina 5

Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizio 24). Sei processi P1,…,P6P_1, \dots, P_6 richiedono la CPU contemporaneamente, all'istante 0. Durata del burst di CPU e priorità (numeri bassi = priorità alta):

processo burst priorità
P1P_1 6 1
P2P_2 4 2
P3P_3 8 3
P4P_4 2 4
P5P_5 4 5
P6P_6 6 6

Si tracci il diagramma di Gantt e si calcoli il tempo di completamento di ogni processo con (1) Shortest Job First, (2) scheduling a priorità, (3) Round Robin con quanto q=2q = 2. Si trascura il tempo di cambio di contesto; in caso di parità si ordina per indice. 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 →.

1. Shortest Job First

Tutti arrivano a 0, quindi SJF (non preemptive) esegue i processi in ordine di burst crescente, a parità per indice: P4P_4 (2), P2P_2 (4), P5P_5 (4), P1P_1 (6), P6P_6 (6), P3P_3 (8).

t 0 .. 2 2 .. 6 6 .. 10 10 .. 16 16 .. 22 22 .. 30
CPU P4P_4 P2P_2 P5P_5 P1P_1 P6P_6 P3P_3

Tempi di completamento (= turnaround, perché arrivano tutti a 0): P4=2P_4 = 2, P2=6P_2 = 6, P5=10P_5 = 10, P1=16P_1 = 16, P6=22P_6 = 22, P3=30P_3 = 30. Media: (2+6+10+16+22+30)/6=86/6=14,33(2 + 6 + 10 + 16 + 22 + 30)/6 = 86/6 = 14{,}33.

2. Priorità

Priorità P1P_1 (1) la più alta ... P6P_6 (6) la più bassa; poiché le priorità coincidono con l'ordine degli indici e non c'è prelazione che cambi nulla, l'ordine è P1,P2,…,P6P_1, P_2, \dots, P_6 (come FCFS).

t 0 .. 6 6 .. 10 10 .. 18 18 .. 20 20 .. 24 24 .. 30
CPU P1P_1 P2P_2 P3P_3 P4P_4 P5P_5 P6P_6

Completamenti: 6, 10, 18, 20, 24, 30; media =108/6=18= 108/6 = 18.

3. Round Robin con q=2q = 2

Coda iniziale P1,P2,P3,P4,P5,P6P_1, P_2, P_3, P_4, P_5, P_6. Ogni giro assegna 2 unità a ciascun processo ancora attivo. Burst residui dopo ogni giro:

giro P1P_1 P2P_2 P3P_3 P4P_4 P5P_5 P6P_6 istanti
inizio 6 4 8 2 4 6
1 4 2 6 0 (P4P_4 finisce a 8) 2 4 0 .. 12
2 2 0 (P2P_2 finisce a 16) 4 0 (P5P_5 finisce a 20) 2 12 .. 22
3 0 (P1P_1 finisce a 24) 2 0 (P6P_6 finisce a 28) 22 .. 28
4 0 (P3P_3 finisce a 30) 28 .. 30

Diagramma di Gantt completo (ogni cella 2 unità):

0-2 2-4 4-6 6-8 8-10 10-12 12-14 14-16 16-18 18-20 20-22 22-24 24-26 26-28 28-30
P1P_1 P2P_2 P3P_3 P4P_4 P5P_5 P6P_6 P1P_1 P2P_2 P3P_3 P5P_5 P6P_6 P1P_1 P3P_3 P6P_6 P3P_3

Completamenti: P4=8P_4 = 8, P2=16P_2 = 16, P5=20P_5 = 20, P1=24P_1 = 24, P6=28P_6 = 28, P3=30P_3 = 30; media =126/6=21= 126/6 = 21.

Confronto

politica P1P_1 P2P_2 P3P_3 P4P_4 P5P_5 P6P_6 media
SJF 16 6 30 2 10 22 14,33
priorità 6 10 18 20 24 30 18
RR q=2q=2 24 16 30 8 20 28 21

SJF è ottimo per il tempo medio; RR ha il turnaround più alto ma il tempo di risposta migliore (tutti partono entro 10 unità). Risultati ricalcolati con una simulazione in Python e coincidenti con quelli del corso (14,3, 18, 21).

Domande d'esame

Con quale algoritmo il turnaround medio è minimo, e perché? Traccia. SJF: eseguire prima i processi brevi riduce l'attesa di molti processi al prezzo dell'attesa di uno solo lungo; qui 14,33 contro 18 e 21.

Versione ripasso

Teoria collegata