Rendszermag
Ez a szócikk nem tünteti fel a független forrásokat, amelyeket felhasználtak a készítése során. Emiatt nem tudjuk közvetlenül ellenőrizni, hogy a szócikkben szereplő állítások helytállóak-e. Segíts megbízható forrásokat találni az állításokhoz! Lásd még: A Wikipédia nem az első közlés helye. |
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 hardverelemek 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]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:
Fontos megjegyezni, hogy bár a Linux képes modulokat dinamikusan betölteni, azokat nem felhasználói szinten, elkülönített címtérben futtatja, hanem a saját, ún. kernel-space-ben, ezért tévedés azt feltételezni, hogy mikrokernel lenne.
Mikrokernelek
[szerkesztés]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 szeparáltak (a rendszermagtól éppúgy, mint egymástól), hibáinak vagy működési zavarainak esetén azok nem veszélyeztetik a rendszer egészének a működését, és így a rendszer stabilitása nagy mértékben nő. A Minix például rendelkezik egy ún. reinkarnációs szolgáltatással, melynek lényege, hogy az egyes rendszerkomponensek hibája esetén a kérdéses komponenst – a rendszer többi része számára teljesen transzparens módon – újraindítja, és a működöképességét helyreállítja (lásd öngyógyító rendszer). A mikrokernel hátránya azonban, hogy tervezése nagyobb odafigyelést igényel, mivel ha nem kellő körültekintéssel írják meg, akkor – mint minden új absztrakciós szint bevezetésének köszönhetően – 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. A múlt században sokáig vitatott téma volt, hogy lehetséges-e hatékonyra írni egy mikrokernelt, míg végül Jochen Liedtke német egyetemista bizonyításképpen meg nem alkotta 1993-ban az L3 kernelt. Érdekesség, hogy felépítésre az AmigaOS is mikrokernel, azonban a komponensek ugyanazon címtéren belül futottak, így sokan nem tekintenek rá igazi mikrokernelként. Ugyanakkor a közös címtér lehetővé tette, hogy a rendszerkomponensek közötti üzenetküldéshez elég legyen egy mutató átadása, ezáltal teljesítményben nem maradt el a monolitikus kernelektől.
Példák mikrokernelekre és olyan operációs rendszerekre, melyek mikrokernelt használnak
[szerkesztés]- AmigaOS az egyik legkorábbi kereskedelmi forgalomban megjelent mikrokernel
- AIX
- Chorus mikrokernel
- EROS
- K42
- KeyKOS (nanokernel)
- az L4 mikrokernel család, az L3 kernel utóda
- Mach (kernel), amit a GNU Hurd és a Mac OS X használ
- Minix
- MorphOS
- QNX
- RadiOS
- Spring mikrokernel
- VSTa
- Singularity a Microsoft kísérleti rendszere, mely egyetlen címteret használ, így sebessége megegyezik a monolitikus kernelekkel
Hibrid kernelek
[szerkesztés]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]- Windows NT, amit a Microsoft Windows NT alapú termékek használnak
- XNU
- DragonFly BSD
- ReactOS
- BeOS kernel
Exokernelek
[szerkesztés]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.