Vyvíjí | Jochen Liedtke a další |
---|---|
Rodina OS | Unix-like a další |
Druh | Svobodný software |
Aktuální verze | 0.4 / 15. července 2013 (L4Ka::Pistachio) |
Podporované platformy | x86, x86-64, PowerPC (L4Ka::Pistachio) MIPS (L4/MIPS) Alpha (L4/Alpha) |
Typ jádra | mikrojádro druhé generace |
Programovací jazyk | assembler[1] (originální L4) C++[2], assembler (L4Ka::Pistachio) C++[3], assembler (L4/Fiasco) |
Licence | Svobodný software, BSD licence (L4Ka::Pistachio) |
Stav | Aktivní |
Oficiální web | www.l4ka.org L4 Hq (archiv) |
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 (Technologický institut v 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í.[4]
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)[5] a souborové systémy, zpět do jádra, často až k přechodu k hybridnímu jádru (systémy macOS, NT).[6] 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.
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.“[7]
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.
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.[8] 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.[9]
Až do vydání L4Ka::Pistachio[10] 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í.
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ě.