Design

Motivation

Warum haben sich die Entwickler in den Plan9 Labs eigentlich dazu entschlossen ein neues Betriebssystem zu entwerfen? Das liegt einfach an den Trends, die sich in den 80er Jahren aufgezeigt haben und es hat sich heraus kristallisiert, dass die Ansätze von Unix zum Teil einfach nicht gut waren. Wer dürfte es besser wissen, als die Entwickler von Unix selbst? Der wohl größte Grund ist, das der Trend weg von großen Time-sharing-Computern hin zu kleinen personenbezogenen Maschienen ging. Unix ist nun mal für diese großen Maschinen entwickelt wurden. Dazu kommt, dass das Arbeiten mit Grafik oder im Netz auch nur unzureichend hinzugefügt ist, genauso wenig die Unterstützung für mehrere Prozessoren. Damals gab es noch keine richtigen Netzwerke, wie wir sie heute kennen und auch keine leistungsfähigen Grafikarten. Ein solches Netzwerk mit vielen kleinen privaten Systemen zu administrieren ist äußerst aufwendig, da jeder Computer immer ein Eigenleben entwickelt, sobald er eine Festplatte besitzt. Ziel der Entwickler war es nun, ein Unix aus vielen kleinen Systemen zu bauen, anstatt ein System aus vielen kleinen Unixen. Dabei soll es für verschiedene Aufgaben auch verschiedene Systeme geben.

Designkonzepte

Anders als bei Unix, haben sich die Entwickler für Plan9 wirklich erst lange Zeit hingesetzt, Konzepte entwickelt und Paper verfasst, bevor sie angefangen haben praktisch zu entwickeln. Dabei kamen drei sehr elementare Designkonzepte heraus. Um Plan9 zu verstehen und die Vorteile zu fassen, muss man diese drei Konzepte verinnerlichen, denn wirklich alles basiert auf diese drei Designkonzepte.

  1. Ressourcen tragen Namen und werden wie Dateien in einem hierarchischen Dateisystem organisiert
  2. Nutzung eines einheitlichen Protokolls für alle Ressourcenzugriffe: 9P
  3. Nutzer haben private Sichten auf Dienste und Ressourcen: Konfigurierbare Namensräume

Zusammengefasst heißt das, dass Alles in Plan9 eine Datei ist, auf die immer mit dem selben Protokoll zugegriffen wird. Dabei spielt es keine Rolle, ob es sich um ein Gerät, einen Prozess oder eine Datei handelt.

Namensräume

Um mit Namensräumen(namespaces) zu arbeiten, stellt Plan9 drei Grundoperationen zu Verfügung

  1. bind - Einbinden anderer Teile der existierenden Dateihierarchie
  2. mount - Einbinden von Servern über 9P
  3. import - Importieren fremder Namensräume

Ein gutes Beispiel für die Bindungen in der Hierarchie ist das /bin/ Verzeichnis. Hier befinden sich, wie zu erwarten die ausführbaren Binärdateien. Jedoch liegen sie nicht direkt in diesem Verzeichnis, sondern aufgeteilt in Unterverzeichnisse für die jeweilige Architektur /bin/i386/ oder /bin/sparc/. Nun wird je nachdem, welche Architektur das eigene System benutzt, das entsprechende Unterverzeichnis in das /bin-Verzeichnis gebunden und kann dann von dort aus aufgerufen werden. Es existieren verschiedene Methoden der Bindungen bei Überlagerungen von vorhandenen Dateien. Ein Plan9-Benutzer besitzt keinen FTP-Klienten, mit dem er sich auf einem FTP-Server anmeldet und auch damit den Server durchsucht. Ein Plan9-Benutzer montiert einen FTP einfach in sein Dateisystem und durchsucht es dort. Da alles eine Datei ist und Server in Plan9 eigentlich immer Fileserver sind, wie wir später noch sehen werden, kann ich jede beliebige Datei in mein Dateisystem montieren. NetworkAddressTranslation um ein Beispiel zu nennen, gibt es so gesehen nicht mehr in Plan9. Wenn ich Zugriff auf ein Gateway besitze, montiere ich die Netzwerkschnittstelle in mein Dateisystem, greife lokal darauf zu und kann somit in Netz. Mit dem import Befehl ist es einem möglich, komplette Namensräume eines fremden Systems mit allen mounts und binds in den eigenen Namensraum zu importieren.