Scheduling in Windows 2000  Sanjay Kumar  Sanjay Kumar Ram  Marcello Missiroli
I Processi in windows <ul><li>Tre classi di  processi </li></ul><ul><ul><li>Statici </li></ul></ul><ul><ul><li>Dinamici </...
Scheduling in windows 2000 <ul><li>Lo schedule di Windows 2000: </li></ul><ul><ul><li>Si occupa di threads, non di process...
Gamma delle priorità
Modifiche individuali ai processi
L'algoritmo <ul><li>Basato sulla priorità </li></ul><ul><ul><li>32 code (FIFO) di processi pronti </li></ul></ul><ul><ul><...
Caso multiprocessore <ul><li>In questo caso, gli  n  thread con la maggiore priorità sono in esecuzione (ma teniamo conto ...
Prelazione <ul><li>Se un thread passa allo stato di pronto ed ha priorità maggiore di quello in esecuzione.... </li></ul><...
Foreground <ul><li>Il processo in foreground ha di base un quantum triplo rispetto al normale </li></ul><ul><li>In aggiunt...
Altre opzioni <ul><li>Cambio di contesto volontario </li></ul><ul><ul><li>In questi casi il thread può abbandonare la CPU:...
Modifiche alla priorità <ul><li>I thread nelle classi “dinamiche” possono avere modifiche alle loro priorità effettive </l...
Incrementi alla priorità <ul><li>Si verificano dopo il wait. </li></ul><ul><ul><ul><li>Dispositivi lenti / lunghe attesa =...
Starvation <ul><li>Il Balance Set Manager cerca I processi in starvation </li></ul><ul><ul><li>BSM è un thread con priorit...
Multiprocessori <ul><li>Di base, un thread può girare su qualsiasi processore </li></ul><ul><li>Affinità soft  </li></ul><...
Multiprocessor (cont.) <ul><li>Affinità “hard” </li></ul><ul><ul><li>Restringe I threads a un sottoinsieme di CPUs </li></...
References   <ul><li>http://iamexwiwww.unibe.ch/studenten/schlpbch/linuxScheduling/LinuxScheduling.html </li></ul><ul><li>...
Licenza <ul><li>La versione originale di questa presentazione è in ingliese, sul sito  http://www.cse.iitb.ac.in/~cs431/st...
Upcoming SlideShare
Loading in …5
×

Scheduling In Windows 2000

934
-1

Published on

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.

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
934
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Scheduling In Windows 2000

  1. 1. Scheduling in Windows 2000 Sanjay Kumar Sanjay Kumar Ram Marcello Missiroli
  2. 2. I Processi in windows <ul><li>Tre classi di processi </li></ul><ul><ul><li>Statici </li></ul></ul><ul><ul><li>Dinamici </li></ul></ul><ul><ul><li>Idle </li></ul></ul><ul><li>I processi in Windows hanno gli stati seguenti: </li></ul><ul><ul><li>Ready </li></ul></ul><ul><ul><li>Standby </li></ul></ul><ul><ul><li>Waiting </li></ul></ul><ul><ul><li>Transition </li></ul></ul><ul><ul><li>Running </li></ul></ul><ul><ul><li>Terminated </li></ul></ul>
  3. 3. Scheduling in windows 2000 <ul><li>Lo schedule di Windows 2000: </li></ul><ul><ul><li>Si occupa di threads, non di processi </li></ul></ul><ul><ul><li>I threads hanno priorità da 0 a 31, così strutturati </li></ul></ul>31 16 15 1 0 i 16 livelli “real-time” 15 livelli variabili Usato dallo “zero page” Usato dai thread idle
  4. 4. Gamma delle priorità
  5. 5. Modifiche individuali ai processi
  6. 6. L'algoritmo <ul><li>Basato sulla priorità </li></ul><ul><ul><li>32 code (FIFO) di processi pronti </li></ul></ul><ul><ul><ul><li>Una coda per livello di priorità </li></ul></ul></ul><ul><ul><ul><li>Code comuni a tutte le CPU </li></ul></ul></ul><ul><ul><li>Quando un thread diventa pronto: </li></ul></ul><ul><ul><ul><li>Viene eseguito immediatamente, oppure </li></ul></ul></ul><ul><ul><ul><li>È inserito in fondo alla coda della sua priorità corrente </li></ul></ul></ul><ul><ul><li>Nel caso monoprocessore, il processo con priorità più alta è sempre in esecuzione </li></ul></ul><ul><li>All'interno di un dato livello di priorità, vige un classico Round-robin </li></ul><ul><ul><li>(Quantum: 2 tick, 6 per il thread in foreground, 12 per i server) </li></ul></ul>
  7. 7. Caso multiprocessore <ul><li>In questo caso, gli n thread con la maggiore priorità sono in esecuzione (ma teniamo conto dell' Affinità , si veda oltre) </li></ul><ul><li>Si prova a tenere lo stesso processo sulla stessa CPU </li></ul>
  8. 8. Prelazione <ul><li>Se un thread passa allo stato di pronto ed ha priorità maggiore di quello in esecuzione.... </li></ul><ul><ul><li>Il thread di minore priorità viene preemptato </li></ul></ul><ul><ul><li>Viene inserito in fondo alla sua coda di processi pronti </li></ul></ul>
  9. 9. Foreground <ul><li>Il processo in foreground ha di base un quantum triplo rispetto al normale </li></ul><ul><li>In aggiunta, quando passa in foreground riceve un bonus di priorità (solitamente +2) </li></ul>
  10. 10. Altre opzioni <ul><li>Cambio di contesto volontario </li></ul><ul><ul><li>In questi casi il thread può abbandonare la CPU: </li></ul></ul><ul><ul><ul><li>Attesa di un “dispatcher object” (timer, semaforo, mutex, ...) </li></ul></ul></ul><ul><ul><ul><li>Terminazione </li></ul></ul></ul><ul><ul><ul><li>Abbassamento di priorità </li></ul></ul></ul><ul><ul><li>Lo scheduler seleziona il thread successivoSchedule the thread at the head of the next non-empty Ready queue </li></ul></ul><ul><li>Il thread in corso esaurisce il suo quantum (processo “ingordo”) </li></ul><ul><ul><li>La priorità si abbassa (se non è al minimo per la sua classe) </li></ul></ul><ul><ul><li>Il thread viene introdotto alla fine della coda della sua nuova priorità (può teoricamente continuare ad essere eseguito, ricevendo un nuovo quantum) </li></ul></ul>
  11. 11. Modifiche alla priorità <ul><li>I thread nelle classi “dinamiche” possono avere modifiche alle loro priorità effettive </li></ul><ul><ul><li>Le classi sono: Idle, Below Normal, Normal, Above Normal and High </li></ul></ul><ul><ul><li>Le modifiche si effettuano all'uscita dallo stato di Wait </li></ul></ul><ul><ul><li>Evitano la starvation </li></ul></ul><ul><li>Le classi “real-time” NON hanno modifiche </li></ul><ul><ul><li>Lo scheduling è pertanto “prevedibile” </li></ul></ul>
  12. 12. Incrementi alla priorità <ul><li>Si verificano dopo il wait. </li></ul><ul><ul><ul><li>Dispositivi lenti / lunghe attesa = grande aumento </li></ul></ul></ul><ul><ul><ul><li>Dispositivi veloci / attese corte = piccoli aumenti </li></ul></ul></ul><ul><ul><li>Il boost è applicato alla priorità base </li></ul></ul><ul><ul><ul><li>Non supera MAI 15 </li></ul></ul></ul><ul><ul><li>Tiene occupati I dispositivi di I/O </li></ul></ul>
  13. 13. Starvation <ul><li>Il Balance Set Manager cerca I processi in starvation </li></ul><ul><ul><li>BSM è un thread con priorità 16, che gira ogni secondo </li></ul></ul><ul><ul><li>Cerca I threads che sono rimasti pronti per 4+ secondi </li></ul></ul><ul><li>Boost speciale </li></ul><ul><ul><li>Se si ha priorità 15, il quantum viene raddoppiato </li></ul></ul><ul><li>Non si applica ai real-time </li></ul>
  14. 14. Multiprocessori <ul><li>Di base, un thread può girare su qualsiasi processore </li></ul><ul><li>Affinità soft </li></ul><ul><ul><li>Ogni thread ha un “processore ideale” </li></ul></ul><ul><ul><li>Quando il thread diventa pronto: </li></ul></ul><ul><ul><ul><li>Se il processore “ideale” è libero, si esegue su questo </li></ul></ul></ul><ul><ul><ul><li>altrimenti, se il processore precedente è libero, si esegue su questo </li></ul></ul></ul><ul><ul><ul><li>Altrimenti , può eseguire il thread successivo per eseguirlo, se può andare sul suo processore ideale, oppure scegliere un nuovo processore </li></ul></ul></ul>
  15. 15. Multiprocessor (cont.) <ul><li>Affinità “hard” </li></ul><ul><ul><li>Restringe I threads a un sottoinsieme di CPUs </li></ul></ul><ul><ul><li>Può portare a certi processi ad ottenere meno tempo del previsto </li></ul></ul>
  16. 16. References <ul><li>http://iamexwiwww.unibe.ch/studenten/schlpbch/linuxScheduling/LinuxScheduling.html </li></ul><ul><li>http://oopweb.com/OS/Documents/tlk/VolumeFrames.html </li></ul><ul><li>http://www.samspublishing.com/articles/article.asp?p=101760&rl=1 </li></ul><ul><li>http://www.oreilly.com/catalog/linuxkernel/chapter/ch10.html </li></ul><ul><li>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 </li></ul>
  17. 17. Licenza <ul><li>La versione originale di questa presentazione è in ingliese, sul sito http://www.cse.iitb.ac.in/~cs431/student_slides/Scheduling%20in%20Linux%20and%20Windows%202000.ppt </li></ul><ul><li>Non mi è stato possibile trovare riferimenti circa l'autore o le sue licenze, per cui, per quanto concerne le mie modifiche, questo lavoro è soggetto alla licenza Creative Commons, http://creativecommons.org/licenses/by-sa/2.5/ salvo diverse indicazioni </li></ul>

×