Sei sulla pagina 1di 6

I Compendi OpenSource

di Giacomo Marciani

Teoria, Formulario e Suggerimenti Pratici

Sistemi Operativi

1
Lo

Scheduling della CPU


scheduling della CPU1

il meccanismo che realizza la commutazione E' alla base della progettazione dei sistemi operativi multiprogrammati, e ad esso vengono sottoposte quasi tutte le risorse del sistema.

della CPU tra i processi.

Scheduler a breve termine e Dispatcher Lo scheduler a breve termine2 il modulo che, attraverso uno schema di scheduling e un algoritmo di scheduling, sceglie dalla ready queue il processo a cui assegnare la CPU. Il dispatcher il modulo che passa eettivamente il controllo della CPU ai processi schelti dallo scheduler a breve termine. Al momento del context switch, il dispatcher si attiva ed esegue le seguenti operazioni, che realizzano la commutazione della CPU:

1. context switch 2. passaggio a UM 3. jump al PC 4. riavvio dell'esecuzione La latenza di dispatch il tempo necessario al dispatcher per fermare un processo ed avviarne un altro.
Schemi di scheduling Lo schema
di scheduling

pu essere:

nonpreemptive3 : un processo rilascia la CPU solo in caso di

preemptive4 : un processo rilascia la CPU in caso di

terminazione, transizione allo stato di attesa o transizione allo stato di pronto. Questo vuol dire che un processo pu rilasciare la CPU a favore di un processo che abbia una qualche priorit su di esso. Questo schema di scheduling necessita della sincronizzazione dei processi, senza la quale si rischierebbe l'incoerenza dei dati condivisi. Una soluzione per simulare la preemption il blocco dell'I/O prima di un context switch, ma tale modello si esecuzione del kernel non adatto a sistemi real-time o multiprogrammati.

nazione o transizione allo stato di attesa.

termi-

preemption, anche detto cooperative scheduling, ovvero scheduling cooperativo. 4 ovvero scheduling con diritto di prelazione, o scheduling con preemption.

1 anche detto scheduling dei processi, o scheduling dei thread. 2 anche detto scheduler della CPU. 3 ovvero scheduling senza diritto di prelazione, o scheduling senza

Algoritmi di scheduling Gli algoritmi di scheduling permettono allo scheduler a breve termine di schegliere dalla ready queue il processo a cui assegnare la CPU. I criteri di scheduling sono i diversi aspetti da valutare nel confronto fra algoritmi di scheduling, e sono:
utilizzo della CPU: la CPU deve essere pi attiva possibile. throughput: numero di processi completati nell'unit di tempo. turnaround time: intervallo di tempo che intercorre tra la sottomissione

del processo e il completamento della sua esecuzione. ready-queue.

tempo di attesa: somma degli intervalli di attesa dei processi nella tempo di risposta: intervallo di tempo che intercorre tra la sottomis-

sione di una richiesta e la prima risposta prodotta.

E' auspicabile massimizzare l'utilizzo della CPU e il througput, e minimizzare il turnaround time, il tempo di attesa e il tempo di risposta. Generalmente si ottimizzano i valori medi, ma pu anche capitare di dover ottimizzare i valori minimi o massimi, o la varianza5. Nella trattazione degli algoritmi di scheduling adottiamo il tempo medio di attesa come criterio di confronto, e il diagramma di Gantt6 come rappresentazione graca dello scheduling.
scheduling in ordine di arrivo (FCFS7 ): assegna la CPU al processo

che la ha richiesta per primo. La ready queue realizzata con logica di accesso FIFO. Il tempo di attesa medio generalmente non minimo, e pu variare in funzione della durata delle sequenze di operazioni dei processi partecipanti. Segue lo schema nonpreemptive. Sore dell'effetto
convoglio8 ,

come nel caso in cui ci sia un processo CPU bound e tanti processi I/O bound. Non adatto per sistemi time-sharing.
scheduling per brevit (SJF9 ): assegna la CPU al processo che ha

la pi breve sequenza di operazioni della CPU. A parit di lunghezza si applica l'algoritmo di scheduling FCFS. E' un algoritmo di scheduling ottimale, in quanto minimizza il tempo d'attesa medio10. Pu seguire sia

5 alcuni analisti suggeriscono che per i sistemi interattivi come i sistemi time-sharing, sia pi importante minimizzare la varianza del tempo di risposta anzich il tempo medio di risposta. Un sistema il cui tempo di risposta sia ragionevole e prevedibile pu considerarsi migliore di un sistema mediamente pi rapido, ma molto variabile. Tuttavia stato fatto poco per minimizzare la varianza negli algoritmi di scheduling. 6 il diagramma di Gantt un istogramma che illustra una data pianicazione includendo i tempi d'inizio e ne di ogni processo partecipante. 7 ovvero scheduling First-Come-First-Served, FCFS. 8 l'eetto convoglio il fenomeno per cui tutti i processi attendono che un lungo processo liberi la CPU. 9 ovvero scheduling Shortest-Job-First, SJF. 10 spostando un processo breve prima di un processo lungo, il tempo d'attesa per il processo breve diminuisce pi di quanto non aumenti il tempo d'attesa medio per il processo lungo.

lo schema nonpreemptive che lo schema preemptive 11 . La lunghezza della sequenza calcolata come media esponenziale delle eettive lunghezze delle precedenti sequenze secondo la formula
tn+1 = t + (1 )tn

(1)

dove [0, 1] il parametro che indica il peso relativo della storia recente e di quella passata.
scheduling per priorit: assegna la CPU al processo con

priorit maggiore. A ciascun processo assegnata una priorit, che pu essere una priorit interna o una priorit esterna. Quindi l'algoritmo SJF un algoritmo di scheduling per priorit interna, la cui priorit l'inverso della lunghezza. Pu seguire sia lo schema nonpreemptive che lo schema preemptive. Questo algoritmo pu causare starvation12 , risolvibile tramite aging 13. time slice preemption15. La ready queue realizzata come coda circolare, ed aancata da un timer periodico che invia un segnale di interruzone ad
ogni scadenza del quanto di tempo, in modo da attivare il dispatcher. Dati n processi nella ready queue e un quanto di tempo q , ogni processo ha un tempo massimo di attesa pari a (n 1)q unit di tempo. Le prestazioni dell'algoritmo, in termini di tempo medio di attesa e turnaround time, dipendono strettamente dal quanto di tempo: q riduce RR a FCFS il tempo medio di attesa massimo e il turnaround time medio minimo; q 0 realizza il processor sharing 16 , il tempo medio di attesa minimo e il turnaround time medio massimo. Generalmente un algoritmo eciente per ready queue con l'80% dei processi aventi durata minore del quanto di tempo, e se previsto un quanto di tempo maggiore della latenza media di dispatch.

scheduling round-robin14 (RR): variante dello scheduling FCFS con

scheduling a code multiple (MQ17 ): assegna

permanentemente i processi a code di scheduling distinte, ognuna con il proprio algoritmo di scheduling ed eventualmente quanti di tempo distinti. L'assegnazione viene fatta in base alle caratteristiche interne dei processi, in quanto processi dierenti hanno necessit di scheduling dierenti: una distinzione comune fatta tra processi interattivi, eseguiti in foreground e processi batch, eseguiti in background.

di scheduling SJF preemptive viene spesso chiamato algortimo di scheduling Shortest-Remaining-Time-First, SRTF. 12 la starvation il fenomeno di attesa indenita. 13 ovvero invecchiamento, una tecnica di aumento graduale delle priorit dei processi in funzione del tempo di attesa. 14 anche detto scheduling circolare. 15 ovvero preemption basata su quanto di tempo. 16 ovvero condivisione della CPU. 17 ovvero scheduling Multilevel-Queue, MQ.

11 l'algoritmo

scheduling a code multiple con retroazione (MFQ18 ): variante

dello scheduling MQ che prevede l'assegnazione retroattiva dei processi alle code di scheduling di uno stack di code caratterizzate da priorit e algoritmi di scheduling dierenti. In generale questo algoritmo caratterizzato dai seguenti fattori: numero di code, scheduling per ciascuna coda, metodo per determinare quando spostare un processo nella coda a priorit maggiore/minore, metodo di assegnazione di un processo ad una coda. Una soluzione comune prevede uno stack di code caratterizzate da quanti di tempo crescenti, e soggette allo scheduling RR. L'ultima coda dello stack soggetta a scheduling FCFS. Quei processi che non terminano nel quanto di tempo previsto dalla coda di appartenenza vengono aggiunti nella coda seguente, e cos via no all'ultima coda dello stack.

Scheduling per sistemi multiprocessore In sistemi multiprocessore lo scheduling proporzionalmente pi complesso. Distinguiamo la multielaborazione in due classi:
symmetric multiprocess (SMP)19 : sistema

peer-to-peer in cui ogni processore un peer, che possiede dunque una propria ready queue e provvede autonomamente al proprio scheduling. Questi sistemi necessitano delle seguenti tecniche di ottimizzazione dello scheduling:
i processi sono vincolati a rimanere assegnati al processore in cui sono in esecuzione21 . Se il sistema operativo garantisce tale vincolo si parla si hard anity, se il vincolo non assicurato si parla di soft anity.  load balancing22 : i processi sono ripartiti tra i processori in modo da assicurare un bilanciamento uniforme del carico di lavoro. Se un processo di sistema a garantire il load balancing si parla di push migration23, se sono invece i processori stessi a garantirlo si parla di pull migration24 .

processor affinity20 :

asymmetric multiprocess (AMP)25 : sistema

master-slave in cui lo scheduling adato ad un solo processore, detto master server ; gli altri processori eseguono solo il codice utente.
riempimento della cache di

destinazione un processo dispendioso. 22 ovvero bilanciamnto del carico. 23 ovvero di migrazione guidata. 24 ovvero di migrazione spontanea. 25 ovvero multielaborazione asimmetrica.

18 ovvero scheduling Multilevel-Feedback-Queue, MFQ. 19 ovvero multielaborazione simmetrica. 20 ovvero predilezione per la CPU. 21 lo svuotamento della cache di provenienza, e conseguente

Valutazione degli algoritmi di scheduling La valutazione degli algoritmi di scheduling pu essere condotta tramite realizzazione, oppure nelle seguenti modalit:
modello deterministico:

di lavoro, confronta le prestazioni di ciascun algoritmo di scheduling. E' un tipo di valutazione ecace nel caso in cui si possa misurare il carico di lavoro eettivo dei programmi. con una propria ready queue. Ipotizzando un formula di Little:
n = W

valutazione analitica26 che, dato un carico

reti di code27 : descrive il sistema come una rete di server, ciascuno

sistema stabile 28 , vale la

(2)

dove n la lunghezza media della ready queue, W il tempo medio di attesa, e l'andamento medio d'arrivo di nuovi processi.
simulazione: viene realizzato un

numeri casuali immetta sequenze casuali di processi. Inne si estrapolano


le statistiche prestazionali.

simulatore 29 , in cui un generatore di

Scheduling in Linux Il kernel di Linux realizza uno scheduling RR preemptive con quanti di tempo variabili in funzione di due gamme di priorit: un intervallo di priorit statica real time (0-99) e intervallo di priorit dinamica nice (100-140). Ai processi che globalmente hanno un'alta priorit riservato un quanto di tempo maggiore rispetto a quelli a bassa priorit. Supporta la processor anity, il load balancing. Prevede inoltre per ogni processore una runqueue30 , divisa in due array di priorit. I due array di priorit sono: attivo, contenente tutti i task che hanno ancora tempo da sfruttare, e scaduto, contenente i task che hanno esaurito il tempo a disposizione.

26 la valutazione analitica fornisce una formula che valuti le prestazioni di un algoritmo di scheduling per un dato carico di lavoro. 27 anche detto queueing-network analysis. 28 un sistema stabile un sistema in cui il numero di processi che lasciano la ready queue uguale al numero di processi che vi arrivano. 29 un simulatore un programma che modellizza un sistema di calcolo, le cui strutture dati rappresentano i principali elementi del sistema. 30 ovvero coda di esecuzione.