Left Up Right Betriebssystemkerne/Kleinkernsysteme

L4

Links

L4HQ
Portal der L4-Community
L4 TU Dresden
Vorlesung Mikrokernkonstruktion
Mikrokernbasierte Betriebssysteme
L4KA, Systemarchitektur Karlsruher Institute für Technologie
eigene Kerne mit verschiedenen Schnittstellen, neuere Entwicklung (performanter vgl L4KA Vison)
Der Lehrstuhl Systemarchitektur Uni Karlsruhe ist der ehemalige Lehrstuhl vom L4-Erfinder Prof. Jochen Liedtke ...
NICTA/L4 und NICTA/SeL4 Uni South Wales Sydney, Australien

Quellen und weitere Informationen

Literatur

Sekundärinformationen:

Witz

Grundvorstellungen

aus [Liedtke1995]:

Hardwarevorausetzungen

aus [Liedtke1995]:

Design

Abstraktionen

Es gibt nur ganz wenige:
Adressräume sind die Basis des Schutzes
Operationen grant,map, demap
Threads (Abstraktion der Programmausführung)
ein Thread wird charakterisiert durch einen Zustand aus einer Menge von Registern, insbesondere dem Befehlszähler, dem Stackzeiger und weitern Zustandsinformationen, einen Verweis auf die Task (mit Adressaum), in er gerade ausgeführt wird.
Die Verbindung mit der Task kann statisch oder dynamisch sein, d.h. es kann Threads geben die zwischen Tasks migrieren
Die Threads, insbesondere die Task/Adressraum Zuordnung müssen im Kern verwaltet werden, um die Integriät der Adressräume zu schützen. [Liedtke1995]
IPC eigentlich Intertaskkommunikation
dies ist die Kommunikation über Adressräume hinweg. Diese muß vom μ-Kern realisiert werden, um die Integrität zu garantieren.
Die IPC erzwingt eine Absprache zwischen beiden Seiten der Kommunikation
Zusammen mit den Adressräumen sind diese das Fundment der Unabhängigkeit zwischen Tasks, die Subsysteme realisieren. [Liedtke1995]
Unique Identifiers (UID) (kontextfreie Adressierung bei IPC)
weitere Begriffe:
Task
Menge aller Threads, die auf einem Adressraum arbeiten. Eine Task wird mit einem Thread geschaffen.
Flexpages
Zusammenfassung von mehreren Seiten für Speicheroperationen z.B.[Heiser2002]
Clan (veraltet)
Mit dem Clan-Begriff und dem BegriffChief eines Clans kann man Sicherheitsmechanismen, Debugger sowie auch remote ORBs bauen.
Capability (3 μ-Kern Generation)
sind Kernobjekte, die Betriebsmittel und Kommunikationskanäle representieren. [Vorlesung Microkernkonstruction TU Dresden 2013].
Eine Capability ist eine Referenz auf ein Kernobjekt verbunden mit Zugriffsrechten. Sie kann von einer Task zur anderen abgebildet werden.
Zu einer Task gehört die Datenstruktur der Capability Table.
In der Task (Userspace) wird die Capability durch einen handle repräsentiert ähnlich eines POSIX-Filehandle.
Das IPC-Gate ist das Kern-Objekt, das Objektaufrufe d.h. Aufrufe zwischen Userlevel-Threads als Proxy realisierrt und weiter delegiert. Der Aufrufer merkt davon auch nichts, so k&ouuml;nnen Objekte virtualisiert werden. Hier kann en Monitor dazwischen geschaltet werden, der Sicherheitspolitiken, Debugging realisiert oder eine OS-Personality darstellen. [WL2009]
Scheduling

L4-API

L4 Version X.2 Rev6 wurde Version 4

Bemerkungen:

Implementierungen

Es gibt mehrere Implementierungen, siehe aktuell L4Hq:
L4/x86
Original Implementierung von Liedtke, teilweise hoch optimiert in Assember-Code (aber nicht Echtzeitfähig nach Usenix2001-Paper)
Fiasco (TU Dresden)
Fiasco-Requirements/Spezifikation, bestätigt in [ElphinstoneHeiser2013]

Status: Fiasko.OC:

Warg,Lackorzynski: Rounding Pointers -Type Safe Capabilities with C++ Meta Programming 2011 beschreibt OC in C++

Hazelnut
fast ganz C-Implementierung, GPL, welt- führende IPC-Ausführungszeitminimum
[ElphinstoneHeiser2013]: x86,ARM, Programiersprache C mit kritischen Teilen in Assembler ("fast paths")
L4Ka:Pistachio
Aus [Whitepaper]: [ElphinstoneHeiser2013]: Implementierung C++, Erstausgabe 2003
L4 Alpha
auf Alpha-Prozessor
CodeZero
C-Implementierung für Hypervisors
seL4 formal bewiesener Mikokern
nun OpenSource [Heise 29.7]

Die Wahl einer Implementierung ist natülich von verschiedenen Kriterien ab, wie von der Anwendung, der Prozesserarchitektur und dem wichtigen kriterien wie Preis,Support,Open Source, den eigenen Kenntnissen usw.
Die Kerne Hazelnut und Pistacio aus Karlsruhe sind schneller, der Fiasco ist besser zur Entwicklung und Debugging (2003: Unterschiede der APIs und der Kerne), wobei P4/PikeOS sowie die vom OpenKernelLab gar nicht betrachtet wurden

Bemerkungen zum Einsatz für Zwecke

Grundsätzlich ist L4 als Universalkern gedacht. Gemäß der Mikrokernarchitektur passen Strategieen (implementiert in Tasks) das System für die speziellen Anforderungen des Anwendungssystem an.

Natürlich muß man immer mit Skepsis solchen Überlegungen gegenüber stehen und genau untersuchen, ob ein spezieller Mikrokern den Anforderungen gerecht werden kann:

[LW2009] A.L.,A.W.: "Taming Subsystems: Capabilities as Universal Resource Access Control in L4" 2009

Aufbauendes

Single-Server

L4Linux Single Server Linux
L4 wird als weitere Architektur eingeführt
L4OpenBSD
wie L4Linux, nur für OpenBSD

Multiserversysteme

L4RE L4 Runtime Environment
SawMill-Projekt
L4-HURD
offensichtlich gab es doch einige Probleme, Projekt gestopped 2005
Heise über KataOS
Als Programmiersprache wird Rust gewält
TREND OS von Hensoldt
baut auf seL4 auf

Sicherheitskritische Systeme

Perseus-OS (Uni Saarbrücken)
Sicherheit für digitale Signaturen
Nizza-Sicherheitsarchitektur
Auch für übliche Anwendungen
Genode.org
das ist eine Community, Kern ist die Tu-Dresden Ausgründung Genode labs mit kommerziellen Support
ksyslabs.org ist der Internationale Ableger von Ksyslabs.ru.
Interessant ist die Aussage, dass Genode das Potential zu einem Main-Stream-Betriebssystem hat und dies aktiv verfolgt wird.

Echtzeitsysteme

DROPS - Dresdner Real Time Operation System
garantiert Dienstgüten (Quality of Service) für Streaming bei Multimedia mit Betriebssystemtechniken wie Schedulung oder Dateisysteme mit beschränkter Antwortszeit.

Hypervisor für Virtuelle Maschinen

Karma VMM
Kinebuchi, Koshimae, Nakajima: "Constructing Machine Emulator on Protable Microkernel" haben QEMU auf L4 portiert
A.L.,S.L.,H.S.."Faithful Virtualization on a Real-Time Operating System", 2009

Praktische Bemerkungen

Projekte


Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber