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 degli hold disco fissoListaper spostarli nella coda dei jcb 01 ready in ram jcb 21 HDD 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 Hdd Viene assegnata una priorità ad ogni lavoro (memorizzata nel PCB) sulla base di: Richieste di un tecnico sistemista Necessità di risorse Vantaggi: più efficiente Svantaggi: informazioni aggiuntive nel pcb pcb 01 pcb 21 pcb 05 pcb 14 pcb 97 Priorità dinamica Hdd 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 pcb 01 pcb 21 pcb 05 pcb 14 pcb 97 Schedulatore dei processi (STS) Quest'altro schedulatore preleva PCB dalla coda dei ready in ram e assegna loro la cpu. Ci 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 utilizzata al massimo deve essere (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 Politiche STS Senza pre-rilascio (non preemptive) 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. ready hold pcb 01 pcb 21 pcb 05 pcb 14 pcb 97 wait run 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 Waiting I/O Quindi viene discriminato. 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