Folyamatok ütemezése a UNIX-ban

Slides:



Advertisements
Hasonló előadás
Sor láncolt ábrázolással
Advertisements

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Készítette: Kun Béla.  Operációs rendszernek nevezzük a számítástechnikában a számítógépeknek azt az alapprogramját, mely közvetlenül kezeli a hardvert,
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
PPKE ITK 2009/10 tanév 8. félév (tavaszi) Távközlő rendszerek forgalmi elemzése Tájékoztatás
1 Számítógépek felépítése 9. előadás I/O rendszerek.
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
12. A díjtartalék számítása
Rendszertervezés GIMP.
1 „ Gazdasági kihívások 2009-ben ” Dr. Hegedűs Miklós Ügyvezető GKI Energiakutató és Tanácsadó Kft. Dunagáz szakmai napok, Dobogókő Április 15.
Humánkineziológia szak
Műveletek logaritmussal
Operációs rendszerek 1. Takács Béla
3. Folytonos wavelet transzformáció (CWT)
Linux ütemezés  Sokszor változott az évek folyamán  Az alap ütemező egyszerű volt  Prioritásos, futási sorok, RR…  2.4 verzió: O(n) ütemező o (következő.
Ütemezési algoritmusok (FCFS, SJF, RR)
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Szoftevrismeret Operációs rendszerek.
Bevezetés a Java programozásba
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Az operációs rendszerek
Közúti és Vasúti járművek tanszék. Célja:az adott járműpark üzemképes állapotának biztosítása. A karbantartás folyamatait gyakran az üzemeltetést is kiszolgáló.
1 Operációs rendszerek Folyamatok ütemezése. 2 Alapok Az ütemezés, az események sorrendjének a meghatározása. Az ütemezés használata OPR-ekben: –az azonos.
1 Operációs rendszerek Folyamatok kezelése a UNIX-ban.
10. Készletrendszer.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
Távközlő hálózatok tervezése szeptember Forgalmi méretezés alapelvei Takács György 2. Előadás.
6. Előadás Merevítő rendszerek típusok, szerepük a tervezésben
Darupályák tervezésének alapjai
Számítógéppel segített minőségbiztosítás (SPC és SQC)
1 Operációs rendszerek Az NT folyamatok kezelése.
1 Operációs rendszerek Az ütemezés megvalósítása.
1 Folyamatok modellezése az operációs rendszerekben Operációs rendszerek.
1 Operációs rendszerek Signal kezelés. 2 SIGNAL kezelés Egyszerű folyamatok közötti kommunikációs (IPC – Inter Process Communication) megoldás. A signal.
dr. Szalkai István Pannon Egyetem, Veszprém
Programrendszer 2. Erőforrás – erőforrás elosztás 3. Indítja és ütemezi a programokat 4. kommunikáció 2 Takács Béla.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
A LabVIEW használata az oktatásban
szakmérnök hallgatók számára
Exponenciális egyenletek
Projektek monitorozása. Elvek és módszerek
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
13. A zillmerezés, mint bruttó
Alapsokaság (populáció)
IV. Terjeszkedés.
Érettségi tájékoztató 2013/2014-es tanév. Az érettségi vizsga menete Írásbeli időszak: május –Az érettségi időpontokat külön táblázatban olvashatják.
Határozatlan integrál
Objektum orientált programozás
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Óravázlat Készítette: Kucsera Mihály és Toldi Miklós
1 Gyorsul a gazdaság növekedése. 2 Nő a beruházás.
Óravázlat Készítette: Kucsera Mihály és Toldi Miklós
1 Költségvetés tervezés 6. előadás. 2 Tartalom A tervezési renaissance Az éves operatív terv Mitől függ az éves operatív terv hatékonysága?
Ismerkedjünk tovább a számítógéppel
Bevezetés az operációs rendszerek világába
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
2. Operációs rendszerek.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
PPKE ITK 2007/08 tanév 7. szemeszter Őszi félév Távközlő rendszerek forgalmi elemzése Tájékoztatás GY. - 8.
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
1 Számítógépek felépítése 5. előadás a CPU gyorsítása, pipeline, cache Dr. Istenes Zoltán ELTE-TTK.
Párhuzamos programozás
a programegységek között
Algoritmus készítés.
Előadás másolata:

Folyamatok ütemezése a UNIX-ban Operációs rendszerek Folyamatok ütemezése a UNIX-ban

Folyamatok ütemezése a UNIX-ban Ütemező algoritmus megválasztása meghatározza: a rendszer teljesítményét, a hardver kihasználtságát. Tradicionális UNIX ütemezési algoritmust használt: a System V. R3, illetve a 3.1 BSD UNIX, de néhány megoldása már idejétmúlt. Ezért a mai UNIX rendszerek: az algoritmus valamilyen továbbfejlesztett változatát használják.

Az ütemezési algoritmussal szemben támasztott követelmények A UNIX rendszer feltételezett felhasználása: több felhasználós, interaktív programok, batch programok. Követelmények: alacsony válaszidő (interaktív folyamatok), nagy átbocsátó képesség, éhezés elkerülése (háttérben futó alacsony prioritású pl. batch folyamatok), a rendszer terhelésének figyelembe vétele, a folyamatok futási esélyeinek a befolyásolása.

A UNIX-ütemezés rövid jellemzése Prioritásos ütemezés. Felhasználói, illetve kernel módban eltérő algoritmus: felhasználói mód: preemptív ütemezés, időosztásos, időben változó prioritás, körforgásos FCFS, kernel mód: nem preemptív ütemezés, fix prioritású folyamatok.

Ütemezés megvalósítása Ütemezéshez kapcsolódó tevékenységek (pl. prioritási szám számítása, legnagyobb prioritású folyamat kiválasztása) önálló függvényekben vannak megvalósítva. Óra megszakításhoz kötődik az ütemezési rutinok végrehajtása: ütemezési ciklusonként (egy vagy néhány óra megszakításonként). Mechanizmus: call-out függvényekkel.

Felhasználói módú ütemezés Felhasználói módban az ütemezés preemptív. Újraütemezés: ha egy magasabb prioritású folyamat futásra késszé válik, ha több azonos prioritású folyamat van futásra készen és nincs náluk magasabb prioritású futásra kész folyamat: Round-Robin-os FCFS.

Kernel módú ütemezés A kernel módban az ütemezés szigorúan nem preemptív. Kernel kódot végrehajtó folyamatot nem lehet kényszeríteni, hogy lemondjon a CPU használatról egy nagyobb prioritású folyamat javára. Átütemezés kernel módban: önként lemond a futás jogáról (sleep), folyamat visszatér kernel módból felhasználói módba. A kernel kód korlátozottan reentrens: több példányos futás lehetősége, sleep, de egy másik folyamat újraindíthatja!

Példa ami indokolja, hogy a kernel nem preemptív

Folyamatok ütemezési prioritása

A fix prioritás meghatározása kernel módban Kernel módú prioritás meghatározása: a rendszer milyen ok miatt hajtott végre sleep rendszerhívást, azaz milyen eseményre várakozik, ezért a kernel prioritást szokták alvási prioritásnak is nevezni. Kernel futás közben nem fontos a prioritás.

A folyamat kernel módba kerülése Rendszerhívással: user futás után, ahol a prioritás adott és mentett, a kernel módú még ismeretlen, de nem is kell. Külső megszakítással: nincs ütemezés, a megszakítási rutin a folyamat környezetében hajtódik végre (mintha a folyamat futna tovább), a megszakítási rutin után: kernel futás, ha a megszakítás előtt is így futott (nincs prioritás), user futás, az áttérés előtti mentett prioritás fog élni.

A változó prioritást meghatározó tényezők felhasználói módban Két fő tényező: nice szám (kedvezési szám): a felhasználó beavatkozása a prioritás számításába, korábbi CPU használat: öregítés, egyenletes CPU használat.

Prioritás számításához használt paraméterek A prioritás számításához négy paramétert használ a UNIX: a p_pri-t: az aktuális ütemezési prioritást, a p_usrpri-t: a felhasználói módban érvényes prioritást, a p_cpu-t: a CPU használatra vonatkozó számot, a p_nice-t:: a felhasználó által adott kedvezési számot. A paramétereket minden folyamat esetén külön-külön számon tartja a UNIX.

Prioritás számításához használt konstansok P_USER konstans: a legmagasabb user módú prioritás azaz: 50. Korrekciós faktor (KF): a rendszer terheltségének a figyelembevétele, sok folyamat: lassú öregítés, kevés folyamat: gyors öregítés, a várakozó folyamatok számának a növekedésével, az értéke egyre inkább tart az 1-hez.

Prioritás számítása felhasználói módban

Korrekciós faktor KF=várakozó folyamatok száma/ várakozó folyamatok száma+1. Számos rendszerben konstans az értéke. Pl.: 1, ½, … ½, 2/3, 3/4, …

Környezetváltás ütemezéskor Nem preemptív ütemezés esetén: Várakozik: sleep rendszerhívást hajt végre. Befejeződik: exit rendszerhívást hajt végre. Preemptív ütemezés esetén: a 100-adik óraciklusban a prioritások újraszámításakor, ha az egyik folyamat prioritása nagyobb lesz a futóénál, a 10-edik óraciklus esetén a Round-Robin algoritmus (azonos prioritás) alkalmazásakor, felébred (ready to run állapotba jut) egy, az aktuálisan futónál magasabb prioritású folyamat, két óraciklus között.

Adatszerkezetek folyamatok prioritásának tárolása

Példa az ütemezés számolására I. Minden óramegszakításnál: p_cpu := p_cpu +1. Minden 100-adik óra-interrupt-nál: p_cpu = p_cpu * KF = p_cpu * ½. p_usrpri = P_USER+p_cpu/4+2*p_nice. P_USER=50, p_nice=0

UNIX ütemezési példa

Példa az ütemezés számolására II.

A UNIX-ütemezés értékelése Nem méretezhető megfelelően a terhelés függvényében: a korrekciós faktor használata nem elég hatékony. Az algoritmussal nem lehet meghatározott CPU időt allokálni. Nem lehet a folyamatok fix válaszidejét garantálni. Ha egy kernel rutin sokáig fut, az feltartja az egész rendszert. A felhasználó a folyamatainak prioritását nem tudja megfelelő módon befolyásolni.

Call-out függvények

Call-out függvények I. A call-out mechanizmus egy adott tevékenység későbbi időpontban történő végrehajtása. Ezen függvények adott időben történő meghívását a timeout(hívott függvény) rendszerhívással lehet megtenni, illetve az untimeout( hívott függvény) rendszerhívással lehet törölni. Rendszerkörnyezetben futnak, így: nem alhatnak, nem érhetik el a folyamatok környezetét. Ismétlődő feladatok (kernel funkciók) végrehajtására valók. Pl.: hálózati csomagok ismételt elküldése, ütemezési és memóriakezelő függvények hívása, perifériák monitorozására, perifériák lekérdezésére, amelyek nem támogatják a megszakításokat.

Call-out függvények II. Meghívásukat az óra-megszakítás végzi, ám ez alatt az egyéb megszakítások tiltottak. Ezért a megszakítás-kezelő nem közvetlenül hívja meg a call-out függvényeket, hanem beállít egy erre a célra rendszeresített jelző-bit-et, ha eljött az idő valamelyik függvény meghívására. A kernel ezt mindig ellenőrzi, miután kiszolgálta a megszakításokat és visszatér a megszakított tevékenységhez. Tehát a call-out függvények csak a kiszolgált megszakítások után kerülhetnek meghívásra, az óra-megszakítás után és nem alatta!

Call-out függvények II. A meghívás adminisztrálására dinamikus adatszerkezeteket kell használni. Ilyen a: láncolt listás, időkerekes.

Call-out függvények láncolt listás ábrázolása Meghívási sorrendbe rendezett lista. Minden listaelem első paramétere a meghívásig hátralévő időt tárolja tikk-ben, az előző listaelemhez képest. Az első listaelem tikk-je minden óramegszakítás esetén csökken eggyel. Nulla esetén a második paraméterben adott függvény aktivizálódik, illetve az utána álló összes, 0-ás időpont-számlálójú elemben meghatározott függvény. Egyszerűen kezelhető, de ha hosszú a lista, a beszúrás időigényes lehet.

Call-out függvények láncolt listás ábrázolása

Call-out függvények tárolása időkerékkel Részlistás hash tábla kialakítása, a meghívási idő alapján. Minden listaelem első paramétere a meghívásig hátralévő abszolút időt tárolja tikk-ben. N elemű hash tábla esetén az 1. listában azok a függvények szerepelnek, amelyek tikk-je N-nel osztva 1-et adnak maradékul. A 2.-ban 2-t, a 3.-ban 3-mat az N.-ben N-1-et. Így átlagosan egy részlista az N-ed részét teszi ki az előbbihez képest.

Call-out függvények tárolása időkerékkel