Operációsrendszerek 2. elıadás Standard ismeretek II.
Bevezetés A rétegmodell Kernelfunkciók A megszakítási rendszer Folyamatvezérlés Memóriakezelés Erıforráskezelés Eszközvezérlık Programok végrehajtása Virtuális gépek Állományszervezés
OR - definiciók olyan program(rendszer), amely felügyeli és vezérli a számítógépen futó valamennyi folyamatot (az ISO szabvány szerinti megfogalmazás) a számítógépet alkotó hardver eszközök mőködését felügyelı és vezérlı program (technológiai megközelítés) a számítógép tevékenységét meghatározó programokat felügyelı és vezérlı szoftver (funkcionális megközelítés) (a számítógépes rendszerben rendelkezésre álló) erıforrásokat elosztó szuperfolyamat (folyamat-centrikus szemlélet) olyan program, amely kapcsolatot teremt (és tart fent) a számítógépet alkotó technikai-technológiai (hardver) elemek és a (számítógéppel tevékenységet végzı) felhasználó között (felhasználói szemlélető definíció).
Az OR legfontosabb alapfeladatai kapcsolattartás a felhasználóval (felhasználói felület, állományszervezés), a számítógépet alkotó hardvereszközök különbözıségének elfedése, egységesítése (és ilyen módon a felhasználó megkímélése a közvetlen hardverkezeléssel járó többletfeladatoktól ez az ún. virtuális gép koncepció ), erıforrás-gazdálkodás (memória-kezelés, processzor-ütemezési feladatok, perifériák kezelése), programkészítés támogatása (szerkesztı-, fordító-, betöltı modulok), állapot-felügyelet (hibakezelés, rendszernaplók), (hálózati szolgáltatások: vitatható, hogy önálló feladatnak tekinthetı-e, de a mai hálózat-centrikus informatikai modellben egy olyan komplex feladat, mint egy hálózati kommunikációs folyamat kiszolgálása, nem igazából illeszthetı be egyik elızı csoportba sem), stb.
A rétegmodell
A megszakítási rendszer 1. megszakítási kérelem fogadása 2. elbírálás 3. (végrehajtás alatt álló program) futási környezet(ének) mentése 4. (megszakítást kérı rutinnak megfelelı) prioritási szint beállítása 5. megszakítás kiszolgálása (végrehajtás) 6. prioritási szint visszaállítása (az eredetileg futó folyamatnak megfelelıen) 7. (3. lépésben elmentett) futási környezet visszaállítása
Folyamatvezérlés A folyamat állapotai, és átmenetei Futásra kész: A memóriába töltés után Fut: A processzor éppen kiszolgálja Várakozik: Egy Be/Ki eszköz nem áll rendelkezésére
Folyamatvezérlés II. A fıütemezı dönti el, hogy mikor tudja a felhasználó által elindított programot a memóriába tölteni, ha ennek idejét érzi, be is tölti, és egyben a memóriában elhelyezi a folyamatleíró táblát is. Ha a folyamat majd mőködhet, akkor ez a leírótábla kerül a processzor regisztereibe is. A folyamatleíró tábla tartalmazza mindazt az információt, ami a folyamat mőködéséhez szükséges. A környezetváltás tevékenységen azt értjük, hogy a folyamat leíró tábla adatait a fıütemezı a memóriából áthelyezi a processzor regiszterébe, így biztosítva a folyamat végrehajtásához szükséges környezetet. Természetesen, ha az éppen a CPU-ban tárolt környezetre a hozzátartozó folyamatnak, mivel még nem ért véget, a továbbiakban is szüksége van, a fıütemezı környezetváltáskor azt elmenti, azaz visszahelyezi a várakozási listába.
Folyamatvezérlés III. Egy folyamat tulajdonságai az ütemezés szempontjából Várakozási idı: A folyamat tétlenségben töltött ideje Átfutási idı: A futásra kész állapottól a folyamat befejezéséig terjedı idı Válaszidı: A futásra kész állapottól az elsı futás elkezdéséig eltelt idı Stratégiák Elıbb jött, elıbb fut (First Come First Served FCFS) Legrövidebb elınyben (Shortes Job First JFS) Körben járó algoritmus (Round Robin - RR) Prioritásos módszerek
Valóságos tárkezelés Báziscím Fizikai cím = Báziscím + Logikai cím Tárcsere (swapping) módszer: folyamatcsere esetén megtörténik a memória teljes felszabadítása a környezetváltás részeként.
Partícionált rendszerek Fizikai cím számítása laptábla segítségével
Virtuális memória A gyorsítótár (cache) elve azt jelenti: hogy az operatív tár és a háttértároló közé ideiglenes tárolókat építve, az egyre gyakrabban használt adatok legyenek a legközelebb a memóriához, a regiszter cache memória memória háttértárak archív tár útvonalon. Ha a folyamathoz szükséges adat a cache memóriában van (cache találat) akkor a folyamat azonnal tudja használni az adatot, ha nincs (cache hiány) akkor az adatot egy szinttel feljebb kell keresni. Ha a cahe memória mérete összhangban van az egyes folyamatokhoz szükséges adatok méretegyüttesével, akkor multiprogramozáskor is lehet használni a tárcsere technikát, a regisztertıl a háttértárolóig tartó útvonal megszervezésével.
Lapcsere (swap file/partition) A virtuális memória: a folyamatok nyugodtan használhatják a processzor regiszter által biztosított címtartományt, rábízva az operációs rendszerre az adatok elıkerítését. Függetlenül attól, hogy a valóságban az adatok a cache memóriában, a memóriában, vagy a háttértárolón vannak.
Virtuális memória II. Lapkiosztási elvek: Aki legelıször érkezik legelıször távozik (FIFO first in, first out) A legrégebben használt lap (LRU Least Receantly Used) A második esély (SC Second Chance) Tárvédelem lapcsere esetén: folyamatok csak saját lapjaikba írhatnak Tárvédelem szegmentálás esetén: egy folyamat csak a vele azonos hierachia szinten levı, vagy alacsonyabb hierarchiájú folyamat szegmensét érheti el.
Erıforrások Hagyományos (operációs rendszer nélkül is léteznek) nyomtató (h), szövegszerkesztı (sz), stb. Operációs rendszer által létrehozott fájl leíró táblák, laptáblák, várakozási sorok perifériamőveleteket gyorsító pufferek - lemez adatblokkok Megosztható (sharable) rendelkezésre álló idı leteltével megszakítható pl.: processzor, memória Nem megosztható (non-sharable) megkezdett mővelet befejezéséig nem megszakítható pl.: nyomtató, mágnesszalagos egység
Az erıforráskezelı (resource manager) A nem megosztható, nem megszakítható, korlátozott, és egész számú erıforrásokkal foglalkozik, felelıs az erıforrások elosztásáért, lefoglalásáért, a folyamatok neki jelzik az erıforrásigényüket, és ı dönti el, hogy a kérés kielégíthetı-e. Feladata hogy az erıforrás használat után, újabb rendszerhívás hatására felszabaduljon. Fontos feladata, hogy ha a kért erıforrás nem áll rendelkezésre, megoldást találjon. Ha a folyamatnak nincs joga használni egy adott erıforrást, vagy az erıforrás nem mőködıképes, akkor a végleges elutasításról beszélünk
Holtpont Holtpont Abban az esetben, amikor egy (A) folyamat egy olyan erıforrásra várakozik, amelyet egy másik (B) folyamat használ, ugyanakkor mikor (B) folyamat az (A) folyamat által használt másik erıforrásra várakozik Holtpont megelızési stratégiák Kiéheztetés (starvation) egyetlen lehetıség (one-shot allocation) szerinti foglalás (hierarchical allocation) bankár algoritmus (Banker s algorithm) Holtpont detektálása, felszámolása Detektáló algoritmus Ádozatkiválasztási stratégiák Folyamatleállítás
Párhuzamosan futó folyamatok Az erıforrások kihasználtságának fokozása általában a feladatmegoldást is gyorsítja. Egy feladat megoldás során kereshetünk olyan megoldásokat, melyek párhuzamosan megoldható részfeladatokra bontják az eredeti problémát. A párhuzamos feladat megoldásra egy Neumann elvő processzor is képes a multitask segítségével, de ez a feladatmegoldás hatékonyságát nem növeli, hisz a részfeladatok csak egymás után tudnak végrehajtódni. Az igazi megoldást a többprocesszoros rendszerek jelentik, mint ahogy láttuk az operációs rendszerek történeti bevezetésében
Párhuzamosan futó folyamatok Típusai: Független (egymás mőködését nem befolyásolják, nincs közös erıforrásuk) Versengı (ezekkel a folyamatokkal ismerkedtünk meg ebben a fejezetben) Együttmúködı Együttmőködésük típusai: Közös memória használat Üzenetváltásos
Eszközvezérlık A kernel, legalacsonyabb szintje a támogatott hardver eszközökhöz illeszkedı vezérlıket, az eszközvezérlıket (device drivers) tartalmazza. A sokféle funkciójú, és gyártmányú hardvereszközök következménye az igen nagy számú hardvervezérlı. A szabványosítási törekvések igyekszenek ezek számát csökkenteni, a gyártók üzleti érdeke pedig igyekszik számukat növelni.
Eszközvezérlık a kernelen kívül
Kernelbe fordított eszközvezérlık (Linux)
Eszközvezérlık absztrakt rétegként
A BIOS (Basic Input-Output system) A BIOS tartalmazza azokat a függvényeket, melyeket az operációs rendszer és más szoftverek használnak, mely függvények biztosítják a szoftverek és a hardware közötti kapcsolatot. A BIOS feladata ezen kívül a PC bekapcsolásakor, az indítás során, a számítógép tesztelése (POST Power-On Self Test), majd a hardver eszközök üzemi állapotba hozása, valamint az operációs rendszer merevlemezrıl, floppyról, CD-rıl, SCSI vagy USB egységrıl, hálózati kártyáról vagy egyéb tárolóról való elindítása
Programok futtatása I.
Compiler - Interpreter A fordítós programok mőködése 1. A forráskód írása o Valamilyen magas szintő programozási nyelven pl. Pascal, C++, C# o Ez még nem valódi végrahajtható kód 2. A forráskód tárgy kódra fordítása o Gépikódú utasítások létrehozása, memóriacímek meghatározása 3. Tárgykódok összefőzése 4. A tárgykód betöltése a memóriába 5. A program futtatása az operációs rendszer által szolgáltatott virtuális gépen Az értelmezı programok mőködése 1. A forráskód írása o Valamilyen funkcionális nyelven vagy logikai nyelven (Prolog) 1. A program végrehajtása az értelmezı segítségével, lehetséges változatok: o Az értelmezı operációs rendszer nélkül is elérhette a hardvert pl.home Computer o Az értelmezı az operációs rendszer felett is futhat pl. PERL, Prolog o Saját virtuális gépén keresztül éri el az operációs rendszer virtuális gépét, pl JAVA,.NET
Application Program Interface 1.A felhasználói program elérkezik ahhoz, hogy egy API fügvénnyel megnyisson egy állományt 2.Az API függvény kicseréli és elmenti megszakítási vektor címét a regiszterben 3.Az API függvény végrehajtja a rendszerhívást, azaz felhasználói módból kernel módba kapcsol 4.Az operációs rendszer átírányítja a megszakításkezelıt a megszakításvektornak megfelelıen 5.A megszakításkezelı végrehajtja az aktuális feladatot, visszacseréli a megszakítási vektort, majd a függvény visszatérési értékét átadja az API függvénynek 6.Az API függvény átadja a visszatérési értékét a felhasználói programnak
Virtuális gépek Léteznek olyan alkalmazások, amelyek lehetıvé teszik egy számítógép, vagy egy operációs rendszer emulálását, azaz az operációs rendszer felett létrehoznak egy második virtuális gépet. Ez a második virtuális gép emulálja a CPU-t, a Be/Ki meneti eszközöket, sıt, saját BIOS-szal is rendelkezik. Természetesen az eredeti számítógép teljesítményétıl függ az emulált eszközön futó program teljesítménye, de mőködni, mőködik. Például Mac-on-Linux, Bochs, CoLinux, MS Virtual PC, Vmware, stb.
JAVA,.NET