Mutex Operációs rendszerek MINB24 3. előadás Ütemezés Bináris szemafor Szemaforváltozója csak két értéket vehet fel ( / 1; foglalt / szabad) Kölcsönös kizárásra 1 kezdőértékű mutex A kritikus szakaszba belépni kívánó folyamat down műveletet hajt végre A kilépő pedig up műveletet 1 3 Szemaforok Speciális változók, melyeket csak a két, hozzájuk tartozó oszthatatlan művelettel lehet kezelni Down: while s < 1 do üres_utasítás; s := s - 1; Up: s := s + 1; A szemaforváltozó más utasításokkal nem érhető el Monitorok Speciális modulba gyűjtött eljárások, változók, adatszerkezetek együttese A processzusok bármikor hívhatják a monitorban levő eljárásokat Nem érhetik el közvetlenül a monitor belső adatszekezeteit a monitoron kívül deklarált eljárásokból Kritikus zóna implementációja 2 4 1 2
Klasszikus IPC problémák Folyamatok közötti kommunikáció -Inter Process Communication (IPC) Étkező filozófusok probléma Nyilvánvaló megoldás, de hibás! Filozófusok száma Probléma: ha egyszerre veszik fel a jobb villát Az étkező filozófusok probléma Az olvasók és írók probléma Az alvó borbély probléma Gondolkodik Felveszi a jobb villát Felveszi a másik villát Eszik Visszateszi az egyik majd a másik villát 5 Étkező filozófusok probléma Dijkstra (1965) Evéshez 2 villa szükséges Egy ben csak 1 villa vehető fel Gondolkodás; evés Hogy kerüljük el a holdpontot? Éheztetés Hatékonyság Étkező filozófusok probléma Filozófusok száma Szomszédok sorszáma Szemaforok az int speciális fajtája Speciális tömb a filozófus tevékenységének nyomonkövetésére (eszik, gondolkodik, éhes) Végtelen ciklus -Gondolkodik - Megszerzi mindkét villát -Eszik -Visszateszi a villákat 6 3 4
Étkező filozófusok probléma Belépés a kritikus szekcióba Rögzítjük, hogy éhes Megpróbál még egy villát szerezni Kilépés a kritikus szekcióból Ha nincs villaszerzés, blokkol A LEFT, RIGHT makrók definiálják a szomszédokat Egy filozófus csak akkor mehet át evés állapotba, ha egyik szomszédja Tesztel, sem megfelel-e eszik a feltételeknek 9 Olvasók és írók probléma Kizárólagos elérés beállítása rc-hez Író belépése, írás A következő olvasók csak az rc számlálót növelik Az első olvasó, aki hozzáfér az adatbázishoz, végrehajt egy down-t a db szemaforon Ha kilép az olvasó, akkor az rc számlálót csökkenti Az utolsó olvasó végrehajt egy up-ot a szemaforon Így lehetővé teszi a blokkolt írók belépését Olvasók és írók probléma Az adatbázisok hozzáférési problémáit modellező feladat több olvasó lehet a bázisban egyidejűleg de az írónak kizárólagos joga van a hozzáféréshez Hatékony egyidejűség Az alvó borbély probléma Egy processzus kiszolgál más processzusokat Ha nincs kiszolgálandó alszik Első érkező ébreszti Csak bizonyos számú processzus várakozhat Amíg az eljárás tart, más nem kerül sorra Ha vége az eljárásnak, a processzus befejeződik, új eljárás kezdődik (ha van) és új processzus léphet be 1 12 5 6
Az alvó borbély probléma A borbély alszik, ha nincs vendég Hajvágásra kész Hajvágás Kritikus szekcióba lépés Ha van szabad szék Várakozó vendégek számának növelése Bornély felébresztése Vendég kiszolgálása Ütemezés tulajdonságok Gyakran fut gyorsnak kell lennie (a CPU ne az ütemezéssel teljék) ezért: Része a kernelnek Állandóan a memóriában van Fajtái: Preemtív ütemezés: az op.rsz. elveheti a futás jogát az éppen futó folyamattól Nem preemtív: a futó folyamat addig birtokolja a CPU-t, míg állapotot nem vált Üzlet teli állapot esetén nem léphet be 13 15 Ütemezés Ha több processzus is képes futni de csak egy erőforrás áll rendelkezésre Op.rsz.-nek el kell döntenie, hogy melyik processzus fusson ütemezés Ütemezési algoritmus Processzusra és szálakra egyaránt vonatkozhat Processzusok viselkedése CPU dolgozik egy ideig Rendszerhívás I/O művelet befejezésére várakozik Ismét számol Sztámításigényes processzus I/O igényes processzus 16
Mikor ütemezzünk? Feltétlenül szükséges: 1. Processzus befejeződésekor 2. Processzus blokkolódása I/O művelet vagy szemafor miatt Ezen felül még ütemezésre kerül sor: 3. Új processzus létrejöttekor 4. I/O megszakítás esetén 5. Időmegszakítás esetén Ütemezési algoritmusok csoportosítása 1. Kötegelt Nincsenek felhasználók Nem megszakítható ütemezési algoritmusok 2. Interaktív Időnkénti megszakítás nélkülözhetetlen Különben egy processzus kizárhatná a többit Megszakításos ütemezés 3. Valós idejű Nem mindig van szükség megszakításos ütemezésre 1 19 Ütemezési algoritmusok Ütemezési algoritmusok céljai Időzítő-megszakítások kezelésének vonatkozásában lehetnek: Nem megszakítható ütemezés Addig engedi futni,a míg az nem blokkolódik, vagy le nem mond a CPU-ról Megszakítható ütemezés Csak egy előre meghatározott ideig futhat Minden rendszer Pártatlanság Elvek betartása Egyensúly II. Interaktív rendszerek Válasz Arányosság I. Kötegelt rendszerek Áteresztőképesség Áthaladási CPU kihasználtság III. Valós idejű rendszerek Határk betartása Adatvesztés elkerülése Előrejelezhetőség 1 2 9 1
I. Ütemezés kötegelt rendszerekben 1. Sorrendi ütemezés (FCFS) 2. A legrövidebb feladat először (SJF) 3. A legrövidebb maradék futási idejű következzen (SRTF) Megjegyzés: némelyik algoritmus kötegelt és interaktív rendszereknél egyaránt használatos 1.2. A legrövidebb feladat először SJF (Shortest Job First) Feltételezi, hogy a futási k előre ismertek Ha több egyformán fontos feladat van a bemenő sorban futásra készen Az ütemező a legrövidebb feladatot választja 21 23 1.1. Sorrendi ütemezés FCFS (First Come Firts Served) Olyan sorrendben osztja ki a CPU-t, ahogyan a processzusok kérik azt A futásra kész processzusok egyetlen várakozó soron állnak láncolt lista A kiválasztás a sor elejéről az első processzus levétele 1.2. A legrövidebb feladat először folyt. Bizonyíthatóan optimális algoritmus Pl.: Négyfeladatos eset, a,b,c,d futási kkel (4a + 3b + 2c + d) / 4 Megjegyzés: csak akkor optimális, ha a feladatok egyszerre a rendelkezésre állnak 24 12
1.3. A legrövidebb maradék futási idejű következzen Shortest Remaining Timem First (SRTF) A legrövidebb feladat először algoritmus megszakítható változata Szintén előre ismerni kell a futási ket Az ütemező azt a feladatot választja, melynek befejezéséig legkevesebb a megmaradt ideje Háromszintű ütemezés folyt. 25 2 Háromszintű ütemezés Kötegelt rendszerekben az ütemezés három szinten történik: Bebocsátó ütemező Memória ütemező CPU ütemező II. Ütemezés interaktív rendszerekben 1. Round Robin ütemezés 2. Prioritásos ütemezés 3. Többszörös sorok 4. Legrövidebb processzus következzen 5. Garantált ütemezés 6. Sorsjáték ütemezés. Arányos ütemezés 26 2 13
2.1. Round Robin ütemezés Minden processzusnak ki van osztva egy intervallum - szelet Ha az szelet letelte utána processzus még fut, akkor átadódik a vezérlés egy másik processzusra 2.2. Prioritásos ütemezés Minden processzushoz rendeljünk egy prioritást A legmagasabb prioritású futásra kész processzus futhasson A végtelen ideig történő futás megelőzésére: Ütemező minden óraütemben csökkentheti az éppen futó processzus prioritását Minden processzushoz hozzárendelhetünk egy szeletet amíg futhat Mikor ezt kihasználta; a köv. legmagasabb prioritású futhat 29 31 2.1. Round Robin ütemezés folyt. Környezetátkapcsolás (processzusátkapcsolás) Problémák: Időszelet túl kicsire választása túl sok processzus átkapsolást okoz csökken a CPU hatékonysága Időszelet túl nagyra állítása Rövid interaktív kérésekre gyenge válasz 2.2. Prioritásos ütemezés folyt. Prioritás hozzárendelés: Statikusan Dinamikusan Prioritási osztályba sorolás Osztályok között prioritásos ütemezés Osztályon belül round robin ütemezés 3 32 15 16
2.2. Prioritásos ütemezés folyt. Amíg van futtaható processzus egy osztályon belül, mindegyik egy szeletig fut Ha üres, akkor a következő szint processzusai futhatnak 2.3. Többszörös sorok folyt. Prioritási osztály Időszelet N. prioritási osztály 1 szeletig fut N-1.prioritási osztály 2 szeletig fut N-2.prioritási osztály 4 szeletig fut N-3.prioritási osztály szeletig fut Ha egy processzus elhasználja a számára biztosított szeletet, egy osztállyal lejjebb kerül 33 35 2.3. Többszörös sorok Multilevel Queues CPU igényes processzusok esetén hatékonyabb: ha nként nagy szeleteket adnak mintha gyakran adnak neki kicsit (sok lapcsere) De ha minden processzus kapna nagy szeletet: Gyenge válasz jelentkezne Megoldás: Prioritási osztályok felállítása 2.3. Többszörös sorok fajtái Statikus többszörös sorok - Static Multilevel Queues (SMQ) Minden folyamat indulásakor rendelünk egy prioritást Ez a folyamat élete során nem változik Hátrány: éheztetés Visszacsatolt többszörös sorok - Multilevel Feedback Queues (MFQ) Öregítés technika A folyamatokhoz dinamikus prioritás rendelődik 34 1 1
2.4. Legrövidebb processzus következzen A kötegelt rendszerekben minimális választ adó legrövidebb feladat először módszer alkalmazása interaktív processzusoknál Probléma: a párhuzamosan futtatható processzusok között melyik a legrövidebb 2.5. Garantált ütemezés Ígéret és betartása a teljesítményt illetőleg Ha n felhasználó van bejelentkezve, akkor a CPU teljesítmény kb. 1/n-ed részét fogod megkapni Nyomon kell követni, hogy egy processzus mennyi CPU t kapott létrehozása óta Számolható a neki járó mennyiség Aktuális / neki járó arány számolható A legkisebb arányszámmal rendelkező processzus futtatja az algoritmus 3 39 2.4. Legrövidebb processzus következzen folyt. Legrövidebb processzus kiválasztása: Becslés a múltbeli viselkedés alapján legkisebb becsült futási alapján futtatjuk Öregedés sorozat következő elemét úgy becsüljük, hogy vesszük az éppen mért értéknek és az előző becslésnek a súlyozott átlagát 2.6. Sorsjáték ütemezés A processzusok között másodpercenként meghatározott számú sorsjegyet (CPU egységet) oszt ki az ütemező A magasabb prioritású processzusok több sorsjegyet kapnak Együttműködő processzusok átadhatják egymásnak a sorsjegyeiket 3 4 19 2
2.. Arányos ütemezés Az ütemező figyelembe veszi, hogy ki a processzus tulajdonosa Pl.: ha két felhasználó van felesben lett előirányozva a CPU akkor ennyit fognak kapni függetlenül attól, hány processzust futtatnak III. Ütemezés valós idejű rendszerekben folyt. Valós idejű operációs rendszerekre jellemző: Kis méret Rövid megszakítási Gyors környezetcsere Rövid ideig tartó megszakítás Többszörös zítő kezelés (ezred és mikromásodperces nagyságrendben) 41 43 III. Ütemezés valós idejű rendszerekben Idő alapvető szerepet játszik Aktuális fizikai mennyiségek alapján valós n belül kell eredményt adniuk Fajtái: szigorú valós idejű rendszerek, abszolút határkkel lágy valós idejű rendszerek, ahol a határ elmulasztása tolerálható III. Ütemezés valós idejű rendszerekben folyt. Valósidejűség elérése: programokat rövid, megjósolható tartamú processzusokra osztjuk, melyek viselkedése előre ismert A valós idejű rendszerek programozható eseményei lehetnek periodikusak illetve aperiodikusak 42 44 21
III. Ütemezés valós idejű rendszerekben folyt. Pl.: legyen m periodikus eseményünk az i-dik esemény periódusa P i az egyes események kezelésének ideje C i A sorozat csak akkor kezelhető, ha: m i= 1 Ci P i 1 ütemezhető rendszer III. Ütemezés valós idejű rendszerekben Algoritmusok Állandó arány algoritmus Legkorábbi határ először Lazaságon alapuló algoritmus 45 4 III. Ütemezés valós idejű rendszerekben folyt. Valós idejű rendszerek ütemező algoritmusai: Statikusak Döntéseket a rendszer futásának megkezdése előtt hozza Csak akkor működik ha előzetes teljes ismereteink vannak a feladatokról és határkről Dinamikusak Ütemezési döntéseket futás közben hozza Nincs korlátozás a használatánál Szálütemezés Processzuson belül több végrehajtási szál - kétszintű párhuzamosság Kernel kiválaszt egy processzust/szálat és átadja neki a vezérlést egy szelet erejéig Fajtái: Felhasználói szintű» Processzuson belül nincs zítő Kernel szintű» A processzuson belül a szálütemező dönti el, hogy melyik szál fusson 46 4 23 24
Felhasználói szintű szálak ütemezése Kernel csak processzust vált Ütemezési algoritmusok összehasonlítási szempontjai A központi egység kihasználtság (CPU utilization): ΣCPU Σ( henyélés+ ad minisztáció) 1[%] ΣCPU Elvégzett munkák száma Átbocsátó képesség (throughput): Idő Körülfordulási (turnaround time): Σ (végrahajt ási + várakozási) Várakozási (waiting time): Σ (várakozó + futásra kész + felfüggesztett + hosszú távú ütemezésig eltelt ) Válasz (response time) 49 51 Kernel szintű szálak ütemezése Kernel processzust vagy szálakat vált Példa: FCFS, SJF, RR összehasonlítása P1 Processzus azonosító 2 Érkezési 1 CPU szükséglet 5 52 25 26
FCFS Processzus azonosító P1 Érkezési CPU szükséglet RR Összes : 44 Processzus azonosító P1 Érkezési CPU szükséglet 2 1 Időszelet: 1 Átlag : 44 / 4 = 2 1 Proc. azonosító Érkezési CPU szükséglet Kezdő pont Befejezési Időpont Várakozási Proc. az. Érk. CPU szükséglet Kezdő pont Bef. Időpont Vár. Maradék Várakozó proc. P1 2 1 5 5 6 3 Összes : 56 Átlag : 56 / 4 = 53 P1 P1* * * * (1) 2 (32) (52) (62) 4 1 26 16 6 1 1 32 42 52 62 1 1 32 42 52 62 6 3 12 1 4 - - 26-16 6 - P1; P1; ; ; - 55 SJF Processzus azonosító P1 Érkezési CPU szükséglet Ütemezés többprocesszoros rendszereknél Proc. az. Érk. CPU szükséglet Kezdő pont Bef. Időpont Vár. 2 Várakozó processzus 1 Legrövidebb proc. Heterogén rendszerek esetén: A rendszerbe építet CPU-k különböznek (utasításkészlet) A programok kötötten futhatnak P1 2 1 32 2 32 6 21 Összes : 3 Átlag : 3 / 4 =,5 ; ; - - 54 Homogén rendszerek esetén: CPU-k funkcionalitás szempontjából egyformák A futásra kész folyamatok a rendszer bármely szabad CPU-ján futhatnak Közös várakozási sor Kétféle ütemezési megközelítés: Szimmetrikus multiprocesszoros rendszer minden CPU-nak saját ütemezője Aszimmetrikus multiprocesszoros rendszer egyetlen ütemező egy kiválasztott processzoron 56 2 2
Következő előadás témája Ütemezés megvalósítási elvei MINIX UNIX Windows NT rendszerek esetén 5 29