Exokernel
# Exokernel

Ein Exokernel, auch als vertikal strukturiertes Betriebssystem bezeichnet, ist eine Art von Kernel und damit der zentrale Bestandteil eines Betriebssystems. Im Gegensatz zu den meisten anderen Kernels bietet er nur sehr wenig Abstraktion der Hardware für Programme und beschränkt sich darauf, Ressourcenkonflikte zu verhindern und Zugriffsrechte zu prüfen.

Man kann sich Exokernel als eine konsequente Weiterführung des Mikrokernel-Konzepts vorstellen. Im Gegensatz zu diesen sind sie aber noch rigider in der Wahl der angebotenen Mechanismen.

## Geschichte

Das Konzept eines Exokernels existiert seit 1994 (Dissertation von Dawson Engler am MIT bei Frans Kaashoek), wurde allerdings (bis 2005) nur von dem Massachusetts Institute of Technology (MIT) für mehrere Systeme eingesetzt, darunter ExOs. Ein weiteres Konzept mit dem Namen Nemesis wurde von den Universitäten Cambridge und Glasgow, Cisco Systems und dem Swedish Institute of Computer Science entwickelt.

## Funktion

Die meisten Kernel verbergen die Hardware des Computers durch eine Hardwareabstraktionsschicht vor der Software. So ist es mit virtuellem Speicher zum Beispiel möglich, Arbeitsspeicher für ein Programm zu reservieren, die genaue Speicheradresse kann allerdings nicht festgelegt werden.

Exokernel hingegen beschränken sich lediglich auf das Verteilen und Schützen von geteilten Ressourcen wie z. B. Speicher, Ein-/Ausgabegeräte und Prozessoren. Sie erlauben Programmen nach Allokation durch den Kernel direkten Zugriff auf Speicherblöcke. Diese Freiheit kann dazu benutzt werden, Programme zu beschleunigen, indem unnötige Abstraktionen (und damit Zwischenschichten) ausgelassen werden. Die Aufgabe des Exokernels ist es dabei, festzustellen, ob die gewünschte Ressource frei ist, also kein Ressourcenkonflikt vorliegt, und ob sie auch vom jeweiligen Programm benutzt werden darf.

## Bibliotheken

Abstraktionen werden bei einem Exokernel-Betriebssystem außerhalb vom Kernel durch ein System von Bibliotheken (Library) bereitgestellt, die denen herkömmlicher Betriebssysteme gleichen, allerdings, bedingt durch die Eigenarten des Exokernels, flexibler sind. So ist es – zumindest theoretisch – möglich, verschiedene Betriebssysteme wie Windows oder Unix auf einem Exokernel laufen zu lassen, indem jedes von ihnen unterschiedliche Bibliotheken benutzt.

