Nei sistemi operativi, lo scheduler è il componente del core del sistema operativo che sceglie l'ordine di esecuzione dei processi sui processori di un computer . In inglese, lo scheduler è chiamato scheduler .
Un processo necessita della risorsa del processore per eseguire i calcoli; lo abbandona quando si verifica un'interruzione , ecc. Molti processori meno recenti possono eseguire solo un'elaborazione alla volta. Per gli altri, è ancora necessario uno scheduler per determinare quale processo verrà eseguito su quale processore (questa è la nozione di affinità , che è molto importante per non degradare le prestazioni). Al di là dei classici processori multicore , la nozione di hyperthreading rende ancora più complessa la questione della schedulazione.
In un dato momento, ci sono spesso più processi da eseguire che processori.
Uno dei ruoli del sistema operativo , e più specificamente dello scheduler del kernel, è quello di consentire a tutti questi processi di essere eseguiti in un momento o nell'altro e di sfruttare al meglio il processore per l'utente. In modo che ogni task venga eseguito senza preoccuparsi degli altri e/o anche per eseguire i task secondo i vincoli imposti al sistema (esempio: vincoli di tempo nel caso di un sistema operativo real-time), lo scheduler del kernel del sistema ne esegue cambi di contesto .
Ad intervalli regolari, il sistema richiama una procedura di schedulazione che elegge il prossimo processo da eseguire. Se il nuovo processo è diverso da quello vecchio, avviene un cambio di contesto (operazione che consiste nel salvare il contesto di esecuzione del vecchio task come i registri del processore). Questa struttura dati è generalmente indicata come PCB . Il sistema operativo ripristina il vecchio PCB dell'attività scelta, che viene quindi eseguita, riprendendo da dove era stata interrotta prima.
Se le attività devono essere eseguite contemporaneamente ed è fisicamente impossibile per il computer elaborare più di un'attività contemporaneamente, il kernel cambia rapidamente il contesto di esecuzione dell'attività , in modo che:
Ad esempio, con 3 attività questo può essere suddiviso per
...
(3 attività pianificate con l'algoritmo Round-robin (ciascuno a turno)).
La scelta dell'algoritmo di schedulazione dipende dal comportamento del sistema. Ci sono due classi principali di pianificazione.
È presente sulla maggior parte dei computer "classici". Ad esempio, la pianificazione del "decadimento"; che è l' impostazione predefinita in Unix . Consiste in un sistema di priorità adattivo, ad esempio favorisce le attività interattive in modo che il loro tempo di risposta sia buono. Una sottoclasse di scheduling time-sharing sono i cosiddetti schedulatori a “quota proporzionale”, sono più destinati alle stazioni di calcolo e consentono una gestione rigorosa delle risorse. Si possono citare in particolare “lotteria” e “stride”.
Garantisce che una determinata attività venga completata entro un determinato lasso di tempo. Questo è essenziale nei sistemi di bordo.
OttimalitàSi dice che un pianificatore in tempo reale sia ottimale per un sistema di attività se trova una soluzione di pianificazione del sistema quando questa soluzione esiste. Se non riesce a trovare una soluzione a questo sistema, nessun altro pianificatore può trovarne una.