Ist macOS UNIX? (Und was bedeutet das?)

Die Frage, ob macOS ein UNIX-System oder lediglich ein Unix-ähnliches System ist, beschäftigt viele. Diese Diskussion ist nicht neu und wirft immer wieder Fragen auf. In diesem Artikel gehen wir der Sache auf den Grund und beleuchten nebenbei Standards wie POSIX und den Single UNIX Specification (SUS).

macOS: Echter UNIX-Kern oder nur verwandt?

Die Herkunft von macOS ist ein komplexes Thema. Wie viel der ursprünglichen Unix-DNA ist im heutigen System noch vorhanden und welche Rolle spielt das überhaupt? Um diese Frage zu beantworten, müssen wir uns zunächst mit der Bedeutung der Begriffe „UNIX“, „Unix“ und „Unix-ähnlich“ auseinandersetzen. Wer legt fest, was als UNIX gilt, und nach welchen Kriterien erfolgt dies?

Beginnen wir am Anfang.

Unix entstand vor etwa fünf Jahrzehnten in den Bell Labs, einem Forschungszentrum von AT&T. Im Jahr 1973, mit Version 4 von Unix, wurde das Betriebssystem in der Programmiersprache C neu geschrieben. Dies machte es portabler und einfacher auf verschiedenen Hardwareplattformen einzusetzen. Im selben Jahr präsentierten Ken Thompson und Dennis Ritchie, zwei der Hauptarchitekten von Unix, ihre Arbeit auf einer Konferenz. Die Nachfrage nach Kopien des Betriebssystems war sofort enorm.

AT&T war durch ein Einverständniserklärung aus dem Jahr 1956 gebunden, die das Unternehmen auf „die Bereitstellung von Kommunikationsdiensten“ beschränkte. Unix wurde nicht als gewinnbringendes Produkt angesehen. Daher entschied sich AT&T für einen ungewöhnlichen Schritt: Sie stellten den Quellcode von Unix mit einer liberalen Lizenz zur Verfügung. Geringe Gebühren deckten Versand und Verpackung sowie eine kleine Lizenzgebühr ab.

Die Ausbreitung von Unix-Varianten

Unix wurde „wie es ist“ bereitgestellt, ohne jeglichen Support. Infolgedessen bildete sich schnell eine Unix-Community, die sich gegenseitig unterstützte und das Betriebssystem erweiterte. Man konnte den Quellcode einsehen, ändern und bekam Hilfe von der Gemeinschaft. Das klingt bekannt. Es entstanden zahlreiche Unix-Varianten, die an die jeweiligen Bedürfnisse der Organisationen angepasst wurden.

Bob Fabry, ein Professor für Informatik an der UC Berkeley, war 1973 Mitglied des Programmkomitees des Symposiums über die Prinzipien von Betriebssystemen. Dort hörte er die Präsentation von Thompson und Ritchie über das „UNIX Time-Sharing System“.

Fabry forderte eine Kopie des Betriebssystems an. 1974 wurde Unix auf einer PDP/11 an der Computer Sciences Research Group (CSRG) der UC Berkeley installiert. Ken Thompson verbrachte ein Jahr an der Universität und arbeitete an der Entwicklung der universitätseigenen Version von Unix. Kopien der Änderungen und Erweiterungen der UC Berkeley wurden verbreitet und als Berkeley Software Distribution (BSD) bekannt. Später entstanden daraus komplette Unix-Systeme, die weiterhin unter dem Namen BSD bekannt sind. Versionsnummern wie 4.2BSD kennzeichneten die verschiedenen Versionen.

1984 wurde AT&T von den Beschränkungen der Einverständniserklärung aus dem Jahr 1956 befreit und konnte sein Betriebssystem offiziell vermarkten. Es enthielt BSD-Code wie TCP/IP, den Texteditor vi und die C-Shell, csh. Trotz dieser Zusammenarbeit und gegenseitigen Befruchtung gab es Schwierigkeiten mit der Lizenzierung. BSD enthielt AT&T-Code, der nicht Open Source war, während die BSD-Elemente es waren.

Um diese Probleme zu umgehen, wurde eine Version von BSD ohne AT&T-Code entwickelt. Durch das Entfernen des AT&T-Codes fehlten jedoch etwa 20 Prozent des Kernels. William Jolitz schrieb die fehlenden Teile neu und diese Version von Unix wurde als 386BSD veröffentlicht. Das 386BSD-Projekt geriet ins Stocken, aber seine Quellcodebasis führte 1993 zu den Projekten NetBSD und FreeBSD.

Damit haben wir einen wichtigen Teil des Puzzles: FreeBSD.

Der nächste Schritt

Nachdem er 1985 bei Apple, Inc. entlassen worden war, gründete Steve Jobs eine Firma namens NeXT, Inc. Um ein Betriebssystem für seine Workstation-Produktlinie zu entwickeln, schuf NeXT NeXTSTEP. Es nutzte BSD als Codebasis, führte aber einen völlig anderen Kernel ein.

NeXT verwendete eine modifizierte Version des Mach Mikrokernel und 4.3BSD, um NeXTSTEP zu formen, den zweiten Teil des Puzzles. Mach wurde an der Carnegie Mellon entwickelt, um die Erforschung von verteiltem und parallelem Rechnen zu vereinfachen. Das Forschungsteam verwendete BSD als Betriebssystem und ersetzte den Kernel, anstatt ein eigenes Betriebssystem zu entwickeln.

XNU

1996 kaufte Apple, Inc. NeXT, Inc. und damit auch NeXTSTEP. Apple begann mit der Entwicklung des Betriebssystems, das später zu macOS Mac OS X werden sollte. Sie aktualisierten den Mach-Kernel und ersetzten ihn durch die weiterentwickelte Version, die die Open Software Foundation entwickelt und in dem OSF/1 Betriebssystem verwendet hatte. Apple aktualisierte auch die BSD-Komponenten mit verbesserten Versionen der FreeBSD-Distribution.

Apple integrierte Elemente des BSD-Kernels wieder in den Mach-Kernel. Darüber hinaus wurde ein Hybrid-Kernel entwickelt, der die Eigenschaften beider monolithischen und Mikrokernel-Architekturen vereint.

Das E/A-Kit, das Apple auf Basis von NeXTSTEPs DriverKit entwickelte, wurde ebenfalls integriert. Dadurch war es möglich, einem Kernel Treiber hinzuzufügen, ohne ihn jedes Mal ändern zu müssen.

XNU ist der dritte Teil des Puzzles.

Die POSIX- und SUS-Standards

1996 schlossen sich zwei Normungsgremien, X/Open und die Open Software Foundation, zusammen und bildeten die The Open Group.

Die Open Group ist der Zertifizierer.