Szemaforok Operációs rendszerek MINB24 3. előadás Ütemezés 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 1 2 Mutex 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 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 3 4
Klasszikus IPC problémák Folyamatok közötti kommunikáció -Inter Process Communication (IPC) Az étkező filozófusok probléma Az olvasók és írók probléma Az alvó borbély probléma É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 5 6 Étkező filozófusok probléma Nyilvánvaló megoldás, de hibás! Filozófusok száma Gondolkodik Probléma: ha egyszerre veszik fel a jobb villát Felveszi a jobb villát É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) Eszik Felveszi a másik villát Visszateszi az egyik majd a másik villát Végtelen ciklus -Gondolkodik - Megszerzi mindkét villát -Eszik -Visszateszi a villákat
Étkező filozófusok probléma Olvasók és írók 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 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 Egy filozófus csak akkor mehet át evés állapotba, ha egyik szomszédja Tesztel, sem megfelel-e eszik a feltételeknek 9 1 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 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 12
Az alvó borbély probléma A borbély alszik, ha nincs vendég Hajvágásra kész Hajvágás Ü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 Kritikus szekcióba lépés Ha van szabad szék Várakozó vendégek számának növelése Processzusra és szálakra egyaránt vonatkozhat Bornély felébresztése Vendég kiszolgálása Üzlet teli állapot esetén nem léphet be 13 Ü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 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 15 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 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 1 1 Ütemezési algoritmusok csoportosítása Ütemezési algoritmusok céljai 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 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 19 2
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.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 21 22 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 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 23 24
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 Kötegelt rendszerekben az ütemezés három szinten történik: Bebocsátó ütemező Memória ütemező CPU ütemező 25 26 Háromszintű ütemezés folyt. 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 2 2
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.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 29 3 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 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 31 32
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 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 33 34 2.3. Többszörös sorok folyt. Prioritási osztály N. prioritási osztály N-1.prioritási osztály N-2.prioritási osztály N-3.prioritási osztály 1 szeletig fut 2 szeletig fut 4 szeletig fut szeletig fut Ha egy processzus elhasználja a számára biztosított szeletet, egy osztállyal lejjebb kerül Időszelet 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 35
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.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 3 3 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 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 39 4
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 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ó 41 42 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) 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 43 44
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 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 45 46 III. Ütemezés valós idejű rendszerekben Algoritmusok Állandó arány algoritmus Legkorábbi határ először Lazaságon alapuló algoritmus 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 4 4
Felhasználói szintű szálak ütemezése Kernel csak processzust vált Kernel szintű szálak ütemezése Kernel processzust vagy szálakat vált 49 5 Ütemezési algoritmusok összehasonlítási szempontjai FCFS, SJF, RR összehasonlítása 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ő Példa: Processzus azonosító Érkezési CPU szükséglet 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) P1 2 1 51 52
FCFS Processzus azonosító P1 Érkezési CPU szükséglet SJF Processzus azonosító P1 Érkezési CPU szükséglet 2 1 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. Várakozó processzus Legrövidebb proc. P1 2 1 22 5 22 5 6 3 P1 2 1 22 32 22 32 6 2 21 ; ; - - Összes : 56 Átlag : 56 / 4 = Összes : 3 Átlag : 3 / 4 =,5 53 54 RR Összes : 44 Átlag : 44 / 4 = Időszelet: 1 Proc. az. Érk. CPU szükséglet Kezdő Bef. Vár. pont Időpont Processzus azonosító P1 Érkezési 2 Maradék CPU szükséglet 1 Várakozó proc. Ütemezés többprocesszoros rendszereknél 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 P1* * * * (1) 2 (32) (52) (62) 4 1 26 16 6 1 1 22 32 42 52 62 1 1 22 32 42 52 62 6 3 12 1 4 - - 26-16 6 - P1; P1; ; ; - 55 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
Következő előadás témája Ütemezés megvalósítási elvei MINIX UNIX Windows NT rendszerek esetén 5