Óravázlat Készítette: Kucsera Mihály és Toldi Miklós Operációs rendszerek Óravázlat Készítette: Kucsera Mihály és Toldi Miklós
Programozói felület – I. A programozók számára az operációs rendszer, azon belül is a kernel, lehetőséget biztosít a hardver eszközök használatához. Ez rendszerhívások használatával lehetséges. A rendszerhívásokat az alacsony szintű nyelveken közvetlenül lehet kezelni, magas szintű nyelveken különböző eljárásokon keresztül lehet használni.
Programozói felület – II. Másképpen: a programozók számára a kernel egy eljárás vagy függvény könyvtár, amelyel leegyszerűsödik a programozás. A DOS nagyjából 100, alapvető függvényt kínált, a legelső Windows azonban már rögtön 1000 körüli, magas szintű függvény tett használhatóvá.
API API (alkalmazásprogramozási felület, Application Programming Interface): egy program vagy operációs rendszer nyilvános eljárásainak listája, és ezeknek a dokumentációja. Egy jól elkészített API –t lehet úgy használni, hogy a mögötte lévő program vagy rendszer belső működését ismernénk.
SDK SDK (szoftver fejlesztői környezet, Software Development Kit): olyan összeállítás, amely tartalmaz minden, tipikusan a szoftver fejlesztéshez használt eszközt (fejlesztői felület, dokumentáció, segédprogramok), amely lehetővé teszi egy adott platformon az adott nyelven történő programozást.
A program készítésének menete – I. Forráskód elkészítése Valamilyen (szöveg)szerkesztővel létrehozott kötött szintaktikájú algoritmus leírás előállítása. Fordítás (compiling) A forráskódból, gépi kódú a CPU számára értelmezhető utasításokat, rendszerhívásokat tartalmazó tárgykódú (object) modul előállítása. Ez még nem tartalmazza a változók, ugrások abszolút címeit, és feltételezi, hogy a program a 0. címtől van a memóriába töltve.
A program készítésének menete – II. Szerkesztés (linking) A szerkesztés során az object modulokban lévő memóriacímek összehangolásra, az esetleges kereszthivatkozások feloldásra kerülnek, illetve a végrehajtható program előállításra kerül.
Forráskód (C, Assembly) Rendszerkönyv-tárak (LIBRARY) Tárgykód Betölthető kód
DLL Fontos, hogy egy rendszerkönyvtárat vagy program részt csak akkor töltsük be a memóriába, amikor valóban szükség van rá, de ha betöltésre került, minden futó program számára elérhető legyen. Erre szolgál a DLL (Dinamikusan Szerkeszthető Könyvtár, Dinamic Link Libray), amellyel a fenti működés megvalósítható.
Erőforrás kezelés – I. Erőforrás: minden, ami egy folyamat végrehajtásához szükséges (memória, processzor,perifériák, állományok stb.) Erőforrás kezelés feladata: a számítógéprendszer erőforrásainak elosztása (a futó folyamatok igényei alapján) az erőforrások használatáért vívott versenyhelyzetek kezelése
Erőforrás kezelés – II. Erőforrás kezelés céljai: A rendszer működését gazdaságossá tenni – elkerülni a hibás helyzet (holtpont, kiéheztetés) kialakulását (És/vagy) felszámolni a kialakult hibás helyzeteket
Erőforrások fajtái – I. Alapvető elosztás - hardveres erőforrás (pl. memória) - szoftveres erőforrás (pl. programok) Operációs rendszerrel tartott viszony szerint - hagyományos ( pl. merevlemez, CPU) - operációs rendszer által létrehozottak (pl. pufferek, tartalomjegyzékek)
Erőforrások fajtái – II. Folyamathoz rendelés szerint - megszakítható (preemptív) - nem megszakítható (non preemptív)
Erőforrás kezelés szerinti erőforrás definíció - I. Az erőforrás-kezelő olyan erőforrásokkal foglalkozik, amelyek: - nem megosztható (non shareable) más folyamatokkal - használatuk nem megszakítható (non preemtive), de a folyamatok egymás után használhatják ezeket
Erőforrás kezelés szerinti erőforrás definíció - II. - korlátozott számúak (pl. 3 erőforrásból nem lehet 4 –et lefoglalni) - egész számúak (pl. 3 erőforrásból nem lehet 1,7 lefoglalni) - egyenrangú elemekből álló csoportokra oszthatóak (pl. 3 erőforrásból bármelyik jó)
Erőforrás kezelő Erőforrás kezelő (resource manager): a rendszermag azon része, amely az erőforrások elosztásáért, lefoglalásáért felelős.
Erőforrás foglalás folyamata – I. Sikeres foglalás A folyamat erőforrást igényel Erőforrás kezelő kiértékelést végez Erőforrás hozzárendelése a folyamathoz A folyamat jelzi, hogy nem kell a lefoglalt erőforrás Az erőforrás kezelő felszabadítja az erőforrást
Erőforrás foglalás folyamata – II. Sikertelen foglalás A folyamat erőforrást igényel Erőforrás kezelő kiértékelést végez Erőforrás kezelő visszautasítja az igénylést A visszautasítás lehet végleges, vagy időleges, ez utóbbi esetben a folyamat várakozik, és az erőforrás várólistájára rákerül az adott folyamat.
Erőforrás foglalási gráf „A” folyamat igényli az „I” erőforrást B II „B” folyamat birtokolja a „II” erőforrást
Holtpont – I. Az erőforrás kezelés hibájának egyik legrosszabb esete a holtpont (deadlock). Az erőforrás kezelés szabadelvű (liberális) stratégiája az, hogy minden osztályozás nélkül engedjük az erőforrás használatot, ha van szabad erőforrás. Ha nincs, a folyamat várakozik.
Holtpont – II. Ez a liberális stratégia holtpont kialakulásához vezethet. Holtpont, az az állapot, ahol több folyamat egy olyan erőforrás felszabadítására vár amit csak egy ugyancsak várakozó folyamat tudna előidézni.
Holtpont – III. A I B II
Holtpont – IV. Holtpont kialakulásának feltételei Az erőforrások nem megoszthatóak (non shareable) Várakozás közben lekötés történik - a várakozó erőforrások lefoglalva tartanak erőforrásokat Az erőforrások nem elvehetőek (non preemtiv) Ciklikus (körkörös) várakozás van
Holtpont – V. A holtpont kialakulásához a fent feltételeknek EGYSZERRE kell teljesülniük, VAGYIS HA AZ EGYIK FELTÉTEL NEM TELJESÜL, NEM ALAKUL KI HOLTPONT.
Kiéheztetés – I. A liberális erőforrás kezelési stratégia ellentéte a konzervatív erőforrás kezelési stratégia. Ennél az erőforrás kezelő megtiltja, hogy egynél több folyamat rendelkezzen több lefoglalt erőforrással. Ha mégis ilyen lenne, az a folyamat várakozni kényszerül. Ha a futó folyamatnak nincsen több erőforrásra szüksége, a várakozó folyamatok közül egy előlép.
Kiéheztetés – II. Eme stratégia főbb hibái: Az erőforrások jó része kihasználatlanul áll. Könnyen kialakulhat a kiéheztetés (starvation). Kiéheztetés az az állapot, amikor a várakozni kényszerülő folyamatok közül az erőforrás kezelő olyan módszerrel választ folyamatot, amely egyes folyamatokat előnyben részesít, így más folyamatok belátható időn belül nem jutnak a kívánt erőforráshoz, és csak várakoznak („éheznek”).
Holtpont kezelése Holtpont megelőzése Kialakult holtpont megszüntetése A megelőzés jobb, de nem mindig lehetséges !
Holtpont kezelő stratégiák Egyetlen foglalási lehetőség (One –shot allocation) Rangsor szerinti foglalás (Hierarchical allocation) Bankár algoritmus (Banker’s algorithm)
Egyetlen foglalási lehetőség Csak az a folyamat foglalhat le erőforrást, amely még egyetleneggyel sem rendelkezik. A lefoglalás egyszerre, csak egy lépésben történhet. Hátránya: - nem sokkal jobb a konzervatív stratégiánál (rossz az erőforrások kihasználtsága) - egy folyamat erőforrás igénye nem mindig mérhető fel - nagy a kiéheztetés veszélye
Rangsor szerinti foglalás – I. Az erőforrások osztályaihoz egy- egy növekvő sorszámot rendelünk, a leggyakrabban használt kapja a legkisebb sorszámot. A folyamat osztályon belüli erőforrásokat csak egyszerre igényelheti. Egy folyamat csak olyan osztályból igényelhet erőforrást, melynek sorszáma magasabb, mint a már birtokolt erőforrások sorszáma.
Rangsor szerinti foglalás – II. Hátrányok: - A hatékonyságot befolyásolja a a sorszámok kiadásának módja. (A feladat orientált rendszerek kivételével nehéz megmondani, hogy mi lesz a leggyakrabban használt erőforrás.) - Alacsonyabb sorszámú erőforrás igénylésekor az erőforrások felszabadítására van szükség (Ez várakozással jár.)
Bankár algoritmus – I. A lényege: sohase elégítsünk ki egy igényt, ha az bizonytalan állapotot eredményez! A folyamatoknak a tényleges foglalást megelőzően be kell jelenteniük maximális igényeiket a különböző erőforrásokra. Az erőforrás kezelő mindaddig nem elégíti ki az igényt, amíg nem biztosítható, hogy az újabb erőforrások lefoglalása által előálló új állapot biztonságos.
Bankár algoritmus – II. Egy rendszer állapota akkor biztonságos, ha létezik egy olyan sorrend, amely szerint a folyamatok erőforrás igényeit kielégítve sohasem lép fel a körkörös várakozás lehetősége. A nem biztonságos állapot nem jelenti automatikusan a holtpont kialakulását, de esélyt ad rá !
Bankár algoritmus – III. Holtpont Biztonságos állapotok NEM biztonságos állapotok
Bankár algoritmus számítás 1. példa – I. Folyamatok Lefoglalt erőforrás Max. igény Várható A 4 6 2 B 11 7 Szabad 4 Összesen 12 Biztonságos ez az állapot ?
Bankár algoritmus számítás 1. példa – II. Folyamatok Lefoglalt erőforrás Max. igény Várható B 4 11 7 Szabad 8 Összesen 12 Igen. AB sorrendiségben biztonságos az erőforrások kiosztása.
Bankár algoritmus számítás 2. példa – I. Folyamatok Lefoglalt erőforrás Max. igény Várható A 4 6 2 B 11 7 C 8 Szabad 2 Összesen 12 C folyamat beengedhető ?
Bankár algoritmus számítás 2. példa – II. Folyamatok Lefoglalt erőforrás Max. igény Várható B 4 11 7 C 2 8 6 Szabad 6 Összesen 12
Bankár algoritmus számítás 2. példa – III. Folyamatok Lefoglalt erőforrás Max. igény Várható B 4 11 7 Szabad 8 Összesen 12 Igen. ACB sorrendiségben biztonságos az erőforrások kiosztása.
Bankár algoritmus számítás 3. példa: többszörös erőforrások – I. Egy rendszerben az alábbi erőforrások vannak: E1: 10 darab E2: 5 darab E3: 7 darab A rendszerben 5 folyamat van: F1, F2, F3, F4, F5 Biztonságos -e holtpontmentesség szempontjából a következő állapot? Lefoglalt erőforrás Max. igény E1 E2 E3 F1 1 7 5 3 F2 2 F3 9 F4 F5 4
Bankár algoritmus számítás 3. példa: többszörös erőforrások – II. Igény = [Max. igény] – [Lefoglalt erőforrás] Max. igény Lefoglalt erőforrás Igény E1 E2 E3 F1 7 5 3 1 4 F2 2 F3 9 6 F4 F5
Bankár algoritmus számítás 3. példa: többszörös erőforrások – III. Induló készlet kiszámítása: Készlet = [Σ erőforrás] – [Σ lefoglalt erőforrás] Lefoglalt erőforrás E1 E2 E3 F1 1 F2 3 2 F3 F4 F5 Σ 8 7
Bankár algoritmus számítás 3. példa: többszörös erőforrások – IV. A készlet: {2,3,0} E1 E2 E3 Erőforrás 10 5 7 Lefoglalt erőforrás 8 2 Készlet 3
Bankár algoritmus számítás 3. példa: többszörös erőforrások – V. Igény kielégítése (1.lépés) Induló készlet: {2,3,0} Új készlet számítása Készlet + Foglalás {2,3,0} + {3,0,2} = {5,3,2} Lefoglalt erőforrás Igény E1 E2 E3 F1 1 7 4 3 F2 2 F3 6 F4 F5
Bankár algoritmus számítás 3. példa: többszörös erőforrások –VI. Igény kielégítése (2.lépés) Induló készlet: {5,3,2} Új készlet számítása {5,3,2}+{0,0,2} = {5,3,4} Lefoglalt erőforrás Igény E1 E2 E3 F1 1 7 4 3 F3 2 6 F4 F5
Bankár algoritmus számítás 3. példa: többszörös erőforrások –VII. Igény kielégítése (3.lépés) Induló készlet: {5,3,4} Új készlet számítása {5,3,4}+{2,1,1} = {7,4,5} Lefoglalt erőforrás Igény E1 E2 E3 F1 1 7 4 3 F3 2 6 F4
Bankár algoritmus számítás 3. példa: többszörös erőforrások –VIII. Igény kielégítése (4.lépés) Induló készlet: {7,4,5} Új készlet számítása {5,3,4}+{0,1,0} = {7,5,5} Lefoglalt erőforrás Igény E1 E2 E3 F1 1 7 4 3 F3 2 6
Bankár algoritmus számítás 3. példa: többszörös erőforrások – IX. Igény kielégítése (5.lépés) Induló készlet: {7,5,5} Új készlet számítása {5,3,4}+{3,0,2} = {10,5,7} Lefoglalt erőforrás Igény E1 E2 E3 F3 3 2 6
Bankár algoritmus számítás 3. példa: többszörös erőforrások – X. A feladat megoldása: az állapot biztonságos. A folyamatok lefutásának sorremdje: F2-F5-F4-F1-F3
Bankár algoritmus számítás többszörös erőforrások megoldási lépések 1. Induló készlet meghatározása: az összes erőforrás számából kivonjuk a Lefoglalt erőforrás mátrix egyes oszlopainak összegét 2. Az Igény mátrix meghatározása: a Max. igény mátrix elemeiből kivonjuk a Lefoglalt erőforrás mátrix elemeit 3. Megnézzük, van-e olyan folyamat, melynek igénye a készletből kielégíthető /Készlet(i)>=Igény(i) 4. Ha nincs ilyen sor az állapot nem biztonságos 5. Ha volt ilyen, akkor az új készletet meghatározzuk az eredeti készlet elemeihez hozzáadjuk az előzőleg kiválasztott folyamat Lefoglalt erőforrás sorának elemeit 6. Ha van még folyamat , ugrás a 3. pontra