Rendszermag

A Wikipédiából, a szabad enciklopédiából

Rendszermag (angolul kernel): az operációs rendszer alapja (magja), amely felelős a hardver erőforrásainak kezeléséért (beleértve a memóriát és a processzort is).

A többfeladatos rendszerekben – ahol egyszerre több program is futhat – a kernel felelős azért, hogy megszabja, hogy melyik program és mennyi ideig használhatja a hardver egy adott részét (ezen módszer neve a multiplexálás). A hardver elemek használata gyakran bonyolult programrészeket igényel, ezért ezt a feladatot gyakran egységes, absztrakt hardverelérést biztosító részekkel támogatja. Ezek a részek elrejtik a bonyolult módszereket és egy tiszta, egyszerű felületet biztosítanak, amivel megkönnyítik a hardverelemeket használó programozók munkáját.

A rendszermag nem „látható” program, hanem a háttérben futó, a legalapvetőbb feladatokat ellátó program.

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.

A kerneleknek négy fő kategóriáját különböztethetjük meg (eltekintve azon programkörnyezetektől, melyek kernel nélkül futnak):

  • a monolitikus kernelek gazdag és hatékony absztrakciókat biztosítanak az alattuk található hardware elemekhez;
  • a mikrokernelek egy kis méretű alapkészletet biztosítanak a hardware kezeléséhez, és számos alkalmazással – amiket „szervereknek” nevezünk – biztosítják a további, részletesebb funkcionalitást;
  • a hibrid vagy módosított mikrokernelek hasonlóak a színtiszta mikrokernelekhez de több, részletesebb kódot tartalmaznak a kernelmagban, hogy nagyobb sebességet érjenek el;
  • az exokernelek (vagy rendszer rutinkönyvtárak) nem biztosítanak absztrakciókat vagy állandó 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.

Monolitikus kernelek[szerkesztés | forrásszöveg szerkesztése]

A monolitikus kernel, a számítógépes operációs rendszerek között, az egyetlen nagy programból álló rendszermag, nem pedig különálló, egymással különböző interfészeken keresztül kommunikáló programok összessége, mint napjaink mikrokernelei. A Linux rendszer magja még kifejlesztése után 15 év elteltével is monolitikus felépítésű, noha Andrew S. Tanenbaum professzor már kezdetben elavultnak nevezte a monolitikus struktúra miatt.

Az operációs rendszerek kutatói manapság már inkább mikrokernellel működő rendszereket javasolnak, hiszen így könnyebb fejleszteni, és a rendszer funkcionalitása is gazdagabb lehet.

Példák monolitikus kernelre:

  • tradicionális UNIX kernelek, mint amilyenek a BSD-k,
  • a Linux kernel is lehet ilyen, ha akarjuk

Mikrokernelek[szerkesztés | forrásszöveg szerkesztése]

A mikrokernelek azáltal, hogy az általuk nyújtott funkciók nagy részét felhasználói szintre (userspace) helyezték egy plusz absztrakciós szintet biztosítanak. Ennek előnye, hogy a felhasználói szinten futó programrészek hibáinak vagy működési zavarainak esetén azok nem veszélyeztetik magának a rendszermagnak a működését, és így a rendszer stabilitása nagy mértékben nő. Hátránya azonban, hogy – mint minden új absztrakciós szint bevezetésének – ezzel csökken a rendszer teljesítménye, és így esetleg egyes kritikus feladatokat (nagyon gyors és pontos elérést igénylő hardware elemek kezelését) nem tudja hatékonyan megoldani.

Példák mikrokernelekre és olyan operációs rendszerekre, melyek mikrokernelt használnak[szerkesztés | forrásszöveg szerkesztése]

Hibrid kernelek[szerkesztés | forrásszöveg szerkesztése]

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, amelyek 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 okokból a kernelmagba kerül.

Példa hibrid kernelekre[szerkesztés | forrásszöveg szerkesztése]

Exokernelek[szerkesztés | forrásszöveg szerkesztése]

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.

Az exokernelek elve legalább 1995 óta létezik [1], de 2004-ben még mindig inkább csak fejlesztési és kutatási stádiumról beszélhetünk, és jelenleg még nem használják kereskedelmi forgalomban levő vagy elterjedt rendszerekben. Egy exokernelen alapuló rendszer a Nemesis, melyet a Cambridge-i Egyetem, a Glasgow-i Egyetem, a Citrix Systems és a Svéd Számítógéptudományi Intézet dolgozott ki. Az MIT is számos exokernel alapú rendszert épített már.


További információk[szerkesztés | forrásszöveg szerkesztése]