Razvan Franco Nitoi/Shutterstock
Ist macOS UNIX oder nur Unix? Oder ist es Unix-ähnlich? Wir beantworten die nicht enden wollende Debatte und erklären dabei Standards wie POSIX und SUS.
macOS: UNIX oder nicht?
Dieses Thema wirft viele verschiedene Fragen auf. Was ist die Abstammung von macOS? Wie viel von diesem Erbmaterial ist im heutigen macOS noch vorhanden und spielt es eine Rolle? Bevor wir anfangen können zu beantworten, ob etwas UNIX, Unix oder Unix-ähnlich ist, müssen wir uns mit der Bedeutung dieser Begriffe vertraut machen. Wer entscheidet, ob etwas Unix oder UNIX ist und nach welchen Kriterien?
Fangen wir am Anfang an.
Unix wurde vor fünfzig Jahren bei . erstellt Bell Labs, ein Forschungs- und Entwicklungsunternehmen im Besitz von AT&T. Schneller Vorlauf bis 1973 und Version 4 von Unix, die in der Programmiersprache C umgeschrieben wurde. Dadurch wurde das Betriebssystem viel portabler und einfacher auf verschiedene Hardwareplattformen zu übertragen. Das selbe Jahr, Ken Thompson und Dennis Ritchie, zwei der wichtigsten Unix-Architekten, haben auf einer Konferenz einen Vortrag über Betriebssysteme gehalten. Sofort erhielten sie Anfragen nach Kopien des Betriebssystems.
Gebunden durch a Zustimmungserlass die auf das Jahr 1956 zurückging, musste AT&T „jedes Geschäft außer der Bereitstellung von Kommunikationsdiensten der gemeinsamen Träger“ meiden. Unix galt nicht als etwas, von dem AT&T profitieren konnte. Also hat die Firma für diese Zeit etwas Bemerkenswertes gemacht: Unix als Quellcode mit einer liberalen Lizenz vertrieben. Kleine Gebühren deckten den Versand und die Verpackung sowie eine „angemessene Lizenzgebühr“.
Eine Verbreitung von Unixen
Da Unix „wie es ist“ bereitgestellt wurde, kam es ohne Unterstützung. Als Ergebnis begann eine Unix-Gemeinschaft zusammenzuwachsen, um Mitgliedern zu helfen und Unix zu patchen und zu erweitern. Sie können also den Quellcode abrufen, ihn ändern und Unterstützung von der Community erhalten. Das hat einen vertrauten Klang. Es erschienen verschiedene Unix-Varianten, die angepasst und optimiert wurden, um sie an die Organisation anzupassen, die die Arbeit erledigte.
Bob Fabry, ein Informatikprofessor an der UC Berkeley, war Mitglied des Programmkomitees des Symposiums über die Prinzipien von Betriebssystemen 1973. Er hörte sich eine Präsentation von Thompson und Ritchie mit dem Titel .
Fabry forderte eine Kopie des Betriebssystems an, und 1974 wurde Unix auf einem PDP/11 an der Computer Sciences Research Group (CSRG) der UC Berkeley. Bezeichnenderweise verbrachte Ken Thompson dort ein Jahr und arbeitete an dem, was schnell zum Unix-Geschmack der Universität wurde. Kopien der Änderungen und Ergänzungen der UC Berkeley wurden verteilt und wurden als Berkeley Software Distribution (BSD) bekannt. Schließlich wurden daraus Distributionen eines ganzen Unix-Systems, das immer noch als BSD bekannt ist. Versionsnummern wie 4.2BSD identifizierten die verschiedenen Releases.
1984 wurde AT&T von den Beschränkungen des Zustimmungserlasses von 1956 befreit und konnte sein Betriebssystem ordnungsgemäß vermarkten. Es enthielt BSD-Code, wie z TCP/IP, vi, und die C-Shell, csh. Trotz dieser gegenseitigen Bestäubung und Zusammenarbeit gab es Schwierigkeiten bei der Lizenzierung. BSD enthielt AT&T-Code, der nicht Open Source war, aber die BSD-Elemente waren es.
Um diese Probleme zu umgehen, wurde eine Version von BSD ohne AT&T-Code entwickelt. Als der AT&T-Code entfernt wurde, fehlten jedoch etwa 20 Prozent des Kernels. William Jolitz schrieb die fehlenden Teile, und diese Version von Unix wurde veröffentlicht als 386BSD. Das 386BSD-Projekt kam ins Stocken, aber 1993 führte seine Quellcodebasis zum NetBSD und FreeBSD Projekte.
Damit haben wir einen Teil des Puzzles: FreeBSD.
Nächster Schritt
Nachdem er 1985 von Apple, Inc. entlassen wurde, gründete Steve Jobs eine Firma namens NeXT, Inc. Um ein Betriebssystem für seine Workstation-Produktlinie bereitzustellen, entwickelte NeXT Nächster Schritt. Es verwendete BSD als Codebasis, führte aber einen völlig anderen Kernel ein.
NeXT verwendet eine modifizierte Version des Mach Mikrokernel und 4.3BSD um NeXTSTEP zu formen, den zweiten Teil dieses Puzzles. Mach wurde bei Carnegie Mellon entwickelt, um die Erforschung verteilter und paralleler Datenverarbeitung zu erleichtern. Das Forschungsteam verwendete BSD als Betriebssystem und ersetzte den Kernel, anstatt ein eigenes Betriebssystem zu schreiben.
XNU
1996 kaufte Apple, Inc. NeXT, Inc. und erwarb dadurch NeXTSTEP. Apple begann mit der Entwicklung des Betriebssystems, aus dem schließlich macOS werden sollte Mac OS X. Es aktualisierte den Mach-Kernel und ersetzte ihn durch die fortschrittlichere Version, die die Open Software Foundation entwickelt und in der verwendet hat OSF/1 Betriebssystem. Apple hat auch die BSD-Komponenten mit aktualisierten und verbesserten Versionen der FreeBSD-Distribution aktualisiert.
Apple brachte Elemente des BSD-Kernels zurück in den Mach-Kernel. Außerdem wurde ein Hybrid-Kernel entwickelt, der die Eigenschaften beider kombiniert combined monolithisch und Mikrokernel-Architekturen.
Das E/A-Kit, das Apple auf Basis von NeXTSTEPs DriverKit entwickelt hat, war ebenfalls enthalten. 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 haben zwei Normungsgremien—X/Öffnen und der Open Software Foundation—verschmolzen zu bilden Die offene Gruppe.
Die Open Group ist die Zertifizierungsstelle für die Marke UNIX. Mit anderen Worten, es muss Ihr Betriebssystem als konform mit seinen Standards abstempeln, bevor Sie es UNIX nennen können. UNIX in Großbuchstaben ist das Abzeichen der Konformität.
Die Kategorien lauten also wie folgt:
- Unix: Eine Familie von Betriebssystemen. Diese Familie umfasst sowohl UNIX-Betriebssysteme als auch Unix-ähnliche Betriebssysteme.
- UNIX Betriebssysteme: Diese wurden als normkonform zertifiziert.
- Unix-ähnlich Betriebssysteme: Diese sehen aus und funktionieren wie Unix, wurden aber nicht als konform zertifiziert.
Es ist natürlich durchaus möglich, dass morgen einige Betriebssysteme der Kategorie „Unix-like“ getestet und für konform befunden werden. Diese sind jetzt effektiv UNIX, aber sie können nur als Unix kategorisiert werden, weil sie noch keinen Stempel haben.
Es gibt zwei Standards, die UNIX zertifizieren: POSIX und Einzel-UNIX-Spezifikation (SUS). SUS ist eine Obermenge von POSIX. Etwas kann also POSIX-kompatibel sein, aber das macht es nicht zu UNIX. Wenn etwas jedoch SUS-kompatibel ist, ist es ein UNIX.
POSIX und der SUS bilden große Dokumentensammlungen (rund 3.700 Seiten). Sie definieren den Betrieb und das erwartete Verhalten jedes Aspekts eines konformen UNIX-Systems. Alles von asynchroner und synchroner E/A bis hin zur Scripting-Schnittstelle und Programmen auf Benutzerebene wird katalogisiert und definiert.
Die Standards definieren Anwendungsschnittstellen und Laufzeitverhalten, schreiben aber nicht vor wie sie umgesetzt werden.
Ist macOS UNIX?
Die Antwort muss ja sein.
Sie können seine Abstammung über FreeBSD zu BSD zurückverfolgen und von dort aus zurück zu dem von Bell Labs vertriebenen Unix vor der Erhöhung der Lizenzgebühren von AT&T.
Aber das ist egal.
Wenn Sie jetzt ein Betriebssystem von Grund auf neu schreiben, gilt es als UNIX, solange es die Anforderungen des SUS erfüllt. Und es spielt keine Rolle, wie Sie es umsetzen. Der XNU-Kernel im Herzen von macOS ist eine Hybridarchitektur. Es kombiniert Apples Code mit Teilen des Mach- und BSD-Kernels.
Aber auch das spielt keine Rolle. Wichtig ist, dass es die Anforderungen der Standards erfüllt, an denen es gemessen wird.
Der BSD-Teil des XNU-Kernels stellt die POSIX-Anwendungsprogrammierschnittstellen (wie die verschiedenen API- und BSD-Systemaufrufe) bereit. Dieses Element des BSD-Kernels innerhalb von XNU intakt zu halten, ist der Schlüssel zum Erhalt der Zertifizierung als UNIX. Es ermöglicht XNU, kompatibles und kompatibles UNIX mit dem Rest des Systems zu sprechen.
macOS ist ein UNIX 03-kompatibles Betriebssystem, das von The Open Group zertifiziert wurde. Es ist seit 2007, beginnend mit MAC OS X 10.5. Die einzige Ausnahme war Mac OS X 10.7 Lion, aber die Kompatibilität wurde mit OS X 10.8 Mountain Lion wiederhergestellt.
Amüsanterweise steht GNU für «GNU’s Not Unix». XNU steht für „X ist nicht Unix“.“