Scheduling dei processi
Quando più di un processo è eseguibile in un certo istante, il sistema deve decidere quale eseguire per primo. Questa funzione la svolge lo scheduler, programma facente parte del S.O. che si occupa di scegliere quale processo mandare in esecuzione.
Per evitare tempi troppo lunghi di esecuzione di un processo, i calcolatori prevedono l'utilizzo di un clock, un segnale periodico usato per sincronizzare i dispositivi elettronici digitali. Ad ogni interrupt del clock, il S.O. verifica se il processo in esecuzione può continuare o se deve essere sospeso per poterne eseguire un altro.
La strategia che permette di sospendere temporaneamente processi logicamente eseguibili è detta scheduling con diritto di prelazione (Preemptive Scheduling), in contrapposizione al metodo di esecuzione a completamento (sistemi batch) o non preemptive scheduling (senza diritto di prelazione).
Normalmente la CPU viene utilizzata per un periodo di tempo molto limitato, ma c'è bisogno di una potenza significativa perché sono necessari picchi molto elevati di frequenza per poter portare a termine operazioni in poco tempo.
Scheduling della CPU
Seleziona fra i processi in memoria quelli pronti per l’esecuzione e alloca la CPU a uno di essi. La decisione di scheduling della CPU può avvenire quando un processo:
- Passa da in esecuzione a in attesa (non-preemptive)
- Passa da in esecuzione a pronto (preemptive)
- Passa da in attesa a pronto (preemptive)
- Termina (non-preemptive)
Quando lo scheduler ha scelto il processo, un modulo chiamato dispatcher gli passa il controllo della CPU. Il procedimento prevede:
- Un context switch
- Passaggio a user mode
- Salto alla giusta posizione del programma utente
Il tempo che il dispatcher impiega a eseguire queste operazioni è detto latenza di dispatch.
Criteri di un buon algoritmo di scheduling
- Equità: ogni processo deve avere a disposizione una corretta quantità di tempo di CPU.
- Efficienza: CPU utilizzata al 100% sempre.
- Tempo di completamento: più piccolo possibile.
- Tempo di risposta: deve essere minimizzato.
- Tempo di attesa (trascorso in coda): deve essere minimizzato.
- Throughput: massimizzare il numero di job processati per unità di tempo.
Essendo il tempo di CPU finito, alcuni di questi obiettivi non sono compatibili fra di loro.
Algoritmi di scheduling
FCFS (First Come First Served): Si eseguono i processi nell'ordine con cui arrivano. È stato ideato per sistemi non interattivi. Per valutare la prestazione di tale algoritmo si può effettuare attraverso la media dei tempi di attesa. Il risultato è migliore, in termini di...