Windows ütemezési példa

Hasonló dokumentumok
Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Dr. Schuster György október 3.

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Feladatok (task) kezelése multiprogramozott operációs rendszerekben





























Az operációs rendszer szerkezete, szolgáltatásai

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

Előadás_#03. Előadás_03-1 -

Operációs rendszerek. Folyamatok ütemezése

Operációs rendszerek MINB240

Operációs rendszerek MINB240

Ütemezés (Scheduling),

SQLServer. SQLServer konfigurációk

Folyamatok. 6. előadás

Konkurens TCP Szerver

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

Az előadás magáncélra szabadon felhasználható. Köz- és felsőoktatásban felhasználható, csak előtte kérlek írj egy t nekem.

Operációs Rendszerek II.

(kernel3d vizualizáció: kernel245_graph.mpg)

Operációs rendszerek. Az NT folyamatok kezelése

Ütemezés (Scheduling),

OPERÁCIÓS RENDSZEREK. A mai program. Fogalmak. Ütemezés és a Context Switch

Balogh Ádám Lőrentey Károly

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

Operációs rendszerek előadás Multiprogramozott operációs rendszerek

Operációs rendszerek II. Folyamatok ütemezése

Operációs rendszerek Folyamatok 1.1

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Tartalom. Operációs rendszerek Bevezetés CPU ütemezés. Középtávú ütemezés. Hosszútávú ütemezés

Matematikai és Informatikai Intézet. 4. Folyamatok

Előadás_#02. Előadás_02-1 -

Operációs Rendszerek II.

Dr. Illés Zoltán


ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA

Szúnyogháló bepattintása A szúnyogháló felengedése (A) (R) Tanács Portalanítás Tisztítás



Példa. Job shop ütemezés













Hagyományos termelésirányítási módszerek:




Megkülönböztetett kiszolgáló routerek az
















Átírás:

Windows ütemezési példa A példában szereplő számolás erősen leegyszerűsített egy valós rendszerhez képest, csak az elveket próbálja bemutatni! Egyprocesszoros Windows XP-n dolgozunk, a rendszer úgy van beállítva, hogy az előtérben futó folyamatok quamtumja hosszú, a háttérben futóéké. Nem érkezik megszakítás a futás során, és nem lép életbe a Balance Set Manager. A rendszerben csak a következő folyamatok vannak: Folyamat, előtérben van, -as prioritású o szál, -as prioritású, 0 ticknyi munkája van, futásra kész az induláskor o szál2, 9-es prioritású, 0 ticknyi munkája van, futásra kész az induláskor Folyamat 2, háttérben van, -es prioritás o szál3, -es prioritású, 4 ticknyi munkája van, várakozik, a kezdéstől számított 20 tick múlva fejezi be a várást Folyamat 3, háttérben van, -as prioritás o szál4, végig kernel módban fut, -as prioritású, ticknyi munkája van, I/O-ra várakozik, tick után lesz kész az I/O művelet, és ekkor 0-es prioritást kap Megoldás A Windows szálakat ütemez, tehát az ütemezés szempontjából nem számít, hogy melyik szál melyik folyamathoz tartozik, a rendszer nem törekszik arra, hogy minden folyamat egyformán kapjon időt. A quantum óra megszakítás (clock tick) * 3 formában van tárolva, ezért érdemes mindent átváltani ebbe. o Így a 4-es szál (t4) 24 egység után lesz futásra kész, t3 pedig 0 után. A feladat szövege szerint t3 végig kernel módban fut, ez az ütemezés szempontjából nem változtat semmit, felhasználói módú szálak is ugyanúgy megszakíthatják kernel módban futó szálak futását. Egy szálhoz érdemes tárolni az aktuális prioritását, hogy mennyi munkája van vissza, és a quantumja aktuális hosszát. A megoldásban ezt a következő formában jelöljük: 0 <-idő <- aktuális prioritás t <- hátralévő munka <- quantum értéke 9 t2 t4 A t szálnak -as prioritása van, 0*3 a hátralévő munkája, és az előtérben lévő folyamathoz tartozik, így -as a quantumja induláskor. A többi szálra hasonlóan számolhatóak az értékek. Az induláskor az ütemező megnézi a futásra kész sorokat, minden prioritásértékhez tartozik egy FIFO sor:

9 t2 t A t3 és t4 szálak várakoznak, így a másik kettő közül kell választania az ütemezőnek. t2 a magasabb prioritású, így az ütemező azt választja. t2 mindaddig fut, amíg le nem jár a qunatumja, vagy valami egyéb esemény nem történik (pl. valaki befejezi a futását, belép egy új szál, stb.). t 0 9 9 t2 2 t4 t2 futását nem szakítja meg semmi, így egységig ( tick) fut. Miután lejárt a quantumja, újra meghívódik az ütemező. t3 és t4 még mindig várakozik, t-nek alacsonyabb a prioritása, így t2 futhat újra, a quantumja -ról indul újra. t 0 24 9 9 9 t2 2 2 0 t4 5 Az indulás után 24 egységgel t4 futásra kész lesz. Mivel I/O-ra várakozott, ezért a rendszer megnöveli ideiglenesen a prioritását (priority boost), de, hogy a prioritás növelése miatt ne legyen túlságosan előnyben, a quantumját eggyel csökkenti. Mivel új szál lett futásra kész, újra meghívódik az ütemező. t4-nek van most a legnagyobb prioritása a futásra kész szálak közül, így az fog futni.

t 0 24 29 9 9 9 t2 2 2 0 9 t4 3 5 Miután t4-nek lejár a quamtumja, az ideiglenesen megnövelt prioritása egyesével visszacsökken az eredetire, így most már csak 9 az aktuális prioritása. A quantumja újra lesz (háttérben futó folyamathoz tartozik, és a quantum csökkentés csak a prioritás megnövelés utáni első ütemre vonatkozik). A futásra kész sorok helyzete: 9 t2 t4 t t4 az előbb futott, és végére ért a quantumjának, így a megfelelő sor végére kerül. Az ütemező a legmagasabb prioritású sor elejéről választ, tehát t2 fog futni. t 0 24 29 35 t2 2 0 2 0 9 t4 3 5 t2 egység után befejezi a munkáját, így az ütemezőnek új szálat kell választania. A futásra kész sorok helyzete:

9 t4 t Így t4 fog futni: t 0 24 29 35 4 t2 2 0 2 0 9 t4 3 7 5 t4 a quantumja teljes hosszáig fut, a prioritása megint csökken eggyel, így visszaáll az eredeti értékre. A futás befejezése után visszakerül a megfelelő sor végére: 9 t t4 Az ütemező t-et választja ki futásra. 0 24 29 35 4 59 t 2 t2 2 0 2 0 9 t4 3 7 5

t a teljes quantumjáig fut. Érdemes megfigyelni, hogy mivel t az előtérben futó folyamathoz tartozik, neki sokkal hosszabb a quantumja. t-nek és t4-nek is -as a prioritása, de t4 van a sor elején, így t4 fog futni. 0 24 29 35 4 59 0 t 2 t2 2 0 2 0 9 t4 3 7 5 5 Az indulás után 20 tickkel (0 egység) t3 futásra kész lesz, így újra meg kell vizsgálni az ütemezőnek a rendszerben lévő szálakat. t3 prioritása -nál nagyobb, az úgynevezett real-time tartományban van, tehát az ő prioritása nem változhat futás közben, ezért hiába I/O műveletre várt, nem nő a prioritása. A futásra kész sorok: t3 9 t4 t Mivel t4-nek nem járt le a quantumja, hanem megszakították a futását, ezért ő a sor elejére kerül és a quantumja megmarad. t3-nak van a legnagyobb prioritása, így az fog futni. 0 24 29 35 4 59 0 t 2 t2 2 0 2 0 9 t4 3 7 5 5 Továbbra is t3-nak van a legnagyobb prioritása, így újra ő futhat.

0 24 29 35 4 59 0 72 t 2 t2 2 0 2 0 0 9 t4 3 7 5 5 t3 a quantumja lejártával be is fejezi a futását. Már csak két -as prioritású szál van a rendszerben, azok közül pedig t4 van a sor elején, így az futhat. 0 24 29 35 4 59 0 72 77 t 2 t2 2 0 2 0 0 9 t4 3 7 5 5 Miután lejárt t4 quantumja visszakerül a -as sor végére. A sor elején t van, így ő futhat. 0 24 29 35 4 59 0 72 77 9 t 2 0 t2 2 0 2 0 0 9 t4 3 7 5 5 t befejezi a futását, már csak t4 maradt, így ő futhat.

0 24 29 35 4 59 0 72 77 9 90 t 2 0 t2 2 0 2 0 0 9 t4 3 7 0 5 5 5 Az összes szál befejezte a munkáját.