Unix: Das Betriebssystem, das neue Maßstäbe setzte

Die Entwicklung von Unix zählt zweifelsfrei zu den wichtigsten Meilensteinen der Computergeschichte. Das Betriebssystem führte nicht nur einige elementare Konzepte der Informationstechnik wie das hierarchisch aufgebaute Dateisystem mit Ordnerstruktur ein; es diente auch als Grundlage für die Entwicklung diverser anderer Systeme, z. B. der proprietären Apple-Betriebssystemen macOS und iOS oder des Open-Source-Projekts Linux, aus dem wiederum zahlreiche Ableitungen wie Ubuntu, Debian oder das mobile Android hervorgegangen sind. Wie genau wurde Unix zu einer der einflussreichsten Anwendungen zur Computerverwaltung und weshalb konnte das Entwicklerteam seine Ideen zunächst ausschließlich auf Tafeln und Notizzetteln festhalten?

Gemeinschaftsprojekt Multics legt den Grundstein

1965 präsentierte im Rahmen der Fall Joint Computer Conference eine Arbeitsgruppe ihre Idee eines neuen Betriebssystems. Die Gruppe bestand aus Mitarbeitern des Massachusetts Institute of Technology (MIT), des Konzerns General Electric und der Bell Laboratories (Bell Labs) von AT&T (seit 2016 Teil der Forschungs- und Entwicklungsabteilung von Nokia). Sie tauften das Betriebssystem Multiplexed Information and Computing Service, kurz Multics. Dabei verfolgten sie vollkommen neue Ansätze, wobei insbesondere das Konzept des Time-Sharings im Fokus stand. So sollte Multics zu den ersten Systemen zählen, die es mehreren Benutzern ermöglichen, gleichzeitig an einem Computer zu arbeiten, indem sie sich die Rechenzeit des zugrundeliegenden Prozessors teilen.

Für ihr Vorhaben benötigte die Multics-Arbeitsgruppe einen Rechner, der eine Reihe spezifischer Anforderungen erfüllen musste: Einerseits sollte er einen sauber strukturierten Befehlssatz aufweisen, um die für die Entwicklung vorgesehene höhere Programmiersprache PL/I von IBM nutzen zu können. Andererseits musste er den geplanten Mehrbenutzerbetrieb unterstützen und asynchron arbeiten, um die Performance-Einbußen bei der Speicherverwaltung möglichst gering zu halten. Man entschied sich aus diesem Grund zunächst für den GE-635 und später für den GE-645 von General Electric. Die Entwicklung führte man auf dem bereits lauffähigen Mehrbenutzersystem CTSS durch, das bereits zu Beginn der 1960er-Jahre vom MIT entwickelt worden war. Verzögerungen bei der Entwicklung des PL/I-Compilers, finanzielle Engpässe, interne Differenzen und der wachsende Druck von außen führten schließlich dazu, dass sich die Bell Labs 1969 aus dem Projekt zurückzogen.

Aus Multics wird Unix

Multics wurde am MIT weiterentwickelt und im späteren Verlauf von dem Konzern Honeywell International Inc. – nach dessen Kauf von General Electric – kommerziell auf Honeywell-6180-Maschinen vertrieben (bis 1986). Den Informatiker Ken Thompson, der zum damaligen Zeitpunkt Mitarbeiter der ausgestiegenen Bell Labs war, ließ die Idee eines Mehrbenutzersystems allerdings nicht los: Gemeinsam mit Dennis Ritchie und einem kleinen Team der AT&T-Einrichtung begann er mit den Planungen eines eigenen Systems auf Basis der Multics-Grundsätze. Die Suche nach einem geeigneten Computer erwies sich zunächst jedoch als ergebnislos – und da die Bell Labs sich gegen den Kauf eines passenden Exemplars stemmten, hielten die Entwickler ihre Gedanken und Fortschritte des geplanten Dateisystems zunächst auf Papier und Tafeln fest.

Schließlich konnte man einen gebrauchten PDP-7-Minicomputer der Firma Digital Equipment Corporation (DEC) für das geplante Projekt gewinnen. Dieses Rechnersystem, das „nur noch“ die Größe einer Schrankwand besaß, lief mit dem Betriebssystem GECOS (General Electric Comprehensive Operating System), das fortan als Entwicklungsplattform diente. Schnell entstanden wertvolle Software-Werkzeuge wie eine Kommandozeile (sh), ein Editor (ed) und das bereits in Papierform existierende Dateisystem – vorerst noch in einer Assemblersprache (hardwarenah, aber für Menschen vereinfacht). Da das neue Betriebssystem im Gegensatz zu Multics nur zwei Benutzer zuließ, die je nur einen Prozess gleichzeitig ausführen konnten, nannte das Team dieses in Anlehnung an die Vorlage Unics. Aufgrund der Begrenzung der Länge von Dateinamen in GECOS entstand schließlich der endgültige Name Unix.

Erst B, dann C: Unix bekommt seine eigene, höhere Programmiersprache

Nachdem das Bell-Labs-Team also Unix und einige elementare Programme geschrieben hatte, schickte es sich an, die zu diesem Zweck verwendete Assemblersprache durch eine weniger komplexe Variante zu ersetzen. Den Plan, einen Compiler für die bereits existierende IBM-Sprache Fortran zu entwickeln, verwarf man allerdings schon nach kurzer Zeit. Stattdessen begannen die Arbeiten an einer eigenen, neuen Sprache, wobei man sich stark an PL/I – der Multics-Sprache – und der am MIT entwickelten BCPL (Basic Combined Programming Language) orientierte. In der Folge schrieben Ritchie und Co. einige der System-Werkzeuge neu in dieser imperativen Sprache, bis sie 1970 einen neuen PDP-11-Rechner erhielten und erneut zum Umdenken gezwungen waren – die neue Systemarchitektur war nicht wie die des PDP-7-Computers und der Programmiersprache B wort-, sondern byteorientiert.

Mit C entwickelte Bell Labs daher in den folgenden zwei Jahren den geschichtsträchtigen Nachfolger, dessen Syntax und andere Eigenschaften sich in diversen modernen Programmiersprachen wie der Erweiterung C++, Java, JavaScript, PHP oder Perl wiederfinden. Als die Sprache 1973 ausgereift genug war, begann das Entwicklerteam damit, den kompletten Unix-Kernel neu in C zu schreiben. Das Ergebnis veröffentlichte das Unix-Team Mitte der 1970er-Jahre. Da AT&T zu diesem Zeitpunkt als staatlich kontrollierter Monopolist in der Telekommunikationsbranche keinerlei Software verkaufen durfte, stellte man Unix (Version 6), mittlerweile ein Mehrbenutzersystem, das auch mehrere Prozesse gleichzeitig erlaubte, allen interessierten Universitäten kostenfrei zur Verfügung – inklusive eines C-Compilers, was das System auf nahezu allen Plattformen nutzbar machte.

Hardwarefreundlich und quelloffen: Unix erobert die Entwicklerszene

Mit der Freigabe der Unix-Software für Bildungseinrichtungen begann der Siegeszug des neuen Betriebssystems – zunächst aber in erster Linie als Spielzeug der programmierenden Zunft. Gewöhnliche Arbeitsprozesse auf den damaligen IBM-Mainframes und PDP-Maschinen liefen hingegen weiterhin auf den nativen Systemen wie RSX-11, RT-11 oder IST. Für Entwickler bestand der Wert des bereitgestellten Quellcodes von Kernel und den einzelnen Anwendungen indes nicht nur im Lerneffekt: Die geringen Ansprüche, die Unix an die Hardware stellte, sowie der hohe Nutzerkomfort luden zum Experimentieren und Weiterentwickeln ein, was vor allem an der Universität von Kalifornien in Berkeley, der ehemaligen Heimatuniversität Thompsons, Anklang fand – wobei die Tatsache, dass dieser dort 1976 eine Gastprofessur in der neu geschaffenen Informatikabteilung antrat, vermutlich eine nicht unwesentliche Rolle gespielt hat.

So verbesserten Bill Joy und Chuck Haley, zwei damalige Diplom-Studenten, u. a. das von Thompson entwickelte Pascal-System und programmierten mit ex – dem Vorgänger des noch heute zu Standardinstallationen unixoider Systeme zählenden vi – einen vollkommen neuen Texteditor. 1977 erschien schließlich unter der Leitung Joys eine abgewandelte Unix-Variante, die die bis dahin vorgenommenen Verbesserungen und Weiterentwicklungen enthielt. Die Berkeley Software Distribution (BSD), die später u. a. das Netzwerkprotokoll TCP/IP in das Unix-Universum integrierte und erstmalig dem Ansatz eines freien Betriebssystems (dank der eigenen BSD-Lizenz) gerecht werden konnte, gilt seitdem als eine der wichtigsten Unix-Abwandlungen.

Die 1980er-Jahre: Kommerzialisierung und „Unix-Kriege“

In den folgenden Jahren sollten immer mehr Abwandlungen das Licht der Welt erblicken, wobei immer mehr auch finanzielle Aspekte eine Rolle spielen sollten. So erwarb Microsoft schon 1979 eine Unix-V7-Lizenz, um u. a. Portierungen für Intel- und Motorola-Prozessoren zu entwickeln. Im folgenden Jahr veröffentlichte das Software-Unternehmen Xenix, das als Standard-Betriebssystem für PCs geplant war, aber zu hohe Ansprüche an die Hardware stellte. Microsoft gab die Weiterentwicklung letztendlich in die Hände des Software-Herstellers SCO (Santa Cruz Operation), um sich auf OS/2 und die Weiterentwicklung von MS-DOS zu konzentrieren.

Auch Bill Joy sprang 1982 mit seiner neu gegründeten Firma Sun Microsystems auf den Zug auf, und zwar mit dem proprietären, auf BSD basierenden System SunOS (Vorgänger von Solaris), das speziell für den Einsatz auf Servern und Workstations geplant war.

Der wahre Kampf um die Gunst der Unix-Gefolgschaft entbrannte jedoch zwischen AT&T, das mittlerweile die Erlaubnis für den kommerziellen Vertrieb erhalten hatte, und der Berkeley-Universität, die mit BSD und der großen Zahl unterstützender Programmierer mit wertvollen und innovativen Neuerungen glänzen konnte. So versuchte AT&T zunächst mit System III (1981) und insbesondere mit dem optimierten System V (1983), die beide auf Unix V7 aufbauten, den Markt zu erobern, während die Universität von Berkeley zeitgleich 4.2BSD veröffentlichte, für das innerhalb von 18 Monaten mehr als 1.000 Lizenzen ausgestellt wurden. Damit war es deutlich beliebter als das kostenpflichtige System V, das vor allem das Fast File System (FFS) und die Netzwerkfähigkeit (dank integriertem TCP/IP) der Berkeley-Variante vermissen ließ.

Mit dem vierten Release von System V (1988) implementierte AT&T diese beiden sowie zahlreiche andere Features von BSD, aber auch von Xenix und SunOS, woraufhin viele Nutzer auf die kommerzielle Lösung wechselten.

Dem Pinguin sei Dank: Unix wird zur Server-Lösung

Während die verschiedenen Unix-Systeme miteinander um das Wohlwollen der eigenen Community konkurrierten, lieferten sich Apple und Microsoft zunächst einen Wettstreit im Personal-Computer-Sektor und später im Server-Umfeld. Während Microsoft das Rennen auf den Heim-PCs für sich entschied, erschien 1991 mit Linux plötzlich ein auf Unix-Konzepten basierendes System auf der Bildfläche, das sich in den folgenden Jahren dazu anschicken sollte, das Serverumfeld für sich zu gewinnen. Der Entwickler Linus Torvalds hatte mit dem Paket aus einem frei lizenzierten Kernel und der ebenfalls frei verfügbaren GNU-Software den Wunsch nach einem konkurrenzfähigen Open-Source-Betriebssystem erfüllt und damit den Nerv der Zeit getroffen.

Bis heute sind zahlreiche Unix-Linux-Ableitungen wie Debian, CentOS, Red Hat oder Ubuntu, die auch als Derivate bezeichnet werden, als Systemsoftware für Server aller Art im Einsatz. Insbesondere Ubuntu erfreut sich jedoch auch immer größerer Beliebtheit auf heimischen PCs. Linux, das wir in einem Grundlagenartikel genauer beleuchten, ist aber bei Weitem nicht der einzige Unix-Nachfolger, der in der heutigen Computerwelt von Bedeutung ist: Seit Mac OS X 10.0 bzw. Mac OS X Server 1.0 greift das Apple-Betriebssystem auf Darwin, eine freie BSD-Variante, als Unterbau zurück. Das Berkeley-Unix selbst ist mit zahlreichen weiteren, freien Ableitung wie FreeBSD, OpenBSD oder NetBSD sogar mehrfach vertreten.

Mit iOS (gleiche Systembasis wie macOS) und Android (basiert auf Linux-Kernel) zählen außerdem auch die beiden meistverbreiteten Betriebssysteme für mobile Geräte zur Unix-Familie.

Was ist Unix – die wichtigsten Eigenschaften des System-Meilensteins

Bei vielen Merkmalen, die Unix auszeichnen, handelte es sich zum Zeitpunkt seiner Einführung um absolute Neuheiten, die nicht nur den Aufbau späterer, unixoider Systeme und Distributionen stark beeinflussen sollten, sondern auch von den Konkurrenten Apple und Microsoft in ihren Betriebssystemen aufgegriffen wurden. Insbesondere mit folgenden Charakteristika machten Ritchie, Thompson und Co. Unix seinerzeit zum Wegbereiter moderner Betriebssysteme:

Hierarchisches, universelles Dateisystem

Ein elementarer Bestandteil von Unix war von Anfang an das hierarchisch organisierte Dateisystem, das es dem Benutzer ermöglicht, Dateien in Ordnern zu strukturieren. Dem Root-Verzeichnis (Wurzelverzeichnis), das mit dem Schrägstrich „/“ gekennzeichnet wird, können dabei beliebig viele Unterverzeichnisse zugeordnet werden. Das Grundprinzip „Everything is a file“ (dt. „Alles ist eine Datei“) verfolgend, bildet Unix u. a. auch Laufwerke, Festplatten, Terminals oder fremde Rechner als Gerätedateien im Dateisystem ab. Einige Derivate, darunter auch Linux, zeichnen sogar Prozesse und deren Eigenschaften als Dateien im virtuellen Dateisystem procfs aus.

Mehrprozessbetrieb (Multitasking)

Entscheidend für den Erfolg von Unix war außerdem die Möglichkeit, mehrere Prozesse bzw. Programme gleichzeitig auszuführen, ohne dass diese sich gegenseitig in die Quere kommen. Dafür stützte sich das Betriebssystem von Beginn an auf die Methode des präemptiven Multitaskings. Bei dieser Methode übernimmt der sogenannte Scheduler (engl. schedule = „Zeitplan“), der Bestandteil des Betriebssystemkernels ist, die Verwaltung der einzelnen Prozesse über ein Prioritätensystem. Apple und Microsoft befassten sich erst wesentlich später, im Laufe der 1990er-Jahre, mit der Realisierung vergleichbarer Prozessmanagement-Lösungen.

Mehrbenutzersystem (Multiuser-System)

Schon für Multics war die Hauptzielvorgabe ein System, das mehreren Benutzern das gleichzeitige Arbeiten ermöglichen sollte. Zu diesem Zweck wird jedem Programm und Prozess ein Eigentümer zugeordnet. Und auch, wenn Unix zunächst auf zwei User beschränkt war, gehörte diese Eigenschaft von Anfang an zum Portfolio der Systemsoftware. Der Vorteil eines derartigen Mehrbenutzersystems lag nicht nur in der Chance, zum gleichen Zeitpunkt auf die Leistung eines einzigen Prozessors zugreifen zu können, sondern auch in dem damit verbundenen Rechtemanagement. Administratoren konnten nun Zugriffsrechte und verfügbare Ressourcen für die verschiedenen User definieren. Voraussetzung war zunächst aber auch, dass die Hardware des jeweiligen Rechners mitspielte.

Netzwerkfähigkeit

Mit 4.2BSD wurde das Berkeley-Unix 1983 eines der ersten Betriebssysteme, das den Internetprotokollstapel integrierte, der die Grundlage für das Internet und eine einfache Netzwerkkonfiguration legte und die Möglichkeit bot, als Client oder Server zu agieren. Ende der 1980er-Jahre kam mit der bereits erwähnten vierten Version von System V auch eine Variante des kommerziellen AT&T-Systems auf den Markt, in der dem Kernel die legendäre Protokollfamilie hinzugefügt worden war. Windows sollte TCP/IP hingegen beispielsweise erst mit 3.11 (1993) und einer entsprechenden Erweiterung unterstützen.

Plattformunabhängigkeit

Während man andere Betriebssysteme und deren Anwendungen zur Zeit der Entstehung von Unix noch ganz gezielt auf einen ganz bestimmten Prozessortyp zuschnitt, verfolgte das Bell-Labs-Team von Beginn an den Ansatz eines portablen Systems. Zwar begann man zunächst mit einer Assemblersprache, doch sobald die Grundstruktur der Systemsoftware geschaffen war, startete das Projekt einer eigenen, höheren Programmiersprache, aus dem die historische Sprache C hervorging. Zwar waren die in C geschriebenen Komponenten trotz mitgeliefertem Compiler vorerst noch stark an die Architektur der PDP-Maschinen, die Ritchie und Co. als Basis für ihre Arbeiten dienten, gebunden. Spätestens mit der stark überarbeiteten Unix-V7-Version (1979) verdiente sich das Betriebssystem jedoch zurecht seinen Ruf als portables System.

Das Unix-Werkzeugkasten-Prinzip und die Shell

Unix-Systeme vereinen eine Vielzahl nützlicher Werkzeuge und Befehle, die in der Regel jeweils nur für wenige, spezielle Aufgaben konzipiert sind. Linux greift hierfür beispielsweise auf die GNU-Tools zurück. Für die allgemeine Problemlösung gilt das Prinzip, Antworten in der Kombination von Standard-Werkzeugen zu finden, anstatt spezifische Neuprogrammierungen zu entwickeln. Das wichtigste Tool ist dabei seit jeher die Shell (sh), ein textorientierter Kommandointerpreter, der umfangreiche Programmiermöglichkeiten bereitstellt. Diese klassische Benutzerschnittstelle ist auch ohne grafische Oberfläche sinnvoll nutzbar, auch wenn ein solches Interface, das spätestens mit Linux auch den Weg ins Unix-Umfeld fand, den Bedienkomfort natürlich erhöht. Dennoch bietet die Shell für erfahrene Anwender einige wesentliche Vorteile:

  • vereinfachter Bedienaufwand dank intelligenter Autovervollständigung
  • Copy-and-Paste-Funktion
  • interaktiv (direkter Zugriff) und nichtinteraktiv (Ausführung von Skripten) verwendbar
  • höhere Flexibilität, da die einzelnen Anwendungen (Tools, Befehle) nahezu frei kombinierbar sind
  • standardisierte und stabile Benutzerschnittstelle, was bei einem GUI nicht immer gewährleistet ist
  • Arbeitswege von Skripten werden automatisch dokumentiert
  • schnelle und einfache Implementierung von Anwendungen

Fazit: Wer Betriebssysteme verstehen will, sollte einen Blick auf Unix werfen

Der Aufstieg von Microsoft und Apple, der unmittelbar mit ihren Machern Bill Gates und Steve Jobs in Verbindung steht, sucht ohne Zweifel seinesgleichen. Den Grundstein für den riesigen Erfolg der beiden Multikonzerne legte jedoch die Pionierarbeit, die Dennis Ritchie, Ken Thompson und das restliche Unix-Team zwischen 1969 und 1974 leisteten. Denn Unix sollte nicht nur diverse eigene Derivate hervorbringen, sondern auch andere Betriebssysteme mit seinen Konzepten wie dem hierarchisch aufgebauten Dateisystem, der mächtigen Shell oder der hohen Portabilität beeinflussen. Um letztere umzusetzen, entwickelte man mit C quasi im Vorbeigehen die einflussreichste Programmiersprache der Computergeschichte.

Um sich die Möglichkeiten der Sprache und die allgemeine Funktionsweise von Betriebssystemen bewusst zu machen, gibt es kein besseres Anschauungsobjekt als ein Unix-System. Dabei müssen Sie nicht einmal auf eine der klassischen Varianten zurückgreifen: Linux-Distributionen wie Gentoo oder Ubuntu haben sich den modernen Ansprüchen angepasst, ohne das Grundfeature der maximalen Kontrolle über das System aufzugeben. Etwas beschränkter in ihren Möglichkeiten sind Sie bei dem einsteigerfreundlichen macOS, das den Spagat zwischen der mächtigen Unix-Basis und einer ansprechend gestalteten grafischen Oberfläche jedoch mit Bravour meistert.