La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling della CPU.

Presentazioni simili


Presentazione sul tema: "Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling della CPU."— Transcript della presentazione:

1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling della CPU

2 5.2 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Outline  Introduzione allo scheduling  Algoritmi di scheduling  Scheduling multiprocessore

3 5.3 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Outline  Introduzione allo scheduling  Algoritmi di scheduling  Scheduling multiprocessore

4 5.4 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Introduzione allo scheduling  Lo scheduling è una delle operazioni fondamentali dei moderni sistemi operativi multi-programmati  L’operazione di scheduling permette di sfruttare al meglio le risorse di un sistema di calcolo rendendolo di fatto più produttivo  Sebbene si parli di scheduling dei processi gli oggetti su cui opera lo scheduling sono i thread  I termini scheduling dei processi e scheduling dei thread sono dunque equivalenti

5 5.5 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Idea dello scheduling  In un sistema monoprocessore viene eseguito un solo processo per volta  Un processo nell’arco della sua esecuzione alterna due fasi:  CPU burst (utilizzo della CPU)  I/O burst (attesa di input/output da un dispositivo)  Poiché durante una fase di I/O burst la CPU sarebbe inutilizzata l’idea di base è di utilizzare questi tempi di attesa assegnando la CPU ad un altro processo  In questo modo più processi possono essere mantenuti in memoria in attesa che venga loro assegnato il controllo della CPU

6 5.6 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Fasi CPU busrt – I/O burst  Un processo consiste in un ciclo di elaborazione svolto dalla CPU e da un tempo di attesa a un dispositivo di I/O  In fase di lancio, un processo esegue un lungo ciclo di utilizzo della CPU  Successivamente le fase si alternano tra CPU burst e I/O burst  Processi con prevalenza di I/O (I/O bound) producono frequenti accessi alla CPU ma di breve durata  Processi con prevalenza di CPU (CPU bound) producono pochi accessi alla CPU ma molto lunghi

7 5.7 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Frequenza dei CPU burst Più sono lunghi i cicli e meno sono frequenti (CPU bound) Più sono corti i cicli e più sono frequenti (I/O bound)

8 5.8 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition CPU Scheduler  Lo scheduler a breve termine della CPU seleziona tra tutti i processi presenti in memoria e pronti per essere eseguiti quello a cui assegnare la CPU  Lo scheduler della CPU può prendere una decisione nelle seguenti condizioni: 1. Un processo passa dallo stato di esecuzione allo stato di attesa 2. Un processo passa dallo stato di esecuzione allo stato di pronto 3. Un processo passa dallo stato di attesa allo stato di pronto 4. Un processo passa nello stato di terminato  Se lo scheduler interviene solo nelle fasi 1 e 4 allora è chiamato senza diritto di prelazione (nonpreemptive) o cooperativo (cooperative)  Windows 3.x  Altrimenti è chiamato con diritto di prelazione (preemptive)  Da Windows 95, Mac OS X, Linux esecuzione terminato pronto nuovo attesa

9 5.9 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Dispatcher  Il dispatcher è il modulo del sistema operativo che si occupa di passare alla CPU il processo scelto dallo scheduler a breve termine  Le operazioni del dispatcher sono:  Il cambio di contesto  Il passaggio alla modalità utente  Il salto alla giusta posizione del programma utente per riavviare l’esecuzione  Latenza di dispatch  Il tempo necessario per fermare un processo e avviare l’esecuzione di un altro processo

10 5.10 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Criteri di scheduling  Alla base della scelta di un algoritmo di scheduling ci sono diversi criteri:  Utilizzo della CPU  Massimizzare la percentuale di occupazione della CPU  Produttività  Numero di processi completati nell’unità di tempo (throughput)  Tempo di completamento  Il tempo impiegato per l’esecuzione di un particolare processo (turnaround time) – Comprensivo dei tempi di attesa per entrare in memoria, nella coda dei processi pronti, di esecuzione sulla CPU e nella operazioni di I/O  Tempo d’attesa  Tempo complessivo che un processo passa nella coda dei processi pronti  Tempo di risposta  Tempo trascorso dalla sottomissione di un processo fino alla sua prima risposta (escluso il tempo di output del dispositivo)  Per sistemi interattivi

11 5.11 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Criteri di ottimizzazione  Massimo utilizzo della CPU  Massimo throughput  Minimo tempo di turnaround  Minimo tempo di attesa  Minimo tempo di risposta

12 5.12 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Outline  Introduzione allo scheduling  Algoritmi di scheduling  Scheduling multiprocessore

13 5.13 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Algoritmi di scheduling  First-come, first-served (FCFS)  Shortest-job-first (SJF)  Scheduling per priorità  Round Robin (RR)  Scheduling a code multiple  Scheduling a code multiple con retroazione

14 5.14 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition First-Come-First-Served (FCFS) - 1  Lo scheduling in ordine di arrivo (scheduling first-come, first-served, FCFS) assegna la CPU al primo processo che la richiede  La realizzazione del criterio FCFS si basa sull’implementazione della ready queue per mezzo di una coda FIFO (First In First Out)  Quando un processo entra nella coda dei processi pronti, si collega il suo PCB all’ultimo elemento della coda  Quando la CPU è libera la si assegna al primo processo in testa alla coda dei processi pronti rimuovendolo da essa

15 5.15 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition First-Come-First-Served (FCFS) - 2  I processi arrivano al sistema nell’ordine: P 1, P 2, P 3  Il diagramma di Gantt per lo scheduling FCFS è:  Tempi di attesa: P 1 = 0 P 2 = 24 P 3 = 27  Tempo medio di attesa: ( )/3 = 17 millisecondi ProcessoTempo di burst (millisecondi) P1P1 24 P2P2 3 P3P3 3 P1P1 P2P2 P3P

16 5.16 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition First-Come-First-Served (FCFS) - 3  Supponiamo invece che i processi arrivano nell’ordine: P 2, P 3, P 1  Avremo:  Tempi di attesa: P 1 = 6 P 2 = 0 P 3 = 3  Tempo medio di attesa: ( )/3 = 17 millisecondi  Il tempo medio di attesa varia in base alla durata delle sequenze di esecuzione dei processi  Di conseguenza anche in base all’ordine di arrivo P1P1 P2P2 P3P

17 5.17 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition FCFS è nonpreemptive  FCFS è senza prelazione, la CPU viene rilasciata dal processo dopo che  Termina l’esecuzione  Richiede una operazione di I/O  Nello scheduling FCFS si verifica l’effetto convoglio per cui processi di breve durata devono attendere che un processo lungo liberi la CPU  Non è un buon scheduler negli ambienti multi-utente in cui ad ogni utente deve essere garantito un tempo di utilizzo della CPU

18 5.18 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Shortest-Job-First (SJF) - 1  Lo scheduling per brevità (shortest-job-first, SJF) assegna la CPU al processo con il CPU burst minore  Se due processi hanno lo stesso tempo di occupazione della CPU, si utilizza uno scheduler FCFS  L’algoritmo SJF può essere:  Senza prelazione (nonpreemptive) – una volta che la CPU è stata assegnata non può essere prelazionata finché il processo non completa il suo CPU burst  Con prelazione (preemptive) – se arriva un nuovo processo con CPU burst inferiore a quello rimasto per il processo in esecuzione, il processo viene prelazionato  Questo schema è chiamato Shortest-Remaining-Time-First (SRTF)  SJF è ottimale  Il tempo media di attesa è minimo per un dato insieme di processi

19 5.19 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Shortest-Job-First (SJF) - 2  SJF non-preentive  Tempi di attesa: P 1 = 3 P 2 = 16 P 3 = 9 P 4 = 0  Tempo medio di attesa: ( )/4 = 7 millisecondi ProcessoTempo di burst (millisecondi) P1P1 6 P2P2 8 P3P3 7 P4P4 3 P4P4 P3P3 P1P P2P2 24

20 5.20 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Media esponenziale 

21 5.21 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Esempio media esponenziale

22 5.22 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Shortest-Job-First (SJF) - nonpreemptive  Ordinamento:  Tempo medio di attesa: ( )/4 = 4 millisecondi ProcessoIstante di arrivoTempo di burst (millisecondi) P1P1 07 P2P2 24 P3P3 41 P4P4 54 P1P1 P2P2 P3P P4P4 16

23 5.23 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Shortest-Job-First (SJF) - preemptive  Ordinamento:  Tempo medio di attesa: ( )/4 = 3 millisecondi ProcessoIstante di arrivoTempo di burst (millisecondi) P1P1 07 P2P2 24 P3P3 41 P4P4 54 P1P1 P2P2 P3P P4P P2P2 P1P1

24 5.24 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling a priorità -1  Nello scheduling a priorità (priority scheduling) si associa un valore di priorità (intero) ad ogni processo  La CPU è allocata al processo con la priorità più alta  Ad esempio il valore 0 potrebbe indicare una priorità bassa mentre il valore 4095 una priorità alta  In generale non esiste un modo univoco per indicare una priorità alta e la priorità bassa  SJF  SJF è uno scheduling a priorità in cui la priorità è rappresentata dal successivo tempo di burst  Le priorità possono essere assegnate  Internamente: in base al numero di operazioni di I/O e alla lunghezza delle sequenze di operazioni della CPU  Esternamente: importanza del processo, tipo di processo, fondi pagati, politica di assegnazione delle priorità  L’algoritmo può essere:  Senza prelazione (nonpreemptive) – il processo a priorità maggiore viene messo in testa alla coda  Con prelazione (preemptive) – il processo attuale viene prelazionato

25 5.25 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling a priorità -1 nonpreemptive  Ordinamento:  Tempo medio di attesa: ( )/5 = 8,2 millisecondi ProcessoTempo di burst (millisecondi) Priorità P1P1 103 P2P2 11 P3P3 24 P4P4 15 P5P5 52 P2P2 P5P5 P3P3 0 P4P P1P

26 5.26 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Starvation  L’attesa indefinita o starvation è un problema che si verifica con lo scheduling per priorità  Un processo con bassa priorità ed in attesa della CPU potrebbe rimanere in attesa per un tempo indefinito a causa di processi con priorità maggiore  Il processo solitamente è eseguito di notte quando la maggior parte dei processi con alta priorità non è in esecuzione  Una soluzione consiste nell’applicare una sorta di invecchiamento (aging) in cui la priorità dei processi viene aumentata man mano che passa il tempo  Per esempio, se priorità in [0 – 127], un processo con priorità 127 verrà eseguito entro 32 ore se ad ogni 15 minuti gli si abbassa la priorità

27 5.27 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Round Robin (RR) - 1  Nell’algoritmo di scheduling circolare (round robin, RR) ad ogni processo è concesso un quanto di tempo q o porzione di tempo (time slice)  Solitamente da 10 a 100 millisecondi  Al termine del quanto di tempo il processo in esecuzione è prelazionato ed inserito alla fine della coda del processi pronti  Lo scheduler della CPU scorre la coda dei processi pronti per individuare il primo processo della coda a cui assegnare il prossimo quanto di tempo  Una volta determinato il processo, lo scheduler imposta un timer pari al quanto di tempo ed attiva il dispatcher per l’esecuzione del processo

28 5.28 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Round Robin (RR) - 2  Durante l’esecuzione del processo possono accadere due cose:  Il processo ha un sequenza di operazioni della CPU minore del quanto di tempo e quindi rilascerà spontaneamente la CPU  Il processo termina il suo quanto di tempo e lo scheduler passa all’esecuzione del prossimo processo  Se ci sono n processi nella coda dei processi pronti e il quanto di tempo è q allora  nessun processo attenderà più di (n-1)q quanti di tempo  Performance  Se q è molto grande si ottiene lo scheduling FCFS  Se q è piccolo il contex switch potrebbe essere prevalente sul tempo totale creando un eccessivo overhead

29 5.29 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Round Robin (RR) - Esempio  Ordinamento con un quanto pari a 4:  Tempo di attesa:  P 1 attende in coda 6 millisecondi  P 2 attende in coda 4 millisecondi  P 3 attende in coda 7 millisecondi  Tempo medio di attesa: ( )/3 = 5,66 millisecondi ProcessoTempo di burst (millisecondi) P1P1 24 P2P2 3 P3P3 3 P1P P2P2 P3P3 10 P1P1 14 P1P1 18 P1P1 22 P1P1 26 P1P1 30

30 5.30 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Dimensione del quanto di tempo  La dimensione del quanto di tempo è fondamentale per evitare overhead dei cambi di contesto  Ad esempio se un processo dura 10 unità di tempo in base alla durata del quanto di tempo q avremo:  Se q=12, nessun cambio di contesto  Se q=6, un solo cambio di contesto  Se q=1, 9 cambi di contesto

31 5.31 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Quanto di tempo e tempo di turnround Empiricamente: il quanto di tempo deve essere più lungo dell’80% dei CPU burst

32 5.32 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling a code multiple  Nei sistemi in cui i processi sono classificabili in gruppi diversi è possibile suddividere la coda dei processi pronti in code distinte  Una distinzione comune è  Processi eseguiti in primo piano (foreground) o interattivi  Processi eseguiti in sottofondo (background) o batch  L’algoritmo di scheduling a code multiple (scheduling multilevel queue) utilizza per ogni coda un algoritmo di scheduling differente, ad esempio:  Per i processi in foreground si può utilizzare un algoritmo RR  Per i processi in background si può utilizzare un algoritmo FCFS  Lo scheduling deve essere applicato anche tra le diverse code  Scheduling a priorità fissa: si servono tutti i processi foreground poi quelli background  Rischio di starvation  Time slice: ciascuna coda occupa un certo tempo di CPU che suddivide fra i propri processi  Ad esempio: – 80% per foreground in RR – 20% per background in FCFS

33 5.33 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Esempio scheduling a code multiple

34 5.34 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling code multiple con retroazione  Nello scheduling a code multiple con retroazione (multilevel-feedback-queue scheduler) i processi possono essere spostati da una coda ad un’altra  Si potrebbe ipotizzare un comportamento del genere:  Un processo che utilizza troppi cicli di CPU è spostato su di una coda con priorità più bassa  Processi con prevalenza di I/O sono spostati in code a priorità più alta  Processi che attendono da troppo tempo l’uso della CPU possono essere spostati in code a priorità più alta  Uno scheduler a code multiple con retroazione è caratterizzato dai seguenti parametri:  Numero di code  Algoritmo di scheduling per ciascuna coda  Metodo utilizzato per spostare una processo su una coda con priorità maggiore  Metodo utilizzato per spostare una processo su una coda con priorità minore  Metodo da utilizzare per decidere in quale coda spostare un processo quando viene lanciato

35 5.35 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Esempio Scheduling a code multiple  Consideriamo uno scheduler con tre code:  Q 0 – servita con RR con un quanto di tempo di 8 millisecondi  Q 1 – servita con RR con un quanto di tempo di 16 millisecondi  Q 2 – servita con FCFS  Lo scheduler opera nel seguente modo:  Un nuovo processo entra nella coda Q 0. Quando riceve la CPU se non termina nel quanto di 8 millisecondi è spostato nella coda Q 1  Un processo nella coda Q 1 riceve 16 millisecondi se non termina entro il quanto assegnato viene spostato nella coda Q 2  I processi nella coda Q 2 sono eseguiti solo se non ci sono processi nella coda Q 1  I processi nella coda Q 1 sono eseguiti solo se non ci sono processi nella coda Q 0  I processi a priorità maggiore hanno diritto di prelazione sui processi a priorità minore  L’intero scheduler favorisce i processi che non richiedono un uso della CPU per non più di 8 millisecondi

36 5.36 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Outline  Introduzione allo scheduling  Algoritmi di scheduling  Scheduling multiprocessore

37 5.37 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling multiprocessore  Lo scheduling diviene più complesso quando nel sistema di calcolo sono presenti più CPU  Esistono due tipi di multielaborazione  Multielaborazione asimmetrica  Lo scheduling, l’elaborazione dell’I/O e le altre attività del sistema sono affidate ad un solo processore, detto master server – Si riduce la necessità di condividere dati, grazie all’accesso di un solo processore alle strutture dati del sistema  Multielaborazione simmetrica (symmetric multiprocessing, SMP)  I processi pronti sono mantenuti in una coda comune oppure ogni processore ha un coda propria  Ciascun processore ha un proprio scheduler che esamina la coda opportuna per prelevare il prossimo processo da eseguire – L’accesso concorrente di più processori ad una struttura dati comune rende delicata la programmazione degli scheduler: devono evitare di scegliere contemporaneamente lo stesso processo da eseguire


Scaricare ppt "Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Scheduling della CPU."

Presentazioni simili


Annunci Google