LINUX
Schedulazione
In Linux lo scheduling si basa sul concetto di timesharing, per cui ad ogni processo e' assegnato un quanto di tempo massimo per l'esecuzione. La selezione del prossimo processo da eseguire e' basata sul concetto di priorita'; questa puo' essere dinamica o statica. In particolare, la prima e' stata introdotta per evitare il fenomeno della starvation, mentre la seconda e' stata introdotta per consentire la gestione di processi real-time. Ai processi real-time e' assegnata una priorita' maggiore di quella assegnata ai processi ordinari. Di norma Linux prevede uno scheduling con prelazione (preemptive), per cui ad un processo viene tolta la CPU se: 1) Esaurisce il quanto di tempo a sua disposizione. 2) Un processo a priorita' piu' alto e' pronto per l'esecuzione (task running). Il valore iniziale del quanto di tempo assegnato ad un processo e' tipicamente di 20 clock ticks, o 210 millisecondi. Questo e' circa il piu' grande valore ammissibile senza che sia compromessa la reattivita' del sistema. Gli utenti comuni possono solo diminuire il quanto mentre l'utente amministratore puo' anche aumentarlo.
Algoritmo di scheduling Il tempo e' suddiviso in periodi, detti epoche, che si ripetono ciclicamente. Quando un processo viene creato, il sistema operativo assegna un quanto di tempo al processo. Il quanto di tempo definisce un limite superiore al tempo di utilizzo della CPU nell'epoca in questione; si osservi che, in una stessa epoca, la CPU puo' essere assegnata ad un processo anche piu' volte, finche' il quanto non e' esaurito. Quando tutti i processi eseguibili hanno esaurito il loro quanto, l'epoca corrente termina e ne inizia un'altra. A questo punto si rende necessario calcolare il nuovo quanto di tempo da assegnare a ciascun processo.
Problemi 1) Le prestazioni dello scheduler di Linux degradano al crescere del numero di processi; infatti le priorita' (cioe' i quanti) devono essere ricalcolate per tutti i processi al termine di ogni epoca. 2) Il valore predefinito per il quanto puo' essere eccessivo nei sistemi con carico elevato. 3) Il supporto fornito ai processi real-time e' limitato.