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.
Web | L4 Hq (anglicky) |
---|---|
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]
|
Licence | Svobodný software, BSD licence (L4Ka::Pistachio) |
Stav | Aktivní |
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í.[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
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ě.
Související články
Osobnosti
- Jochen Liedtke – autor původního mikrojádra L4
- Andrew S. Tanenbaum - autor jádra MINIX, 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
- 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
- GNU GPL – licence napsané Richardem Stallmanem a dalšími, k uskutečnění cílů Projektu GNU
- Projekt GNU – projekt původně Richarda Stallmana, který má za cíl vyvinout kvalitní a svobodný operační systém – GNU
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é vědcem Andrewem S. Tanenbaumem
- BSD licence – licence organizace BSD, která používala pro BSD Unix a odvozená díla
Reference
- Kernel APIs [online]. l4hq.org [cit. 2019-04-09]. Dostupné v archivu pořízeném dne 2019-03-25. (anglicky)
- L4Ka::Pistachio microkernel [online]. www.l4ka.org [cit. 2019-04-09]. Dostupné online. (anglicky)
- Fiasco microkernel [online]. www.l4ka.org [cit. 2019-04-09]. Dostupné online. (anglicky)
- 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.
- KOUSOULOS, Constantine. Re: Device drivers in Mach? [online]. 2007-03-21. Dostupné online. (anglický)
- CUSTER, Helen. Windows NT. 1.. vyd. Praha: Grada Publishing, 1994. 424 s. ISBN 80-85424-87-8.
- Liedtke, Jochen (December 1995). "On µ-Kernel Construction". Proc. 15th ACM Symposium on Operating Systems Principles (SOSP): 237–250.
- Liedtke, Jochen (December 1993). "Improving IPC by kernel design". 14th ACM Symposium on Operating System Principles: 175–88.
- (2000) "The Sawmill multiserver approach". ACM SIGOPS European Workshop: 109-114.
- L4Ka::Pistachio microkernel [online]. Dostupné online.
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
- Liedtke, Jochen; Haeberlen, Andreas; Park, Yoonho; Reuther, Lars; Uhlig, Volkmar (2000-10-22). "Stub-Code Performance is Becoming Important" (PDF). In Proceedings of the 1st Workshop on Industrial Experiences with Systems Software (WIESS), San Diego, CA, October 2000. Retrieved on 2006-09-05. (on L4 kernel and compiler)
- Cheng Guanghui, Nicholas Mc Guire. L4/Fiasco/L4Linux Kickstart, Distributed & Embedded Systems Lab – Lanzhou University
- (October 2014) "From L3 to seL4: What Have We Learnt in 20 Years of L4 Microkernels?". 24th ACM SIGOPS Symposium on Operating Systems Principles: 133-150. 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 (česky)