Upload
marcello-missiroli
View
887
Download
2
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
Scheduling in Scheduling in Windows 2000 Windows 2000
Sanjay Kumar Sanjay Kumar Sanjay Kumar Ram Sanjay Kumar Ram
Marcello MissiroliMarcello Missiroli
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
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
Gamma delle prioritàGamma delle priorità
Modifiche individuali ai processiModifiche individuali ai processi
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)
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
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
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)
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)
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”
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
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
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
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
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
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