Operációs rendszerek

A számítástechnikában operációs rendszernek (rövidítése gyakran OS az operating system angol forma alapján) nevezzük azt a nélkülözhetetlen alap szoftvert, mely

  • közvetlenül kezeli a hardvert,
  • egységes környezetet biztosít a számítógépen futtatandó alkalmazasoknak (például szövegszerkesztők, játékok stb.).
  • lehetővé teszi a felhasználó és a számítógép közötti kommunikációt

Az operációs rendszer tehát magasabb absztrakciós szintet biztosító illesztőfelület a hardver, a felhasználói programok (alkalmazasok), és a felhasználó között (VM koncepció). Másképp megközelítve az operációs rendszer kezeli a harver, szoftver és humán erőforrásokat, szabályozza ezek hozzáférését.

Az operációs rendszer a számítógép indulásakor ((bootolas) azonnal betöltődik a számítógép memóriájába: nélküle a gép - még ha fizikailag hibátlan is - működésképtelen.

Pontosabban egy számítógép működéséhez nem feltétlenül szükséges operációs rendszer és annak magja: az egyes programok közvetlenül betölthetőek és használhatóak a „csupasz vason”, feltéve, hogy a programozó vállalja azt, hogy mindent közvetlenül, operációs rendszeri segítség nélkül fog kezelni. A kezdeti számítógépek esetén ez volt a normális működési mód: minden egyes új program elindításához a gépet újra kellett indítani. Az idő előrehaladtával apró segédprogramok, rutinok állandósulni kezdtek, azokat több programhoz is használták, és kialakultak azok a szokásos programrészek, melyeket újraindítás után újra használni szerettek volna, mint például egyes betöltő (indító, boot) programok vagy hibakeresők. Ezekből alakultak ki a kezdeti operációs rendszerek.

Az operációs rendszer tölti be a számítógép működéséhez szükséges programokat, vezérli, összehangolja, ellenőrzi a programok működését. Az operációs rendszer általában semmilyen, a felhasználó számára közvetlenül hasznos feladatot (szövegszerkesztés, könyvelés stb.) nem végez, hanem lehetővé teszi az ilyen feladatokat ellátó, felhasználói programok futtatását. Az operációs rendszer feladata az, hogy az ember és számítógép közötti kommunikációt biztosítsa, a számítógép erőforrásait sokoldalúan, gazdaságosan és a lehető legoptimálisabban kihasználja, illetve a számítógép működését ellenőrizze és vezérelje; kezeli a gép különböző perifériáit - monitor, floppy, hard diszk, nyomtató stb. - és végrehajtja a neki szóló parancsokat.

Felépítés

Az operációs rendszer fogalmát nemigen tudjuk pontosan meghatározni, különböző irányzatok más-más „szigorúsággal” állnak a kérdéshez. Abban mindenki egyetért, hogy az operációs rendszer része a mag (kernel), vagyis az a program, amely feltétlenül szükséges a gép működéséhez és amely közvetlenül vezérli azt. A másik véglet szerint az operációs rendszerbe tartoznak azok a – tulajdonképpen felhasználói – rendszerprogramok (system program) is, amelyek a gép általános felhasználását segítik, például a fordítók, szövegszerkesztők, parancsértelmező.

Az operációs rendszerek egy lehetséges felosztása:

  • a rendszermag (a kernel) amely közvetlen kapcsolatban áll a hardverrel
  • a felhasználói felület (a shell, amely lehet grafikus felület (gui), vagy szöveges)
  • alacsony szintű segédprogramok (karbantartó-, fordító programok…)
  • programozói API (Application Programming Interface, felhasználói program interfész, Alkalmazásprogramozói csatoló) - Szabványos és jól dokumentált függvények és eljárások halmaza, amiket a programozó a szoftver és hardver vezérlésére használhat.

A kernel

Az operációs rendszerek meghatározó, központi része, amely a legalapvetőbb be-/kiviteli és ipc funkciókat foglalja magában.

A kerneleket kiépítettségük alapján több csoportba szokták sorolni

  • monolitikus (makro) kernel
  • moduláris (réteges) makro kernel
  • hibrid kernel
  • mikrokernel
  • exokernel

Monolitikus kernel

Minden funkciót egyetlen, megbonthatatlan egységet képező modulban megvalósító rendszermag.

A monolitikus makro kernelek tehát egyetlen óriási bináris állományt alkotnak. Ez a szervezési mód egyike a legősibb struktúráknak. Előnye, hogy nagyon gyors, mert belsejében - amit kernel space-nek is neveznek - minden közvetlenül hozzáfér mindenhez. Hátránya, hogy nem - vagy csak kis mértékben, esetleg túlságosan költségesen - valósít meg védelmet a különböző funkciók között, mert belsejében minden közvetlenül hozzáfér mindehez… Mellesleg nem elég rugalmas, mert az egész kernelt csak egyben lehet cserélni.

A monolitikus kernelek mikro és vegyes jellegű társaiknál jóval nagyobb teljesítményt nyújtanak, azonban bővítésük és módosításuk kizárólag a teljes rendszermag újrafordításával lehetséges. Ezen kívül a kernel bármelyik részében bekövetkező hiba a teljes rendszert veszélyezteti, ami miatt stabilitásuk is jóval elmarad mikrokernel-jellegű társaiké mögött.

A monolitikus architektúra legjelesebb képviselői a régebbi Unix és Linux operációs rendszerek.

Moduláris kernel

A monolitikus kernelek problémáin próbáltak javítani a monolitikus kernelek modulárissá tételével. Ekkor a kernel bizonyos részeit fizikailag és logikai különválasztjuk egymástól, és az így keletkezett modulokat - melyek többnyire meghajtó programok (driver) - futási időben be lehet tölteni a memóriába vagy el lehet távolítani őket onnan. Memória- és méretspóroló megoldás - mely nagyon életképesnek bizonyult az idők során - bár még mindig nem ad akkora rugalmasságot, mint egy mikrokernel.

Ebbes a csoportba tartoznak a mai Linux kernelek.

Hibrid kernelek

A hibrid kernelek alapjában véve olyan mikrokernelek, amelyekben néhány „nem létfontosságú” kódrészletet átmozgattak a felhasználói szintről (userspace) a kernel szintre (kernelspace) azért, hogy az kevesebb absztrakciót használva, gyorsabban fusson.

Néhányan összetévesztik a „hibrid kerneleket” az olyan monolitikus kernelekkel, amik indulásuk után modulokat képesek betölteni. Ez helytelen: a „hibrid” kifejezés utal arra, hogy a kérdéses kernelnek mind a monolitikus, mind a mikrokernelek elveit és mechanizmusait alkalmazza; különösen az üzenetcserét (message passing) és a „nem létfontosságú” kódok felhasználói szintre való áthelyezését amellett, hogy néhány ilyen kód teljesítményi okoból a kernelmagba kerül.

A hibrid kernel tehát a monolitikus és a mikrokernel előnyeit ötvöző architektúra, amely a teljesítmény szempontjából kritikus funkciókat - monolitikus társaikhoz hasonlóan - egyetlen egységben ötvözi, miközben másokat - a mikrokernelekhez hasonlóan - különálló modulokra hagy.

Egyes nézetek szerint a vegyes kernelek az arany középutat jelentik a teljesítmény és a biztonság között, hiszen a miktrokernelekhez hasonlóan dinamikusan - akár futás közben - bővíthetőek, miközben teljesítményük a monolitikus kernelekéhez közelít.

Ilyen a Windows NT, XP, Vista, BeOS, ReactOS.

Mikrokernel

Mikrokernel esetén a rendszermag csak a legalapvetőbb feladatokat végzi: megszakítások kezelése, ütemezés, üzenetkezelés. A többi feladatot (például memóriakezelő, fájlkezelő, megjelenítéskezelő) felhasználói szintű (user space) modulok valósítják meg.

A mikrokernel tehát minimalista megközelítést alkalmazó rendszermag, amely kizárólag a folyamatok betöltéséhez és a közöttük történő kommunikációhoz szükséges legalapvetőbb funkciókat foglalja magában, minden más feladat (pl. eszközök kezelése, memóriamendzsment, stb.) megvalósítását pedig különálló rendszerfolyamatokra bízza.

A mikrokernel-alapú rendszerek igen biztonságos és stabil működést biztosítanak, azonban csak speciális környezetekben használják őket, mert teljesítményük - a sok IPC-többlet miatt - jóval elmarad monolitikus, illetve vegyes társaikénál. (Minix, AmigaOS, QNX, BeOS, GNU Hurd).

A mikrokerneles felépítés másik előnye, hogy a komponenseknek, moduloknak nem kell feltétlenül egyetlen számítógépen elhelyezkedni, sem pedig a moduloknak erről konkrétan tudniuk! Tökéletesen kialakítható ezen a módon egy elosztott rendszer (distributed system). A kernelt analóg módszerrel szét tudjuk osztani több processzoron is, mint különösebb erőfeszítés nélkül - egyedül csak a mikrokernelt kell felkészíteni erre, a szervereket nem.

Exokernel

A „virtuális hardver”, mint kernelkoncepció lényege, hogy a felhasználói és a rendszerprogramok számára a processzor utasításkészletének kiterjesztésével a kernel egy virtuális gépet jelenít meg. Mind a felhasználói, mind a rendszerprogramok futásuk során tehát egyrészt a processzor utasításkészletét (eltekintve a privilegizált utasításoktól), másrészt a kernel által nyújtott, rendszerhívással elérhető műveleteket használhatják. A rendszerben egyetlen kernel és több aktív program van jelen, a programok tehát mind a valódi processzort, mind a kernelt közösen, megosztottan használják. Ez azt jelenti, hogy nem csak a valódi processzort, hanem a kernelt is multiprogramozottan kell használni, azaz a processzor állapotának elmentéséhez hasonlóan a kernel állapotát is menteni kell, amikor egyik programról a másik futtatására vált át a rendszer. Az IBM kutatóinak ötlete volt, hogy a kernel alatt elhelyezkedő rétegbe olyan funkció kerüljön, amelyik egyszerűen a fizikai eszközök megosztott használatára ad lehetőséget, nem kiterjesztett, hanem pontosan a fizikai processzorral és eszközökkel azonos felületen. Így minden felhasználó egy saját virtuális hardvert lát, amelyen elvileg tetszőleges kernelt, operációs rendszert futtathat (általában egyfelhasználós, interaktív üzemmódban) (1.12. ábra). A megoldást először az IBM 360/67-es számítógépre dolgozták ki (1970), kereskedelmi forgalomba pedig az IBM VM/370 operációs rendszerben került (1979). A virtuális hardver gondolatának továbbvitele napjainkban ismét népszerű. A felhalmozódott szoftverkincs felhasználásának egyik problémája a hardver-kompatibilitás hiánya. Ezen is segíthet a virtuális hardver vagy hardveremuláció. Jellegzetes példák a Sun és DEC processzorain futó operációs rendszerek virtuális Intel CPU-ja, az Apple Macintosh virtuális Motorola 68000 processzora. A JAVA-programok kompatibilitásának kulcsa ugyancsak a JVM (Java Virtual Machine) virtuális gép, amelyik bájtkód szinten definiált utasításkészletet képes végrehajtani.

MIT (Massachusetts Institute of Technology) kutatóinak exokernel koncepciója (1995) a legalsó szintre helyezi a hardver multiplexelésének feladatát, és az egyes felhasználóknak a kívánt hardver-erőforrásokhoz biztonságos, védett hozzáférést nyújt. Ez a szint azonban semmiféle további kiterjesztett funkciót nem valósít meg a hardverhez képest.

A felhasználók így a rendszerben a valódi gép egy változatát kapják meg, és az erőforrások egy részét. A legalsó a kernel módban futó exokernel. Ő rendeli hozzá az erőforrásokat a virtuális gépekhez, majd biztosítja, hogy azok ne tudják használni egymásét. Hasonlóan a VM/370-hez, a virtuális gépeken tetszőleges operációs rendszer futhat.

Létrejött tehát egy könnyen kezelhető kiterjesztett gép. A rendszer alapja a virtuális gép-monitor, amely közvetlenül a hardveren fut, és a virtuális gépeket futtatja: ezek viszont még nem kiterjesztett gépek, hanem a hardver pontos másolatai, annak minden elemével együtt. Az időosztás tehát úgy születik meg, hogy ezeken a virtuális gépeken futattak különböző operációs rendszereket, melyek lehetnek kötegeltek (IBM OS/360), vagy egyfelhasználós interaktív rendszerek (CMS).


Az exokernelek (vagy rendszer rutinkönyvtárak) nem biztosítanak absztrakciókat vagy álandó rendszermagot, hanem egy programokban használható rutinkönyvtárból állnak, ami a hardver közvetlen vagy közvetett elérését biztosítja.

Az exokernelek radikálisan új megközelítést jelentenek, és az eredmény egy nagyon kis méretű rendszermag. Gyakorlatilag a programozó tudja eldönteni, hogy a kernel mely részeit kívánja alkalmazni, és így a lehető legpontosabban szabályozhatja a hardware hozzáférések módját, és nem alkalmaz olyan rendszermag–részeket, melyekre nincs szüksége.

Sok minirendszer (telefonok, videók, digitális műholdvevők stb.) exokernelt használ.


Hivatkozások:

A kernel feladatai

  • Ki- és bemeneti eszközök kezelése (billentyűzet, képernyő stb.)
  • Memória-hozzáférés biztosítása
  • Processzor idejének elosztása
  • Háttértárolók kezelése
  • Fájlrendszerek kezelése

A shell feladatai

  • Kapcsolattartás a felhasználóval (felhasználói felület)
  • Alkalmazások futásának kezelése (indítás, futási feltételek biztosítása, leállítás)

programozói API feladatai

Szabványos és jól dokumentált függvények és eljárások halmaza, amin keresztül a programozó saját programjában kihasználhatja az operációs rendszer által nyújtott szolgáltatásokat, erőforrásokat, hozzáférhet a hardverhez.

Operációs rendszerek csoportosítása

Kezelõi felület szerint

  • szöveges (Például: MS DOS, UNIX, Linux)
  • grafikus (Windows 95, Windows NT, OS/2, UNIX, Linux)

A felhasználók száma szerint

  • egyfelhasználós - Single user (Például: MS DOS)
  • többfelhasználós - Multiuser (NetWare, UNIX, Linux, Windows XP, Windows Vista)

Az egyidõben futtatható programok száma szerint:

  • monoprogramozott (MS DOS)
  • multiprogramozott - multitask (Windows, UNIX)

Hivatkozások

oktatas/informatika/alapismeretek/operacios_rendszer.txt · Utolsó módosítás: 2019/06/06 04:19 szerkesztette: 5.9.66.153
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0