Quanto detto nella scorsa puntata ci fa comprendere
che un SO vive di processi.
In realtà il SO è anchesso costituito da processi che cooperano
adeguatamente per garantire un corretto funzionamento del sistema
(almeno, questo è quello che si dovrebbe cercare di fare ;-).
Riprendendo il discorso sul multitasking, diciamo innanzitutto che
il modulo del SO che si occupa di gestire il context switch viene
detto scheduler.
Lo scheduling, cioè loperazione dello scheduler, può
essere realizzato in modi diversi, secondo le modalità che il progettista
del sistema sceglie di adottare.
Un obiettivo importante che deve essere perseguito, quando si sceglie
un algoritmo di scheduling, è sfruttare al massimo il tempo di esecuzione
della CPU, evitando, nel contempo, che un processo ne monopolizzi
luso impedendo agli altri processi di progredire.
Riguardo a questultimo aspetto, un SO è
detto preemptive (o prelazionato) se lo scheduler può arbitrariamente
sottrarre il processore ad un task per assegnarlo ad un altro (ad
es. perché questultimo ha una priorità maggiore); altrimenti
si parla di scheduling non-preemptive.
Una tecnica di schedulazione molto usata è nota col nome di round
robin.
Secondo lo schema round robin ad ogni processo viene assegnato un
time slice, ovvero una piccola frazione di tempo (dellordine
dei millisecondi), durante la quale gli viene aggiudicata totalmente
la CPU.
Allo scadere del time slice il clock, ossia lorologio
di sistema che regola la temporizzazione delle operazioni della
macchina, invia al processore uninterrupt (uninterruzione),
per indicare che il processo attuale ha occupato lintero time
slice assegnatogli e che è possibile eseguire un nuovo processo.
In base alle politiche attuate dal SO, la CPU esegue un context
switch o continua a lavorare con il processo corrente.
Per sfruttare al massimo le potenzialità del sistema, il SO sospende
un processo in esecuzione quando esso deve attendere che venga completata
una determinata operazione.
Ad es. se un processo deve leggere un file dal disco, passerà un
certo tempo prima che i dati attesi dal processo saranno disponibili,
a causa dellelevato tempo di accesso del disco (rispetto alla
scala dei tempi di una CPU).
Sospendendo il processo fino al completamento del trasferimento
dei dati, la CPU può essere assegnata ad un processo pronto per
essere eseguito, evitando così che essa rimanga inutilizzata.
Dunque, un processo durante la sua esecuzione può trovarsi in diversi
stati, che possiamo riassumere sommariamente in tre:
1. in esecuzione (quando il processo sta utilizzando effettivamente
la CPU in quellistante);
2. pronto (quando può essere messo in esecuzione, ma è temporaneamente
sospeso per permettere ad un altro processo di eseguire);
3. bloccato (quando non può essere messo in esecuzione finché
non accade un evento esterno, ad es. il completamento di unoperazione
di I/O).
Generalmente, durante la sua vita, un processo transita continuamente
da uno stato allaltro secondo le regole adottate dal SO.
Una transizione interessante è quella dallo stato di bloccato
allo stato di pronto, che presuppone che il SO sia in grado
di rendersi conto del verificarsi di un dato evento.
Le soluzioni adottate sono generalmente due:
1. polling
2. interrupt
Con il polling il SO deve periodicamente interrogare i dispositivi
di I/O per verificare il loro stato di esecuzione, spendendo tempo
di CPU per controllare tutti i dispositivi della macchina.
Con la tecnica degli interrupt, invece, sono le periferiche
ad avvertire il SO quando si verifica un evento che ne cambia lo
stato: questa soluzione è la più efficiente ed è quindi la più usata.
Il meccanismo degli interrupt richiede un hardware opportuno per
il controllo dei segnali di interruzione e i sistemi operativi che
lo utilizzano (detti per questo interrupt driven, cioè guidati
dagli eventi) mantengono delle strutture software adeguate per riconoscere
il tipo di interrupt ed intraprendere le relative azioni di gestione.
Nella prossima puntata vedremo il sottosistema di gestione della
memoria principale.
Torna all'indice Generale del corso di Corso di Sistemi Operativi di Software Planet