Lo schedulatore del kernel
Lo schedulatore Lo schedulatore è un programma del kernel che si occupa di scegliere un processo/lavoro che ha richiesto una risorsa. Lo schedulatore a lungo termine LTS è quello che sceglie i lavori (job scheduler) nella coda degli hold sul disco fisso per spostarli nella coda dei ready in ram Lista degli hold HDD jcb 01 jcb 21 jcb 05 jcb 14 jcb 97
Lo schedulatore Lo schedulatore a breve termine STS è quello che sceglie i processi nella coda dei ready (process scheduler) per inviarlo alla cpu per la fase running. Lista dei ready pcb 01 pcb 21 pcb 05 pcb 14 pcb 97
Lo schedulatore dei lavori (LTS) Prima di scegliere un lavoro chiede un controllo dello spazio in ram Il controllo viene chiesto al memory manager Tra tutti i lavori l'ordine di scelta può seguire 3 politiche principali FiFo, priorità statica, priorità dinamica
FIFO Hdd Viene scelto il lavoro arrivato in coda per primo, poi il successivo ecc. L'ordine di arrivo nella lista hold è anche l'ordine di prelievo. Vantaggi: semplicità Svantaggi: poco efficiente, alcuni lavori sono più urgenti di altri, anche se sono più dietro in fila. pcb 01 pcb 21 pcb 05 pcb 14 pcb 97
Priorità statica Viene assegnata una priorità ad ogni lavoro (memorizzata nel PCB) sulla base di: Richieste di un tecnico sistemista Necessità di risorse Hdd Vantaggi: più efficiente Svantaggi: informazioni aggiuntive nel pcb pcb 01 pcb 21 pcb 05 pcb 14 pcb 97
Priorità dinamica Più un lavoro aspetta in coda, più si aumenta la sua priorità. Vantaggi: ancora più efficiente, evita stalli di processi con bassa priorità originale. Svantaggi: informazioni aggiuntive nel pcb Hdd pcb 01 pcb 21 pcb 05 pcb 14 pcb 97
Schedulatore dei processi (STS) Ci Quest'altro schedulatore preleva PCB dalla coda dei ready in ram e assegna loro la cpu. sono 6 regole da rispettare: imparzialità, efficienza, realtime, tournaround, throughput, fairness. pcb 01 pcb 21 pcb 05 pcb 14 pcb 97
Schedulatore dei processi (LTS) (1)Imparzialità: la cpu deve essere concessa equamente ai processi (2)Efficienza: la cpu deve essere utilizzata al massimo (3)Realtime: i processi interattivi devono avere miglior uso di i/o (4)Tournaround: i processi batch devono avere miglior uso della cpu (5)Throughput: il più alto numero di processi serviti al secondo (6)Fairness: evitare processi troppo poco schedulati.
Politiche STS Senza pre-rilascio (non (non preemptive) Con Con pre-rilascio (preemptive) 1.Round Robin 1.FCFS 2.SJF 3. PRIORITY 2.Round Robin a tempo 3. Round robin limitato 4. Priorità statica 5. Priorità dinamica.
Senza prerilascio: FCFS First Come is First Served: è la coda FIFO. Svantaggi: il tempo medio di attesa è elevato e sono svantaggiati i processi veloci. Vantaggi: semplicità
Senza prerilascio: SJF Shortest job first: vengono serviti prima i lavori più veloci. Svantaggi: i lavori molto lenti potrebbero attendere moltissimo. Vantaggi: più efficiente, minimizza il tempo medio di attesa
Senza prerilascio: priorità Viene pre assegnata una priorità (inserita nel descrittore del processo) che aumenta al crescere dei tempi di attesa e per processi veloci. priorità=(t. Attesa + Velocità) Svantaggi: oneroso gestirlo. Vantaggi: si privilegiano: processi brevi Processi che sono in attesa da più tempo.
Con prerilascio: Round Robin Trattasi di una coda di tipo FIFO gestita con time slice. Scaduto il timeslice la cpu deve essere rilasciata. I processi sono prelevati in testa alla coda I processi, da dovunque essi arrivino (lista di wait, di hold o running) vengono inseriti in fondo alla coda. hold ready pcb 01 pcb 21 pcb 05 pcb 14 pcb 97 run wait
Con prerilascio: Round Robin a tempo Se un processo fa molto i/o resta spesso in attesa dello stesso (WAIT) e poi viene inserito in fondo alla coda assieme a quelli che non hanno aspettato affatto. Hold hdd Ready ram Running cpu Quindi viene discriminato. Waiting I/O
Con prerilascio: Round Robin a tempo Con questa variante l'inserimento non avviene in coda se il processo ha usato la cpu per una percentuale di tempo bassa (e molto i/o). Hold hdd Ready ram Running cpu Waiting I/O
Con prerilascio: Round Robin limitato Con questa variante ogni processo può usare al massimo N timeslice. Quei processi che hanno terminato gli N timeslice vengono messi in una nuova coda speciale (la coda dei time slice esauriti) da dove si preleveranno solo quando la coda di ready è esaurita. Hold hdd Ready ram Running cpu Waiting I/O
Con prerilascio: priorità Statica: nel pcb viene indicata una priorità che è maggiore per i processi veloci. Dinamica: nel pcb la priorità inserita è maggiore per processi veloci o processi in lunga attesa. Hold hdd Ready ram Running cpu Waiting I/O