Scheduling
A. Ferrari
Terminato
Nuovo
interruzione
ammissione
Coda Pronti
uscita
in
esecuzione
Pronto
assegnazione
evento verificato
attesa evento (es. I/O)
bloccato
Code di Attesa
Tipi di processi
CPU Bound
Processi che sfruttano pesantemente le risorse
computazionali del processore, ma non richiedono servizi di
ingresso/uscita dati al sistema operativo in quantità
rilevanti.
Es. i programmi di calcolo matematico, i quali necessitano
spesso di un'enorme potenza di calcolo, ma sfruttano l'I/O
solo all'inizio della loro vita (per caricare gli input) ed alla
fine di essa (per produrre gli output).
I/O Bound
molti accessi alle periferiche, il processo è spesso interrotto
per attendere il completamento delle richieste di I/O.
P1 (CPU bound)
P2 /I/O bound)
P1
Lungo burst di CPU
Attesa completamento I/O
Corto burst di CPU
P2
tempo
In esecuzione
In attesa
Classi di scheduling
Nella gestione delle risorse di un elaboratore, il
fattore tempo porta a identificare tre tipi di
scheduling:
Scheduling a breve termine
Scheduling a medio termine
Scheduling a lungo termine
Scheduling
a lungo termine
E’ impiegato nella scelta dei programmi, presenti in
memoria secondaria, da caricare in memoria centrale
per la creazione dei corrispondenti processi
individua i programmi da ammettere all’esecuzione
regola la presenza in memoria centrale di processi I/O
bound e CPU bound
controlla il livello di multiprogrammazione
Scheduling
a medio termine
Gestisce la permanenza in memoria dei processi non
in esecuzione
coordina le operazioni di trasferimento temporaneo
dei processi in memoria secondaria (swap out):
interviene nella gestione dei processi in attesa di
eventi da lungo tempo
Scheduling
a breve termine
Si occupa della selezione del nuovo processo da eseguire,
quando
il processo in esecuzione passa allo stato di attesa o ritorna
allo stato di pronto oppure termina
un processo passa dallo stato di attesa allo stato di pronto
si verificano eventi particolari (interruput, chiamate al S. O.)
Quando la CPU rimane inattiva, il process scheduler
(modulo del kernel) seleziona dalla ready queue (coda dei
processi pronti) il prossimo processo a cui assegnare la
CPU e decide da quale momento e per quanto tempo farlo
eseguire.
Context switch
Il context switch (commutazione di contesto) è la fase in
cui l’uso della CPU passa da un processo pi al suo
successivo pi+1
Nella fase di passaggio il SO realizza, in sequenza, le
seguenti operazioni:
Salvataggio dello stato del processo pi uscente
Selezione del nuovo processo pi+1
Ripristino dello stato del processo pi+1 entrante
Si modifica, in questo modo, il contesto in cui lavora il
processore.
Durata del
context switch
Il tempo utilizzato dal SO per le operazioni di context
switch, in rapporto al time-slice (quanto di tempo di
CPU), non deve essere causa di
riduzione dell’efficienza della CPU
lunghi tempi di risposta
A tal fine, il tempo di context switch non deve
superare il 25% del time-slice (solitamente di circa 100
ms)
Dispatcher
L’effettiva assegnazione della CPU al processo
prescelto per l’esecuzione è affidata al dispatcher,
modulo del kernel che gestisce
il context switch
il passaggio al modo utente
il salto alla giusta posizione del programma utente
(impostazione del program counter)
Politiche di scheduling:
obiettivi
massimizzare
il throughput (numero di processi utente completati nell’unità di tempo)
l’utilizzo della CPU (percentuale media di utilizzo della CPU nell’unità di
tempo)
minimizzare
l’overhead (numero di processi di sistema completati nell’unità di tempo)
il tempo di turnaround (tempo di permanenza di un processo nel sistema)
il tempo di risposta (tempo trascorso tra l’immissione di un comando e
l’emissione della prima risposta)
il tempo di attesa (tempo totale trascorso da un processo nello stato di
pronto)
garantire
fairness (equità) (imparzialità nell’attribuzione dei time-slice ai processi)
Tipi di sistemi
Ogni algoritmo di scheduling della CPU è finalizzato
al raggiungimento di alcuni obiettivi.
Nei sistemi batch (elaborazione a lotti) si cerca di
massimizzare il throughput e di minimizzare
l’overhead.
Nei sistemi interattivi (tempi di risposta immediati) è
essenziale minimizzare i tempi di risposta e di attesa
dei processi.
Parentesi storica
IBM 7094
IBM 7094
The 7094 was IBM's most powerful scientific computer in
1963. It could perform 500,000 logical decisions, 250,000
additions or subtractions, 100,000 multiplications, or
62,500 divisions in one second. It had hardware to do
double-precision floating-point arithmetic.
The computer gained considerable I/O bandwidth from its
separate data channels with direct memory access, and so
it was also used to run business and general-purpose
applications. The 7094 had an operating system called
IBSYS, and FORTRAN and COBOL compilers.
A typical system cost $3,134,500. IBM stopped selling them
in 1969.
Dati tecnici
Manufacturer:
IBM
Memory technology:
magnetic core
First introduced:
1963
Memory size:
32K 36-bit words
CPU technology:
transistor
Cycle time:
2 microseconds (0.5 MHz)
Sfruttare al massimo la
potenza di calcolo
Sistemi batch
Non interattività dei programmi
Esecuzione non immediata ma rimandata nel tempo dei
programmi
Il termine batch risale all'epoca della programmazione per
schede perforate. In quel contesto, i programmatori
solitamente non avevano accesso diretto al computer, bensì
preparavano i propri programmi "off-line" e li passavano a un
amministratore di sistema, il quale aveva il compito di mandarli
in esecuzione quando possibile (accodandoli rispetto ad altri
programmi in esecuzione e spesso accorpando più programmi
in un'unica unità di esecuzione), restituendo poi in seguito i
risultati dell'elaborazione agli interessati.
Sistemi interattivi
Nei sistemi interattivi il tempo di risposta deve essere
il minimo possibile per dare l'idea di continuità
all'utente e la proporzionalità deve essere rispettata,
ossia il tempo di risposta deve essere proporzionale
alla complessità dell'azione.
Classificazione delle
politiche di scheduling
Le politiche di scheduling della CPU si
differenziano in base a tre criteri di
classificazione:
senza prelazione/con prelazione
senza priorità/con priorità
statiche/dinamiche
Prelazione (pre-rilascio)
Politiche senza prelazione
(non pre-emptive)
una volta che la CPU è stata
assegnata ad un processo,
essa non può più essergli
tolta se non quando il
processo ha esaurito il suo
tempo di servizio o
necessita di un'operazione
di I/O.
Politiche con prelazione
(pre-emptive)
la CPU può essere
forzatamente tolta al
processo in corso di
esecuzione per essere
assegnata ad un altro
processo.
Priorità
Politiche senza priorità
pongono i processi sullo
stesso piano, dal punto
di vista dell’urgenza di
esecuzione.
Politiche con priorità
distinguono e suddividono
in classi i processi in stato di
pronto, a secondala della
loro importanza o urgenza
di esecuzione. Sono
necessarie nei sistemi realtime e interattivi.
Statiche/dinamiche
Politiche statiche
Politiche dinamiche
un processo conserva nel
tempo i suoi diritti di
accesso all’unità centrale
(priorità)
i processi modificano nel
tempo i propri diritti di
accesso all’unità centrale.
Politiche di
schedulazione
FCFS: First Come First Served
SJF: Shortest Job First -> (SRTF)
Per priorità
Round Robin
FCFS: First Come First
Served
La CPU è assegnata ai singoli processi in base al loro
ordine nella coda dei processi pronti (ready queue),
stabilito in base al tempo di arrivo oppure dal
numero identificativo (PID)
La ready queue è gestita in modalità FIFO (First In
First Out)
al processo che giunge nella ready queue viene
attribuito l’ultimo posto della coda
la CPU è assegnata al processo situato alla testa alla
ready queue
FCFS: caratteristiche
E’ senza prelazione: il processo in esecuzione trattiene la
CPU sino al termine del suo tempo di servizio o fino a
quando non necessita di un’operazione di I/O
Tende a penalizzare i processi I/O bound e quelli di breve
durata, poiché costretti a lunghe attese dietro processi
CPU bound
Tempi di attesa molto variabili e generalmente lunghi. La
gestione dei dispositivi è poco efficiente ed è adeguata
per sistemi batch (mancanza di interattività).
SJF: Shortest Job First
La CPU è assegnata al processo il cui intervallo di
tempo previsto per l’utilizzo della CPU è più breve
Nel caso in cui più processi pronti presentino gli
stessi tempi di servizio, la scelta viene fatta secondo
la politica FCFS
SJF: due casi
SJF senza prelazione
il processo in esecuzione trattiene la CPU sino al
termine del suo tempo di servizio o fino a quando non
necessita di un’operazione di I/O.
SJF con prelazione
se, ad un certo istante, nella coda dei processi pronti
giunge un processo con un tempo di servizio più breve
di quello che rimane (da completare) al processo in
esecuzione, la CPU viene rilasciata e ceduta al processo
appena arrivato (Shortest Remaining Time First - SRTF)
Scheduling per priorità
A ciascun processo, in fase di generazione, viene
attribuito un livello di priorità, espresso da un
numero intero
La CPU è assegnata al processo che presenta la
massima priorità.
A parità di priorità, si ricorre alla politica FCFS
Per priorità: due casi
Senza prelazione
il processo in esecuzione trattiene la CPU sino al
termine del suo tempo di servizio o fino a quando non
necessita di un’operazione di I/O.
Con prelazione
se nella coda dei processi pronti arriva un processo con
priorità maggiore di quella del processo in esecuzione,
questo rilascia la CPU, cedendola al processo appena
arrivato.
Determinare la priorità
Priorità definite dal S. O. (p. interna)
Priorità definite dall’utente (p. esterna)
Priorità statica
una volta stabilita, non varia nel tempo
Priorità dinamica
varia nel tempo per evitare che alcuni processi possano
essere bloccati per un tempo indefinito (starvation), a
causa della costante presenza nella ready queue di
processi a più elevata priorità
Starvation
(attesa indefinita)
Una possibile soluzione allo starvation è data dalla
procedura di aging (invecchiamento): la priorità di un
processo può
aumentare al crescere del suo tempo di attesa
diminuire al crescere del tempo di CPU già utilizzato
Round Robin
La CPU viene assegnata, a turno, ad ogni processo
per un certo periodo q di tempo massimo (time-slice
o quanto di tempo)
Se, alla fine di tale periodo, il processo in esecuzione
non è terminato, esso viene ricondotto nella coda dei
processi pronti, all’ultima posizione
Alla messa in esecuzione, il S. O. avvia un dispositivo
timer, trascorso l’intervallo q, il timer genera
un’interruzione che provoca il prerilascio della CPU
time-slice
Un time-slice troppo grande rischia di far tendere la
politica Round Robin a quella FCFS.
Un time-slice troppo piccolo consente tempi di
risposta brevi ma impegna eccessivamente la CPU
per le operazioni di context switch, con conseguente
calo della produttività e dell’efficienza del sistema.
Nei sistemi reali il valore del time-slice che garantisce
buone prestazioni è compreso tra 20 e 50
millisecondi.
Scarica

ppt - Alberto Ferrari