L4 (jádro)

L4
VyvíjíJochen Liedtke a další
Rodina OSUnix-like a další
DruhSvobodný software
Aktuální verze0.4 / 15. července 2013 (L4Ka::Pistachio)
Podporované platformyx86,
x86-64,
PowerPC (L4Ka::Pistachio)
MIPS (L4/MIPS)
Alpha (L4/Alpha)
Typ jádramikrojádro druhé generace
Programovací jazykassembler[1]
(originální L4)
C++[2], assembler
(L4Ka::Pistachio)
C++[3], assembler (L4/Fiasco)
LicenceSvobodný software, BSD licence (L4Ka::Pistachio)
StavAktivní
Oficiální webwww.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]

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)[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.

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.“[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.

L4 family tree

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.[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]

Portabilita (přenositelnost)

L4Ka::Pistachio

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í.

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ě.

Podrobnější informace naleznete v článku seL4.

Související články

Osobnosti

GNU – GNU GPL (licence)

BSD – BSD licence

Reference

  1. Kernel APIs [online]. l4hq.org [cit. 2019-04-09]. Dostupné v archivu pořízeném dne 2019-03-25. (anglicky) 
  2. L4Ka::Pistachio microkernel [online]. www.l4ka.org [cit. 2019-04-09]. Dostupné online. (anglicky) 
  3. Fiasco microkernel [online]. www.l4ka.org [cit. 2019-04-09]. Dostupné online. (anglicky) 
  4. Open Kernel Labs: Open Kernel Labs Software Surpasses Milestone of 1.5 Billion Mobile Device Shipments, tisková zpráva, [cit. 2014-08-24], Dostupné on-line. Archivováno 11. 2. 2012 na Wayback Machine. Archivovaná kopie. www.ok-labs.com [online]. [cit. 2014-08-24]. Dostupné v archivu pořízeném z originálu dne 2012-02-11. 
  5. KOUSOULOS, Constantine. Re: Device drivers in Mach? [online]. 2007-03-21. Dostupné online. (anglický) 
  6. CUSTER, Helen. Windows NT. 1.. vyd. Praha: Grada Publishing, 1994. 424 s. ISBN 80-85424-87-8. 
  7. Liedtke, Jochen (December 1995). "On µ-Kernel Construction". Proc. 15th ACM Symposium on Operating Systems Principles (SOSP): 237–250.  Archivováno 18. 3. 2009 na Wayback Machine.
  8. Liedtke, Jochen (December 1993). "Improving IPC by kernel design". 14th ACM Symposium on Operating System Principles: 175–88. 
  9. (2000) "The Sawmill multiserver approach". ACM SIGOPS European Workshop: 109-114. 
  10. L4Ka::Pistachio microkernel [online]. Dostupné online. 
  11. PM, WN. KataOS by mohl pohánět zařízení internetu věcí s podporou ML. www.businessit.cz [online]. [cit. 2022-12-14]. Dostupné online. 
  12. Google oznámil vývoj operačního systému KataOS. www.abclinuxu.cz [online]. [cit. 2022-12-13]. Dostupné online. 
  13. Announcing KataOS and Sparrow [online]. [cit. 2022-12-13]. Dostupné online. 

Další čtení

Externí odkazy

Média použitá na této stránce

L4 family tree.png
Autor: Heiser, Licence: CC BY-SA 3.0
Family tree of the L4 microkernel with time line