17
Scheduling in Scheduling in Windows 2000 Windows 2000 Sanjay Kumar Sanjay Kumar Sanjay Kumar Ram Sanjay Kumar Ram Marcello Missiroli Marcello Missiroli

Scheduling In Windows 2000

Embed Size (px)

DESCRIPTION

Queste dispense provano a spiegare per linee generali il funzionamento dello scheduling in Windows 2000 (e quindi, probabilmente, anche quello di XP, Vista e 7). Contiene un esercizio.

Citation preview

Page 1: Scheduling In Windows 2000

Scheduling in Scheduling in Windows 2000 Windows 2000

Sanjay Kumar Sanjay Kumar Sanjay Kumar Ram Sanjay Kumar Ram

Marcello MissiroliMarcello Missiroli

Page 2: Scheduling In Windows 2000

I Processi in windowsI Processi in windows Tre classi di processiTre classi di processi

StaticiStatici DinamiciDinamici IdleIdle

I processi in Windows hanno gli stati seguenti:I processi in Windows hanno gli stati seguenti: Ready Ready StandbyStandby WaitingWaiting TransitionTransition RunningRunning TerminatedTerminated

Page 3: Scheduling In Windows 2000

Scheduling in windows 2000Scheduling in windows 2000

Lo schedule di Windows 2000:Lo schedule di Windows 2000: Si occupa di threads, non di processiSi occupa di threads, non di processi I threads hanno priorità da 0 a 31, così strutturatiI threads hanno priorità da 0 a 31, così strutturati

31

1615

10i

16 livelli “real-time”

15 livelli variabili

Usato dallo “zero page”

Usato dai thread idle

Page 4: Scheduling In Windows 2000

Gamma delle prioritàGamma delle priorità

Page 5: Scheduling In Windows 2000

Modifiche individuali ai processiModifiche individuali ai processi

Page 6: Scheduling In Windows 2000

L'algoritmoL'algoritmo

Basato sulla prioritàBasato sulla priorità 32 code (FIFO) di processi pronti32 code (FIFO) di processi pronti

• Una coda per livello di prioritàUna coda per livello di priorità• Code comuni a tutte le CPUCode comuni a tutte le CPU

Quando un thread diventa pronto:Quando un thread diventa pronto:• Viene eseguito immediatamente, Viene eseguito immediatamente, oppureoppure• È inserito in fondo alla coda della sua priorità correnteÈ inserito in fondo alla coda della sua priorità corrente

Nel caso monoprocessore, il processo con priorità più alta Nel caso monoprocessore, il processo con priorità più alta è sempre in esecuzioneè sempre in esecuzione

All'interno di un dato livello di priorità, vige un All'interno di un dato livello di priorità, vige un classico Round-robin classico Round-robin (Quantum: 2 tick, 6 per il thread in foreground, 12 per i (Quantum: 2 tick, 6 per il thread in foreground, 12 per i

server)server)

Page 7: Scheduling In Windows 2000

Caso multiprocessoreCaso multiprocessore

In questo caso, gli In questo caso, gli nn thread con la maggiore thread con la maggiore priorità sono in esecuzione (ma teniamo conto priorità sono in esecuzione (ma teniamo conto dell' dell' AffinitàAffinità, si veda oltre), si veda oltre)

Si prova a tenere lo stesso processo sulla Si prova a tenere lo stesso processo sulla stessa CPUstessa CPU

Page 8: Scheduling In Windows 2000

PrelazionePrelazione

Se un thread passa allo stato di pronto ed Se un thread passa allo stato di pronto ed ha priorità maggiore di quello in ha priorità maggiore di quello in esecuzione....esecuzione.... Il thread di minore priorità viene preemptatoIl thread di minore priorità viene preemptato Viene inserito in fondo alla sua coda di Viene inserito in fondo alla sua coda di

processi prontiprocessi pronti

Page 9: Scheduling In Windows 2000

ForegroundForeground

Il processo in foreground ha di base un Il processo in foreground ha di base un quantum triplo rispetto al normalequantum triplo rispetto al normale

In aggiunta, quando passa in foreground In aggiunta, quando passa in foreground riceve un bonus di priorità (solitamente +2)riceve un bonus di priorità (solitamente +2)

Page 10: Scheduling In Windows 2000

Altre opzioniAltre opzioni

Cambio di contesto volontarioCambio di contesto volontario In questi casi il thread può abbandonare la CPU:In questi casi il thread può abbandonare la CPU:

• Attesa di un “dispatcher object” (timer, semaforo, mutex, ...)Attesa di un “dispatcher object” (timer, semaforo, mutex, ...)• TerminazioneTerminazione• Abbassamento di prioritàAbbassamento di priorità

Lo scheduler seleziona il thread successivoSchedule the thread at the Lo scheduler seleziona il thread successivoSchedule the thread at the head of the next non-empty Ready queuehead of the next non-empty Ready queue

Il thread in corso esaurisce il suo quantum (processo “ingordo”)Il thread in corso esaurisce il suo quantum (processo “ingordo”) La priorità si abbassa (se non è al minimo per la sua classe)La priorità si abbassa (se non è al minimo per la sua classe) Il thread viene introdotto alla fine della coda della sua nuova priorità Il thread viene introdotto alla fine della coda della sua nuova priorità

(può teoricamente continuare ad essere eseguito, ricevendo un nuovo (può teoricamente continuare ad essere eseguito, ricevendo un nuovo quantum)quantum)

Page 11: Scheduling In Windows 2000

Modifiche alla prioritàModifiche alla priorità

I thread nelle classi “dinamiche” possono avere I thread nelle classi “dinamiche” possono avere modifiche alle loro priorità effettivemodifiche alle loro priorità effettive Le classi sono: Idle, Below Normal, Normal, Above Le classi sono: Idle, Below Normal, Normal, Above

Normal and High Normal and High Le modifiche si effettuano all'uscita dallo stato di WaitLe modifiche si effettuano all'uscita dallo stato di Wait Evitano la starvationEvitano la starvation

Le classi “real-time” NON hanno modificheLe classi “real-time” NON hanno modifiche Lo scheduling è pertanto “prevedibile”Lo scheduling è pertanto “prevedibile”

Page 12: Scheduling In Windows 2000

Incrementi alla prioritàIncrementi alla priorità

Si verificano dopo il wait.Si verificano dopo il wait.• Dispositivi lenti / lunghe attesa = grande aumentoDispositivi lenti / lunghe attesa = grande aumento• Dispositivi veloci / attese corte = piccoli aumentiDispositivi veloci / attese corte = piccoli aumenti

Il boost è applicato alla priorità baseIl boost è applicato alla priorità base• Non supera MAI 15Non supera MAI 15

Tiene occupati I dispositivi di I/OTiene occupati I dispositivi di I/O

Page 13: Scheduling In Windows 2000

StarvationStarvation

Il Balance Set Manager cerca I processi in Il Balance Set Manager cerca I processi in starvationstarvation BSM è un thread con priorità 16, che gira ogni BSM è un thread con priorità 16, che gira ogni

secondosecondo Cerca I threads che sono rimasti pronti per 4+ Cerca I threads che sono rimasti pronti per 4+

secondisecondi Boost specialeBoost speciale

Se si ha priorità 15, il quantum viene raddoppiatoSe si ha priorità 15, il quantum viene raddoppiato Non si applica ai real-timeNon si applica ai real-time

Page 14: Scheduling In Windows 2000

MultiprocessoriMultiprocessori

Di base, un thread può girare su qualsiasi Di base, un thread può girare su qualsiasi processoreprocessore

Affinità soft Affinità soft Ogni thread ha un “processore ideale”Ogni thread ha un “processore ideale” Quando il thread diventa pronto:Quando il thread diventa pronto:

• Se il processore “ideale” è libero, si esegue su questo Se il processore “ideale” è libero, si esegue su questo • altrimenti, se il processore precedente è libero, si esegue su altrimenti, se il processore precedente è libero, si esegue su

questoquesto• Altrimenti , può eseguire il thread successivo per eseguirlo, Altrimenti , può eseguire il thread successivo per eseguirlo,

se può andare sul suo processore ideale, oppure scegliere se può andare sul suo processore ideale, oppure scegliere un nuovo processoreun nuovo processore

Page 15: Scheduling In Windows 2000

Multiprocessor (cont.)Multiprocessor (cont.)

Affinità “hard”Affinità “hard” Restringe I threads a un sottoinsieme di CPUsRestringe I threads a un sottoinsieme di CPUs Può portare a certi processi ad ottenere meno Può portare a certi processi ad ottenere meno

tempo del previstotempo del previsto

Page 16: Scheduling In Windows 2000

ReferencesReferences

http://iamexwiwww.unibe.ch/studenten/schlpbch/linuxSchhttp://iamexwiwww.unibe.ch/studenten/schlpbch/linuxScheduling/LinuxScheduling.htmleduling/LinuxScheduling.html

http://oopweb.com/OS/Documents/tlk/VolumeFrames.hthttp://oopweb.com/OS/Documents/tlk/VolumeFrames.htmlml

http://www.samspublishing.com/articles/article.asp?p=10http://www.samspublishing.com/articles/article.asp?p=101760&rl=11760&rl=1

http://www.oreilly.com/catalog/linuxkernel/chapter/ch10.hhttp://www.oreilly.com/catalog/linuxkernel/chapter/ch10.htmltml

G. M. Candea and M. B. Jones, “ G. M. Candea and M. B. Jones, “ Vassal: Loadable Scheduler Support for Multi-Policy Scheduling,” Proceedings of the 2nd USENIX Windows NT Symposium Seattle, Washington, August 3–4, 1998

Page 17: Scheduling In Windows 2000

LicenzaLicenza

• La versione originale di questa La versione originale di questa presentazione è in ingliese, sul sito presentazione è in ingliese, sul sito http://www.cse.iitb.ac.in/~cs431/student_slidhttp://www.cse.iitb.ac.in/~cs431/student_slides/Scheduling%20in%20Linux%20and%20es/Scheduling%20in%20Linux%20and%20Windows%202000.pptWindows%202000.ppt

• Non mi è stato possibile trovare riferimenti Non mi è stato possibile trovare riferimenti circa l'autore o le sue licenze, per cui, per circa l'autore o le sue licenze, per cui, per quanto concerne le mie modifiche, questo quanto concerne le mie modifiche, questo lavoro è soggetto alla licenza Creative lavoro è soggetto alla licenza Creative Commons, Commons, http://creativecommons.org/licenses/by-sa/2.http://creativecommons.org/licenses/by-sa/2.5/5/ salvo diverse indicazioni salvo diverse indicazioni