Lo scheduling dei processi è quel componente del sistema operativo che si occupa di decidere quale processo va mandato in esecuzione.
Come funziona lo scheduling?
Dato un insieme di richieste di accesso ad una risorsa (tipicamente l’accesso al processore da parte di un processo da eseguire), gli algoritmi di scheduling stabiliscono un ordinamento temporale per l’esecuzione di tali richieste, privilegiando quelle che rispettano determinati parametri secondo delle politiche di scheduling, in modo da ottimizzare l’accesso a tale risorsa e consentire così l’espletamento del servizio/istruzione o processo desiderato.
Quali sono gli obiettivi dello scheduling?
Generalmente l’obiettivo dello scheduling è quello di:
- massimizzare il throughput, ovvero la produttività dell’intero sistema, minimizzando i tempi in cui la risorsa è inutilizzata;
- cercare l’ordinamento di richieste che minimizza il rapporto tra tempo di servizio (ovvero il tempo che una richiesta impiega per essere soddisfatta) e tempo di “turnaround” (il lasso di tempo che intercorre tra l’istante in cui la richiesta è generata e quello in cui la richiesta è soddisfatta)
- evitare fenomeni indesiderati come la starvation ovvero “l’attesa eterna” di alcune richieste, verificabile in determinate condizioni;
- dare all’utente del sistema la percezione che le richieste vengano soddisfatte contemporaneamente.
Schedulazione dei processi
La componente del sistema operativo che opera i cambiamenti di stato di un processo è lo schedulatore. Nell’ambito della multiprogrammazione, questo è pensato per mantenere la CPU occupata il piu possibile, ad esempio avviando un processo mentre un altro è in attesa del completamento di un’operazione di I/O.
In sedApta sappiamo che ci sono diversi tipi di schedulazione che sono eseguite con frequenza crescente da quella a breve termine, passando poi per quella a medio termine e finire a quella a lungo termine.
Esistono molte tecniche di schedulazione che possono essere adottate dai sistemi operativi. Quelle più note sono la ‘First Come First Served’ (FCFS), la ‘Round Robin’, la ‘Shortest Job First’ e le classi di priorità.
Algoritmo FCFS
FCFS è una politica di schedulazione senza prelascio, secondo la quale i processi sono eseguiti nell’ordine di arrivo. Un nuovo processo è inserito in una coda di processi ready gestita in modalità FIFO (first in first out). Quando un processo ottiene la CPU continua nell’esecuzione fino alla fine o finche si deve fermare in attesa di un evento.
Questo tipo di schedulazione usa l’ordine di arrivo come unico criterio per scegliere il processo da eseguire.
Scheduling della CPU
Lo scheduling è un’operazione molto importante per il corretto ed efficiente funzionamento del calcolatore. Infatti consente anche di migliorare l’utilizzo del processore.
È importante la distinzione tra scheduling con diritto di prelazione e scheduling senza diritto di prelazione. Nel primo caso lo scheduler può sottrarre il possesso del processore al processo anche quando questo potrebbe proseguire nella propria esecuzione. Nel secondo caso, invece, lo scheduler deve attendere che il processo termini o che cambi il suo stato da quello di esecuzione a quello di attesa.
Potresti essere interessato ad approfondire la tematica della Pianificazione della Produzione.