Quando un computer è multi-programmato esso ha molteplici processi che competono per ottenere il “controllo” della CPU nel medesimo istante. La parte del sistema operativo che si occupa della selezione dei processi “pronti” è lo Scheduler (abbiamo parlato di questo e di altre caratteristiche dei sistemi operativi nell’articolo dedicato ai processi nei sistemi operativi). Lo scheduler esegue questo compito grazie all’algoritmo di scheduling.

Lo Short Term Scheduler è lo scheduler utilizzato nella maggior parte dei sistemi interattivi. Il Dispatcher è la componente dello Short Term Scheduler che consegna al processo scelto il controllo della CPU.

Vediamo quali sono i principali eventi che portano all’avvio dello Scheduler:

  1. Terminazione di un processo, quando un processo giunge alla sua naturale conclusione, lo scheduler deve decidere quale processo avviare, scegliendone uno dalla lista (struttura coda) dei processi “pronti”;
  2. Creazione di un processo figlio, quando un processo padre genera un nuovo processo figlio lo scheduler deve decidere se eseguire il processo figlio o continuare a eseguire il padre;
  1. Blocco sull’I/O, quando un processo è in attesa su un semaforo o è in attesa di ricevere dei dati dal disco. In questi casi si sceglie un secondo processo da eseguire nell’attesa che il primo finisca;
  2. Interrupt di I/O, quando un processo in attesa di I/O riceve i dati che stava aspettando passa dallo stato “attesa” allo stato “pronto”. In questi casi lo scheduler deve decidere se lasciar proseguire il processo in esecuzione o avviare un nuovo processo;
  3. Terminazione del tempo assegnato al processo.

Lo scheduler valuta diverse informazioni prima di cambiare lo stato di un processo, ad esempio:

  • Importanza del processo, i processi non hanno tutti la stessa importanza. I processi classificati come ad priorità alta hanno più probabilità di essere eseguiti prima;
  • Tempo di esecuzione, lo scheduler esamina il periodo di tempo che il processo ha passato nello stato di “esecuzione”;
  • CPU utilizzata, lo scheduler esamina la quantità di risorse consumate dal processo;
  • Dimensione totale del processo.