Exokern - Exokernel

Grafischer Überblick über Exokernel. Exokernels sind viel kleiner als ein normaler Kernel ( monolithischer Kernel ). Sie ermöglichen einen direkteren Zugriff auf die Hardware und entfernen so die meisten Abstraktionen

Exokernel ist ein Betriebssystem- Kernel, der von der MIT Parallel and Distributed Operating Systems Group entwickelt wurde, und auch eine Klasse ähnlicher Betriebssysteme.

Betriebssysteme stellen Anwendungen im Allgemeinen Hardware-Ressourcen durch Abstraktionen auf hoher Ebene bereit, wie beispielsweise (virtuelle) Dateisysteme. Die Idee hinter Exokernels besteht darin, Anwendungsentwicklern so wenig Abstraktionen wie möglich aufzuzwingen, damit sie so viele Entscheidungen wie möglich über Hardware-Abstraktionen treffen können. Exokernel sind winzig, da die Funktionalität darauf beschränkt ist, den Schutz und das Multiplexen von Ressourcen zu gewährleisten , was erheblich einfacher ist als die Implementierung von Message Passing durch konventionelle Mikrokernel und die Implementierung von High-Level-Abstraktionen durch monolithische Kernel .

Implementierte Anwendungen werden als Bibliotheksbetriebssysteme bezeichnet; sie können bestimmte Speicheradressen, Plattenblöcke usw. anfordern. Der Kernel stellt nur sicher, dass die angeforderte Ressource frei ist und die Anwendung darauf zugreifen darf. Dieser Hardwarezugriff auf niedriger Ebene ermöglicht es dem Programmierer, benutzerdefinierte Abstraktionen zu implementieren und unnötige Abstraktionen wegzulassen, am häufigsten, um die Leistung eines Programms zu verbessern. Außerdem können Programmierer wählen, welchen Abstraktionsgrad sie wünschen, hoch oder niedrig.

Exokernel können als Anwendung des End-to-End-Prinzips auf Betriebssysteme angesehen werden, da sie ein Anwendungsprogramm nicht zwingen, seine Abstraktionen über andere Abstraktionen zu legen, die mit anderen Anforderungen entwickelt wurden. Zum Beispiel speichert der Cheetah- Webserver im MIT-Exokernel-Projekt vorformatierte Internet Protocol- Pakete auf der Festplatte, der Kernel bietet sicheren Zugriff auf die Festplatte, indem er unbefugtes Lesen und Schreiben verhindert, aber wie die Festplatte abstrahiert wird, hängt von der Anwendung oder dem Benutzer ab Bibliotheken, die die Anwendung verwendet.

Motivation

Herkömmlicherweise haben Kernel-Designer versucht, individuelle Hardware-Ressourcen für Anwendungsprogramme unsichtbar zu machen, indem sie von den Programmen verlangten, mit der Hardware über ein Abstraktionsmodell zu interagieren. Zu diesen Modellen gehören Dateisysteme für die Plattenspeicherung, virtuelle Adressräume für den Arbeitsspeicher, Scheduler für die Aufgabenverwaltung und Sockets für die Netzwerkkommunikation. Diese Abstraktionen der Hardware erleichtern das Schreiben von Programmen im Allgemeinen, schränken jedoch die Leistung ein und ersticken das Experimentieren mit neuen Abstraktionen. Eine sicherheitsorientierte Anwendung benötigt möglicherweise ein Dateisystem, das keine alten Daten auf der Platte hinterlässt, während eine zuverlässigkeitsorientierte Anwendung möglicherweise ein Dateisystem benötigt, das solche Daten für die Wiederherstellung nach einem Ausfall speichert.

Eine Möglichkeit besteht darin, den Kernel vollständig zu entfernen und direkt auf der Hardware zu programmieren, aber dann wäre die gesamte Maschine der zu schreibenden Anwendung gewidmet (und umgekehrt wäre die gesamte Anwendungscodebasis dieser Maschine gewidmet). Das Exokernel-Konzept ist ein Kompromiss: Lassen Sie den Kernel die grundlegenden physischen Ressourcen der Maschine (zB Plattenblöcke , Speicherseiten und Prozessorzeit) mehreren Anwendungsprogrammen zuweisen, und lassen Sie jedes Programm entscheiden, was mit diesen Ressourcen zu tun ist. Das Programm kann dann eine Verknüpfung zu einer Unterstützungsbibliothek herstellen, die die benötigten Abstraktionen implementiert (oder es kann seine eigenen implementieren).

MIT-Exokerne

Das MIT hat zwei Exokernel-basierte Betriebssysteme mit zwei Kerneln entwickelt: Aegis, ein Proof of Concept mit eingeschränkter Unterstützung für Speicher, und XOK, das das Exokernel-Konzept gründlicher anwendete.

Eine wesentliche Idee des MIT-Exokernel-Systems besteht darin, dass das Betriebssystem als Exekutive für kleine Programme fungieren sollte, die von der Anwendungssoftware bereitgestellt werden, die nur durch die Anforderung eingeschränkt werden, dass der Exokernel in der Lage sein muss, sicherzustellen, dass sie die Hardware sicher verwenden.

Entwurf

Der MIT-Exokernel verwaltet Hardware-Ressourcen wie folgt:

Prozessor
Der Kernel stellt die Prozessorressourcen als Zeitleiste dar, aus der Programme Zeitintervalle zuweisen können. Ein Programm kann den Rest seiner Zeitscheibe einem anderen bestimmten Programm überlassen. Der Kernel benachrichtigt Programme über Prozessorereignisse wie Interrupts , Hardwareausnahmen und den Anfang oder das Ende einer Zeitscheibe. Wenn ein Programm lange braucht, um ein Ereignis zu verarbeiten, bestraft der Kernel es bei nachfolgenden Zeitscheibenzuweisungen; im Extremfall kann der Kernel das Programm abbrechen.
Speicher
Der Kernel weist Programmen physische Speicherseiten zu und steuert den Übersetzungs-Lookaside-Puffer . Ein Programm kann eine Seite mit einem anderen Programm teilen, indem es ihm eine Fähigkeit zum Zugriff auf diese Seite sendet . Der Kernel stellt sicher, dass Programme nur auf Seiten zugreifen, für die sie eine Fähigkeit haben.
Festplattenspeicherplatz
Der Kernel identifiziert Plattenblöcke für das Anwendungsprogramm anhand ihrer physikalischen Blockadresse, wodurch die Anwendung die Datenplatzierung optimieren kann. Wenn das Programm die Verwendung der Platte initialisiert, stellt es dem Kernel eine Funktion zur Verfügung, die der Kernel verwenden kann, um festzustellen, welche Blöcke das Programm steuert. Der Kernel verwendet diesen Callback, um zu überprüfen, ob das Programm bei der Zuweisung eines neuen Blocks nur den zugewiesenen Block zusätzlich zu den bereits kontrollierten Blöcken beansprucht.
Vernetzung
Der Kernel implementiert einen programmierbaren Paketfilter , der Programme in einer Byte-Code- Sprache ausführt, die für eine einfache Sicherheitsüberprüfung durch den Kernel ausgelegt ist.

Anwendungen

Die verfügbaren Bibliotheksbetriebssysteme für Exokernel umfassen das benutzerdefinierte ExOS-System und einen Emulator für BSD . Darüber hinaus hat das Exokernel-Team den Cheetah -Webserver erstellt , der den Kernel direkt verwendet.

Geschichte

Die Architektur von MINIX 3

Das Exokernel-Konzept gibt es seit mindestens 1994, aber seit 2010 sind Exokernel immer noch eine Forschungsanstrengung und wurden in keinen größeren kommerziellen Betriebssystemen verwendet.

Ein Konzept, das ein Exokernel-System betreibt, ist Nemesis , geschrieben von der University of Cambridge , der University of Glasgow , Citrix Systems und dem Swedish Institute of Computer Science . Das MIT hat auch mehrere Exokernel-basierte Systeme entwickelt, darunter ExOS.

Siehe auch

Verweise

Literaturverzeichnis

Externe Links