Criteri di Scheduling Algoritmi di Scheduling Multiple-Processor Scheduling Asymmetric/Symmetric multiprocessing Processori Multicore Operating System Concepts – 7th Edition 5.2 Silberschatz, Galvin and Gagne ©2005 1 Massimizzare lʼutilizzo della CPU mediante multiprogrammazione CPU–I/O Burst Cycle Processo alterna cicli di CPU ad attese di I/O Distribuzione dei cicli di CPU (CPU-burst) Operating System Concepts – 7th Edition 5.3 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7th Edition 5.4 Silberschatz, Galvin and Gagne ©2005 2 Operating System Concepts – 7th Edition 5.5 Silberschatz, Galvin and Gagne ©2005 Sceglie tra i processi pronti quello da eseguire e vi alloca la CPU La Schedulazione della CPU avviene quando un processo: 1. Passa da attivo in stato di attesa 2. Passa da attivo a stato di pronto 3. Passa da stato di attesa a stato di pronto 4. Termina Scheduling secondo 1 e 4 eʼ non-preemptive (senza prelazione) Se si schedula secondo 2 e 3, preemptive (con prelazione) Operating System Concepts – 7th Edition 5.6 Silberschatz, Galvin and Gagne ©2005 3 Il Dispatcher passa il controllo della CPU al processo selezionato dallo schedulatore a breve termine: Cambia il contesto (context switch) Passa in modalitaʼ utente Salta alla locazione giusta da cui il processo schedulato deve ripartire Latenza di Dispatch latency – tempo necessario al dispatcher per fermare un processo e farne ripartire un altro Operating System Concepts – 7th Edition 5.7 Silberschatz, Galvin and Gagne ©2005 Utilizzo della CPU utilization CPU quasi sempre occupata Throughput – # di processi completati per unitaʼ di tempo Tempo di Turnaround – tempo necessario per completare un particolare processo Tempo di attesa – tempo trascorso dal processo nella coda di dei processi in stato di pronto Tempo di risposta – tempo trascorso dal momento in cui una richiesta viene sottoposta al sistema fino al momento in cui una prima risposta appare in output (importante in ambienti time-sharing) Operating System Concepts – 7th Edition 5.8 Silberschatz, Galvin and Gagne ©2005 4 Massimizza uso di CPU Massimizza throughput Minimizza turnaround Minimizza tempo dʼattesa Minimizza tempo di risposta Operating System Concepts – 7th Edition Silberschatz, Galvin and Gagne ©2005 5.9 Process Burst Time P1 24 P2 3 P3 3 I processi arrivano nellʼordine: P1 , P2 , P3 Il diagramma di Gantt per la schedulazione: P1 P2 0 24 P3 27 30 Tempo di attesa: P1 = 0; P2 = 24; P3 = 27 Tempo medio di attesa: (0 + 24 + 27)/3 = 17 Operating System Concepts – 7th Edition 5.10 Silberschatz, Galvin and Gagne ©2005 5 Consideriamo ora lʼordine di arrivo P2 , P3 , P1 Il diagramma di Gantt diventa: P2 0 P3 3 P1 6 30 Tempi di attesa: P1 = 6; P2 = 0; P3 = 3 Tempo medio di attesa: (6 + 0 + 3)/3 = 3 Miglioramento significativo Evitato lʼeffetto convoglio: processi brevi dopo processi lunghi Operating System Concepts – 7th Edition 5.11 Silberschatz, Galvin and Gagne ©2005 Scegli il processo con il piuʼ piccolo CPU burst Schemi possibili: Non-preemptive – una volta assegnata la CPU ad un processo attendi fino a completamento del CPU burst preemptive – se un nuovo processo arriva con CPU burst piuʼ breve del tempo rimanente al CPU burst del processo in esecuzione, prelaziona Schema noto come: Shortest-Remaining-Time-First (SRTF) SJF ottimizza (minimizza) il tempo medio di attesa Operating System Concepts – 7th Edition 5.12 Silberschatz, Galvin and Gagne ©2005 6 Process Arrival Time Burst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (non-preemptive) P1 0 P3 3 7 P2 P4 8 12 16 Tempo media di attesa = (0 + 6 + 3 + 7)/4 = 4 Operating System Concepts – 7th Edition Silberschatz, Galvin and Gagne ©2005 5.13 Process Arrival Time Burst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (preemptive) P1 0 P2 2 P3 4 P2 5 P4 7 P1 11 16 Tempo medio di attesa = (9 + 1 + 0 +2)/4 = 3 Operating System Concepts – 7th Edition 5.14 Silberschatz, Galvin and Gagne ©2005 7 Possiamo solo stimare tale lunghezza Possibilitaʼ: usa le lunghezza dei precedenti CPU bursts Es.: media esponenziale 1. 2. 3. 4. € t n = lunghezza effettiva dell'n mo CPU burst τ n +1 = valore atteso del prossimo CPU burst α, 0 ≤ α ≤ 1 Definisci : τ n +1 = α t n + (1− α )τ n . € Operating System Concepts – 7th Edition 5.15 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7th Edition 5.16 Silberschatz, Galvin and Gagne ©2005 8 α =0 τn+1 = τn La storia recente non ha valore α =1 τn+1 = α tn Solo il precedente CPU burst ha valore Se espandiamo la formula otteniamo: τn+1 = α tn+(1 - α)α tn -1 + … +(1 - α )j α tn -j + … +(1 - α )n +1 τ0 Nota che α e (1 - α) sono ≤ 1, quindi ogni termine nella formula pesa meno del precedente Operating System Concepts – 7th Edition 5.17 Silberschatz, Galvin and Gagne ©2005 Ogni processo ha associato un valore di prioritaʼ (intero) La CPU eʼ allocata al processo con prioritaʼ piuʼ alta (spesso nueri piccoli indicano prioritaʼ alta) Preemptive Non-preemptive SJF eʼ uno sceduling a prioritaʼ definita dal tempo previsto di CPU burst. Problemi: Starvation – processi con prioritaʼ bassa potrebbero essere “dimenticati” Soluzione: Aging – incrementare la prioritaʼ dei processi in funzione del tempo trascorso in stato di pronto Operating System Concepts – 7th Edition 5.18 Silberschatz, Galvin and Gagne ©2005 9 Ogni processo riceve la CPU per un breve intervallo (time quantum), tipicamente 10-100 millisecondi. Passato tale quanto di tempo, il processo ritorno all fine della coda dei processi in stato di pronto. Se n processi in coda di pronto e quanto di tempo = q, ogni processo riceve 1/n di CPU time in blocchi di q unitaʼ per volta. Nessun processo attende piuʼ di (n-1)q unitaʼ. Performance q grande ⇒ FIFO q piccolo ⇒ q deve esser maggiore del tempo di context switch, per evitare eccessivo Operating System Concepts – 7th Edition Process P1 P2 P3 P4 Il diagramma di Gantt: P1 0 P2 20 37 Silberschatz, Galvin and Gagne ©2005 5.19 P3 Burst Time 53 17 68 24 P4 57 P1 P3 P4 P1 P3 P3 77 97 117 121 134 154 162 Tipicamente, rispetto a SJF, tempo di turnround piuʼ alto, ma migliore tempo di risposta Operating System Concepts – 7th Edition 5.20 Silberschatz, Galvin and Gagne ©2005 10 Operating System Concepts – 7th Edition 5.21 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7th Edition 5.22 Silberschatz, Galvin and Gagne ©2005 11 La coda dei processi pronti divisa in code separate: foreground (interactive) background (batch) Ogni coda eʼ gestita al proprio algoritmo di scheduling foreground – RR background – FCFS Scheduling tra le code Scheduling a prioritaʼ fissa; (prima tutti I processi in foreground quindi quelli in background). Rischio di starvation. Time slice – ogni coda ha assegnata una percentuale di tempo di CPUin cui puoʼ schedulare I propri processi; es.: – 80% to foreground in RR 20% to background in FCFS Operating System Concepts – 7th Edition 5.23 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7th Edition 5.24 Silberschatz, Galvin and Gagne ©2005 12 Processi possono cambiare coda; Possibilitaʼ di implementare tecniche di aging Parametri critici: numero di code Algoritmo di scheduling usato in ciascuna coda Criterio di promozione dei processi tra le code Criterio di declassamento dei processi tra le code Criterio di assegnazione di un processo ad una coda in funzione del servizio richiesto Operating System Concepts – 7th Edition 5.25 Silberschatz, Galvin and Gagne ©2005 Tre code: Q0 – RR con q=8 milliseconds Q1 – RR con q=16 milliseconds Q2 – FCFS Scheduling Ogni nuovo job eʼ ammesso alla coda Q0 servita con FCFS. Quando attivo, il processo ha 8 milliseconds per completare. Se non completa passa alla coda Q1. In Q1 i job sono schedulati con criterio FCFS con q=16. Se tale quanto non risulta sufficiente, il processo passa in Q2. Operating System Concepts – 7th Edition 5.26 Silberschatz, Galvin and Gagne ©2005 13 Operating System Concepts – 7th Edition 5.27 Silberschatz, Galvin and Gagne ©2005 w : tempo speso dal processo in attesa in stato di pronto s : tempo totale necessario al processo per arrivare a terminazione R = (w+s)/s Lo scheduling HRRN sceglie il processo con max R Processi brevi hanno “prioritaʼ” Implementa una sorta di “aging” implicito Operating System Concepts – 7th Edition 5.28 Silberschatz, Galvin and Gagne ©2005 14 Code Multilivello con retroazione CPU(i) = CPU(i-1)/2 stima del tempo di CPU P(i) = Base + CPU(i)/2 + nice Un valore alto di P(i) indica prioritaʼ bassa Base : serve per definire le code o classi di processi Processi che usano molta CPU vengono penalizzati Operating System Concepts – 7th Edition 5.29 Silberschatz, Galvin and Gagne ©2005 CPU scheduling deve bilanciare il carico e le condivisioni tra I vari processori Multiprogrammazione asimmetrica: un solo processore accede alle strutture dati di sistema e gestisce la suddivisione per tutti Multiprogrammazione Simmetrica: ogni processore fa scheduling autonomamente; Operating System Concepts – 7th Edition 5.30 Silberschatz, Galvin and Gagne ©2005 15 Multiprocessing Simmetrico: ogni processore si schedula autonomamente; Alternative: Coda comune Code separate Affinitaʼ di processo: meglio evitare che un processo passi da un processore allʼaltro Affinitaʼ forte: no switching Affinitaʼ debole: no switching preferito ma non garantito Bilanciamento del carico (in contrasto con lʼaffinitaʼ di processo) Migrazione mediante push Migrazione Operating System Concepts – 7th Edition mediante pull 5.31 Silberschatz, Galvin and Gagne ©2005 Processori multipli sullo stesso chip Ogni core ha il suo insieme di registri Risparmio energetico e piuʼ veloce Multi-threading I Core possono schedulare diversi thread Multi-Thread gestito in hardware Dual core, dual thread = (virtualmente) 4 processori Scheduling parallelo di processi e (hw thread) Operating System Concepts – 7th Edition 5.32 Silberschatz, Galvin and Gagne ©2005 16