Gestione del processore
(Scheduler)
Il modello a processi sequenziali
1
Introduzione
• Nei computer attuali, ci sono molte attività
attive contemporaneamente (sia di SO che
di utente)
– es : stampa in corso + Word + cd player …
• Tutto il software che gira su un calcolatore è
organizzato come un insieme di processi
sequenziali cooperanti
2
Cos’è un processo ?
• Un processo è un programma in esecuzione
completo del suo stato (spazio di indirizzamento,
registri, file aperti…)
• Come si crea un processo ?
– Richiedendo al SO l’esecuzione di una o più chiamate
di sistema
• Esempi di attivazione :
– l’invocazione di un comando, il doppio click su
un’icona, il lancio di un eseguibile …
– inizializzazione del sistema
3
Terminazione di un processo
• Un processo termina :
– Quando esegue una istruzione di terminazione
– Quando effettua una operazione illecita
• es. cerca di accedere alla memoria privata di altri
processi
– Quando c’è un errore che non gli permette di
proseguire (es. overflow, etc)
• In tutti questi casi il processore ricomincia
automaticamente ad eseguire il sistema
operativo
4
Stati di un processo
In esecuzione
(running)
Bloccato
(blocked)
È in attesa che
venga terminata
una richiesta
effettuata
(system call)
Pronto
(ready)
Il processore lo sta
eseguendo
Può proseguire ma è in attesa che lo scheduler
gli assegni il processore
• Come si passa da uno stato all’altro ?
5
Stati di un processo
In esecuzione
Bloccato
Pronto
• Lo scheduler ha deciso di mandare in
esecuzione proprio questo processo
6
Stati di un processo
In esecuzione
Bloccato
Pronto
• Il processo ha eseguito una SC e il servizio
non può essere completato
7
Stati di un processo
In esecuzione
Bloccato
Pronto
• Il servizio richiesto è stato completato
– es : è arrivata una interruzione dal dispositivo, ...
8
Stati di un processo
In esecuzione
Bloccato
Pronto
• Lo scheduler ha deciso di assegnare il
processore ad un altro processo
9
Stati di un processo
In esecuzione
Bloccato
Pronto
• Le altre due transizioni tipicamente non
hanno senso
1
Implementazione di processi
• Le informazioni relative a tutti i processi
attivi ad un dato istante sono mantenute
nella Tabella dei processi, che contiene tutte
le informazioni sul processo
– valore dei registri
– stato (pronto, bloccato …)
– informazioni relative ai file che il processo sta
utilizzando
1
Scheduling
Lo scheduler si occupa di decidere quale fra i processi
pronti può essere mandato in esecuzione
L’algoritmo di scheduling ha impatto su:
prestazioni percepite dagli utenti
efficienza nell’utilizzo delle risorse della macchina
Lo scheduling ha obiettivi diversi in diversi sistemi
(batch, interattivi…)
1
Scheduling
Obiettivi principali degli Algoritmi di Scheduling:
Fairness (Equità) - processi della stesso tipo devono avere
trattamenti simili
Balance (Bilanciamento) - tutte le parti del sistema devono
essere sfruttate (CPU, dispositivi …)
Sistemi batch
Throughput - massimizzare il numero di job completati in un
intervallo di tempo
Tempo di Turnaround - minimizzare il tempo di permanenza di un job
nel sistema
Sistemi interattivi
Tempo di risposta - minimizzare il tempo di riposta agli eventi
Proporzionalità - assicurare che il tempo di risposta sia proporzionale
alla complessità dell’azione richiesta
1
Scheduling
Scheduling senza prerilascio (non preemptive)
lo scheduler interviene solo quando un processo viene
creato, termina o si blocca su una SC
Scheduling con prerilascio (preempitive)
lo scheduler può intervenire ogni volta che è necessario
per ottenere gli obiettivi perseguiti
• quando diventa pronto un processo a più alta priorità
rispetto a quello in esecuzione
• quando il processo in esecuzione ha sfruttato la CPU per
un tempo abbastanza lungo
1
Scheduling
Scheduling in sistemi batch
SJF (shortest job first)
Scheduling in sistemi interattivi
Round Robin
Code Multiple
1
Scheduling nei sistemi Interattivi
Scheduling Round Robin
(a) lista dei processi pronti
(b) lista dei pronti dopo che B ha usato il suo quanto
(quantum) di tempo
1
Scheduling Round Robin
Come fissare il quanto di tempo
deve essere abbastanza lungo da ammortizzare il costo di un
context switch (ordine 1 ms)
deve essere abbastanza breve da permettere una risposta
veloce agli utenti interattivi
in sistemi reali tipicamente 20-120 ms
1
Scheduling con priorità
Ogni processo ha una priorità
Ogni volta va in esecuzione il processo a priorità
più elevata
Punti chiave :
come assegnare le priorità (statiche, dinamiche…)
come evitare attesa indefinita della CPU nei processi a
priorità più bassa (Starvation)
1
Scheduling con priorità
Molte strategie per il calcolo della priorità
Tipicamente :
priorità dinamica (es. più elevata per i processi che passano
da bloccato a pronto)
legata alla percentuale f del quanto di tempo che è stato
consumato l’ultima volta che il processo è andato in
esecuzione (es. proporzionale a 1/ f )
decrescente nel tempo per i processi che rimangono pronti
(es. per impedire l’attesa indefinita-starvation)
2
Scheduling con Code multiple
Esempio di algoritmo di scheduling a code multiple
con 4 classi di priorità
2
Scheduling con Code multiple
Scheduling Round Robin all’interno della classe
con priorità più elevata
I processi che usano tutto il quanto di tempo più di
un certo numero di volte vengono passati alla classe
inferiore
2
Scarica

Lo scheduler