Monolitické jádro

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Schéma fungování monolitického kernelu

Monolitické jádro je druh jádra operačního systému, jehož veškerý kód běží ve stejném (jaderném) paměťovém prostoru, který se anglicky označuje jako kernel space. Tím se liší od tzv. mikrojádra, které většinu tradičních činností monolitického jádra, jako je třeba správa souborových systémů, implementuje v procesech, které běží v uživatelském paměťovém prostoru.

Přestože jsou monolitická jádra psána tak, aby byla činnost jednotlivých subsystémů oddělená, jsou jednotlivé části velice silně provázány. A navíc, protože sdílejí stejný paměťový prostor, může chyba v jednom subsystému zablokovat jiný, nebo dokonce shodit celé jádro. Na druhou stranu, pokud je dbáno na správnou implementaci jednotlivých částí, je monolitické jádro velice efektivní.

Rozhraní mezi operačním systémem a procesy zajišťují v monolitickém jádře tzv. systémová volání. Pomocí systémových volání mohou procesy využívat služby nabízené jádrem operačního systému, je-li jim to povoleno.

Dynamické nahrávání modulů[editovat | editovat zdroj]

Unixové jádro je typickým příkladem monolitického jádra včetně systémů FreeBSD, Linux nebo Solaris. Jejich novější generace přidávají podporu zavádění modulů za běhu, a proto není nutné při přidání dalšího hardware restartovat celý systém (např. USB flash disk), ale i jiné funkce (například podpora pro další síťové protokoly). Stačí za běhu nahrát moduly, které se zavedou do adresového prostoru jádra a propojí se s jeho funkcemi. Modulární jádro ale i s moduly zůstává monolitickým jádrem, protože vše běží v jediném paměťovém prostoru.

Při zavádění modulů až v okamžiku jejich potřeby vzniká jisté zpoždění, které je však akceptovatelné. Avšak i proto jsou někdy moduly zaváděny ihned po startu systému.

Nevýhody monolitického kernelu[editovat | editovat zdroj]

Monolitický kernel má nevýhody v mnohem nižší spolehlivosti a stabilitě systému.[zdroj?] Monolitická jádra byla prosazována v době, kdy měla řádově desítky tisíc řádek zdrojového kódu, které lze poměrně snadno udržet v pořádku. Dnešní monolitické systémy mají ovšem milióny řádek kódu, a přitom stačí jediná chyba kdekoli a monolitické jádro může shodit systém. Proto třeba linuxové jádro má velmi vysoké nároky na vývoj vyjádřeno v počtu potřebných člověkohodin práce – protože dosažení stejné spolehlivosti jako má mikrojádro chce mnohonásobek nákladů a času.

Monolitické jádro není principiálně schopno docílit tak vysoké spolehlivosti jako mikrojádrové systémy. Například odolnost proti chybám v ovladačích je u monolitických systémů jen omezená, pokud vůbec nějaká. Stejně tak je pro monolitická jádra těžší zajistit třeba distribuovaný systém.

Z důvodů nevýhod monolitických systémů se od nich ustupuje, a prakticky kromě Linuxu není dnes žádný operační systém čistým monolitickým jádrem. Většina operačních systémů je buď čistým mikrojádrovým systémem (QNX), nebo křížencem mezi monolitickým a mikrojádrovým systémem.

Příklady monolitického kernelu[editovat | editovat zdroj]

Související články[editovat | editovat zdroj]