Processi e Thread Scheduling Schedulazione 1 Scheduling Introduzione
- Slides: 36
Processi e Thread Scheduling (Schedulazione) 1
Scheduling Introduzione al problema dello Scheduling (1) • Lo scheduler si occupa di decidere quale fra i processi pronti può essere mandato in esecuzione • L’algoritmo di scheduling ha impatto su: – prestazioni percepite dagli utenti – efficienza nell’utilizzo delle risorse della macchina • Lo scheduling ha obiettivi diversi in diversi sistemi (batch, interattivi…) 2
Introduzione al problema dello Scheduling (2) Obiettivi principali degli Algoritmi di Scheduling: • Fairness (Equità) - processi della stesso tipo devono avere trattamenti simili • Balance (Bilanciamento) - tutte le parti del sistema devono essere sfruttate (CPU, dispositivi …) • Sistemi batch – Throughput - massimizzare il numero di job completati in un intervallo di tempo – Tempo di Turnaround - minimizzare il tempo di permanenza di un job nel sistema • Sistemi interattivi – Tempo di risposta - minimizzare il tempo di riposta agli eventi – Proporzionalità - assicurare che il tempo di risposta sia proporzionale alla complessità dell’azione richiesta 3
Introduzione al problema dello Scheduling (3) • Due tipologie di processi : – processi CPU-bound -- lunghi periodi di eleborazione fra due richieste successive di I/O – processi I/O-bound -- brevi periodi di elaborazione fra due richieste successive di I/O • Conviene dare priorità ai processi I/O-bound 4
Introduzione al problema dello Scheduling (4) P 1 Lungo burst di CPU Corto burst di CPU Attesa completamento i/o P 2 tempo • Processi compute bound (P 1) and I/O bound (P 2) 5
Introduzione al problema dello Scheduling (5) P 1 P 2 tempo • Priorità ai compute bound 6
Introduzione al problema dello Scheduling (6) P 1 P 2 tempo • Priorità agli I/O bound – il funzionamento del sistema è più bilanciato 7
Introduzione al problema dello Scheduling (7) • Scheduling senza prerilascio – lo scheduler interviene solo quando un processo viene creato, termina o si blocca su una SC • Scheduling con prerilascio – lo scheduler può intervenire ogni volta che è necessario per ottenere gli obiettivi perseguiti • quando diventa pronto un processo a più alta priorità rispetto a quello in esecuzione • quando il processo in esecuzione ha sfruttato la CPU per un tempo abbastanza lungo 8
Introduzione al problema dello Scheduling (8) • Scheduling in sistemi batch – SJF (shortest job first) • Scheduling in sistemi interattivi – Round Robin – Code Multiple 9
Scheduling nei sistemi Batch (1) • Un esempio di scheduling secondo la strategia che privilegia il job più corto (SJF “Shortest Job First”) – l’insieme dei job da schedulare è noto all’inizio – si conosce il tempo di esecuzione T di ogni job – i job sono schedulati in ordine di T crescente – SJF minimizza il tempo di turnaround medio – non c’è prerilascio 10
Scheduling nei sistemi Batch (2) Perché SJF funziona? 4 job A, B, C, D con tempi di esecuzione a, b, c, d – turnaround(A) -- a – turnaround(B) -- a + b – turnaround(C) -- a + b + c – turnaround(D) -- a + b + c + d turnaround totale 4 a + 3 b + 2 c + 1 d minimo quando a, b, c, d sono in ordine crescente 11
Scheduling nei sistemi Batch (3) Tre livelli di scheduling 12
Scheduling nei sistemi Batch (4) • Admission scheduler – decide quali job (sottomessi, memorizzati su disco) ammettere nel sistema (viene creato il processo corrispondente) • Memory scheduler – i job ammessi devono essere caricati in memoria centrale prima di poter essere eseguiti – se non tutti i job entrano in MC, il memory scheduler sceglie quali job caricare in memoria e quali tenere su disco (swapped out) • CPU scheduler – lo scheduler che abbiamo trattato finora 13
Scheduling nei sistemi Interattivi Scheduling Round Robin (1) – (a) lista dei processi pronti – (b) lista dei pronti dopo che B ha usato il suo quanto (quantum) di tempo 14
Scheduling Round Robin (2) • Come fissare il quanto di tempo – deve essere abbastanza lungo da ammortizzare il costo di un context switch (ordine 1 ms) – deve essere abbastanza breve da permettere una risposta veloce agli utenti interattivi – in sistemi reali tipicamente 20 -120 ms • RR non favorisce i processi I/O bound 15
Scheduling con priorità (1) • Ogni processo ha una priorità • Ogni volta va in esecuzione il processo a priorità più elevata • Punti chiave : – come assegnare le priorità (statiche, dinamiche…) – come evitare attesa indefinita della CPU nei processi a priorità più bassa – come individuare i processi I/O bound • per elevare la loro priorità 16
Scheduling con priorità (2) • Molte strategie per il calcolo della priorità • Tipicamente : – priorità dinamica (es. più elevata per i processi che passano da bloccato a pronto) – legata alla percentuale f del quanto di tempo che è stato consumato l’ultima volta che il processo è andato in esecuzione (es. proporzionale a 1/ f , favorisce i processi I/O bound) – decrescente nel tempo per i processi che rimangono pronti (es. per impedire l’attesa indefinita) 17
Scheduling con Code multiple (1) Esempio di algoritmo di scheduling a code multiple con 4 classi di priorità 18
Scheduling con Code multiple (2) • Scheduling Round Robin all’interno della classe con priorità più elevata • I processi che usano tutto il quanto di tempo più di un certo numero di volte vengono passati alla classe inferiore • Alcuni sistemi danno quanti più lunghi ai processi nelle classi basse (compute-bound) per minimizzare l’overhead del cambio di contesto 19
Scheduling dei Thread (1) • Lo scheduling dei thread – utilizza algoritmi simili a quelli visti finora – viene implementato in modo diverso nel thread a livello utente e a livello kernel 20
Scheduling dei Thread (2) • Lo scheduling dei thread user level – il SO non conosce l’esistenza dei thread, quindi schedula i processi – durante l’esecuzione di un processo lo schedulatore della libreria dei thread decide quale thread mandare in esecuzione – le interruzioni del clock non sono visibili allo schedulatore di livello utente – lo schedulatore può intervenire solo se invocato esplicitamente (es. thread_yield) – non c’è prerilascio (all’interno di un singolo processo) 21
Scheduling dei Thread (3) • Lo scheduling dei thread kernel level – il SO schedula i thread (non i processi) – quando un thread si blocca il SO può decidere di mandare in esecuzione un altro thread di quel processo o un thread di un processo diverso • può scegliere se pagare il cambio di contesto o no – le interruzioni del clock permettono allo schedulatore di tornare in esecuzione alla fine del quento di tempo • i quanti di tempo sono assegnati direttamente ai thread • si può effettuare prerilascio 22
Alcuni esempi di schedulatori Unix, Linux, Windows 2000 23
Scheduling in UNIX Scheduling a due livelli : • scheduler a basso livello (low-level): sceglie il prossimo processo da mandare in esecuzione fra quelli in RAM • scheduler ad alto livello (high-level): sposta i processi fra RAM e disco in modo da dare a tutti la possibilità di ottenere l’accesso alla CPU Nel seguito descriveremo lo scheduler a basso livello 24
Lo scheduler di UNIX (1) Lo scheduling a basso livello è basato su una coda a più livelli di priorità 25
Lo scheduler di UNIX (2) • Si esegue il primo processo della prima coda non vuota per massimo 1 quanto (tipicamente 100 ms) • Scheduling round robin fra processi con la stessa priorità • Una volta al secondo tutte le priorità vengono ricalcolate: priorità = cpu _usage + nice + base cpu _usage : numero di clock tick per secondo che il processo ha avuto negli ultimi secondi nice : valore intero nell’intervallo [-20, +20] base : valore intero che dipende da cosa sta facendo il processo • ha il valore della priorità precedente se il processo sta eseguendo elaborazione normale in user mode • ha un valore negativo molto basso se sta effettuando I/O da disco o da terminale 26
Lo scheduler di UNIX (3) Meccanismo di aging (invecchiamento o decadimento) usato per il calcolo di cpu _usage : • Fissiamo un intervallo di decadimento t • I tick ricevuti mentre il processo P è in esecuzione vengono accumulati in una variabile temporanea tick • Ogni t cpu _usage = cpu _usage / 2 + tick; tick = 0; • Il peso dei tick utilizzati descresce col tempo • La penalizzazione dei processi che hanno utilizzato molta CPU diminuisce nel tempo 27
Lo scheduler di Linux (1) • Vengono schedulati i thread, non i processi • Tre classi di thread : real-time FIFO, real-time Round Robin, Timesharing • Ogni thread ha – una priorità nell’intervallo [0, +40], generalmente all’inizio la priorità di default è 20 – un quanto (misurato in jiffy = 10 ms, sono i tick del clock) • Lo scheduler calcola la goodness (gdn, lett. bontà) di ogni thread pronto come if (class == real-time) gdn = 1000 + priority if (class == timeshar && quantum > 0) gdn = quantum + priority if (class == timeshar && quantum == 0) gdn = 0 28
Lo scheduler di Linux (2) Algoritmo di scheduling : • Ogni volta viene selezionato il thread con goodness maggiore • Ogni volta che arriva un tick il quanto del thread in esecuzione viene decrementato • Un thread viene de-schedulato se si verifica una delle seguenti condizioni – il quanto diventa 0 – il thread si blocca – diventa ready un thread con una goodness maggiore 29
Lo scheduler di Linux (3) Algoritmo di scheduling (contd. ): • Quando tutti i quanti dei thready sono andati a 0 , lo scheduler ricalcola il quanto di ogni thread (anche se blocked) come segue : quantum = quantum / 2 + priority 30
Scheduling in Windows 2000 (1) • Win 32 permette all’utente di specificare : – priorità di un processo (6 livelli diversi) – priorità di un thread all’interno di un processo (7 livelli diversi) • Windows 2000 mappa le 42 combinazioni possibili su 32 livelli di priorità 31
Scheduling in Windows 2000 (2) Corrispondenza fra le priorità di Win 32 e quelle di Windows 2000 32
Scheduling in Windows 2000 (3) Windows 2000 fornisce 32 priorità diverse per i thread 33
Scheduling in Windows 2000 (4) Algoritmo di scheduling : • Si esegue il primo thread della prima coda non vuota per massimo 1 quanto (20 ms--120 ms) • Scheduling round robin fra thread con la stessa priorità • Come variano le priorità nel tempo : – i thread tipicamente entrano a priorità 8 – la priorità viene elevata se: • viene completata una operazione di I/O (+1 disco, +2 linea seriale, +6 tastiera, +8 scheda audio …) • termina l’attesa su un semaforo, mutex, evento (+1 background, +2 foreground) • l’input nella finestra di dialogo associata al thread è pronto 34
Scheduling in Windows 2000 (5) Algoritmo di scheduling : • Come variano le priorità nel tempo (cont. ): – la priorità viene abbassata se: • un thread usa tutto il suo quanto (-1), fino a ritornare alla priorità base – se un thread non ha girato per un tempo maggiore di una soglia fissata, allora passa per 2 quanti a priorità 15 (serve a gestire potenziali inversioni di priorità) • Quando una finestra va in foreground il quanto dei thread corrispondenti viene allungato 35
Scheduling in Windows 2000 (6) Un esempio di inversione di priorità 36
- Schedulazione round robin
- Scheduling dei processi
- Thread scheduling
- Thread scheduling
- Thread scheduling
- Thread scheduling
- Thread scheduling
- Mappatura processi anticorruzione esempio
- Iliopsoas muscle
- Diapiri magmatici
- Processi sequenziali
- Gestione del processore
- Processi spontanei
- Processi cognitivi freddi
- Come si vestivano le streghe
- Semplificare processi di vendita
- Processi metabolici
- Processi semantici matematica
- Processi cognitivi
- Sociologia dei processi culturali sapienza
- Calorimetria indiretta
- Sjn scheduling
- Introduzione alle criptovalute
- Storia numeri complessi
- Esempio introduzione tesina sul fascismo
- Introduzione ai database
- Introduzione agli algoritmi e strutture dati
- Principio di identità dei polinomi
- Tesina terza media diritti umani tecnologia
- Tesina sulle donne introduzione
- Tesi sul linguaggio giovanile
- Introduzione alla pedagogia generale
- Introduzione alla psicologia della comunicazione
- I promessi sposi autore
- Introduzione alla sociologia ritzer
- Testo informativo esempio
- Introduzione cap