„Mě v článku chybí kritické srovnání koncepce microjádra a monolitu. Představa, že microjádro je jednoznačně technicky nadřazeno monolitu, je najivní.“
Já to vezmu ironicky. Představa, že deset miliónů řádek kódu v monolitickém jádře bude absolutně bezchybná, protože jakákoli chyba v monolitickém jádře znamená, že už nelze zaručit spolehlivost a stabilitu – je naivní.
Právě proto se mikrojádra dělají. Koncept unixu stál v době, kdy unix kernel měl pár tisíc řádek zdrojáku.
Momolit v tak rozsáhlé podobě jako Linux existuje jen proto, že se na jeho vývoji podílí enormní množství vývojářů. Ono se to časem projeví při dalším růstu Linuxu.
„1. Microjádro má obecně nižší výkon a větší latenci. Nové náklady vytváří přepínáním kontextů mezi mikrojádrem a dodatečnou vrstvou serverů. Navíc roste režie na úkoly vyžadující komunikaci mezi mikrojádrem a servery.“
Stejně tak obecně programovací jazyk C má menší výkon, než ručně optimalizovaný stroják. Skript v bashi má obecně nižší výkon, než přepsat totéž do čistého jazyka C. Perl skript má rovněž mnohem nižší výkon, atd.
Koncept XWindows má nižší grafický výkon, než přímé volání grafiky třeba ve Windows, nebo QNX.
Stejně tak koncepty operačních systémů sálových počítačů, kde se volaly přímo rutiny na zápis na diskový sektor určitě měly větší výkon, než zápis přes filesystém Linuxu.
Prostě píšete hovadiny. U mikrojádra je nutný dobrý návrh mikrojádra a komunikace. Pokud se navrhne špatně, výkon je mizerný. Pokud se napíše dobře, výkon je dobrý.
Je to stejné jako s tím, že když budete zapisovat na disk přímo sektory, Váš výkon bude větší, než „rozežrané“ služby kernelu Linuxu pro práci se soubory.
To je totéž.
„2. Linux obsahuje technologie, které přinášejí některé výhody tradičně spojované s mikrojádry. Například Linux umí na požádání nahrávat, vykonávat a uvolňovat kód v jádře (jaderné moduly), rozhraní FUSE umožňuje vytvořit ovladač běžící mimo jaderný prostor...“
Demogogický argument. Základní výhodu mikrojádra, totiž spolehlivost a necitlivost na chyby v driverech bez dopadu na stabilitu systému.
Dále možnost nativně mít distribuovaný systém na více počítačích tvářících se jako jeden počítač s jedním operačním systémem.
Možnost vývoje driverů stejně luxusně jako běžného user programu.
A desítky dalších.
Tento argument neobstojí, protože Linux kernel je ten poslední, který by dával výhody mikrojádra. Je to poslední rozšířenější operační systém, který je tvrdý monolit. Ani Windows, ani Mac OS, stejně jako řada dalších operačních systémů už nejsou čistým monolitem.
„3. Větší spolehlivost microjádra je mýtus. Důsledky pádu kritického serveru (např. poskytujícího virtuální souborový systém) jsou v praxi de facto stejné jako důsledky pádu celého jádra. Nejde provést izolovaný "seamless" restart tohoto serveru, aniž by spadly kritické procesy operačního systému.“
Pište do Blesku. Víc k tomuto nemám co dodat.
Samozřejmě že to lze, zejména tehdy, pokud je mikrojádro použito k tomu, že všechna zařízení včetně filesystému a včetně fyzických počítačů jsou několikrát.
Mikrojádro dokáže fungovat nad více počítači, více systémy.
„4. Existují efektivní univerzální způsoby, jak vykonat kód a přitom zabránit kódu v čítení/zapisování mimo svojí alokovanou paměť. (Jde o některé experimentální patche kompilátoru GCC, virtualizace a chráněný přístup do paměti...) K oddělení paměťových prostorů různých subsystémů jádra není potřeba měnit architekturu jádra.“
Mikrojádro pěkně prosím neodděluje pouze paměťové prostory.
Co když neselže paměť, ale něco jiného?
Spolehlivost mikrojádra je prostě dána jeho architekturou.
„5. Co když potřebuji do jádra novou funkcionalitu? V Linuxu stačí zavést jeden jaderný modul. V microjádře může být problém daleko těžší, protože může být třeba současně a synchronizovaně pozměnit několik serverů a microjádro. Například vytvořit patch ksplice pro systém s microjádrem by bylo extrémně obtížné.“
Když potřebujete novou funcionalitu, tak jí naprogramujete asi tak 100× snadněji, než v monolitu, protože programovat pro kernel je méně efektivní, než pro user space.
Jsou věci, které jsou pro mikrojádro obtížnější a naopak.
Nicméně zažil jsem hodně demagogických argumentů proti mikrojádru, ale málokterý byl tak demagogický jako těchto 5 bodů.