Andrew Tanenbaums Minix 3

Auf der FrOSCon 2008 stellt Andrew Tanenbaum sein neues Betriebssystemprojekt Minix 3 vor und ging auf die Probleme moderner Betriebssysteme ein. Mit seinem humorvollen Vortrag begeisterte er das überfüllte Audimax.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 6 Min.
Von
  • Keywan Najafi Tonekaboni
  • Dr. Oliver Diedrich
Inhaltsverzeichnis

Tanenbaum entwickelte Minix in den 80er-Jahren ursprünglich als Lehrsystem. Minix 3 hingegen soll ein produktiv einsetzbares, hoch zuverlässiges und gleichzeitig ressourcenschonendes Betriebssystem werden, welches sich auch auf stark eingeschränkter Hardware verwenden lässt. Mit seinen knapp 5000 Zeilen Quellcode ist der Kernel deutlich überschaubarer als der anderer aktueller Betriebssysteme, die mehrere Millionen Zeilen aufweisen. Ein größerer Kernel gehe einher mit einem erhöhten Fehlerpotenzial und sei die Hauptursache für instabile Systeme.

Bevor Tanenbaum das gespannte Publikum der FrOSCon in die Interna von Minix 3 einführte, ging er zunächst auf grundsätzliche Probleme von Computersystemen ein. Dazu verglich er Computer mit Fernsehern. Während Letztere nach dem Einstecken in die Steckdose die nächsten zehn Jahre anstandslos ihren Dienst verrichteten, sei allein die Betriebnahme eines Computers eine schwierige Angelegenheit, geschweige denn, dass dieser danach dauerhaft fehlerfrei funktionieren würde. Software sei aufgebläht, langsam und fehlerhaft und werde trotz immer leistungsfähigerer Hardware nicht spürbar schneller.

Dabei gehe es seiner Ansicht nach den Benutzern gar nicht um Geschwindigkeit, sondern um ein zuverlässiges System. "Ich würde ein halb so schnelles System jederzeit vorziehen, wenn es dafür fehlerfrei ist", unterstrich Tanenbaum diese Aussage. Tanenbaum verglich den Software-Entwickler mit Goethes Faust: Wenn der Teufel vorbeikommt und einen Performance-Vorteil verspricht mit der Gefahr, dass neue Fehler auftreten, dann würden Programmierer ohne Zögern annehmen. "Ein Benutzer würde so etwas nie tun", betonte Tanenbaum.

Der Kern von Minix besteht aus einem Microkernel, der nur 30 Systemaufrufe kennt. Alles andere, einschließlich jeglicher Treiber, läuft im User-Space und könne so, laut Tanenbaum, weniger Schaden anrichten. Über der Kernel-Schicht liegen die Geräte-Treiber. Dabei läuft jeder Treiber in einem eigenen Prozess, sodass ein fehlerhafter Treiber nicht das gesamte System destabilisiert.

In der nächsten Schicht befinden sich dann Dienste, etwa der File Server (nicht zu verwechseln mit einem Netzwerk-Dateiserver), der Dateioperation wie Kopieren oder Lesen koordiniert. Ein zentraler Dienst ist der Reincarnation Server, der periodisch alle Prozesse abfragt. Reagiert ein Prozess nicht mehr, wird dieser durch eine neue Instanz ersetzt. Das wird soweit wie möglich transparent durchgeführt, sodass der Benutzer unter Umständen diesen Vorgang gar nicht bemerkt und so möglichst wenig durch Fehler gestört wird. Daher bezeichnet Tanenbaum Minix 3 als ein selbstheilendes System. Die Anwendungsprogramme schließlich befinden sich in der obersten Schicht.

Um das System sicher zu machen, haben die einzelnen Komponenten keinen direkten Zugriff auf Kernel oder Hardware, sondern kommunizieren durch die unterschiedlichen Schichten herunter bis zum Kernel. So übergibt etwa der Festplatten-Treiber dem Kernel Zieladresse und zu schreibende Werte, während dieser nach einer Überprüfung die Operation durchführt. Zwar dauere eine solche Überprüfung 500 ns, aber das falle im Vergleich zur gesamten Operationsdauer nicht in Gewicht, so Tanenbaum.

Für den Minix-Entwickler ist es sehr wichtig, den Quelltext möglichst klein zu halten. Statistische Auswertungen von Software-Projekten hätten gezeigt, dass pro 1000 Zeilen Code etwa 5-10 Fehler auftreten, wobei bei Treibern die Häufigkeit bis auf das Siebenfache steige. Eine schlanke Code-Basis ließe sich nicht nur leichter warten, sondern habe auch weniger Fehler. Um die Zuverlässigkeit von Minix zu testen, wurden den Treibern zur Laufzeit bekannte Fehler wie Endlosschleifen injiziert. Bei Ende des Experiments mit insgesamt 200.000 eingeschleusten Fehlern waren die Treiber um die 18.000 mal abgestürzt und durch den Reincarnation Server wieder ersetzt worden, aber das System selbst crashte kein einziges Mal. Zwar litt etwa die Netzwerkleistung unter diesen Bedingungen, aber die Verbindungen selbst brachen nicht ab.

Mit der Entwicklung von Minix 3 will Tanenbaum zeigen, dass ein Multiserver-basiertes Microkernel-Betriebssystem zuverlässig arbeitet, und demonstrieren, dass Treiber im User-Space laufen können und sollten. Durch das Konzept des Reincarnation Servers zeigt es auch, wie Anwendungen fehlertolerant entwickelt werden können. In Zukunft könnte dieser Dienst noch weiterentwickelt werden, um Aktualisierungen selbst von kritischen Systemkomponenten im laufenden Betrieb zu ermöglichen und somit die Verfügbarkeit weiter zu steigern.

Minix 3 lässt sich derzeit nur auf einem x86-PC verwenden. An Portierungen für PowerPC und ARM9 wird aber derzeit gearbeitet, unter anderem im Rahmen von Googles Summer of Code. Es lässt sich sowohl von einer Live-CD verwenden als auch auf Festplatte installieren.

Derzeit ist Minix 3 ein Forschungsprojekt an der Freien Universität Amsterdam und wird von der Europäischen Union mit 2,5 Millionen Euro unterstützt. Trotzdem hält Tanenbaum einen produktiven Einsatz des Systems bereits jetzt schon für möglich, da es sehr zuverlässig läuft. Auf Nachfrage von Heise open, ob sich seine Ansicht zu einer verteilten Entwicklung seit den Anfangstagen von Linux geändert habe, reagierte er gelassen – seit seinem berühmten Posting "Linux is obsolete" aus den Anfangstagen der Linux-Entwicklung hatte Tanenbaum immer wieder Kritik an Linux und seinem Entwicklungsmodell geübt.

Der Minix-Entwickler unterstrich seine Ansicht, dass der Code zentral gepflegt werden müsse, um Zuverlässigkeit zu gewährleisten. Jede Veränderung des Minix-Quelltextes werde sorgfältig überprüft, bevor sie aufgenommen wird. Allerdings gebe es auch nicht besonders viel Feedback von externen Entwicklern und ihm sei nicht bekannt, wer alles Minix 3 verwende, so Tanenbaum. Bei Linux würde sich zu viel zu schnell ändern; durch die ständigen Änderungen an der API würden bei jeder neuen Version die existierenden Treiber obsolet. Der Informatik-Professor ließ sich bei der Gelegenheit auch nicht nehmen, den Erfolg von Linux anzuzweifeln: Zumindest auf dem Desktop, so Tanenbaum, würde BSD – inklusive Mac OS X – öfter verwendet werden. (odi) (odi)