Mikrokernel
EinMikrokernel, auchµ-Kernel oderMikrokern, ist einBetriebssystemkern, der im Gegensatz zu einemmonolithischen Kernel nur grundlegende Funktionen erfüllt – in der Regel sind dies Speicher- und Prozessverwaltung, sowie Grundfunktionen zur Synchronisation und Kommunikation.Alle weiteren Funktionen werden als eigeneProzesse (Server), die mit den nachfragenden Programmen (Client) kommunizieren, oder alsProgrammbibliothek, welche von den nachfragenden Programmen eingebunden wird, imBenutzer-Modus implementiert.

Mikrokerne sind besonders geeignet zur Implementierungverteilter Betriebssysteme, da die Betriebssystem-Komponenten ausgelagert werden können.
Entwicklung
[Bearbeiten |Quelltext bearbeiten]Durch mangelhaftes Design einiger früherer Implementierungen haben Mikrokerne den Ruf, eher langsam und unübersichtlich zu sein. Jedoch gibt es inzwischen Kernel, die durch Abbau weiterer Funktionalität, aber auch durch starke Optimierung (z. T. mit Verlust der Portabilität) einen hohen Datendurchsatz erreichen und so an Interesse gewinnen. So arbeitetL4 lediglich mit zehn Befehlen.
Auf derPowerPC-Architektur, einerRISC-Architektur, waren extrem leistungsfähige Mikrokerne schon früher realisierbar, da hier dieKontextwechsel wesentlich schneller durchgeführt werden konnten als aufkomplexeren Architekturen (CISC), beispielsweisex86.
Vorteile
[Bearbeiten |Quelltext bearbeiten]- Separierte Komponenten
- Einzelne Bestandteile des Betriebssystems können beliebig ausgetauscht werden, ohne dass dadurch andere Teile beeinträchtigt werden. Ein klares Schnittstellen-Design hilft dabei. Der Absturz einer einzelnen Komponente führt nicht zwangsläufig zum Zusammenbruch des gesamten Systems.
- Treiber imBenutzer-Modus
- Die Gerätetreiber laufen zusammen mit einem Anwendungsprogramm im Benutzer-Modus – im Gegensatz zumonolithischen Kerneln, bei denen alle Treiber im privilegierten Modus laufen. Dies hat den Vorteil, dass die Zugriffsrechte der Treiber einzeln bestimmt werden können.
- Gerätetreiber brauchen nicht im Kernel zu sein und sind meist so konzipiert, dass sie auch mit Benutzerrechten (im Gegensatz zu root-Rechten oder gar im Kernel) ausgeführt werden können. Gleiches gilt für Dateisystem-Treiber etc., sodass z. B.FTP undWebDAV direkt auf Dateisystem-Ebene implementiert werden können, ohne das Sicherheitsrisiko zu erhöhen, d. h. ein Server lässt sich genauso benutzen wie ein lokales Verzeichnis, von allen Anwendungen aus.
- ZurTreiber-Verwendung genügt es, als normaler Benutzer mit Zugriffsrechten auf die benötigte Hardware angemeldet zu sein. Es ist keine Änderung von Systemdateien oder ein Neustart des Systems nötig. Auch können problemlos Hintergrunddienste („services“) gestartet werden, die z. B. unterLinux eine Installation in den Kernel, mit root-Rechten und speziell für diesen Kernel kompiliert, erfordern würden.
- Geringere Trusted Computing Base
- Der Kernel-Code, dem ein Nutzer vertrauen muss, ist im Vergleich zumonolithischen Betriebssystemen relativ klein und somit einfacher zu verifizieren. Zum Beispiel, hatMinix 3 nur 12.000 Zeilen.[1]
Nachteile
[Bearbeiten |Quelltext bearbeiten]- Geschwindigkeit
- Da das auf dem Mikrokern laufende Betriebssystem aus vielen einzelnen Nutzer-Prozessen besteht, sind wesentlich mehr Kontextwechsel nötig als bei monolithischen Betriebssystemen. Dadurch ist ein Mikrokern in der Regel langsamer als ein monolithischer. FürL4 wurde allerdings nachgewiesen, dassL4Linux nur geringfügig (5–10 %) langsamer ist alsLinux.[2]
- Synchronisation
- Für die Leistung eines Mikrokern-Systems ist die Synchronisation der vielen Nutzer-Prozesse von zentraler Bedeutung. Die koordinierenden Kernel-Prozesse sind komplex und verhältnismäßig schwierig zu optimieren.
- Hardware-Zugriff
- Einige Betriebssystemaufrufe, wie etwa physischer I/O-Zugriff, benötigen den privilegiertenKernel-Modus. Normalen Prozessen sind direkte Zugriffe auf die Hardware aus Sicherheitsgründen untersagt. Um das zu umgehen, können ausgewählte Module wie der I/O-Treiber im Kernel-Modus betrieben werden. Alternativ kann der Mikrokern um elementare I/O-Funktionen erweitert werden, die den Kernel-Modus erfordern. Auf diese Funktionen darf nur der I/O-Treiber zugreifen, der im Benutzer-Modus Mechanismen wie Autorisation implementiert. Beide Lösungen weichen das Mikrokern-Konzept auf.
Bekannte Mikrokernel
[Bearbeiten |Quelltext bearbeiten]- Mach
- KernschnittstelleL4, Implementierungen:
- Fiasco
- L4Ka::Pistachio
- L4Ka::Hazelnut
- Quark
- KeyKOS,EROS,Coyotos
- Minix
- Nucleus
- SCIOPTA
Betriebssysteme, die auf Mikrokerneln aufsetzen
[Bearbeiten |Quelltext bearbeiten]- AmigaOS
- Amoeba
- ChorusOS
- GNU/Hurd
- Google Fuchsia
- Harmony OS (von Huawei), ab Version 2.0 (geplant für 2020)
- L4Linux
- Minix
- MkLinux
- MorphOS
- PC/GEOS
- PikeOS
- QNX Neutrino
- Singularity
- Symbian OS
- Symobi (verwendet denSphere Mikrokern)
- Tru64 UNIX
- ENEA Ose
- ThreadX
- VMware ESXi
Windows NT ist, auch wenn dies oftmals fälschlicherweise behauptet wird, kein Mikrokernelsystem. Es gehört zur Gruppe derHybridkernel.Andrew S. Tanenbaum schreibt hierzu: „Windows NT 3.1 war ein halbherziger Versuch eines Mikrokernelsystems, aber es wurde nicht richtig gemacht, und die Leistung war nicht gut genug auf der Hardware der frühen 1990er Jahre, darum gab man die Idee für eine Weile auf.“[3]
AuchXNU, der Kernel des BetriebssystemsDarwin von Apple, ist ein Mach-Hybridkernel. Darwin dient als Kernbetriebssystem (englischCore Operating System) vonmacOS und davon abgeleiteten Systemen, wie u. a.iOS.
Einzelnachweise
[Bearbeiten |Quelltext bearbeiten]- ↑What is MINIX 3? In: minix3.org. Abgerufen am 30. Juli 2024 (englisch).
- ↑Hermann Härtig, Michael Hohmuth, Jochen Liedtke, Jean Wolter, Sebastian Schönberg:The performance of μ-kernel-based systems. In:Proceedings of the sixteenth ACM symposium on Operating systems principles (= SOSP '97). ACM, New York 1997,ISBN 0-89791-916-5,S. 66–77,doi:10.1145/268998.266660 (tu-dresden.de).
- ↑„Windows NT 3.1 was a half-hearted attempt at a microkernel system, but it wasn’t done right and the performance wasn't good enough on the hardware of the early 1990s, so it gave up on the idea for a while.“http://www.cs.vu.nl/~ast/reliable-os/