L4 (jádro)
L4 je rodina mikrojader druhé generace nejčastěji používaných pro implementaci un*xových operačních systémů, ale používaných také v různých jiných systémech.

L4 byl stejně jako jeho předchůdce L3 vytvořen německým počítačovým vědcem Jochenem Liedtkem jako odpověď na slabý výkon raných mikrojaderných operačních systémů. Liedtke se domníval, že mikrojádro použitelné pro praxi vznikne spíše na základě systému navrženého pro vysoký výkon, než na základě systému navrženého pro jiné cíle. Jeho původní implementace v ručně psaném assembleru procesoru Intel 80386 vyvolala v počítačovém průmyslu značný zájem. L4 byl už od svého uvedení vyvíjen s důrazem na bezpečnost, izolaci procesů a robustnost.

Mikrojádro L4 se dočkalo nejrůznějších reimplementací původního binárního rozhraní (ABI) a vzniklo tak mimo jiné L4Ka::Hazelnut a L4Ka::Pistachio (Uni Karlsruhe), L4/Alpha a L4/MIPS (UNSW) a L4/Fiasco (Technická univerzita Drážďany). Z tohoto důvodu je název L4 vnímán obecněji a je nyní používán pro celou rodinu mikrojader zahrnující různé verze jaderného rozhraní.

L4 je široce rozšířeno. Jedné varianty, OKL4 od Open Kernel Labs, bylo prodáno v miliardách mobilních zařízení.

Historie 
Operační systém typu mikrojádro (mikrokernel) vznikl jako reakce na neustálé zvětšování klasických monolitických operačních systémů, u kterých tak začal být obtížný další vývoj a údržba. Návrh mikrojádra proto odpovídá teorii strukturovaného programování. Výhoda mikrojádra spočívá v rozdělení systému na menší části (uživatelské servery a vlastní mikrojádro), což přináší vyšší přehlednost kódu.

Nevýhodou mikrojádra je častější nutnost změny kontextu při systémovém volání mezi uživatelským procesem, mikrojádrem a obsluhujícími servery, a s tím související ztráty výkonu.

Špatný výkon první generace mikrokernelů, jako byl zejména Mach 3, vedl v polovině devadesátých let 20. století množství vývojářů k redefinici celého konceptu mikrokernelu.

Asynchronní vnitro-kernelový koncept meziprocesové komunikace (IPC) mikrokernelu Mach 3, používající velkou vyrovnávací paměť (buffer), se ukázal být jedním z hlavních důvodů pro jeho špatný výkon. Toto přimělo vývojáře na Machu založených operačních systémů k přenesení některých časově kritických komponent, jako jsou ovladače (systém GNU Hurd) a souborové systémy, zpět do jádra, často až k přechodu k hybridnímu jádru (systémy macOS, NT). I když to poněkud zmírnilo problémy s výkonem, je to jasné porušení minimalistického konceptu opravdových mikrokernelů a plýtvá jejich hlavními výhodami.

Detailní analýza úzkého hrdla operačního systému Mach indikuje, že (jakékoliv další) požadavky na mikrokernel, dělají problém příliš složitým: kód meziprocesové komunikace IPC, jehož většina je v jádře, představuje špatnou lokalizaci; což ve výsledku znamená příliš mnoho neúspěšných čtení cache CPU (musí se číst z mnohem pomalejší paměti). Tato analýza vedla k závěru, že efektivní mikrokernel musí být dostatečně malý, aby většina výkonu kritického kódu byla k dispozici v cache první úrovně (pokud možno malý zlomek zmíněné cache).

Po zkušenosti s použitím svého mikrokernelu L3, dospěl Liedtke k závěru, že i několik dalších konceptů Machu bylo špatných. Prostřednictvím zjednodušení konceptu mikrokernelu ještě vynalezl první mikrokernely L4 (jádra druhé generace), které byly od počátku primárně navrženy pro vysoký výkon. Za účelem vyždímat každý kousek výkonu jádra, byly celé napsány v assembleru a jeho meziprocesová komunikace (IPC), tak byla 20krát rychlejší než v případě Machu.

Architektura 
K nastínění obecné představy o mikrokernelu, Liedtke uvedl:

„Koncept mikrokernelu je tolerovatelný pouze tehdy, pokud přenáší maximum funkcí zevnitř kernelu ven, a tím umožňuje využití paralelního běhu serverů zabezpečujících požadovanou funkčnost systému.“

V tomto duchu, mikrokernel L4 poskytuje několik základních mechanismů: address spaces (abstrahujících tabulky stránek a poskytujících ochranu paměti, threads a scheduling (abstrahujících provádění vláken a poskytující plánování), a meziprocesovou komunikaci (pro řízení komunikace mezi procesy a thready).

Operační systém založený na mikrokernelu jako je L4, poskytuje služby, jako jsou servery, v uživatelském prostoru, zatímco monolitické kernely, jako je Linux a jako je první generace mikrokernelů, obsahuje uvnitř prostoru jádra. Například kvůli implementaci Unix-like bezpečnostního systému, musí mikrokernel (jako L4) poskytnout (uživatelské) servery pro management práv, zatímco mikrokernel Mach je obsahuje uvnitř kernelu.

L4 
Po zkušenosti s použitím L3, dospěl Liedtke k závěru, že několik dalších konceptů Machu bylo také špatných. Prostřednictvím zjednodušení konceptu mikrokernelu ještě vynalezl první mikrokernely řady L4, které byly od počátku primárně navrženy pro vysoký výkon. Za účelem vyždímat každý kousek výkonu jádra, bylo celé napsáno v assembleru a jeho meziprocesová komunikace (IPC) tak byla 20krát rychlejší než v případě Machu. Tak dramatický nárůst výkonu je vzácná událost v oblasti operačních systémů, a Liedtkova práce spustila nové kolo implementace a práce na systémech založených na L4 v řadě vysokých škol a výzkumných ústavů, včetně IBM, kde Liedtke začal pracovat v roce 1996, TU Dresden a UNSW. V Thomas J. Watson Research Center IBM Liedtke a jeho kolegové pokračovali ve výzkumu L4 a mikrokernelových systémů založených obecně, zejména Sawmill OS.

Portabilita (přenositelnost)

L4Ka::Pistachio 
Až do vydání L4Ka::Pistachio a novějších verzí L4/Fiasco, byly všechny mikrokernely L4 ze své podstaty vázány k základní architektuře CPU. Další velký posun ve vývoji L4, byl vývoj na platformě nezávislého rozhraní API, které by ještě udržel na vysoké výkonnosti, i přes svoji snazší přenositelnost. Přestože základní koncepce jádra zůstala stejná, nové API nyní poskytuje mnoho radikálních změn oproti předchozí verzi L4, včetně lepší podpory pro systémy s více CPU (jádry), volnější vazby mezi vlákny (thready) a adresními prostory a zavedení uživatelské úrovně řídící blok vláken (UTCBs) a virtuální paměti. Po uvolnění nové L4 API (verze X.2 aka verze 4) na počátku roku 2001 aplikovala System Architecture Group na univerzitě v Karlsruhe nový kernel, (L4Ka::Pistachio) úplně od začátku, nyní se zaměřením se jak na vysoký výkon, tak na přenositelnost. Toto bylo vydáno pod dvojklauzulovou BSD licencí.

Vysoká spolehlivost a bezpečnost

seL4 
V roce 2006 zahájila skupina NICTA vývoj třetí generace mikrokernelu, s názvem seL4, s cílem poskytnout základ pro vysoce bezpečné a spolehlivé systémy, vhodné pro uspokojování bezpečnostních požadavků, jako jsou ty z Common Criteria i mimo ně.

Související články

Osobnosti 
 Jochen Liedtke – autor původního mikrojádra L4
 Andrew S. Tanenbaum - autor jader MINIX 1 a 2, a mikrojádra MINIX 3, vizte též jádro NetBSD

GNU – GNU GPL (licence) 
 Free Software Foundation (FSF) – organizace (nadace), která zastřešuje Projekt GNU
 Projekt GNU – projekt původně Richarda Stallmana, který má za cíl vyvinout kvalitní a svobodný operační systém – GNU
 GNU GPL – licence napsané Richardem Stallmanem a dalšími, k uskutečnění cílů Projektu GNU
 GNU Hurd – svobodný operační systém založený na mikrokernelu GNU Mach, vyvíjený Projektem GNU
 KataOS – svobodný operační systém od Google založený na mikrokernelu seL4
 Linux (jádro) – jádro svobodného operačního systému, vyvíjené Linux Foundation; modulární monolitické jádro
 Linux-libre – jádro svobodného operačního systému, vyvíjené dcerou FSF (FSFLA), fork Linux (jádro); modulární monolitické jádro

BSD – BSD licence 
 Berkeley Software Distribution – obchodní organizace při University of California, Berkeley, která vyvinula licenci BSD a používala pro práce nad operačním systémem BSD Unix.
 BSD licence – licence organizace BSD, která používala pro BSD Unix a odvozená díla
 FreeBSD – svobodný operační systém, který vznikl z BSD Unixu; modulární monolitické jádro
 DragonFly BSD – svobodný operační systém, fork FreeBSD 4.8 s hybridním jádrem
 NetBSD – svobodný operační systém, který vznikl z BSD Unixu (před FreeBSD); modulární monolitické jádro
 OpenBSD – svobodný operační systém, fork NetBSD zaměřený na bezpečnost; monolitické jádro
 MINIX 3 – svobodný operační systém; mikrojádro navržené a vytvořené profesorem jménem Andrew S. Tanenbaumem; kompatibilita s NetBSD

Reference

Další čtení 
 Jochen Liedtke, Ulrich Bartling, Uwe Beyer, Dietmar Heinrichs, Rudolf Ruland, Gyula Szalay. Two years of experience with a μ-Kernel based OS, ACM Press 1991
   (on L4 kernel and compiler)
 Cheng Guanghui, Nicholas Mc Guire. L4/Fiasco/L4Linux Kickstart, Distributed & Embedded Systems Lab – Lanzhou University
   Evolution of L4 design and implementation approaches

Externí odkazy 
 L4Hq: L4 headquarters, community site for L4 projects
 The L4 microkernel family: Overview over L4 implementations, documentation and projects
 Official TUD:OS Wiki
 L4Ka: Implementations L4Ka::Pistachio and L4Ka::Hazelnut
 UNSW: Implementations for DEC Alpha and MIPS architecture
 OKL4: Commercial L4 version from Open Kernel Labs
 NICTA L4: Research Overview and Publications
 Genode Operating System Framework, an offspring of the L4 community
 Zdrojové kódy seL4 otevřeny 

Operační systémy
Mikrojádra
Systémový software
Svobodný software
Software v C
Software v Jazyce symbolických adres