In Gesprächen mit Mac-Besitzern habe ich mehrere Versionen von Mac OS X erhalten. Es ist bekannt, dass es einige Wurzeln in BSD hat, aber wie viel und wo?
Einige sagen, dass Mac OS X einen FreeBSD-Kernel hat, mit all den oben genannten Dienstprogrammen, die es zu einem Mac-spezifischen Betriebssystem machen. (Ich spreche hier nicht von Benutzer-Apps, nur alle init
, ls
, cd
, und andere. binutils? )
Andere sagen, Mac OS X sei ein Darwin-Kernel, also ein reiner Mac, und die Dienstprogramme des Betriebssystems kämen von BSD.
Wo ist die Wahrheit?
Akzeptierte Antwort:
Die Geschichte von MacOS ist etwas verworrener. In den späten 90er Jahren war ich sehr daran interessiert, als Mach auf der ganzen Welt als schneller Weg zum Erstellen eines Unix-Systems angepriesen wurde.
Der Ursprung des Kernels ist etwas komplizierter.
Alles beginnt damit, dass AT&T sein Betriebssystem kostenlos an einige Universitäten verteilt. Dieses Unix wurde in Berkeley umfassend verbessert und wurde zur Grundlage für die BSD-Varianten von Unix und enthielt mehrere neue Innovationen wie das „Fast File System“ (UFS), eingeführte Symlinks und die Sockets-API. AT&T ging seinen eigenen Weg und baute gleichzeitig System V.
In der Zwischenzeit wurde die Forschung fortgesetzt und einige Leute übernahmen die Arbeit von BSD als Grundlage. Bei der CMU wurde der BSD-Kernel als Grundlage für das Prototyping einiger neuer Ideen verwendet:Threads, eine API zur Steuerung des virtuellen Speichersystems (durch steckbare „Pager“ – mmap auf Benutzerebene), ein Remote-Procedure-Call-System auf Kernel-Ebene und vieles mehr wichtig ist die Idee, einige Operationen auf Kernel-Ebene in den Benutzerbereich zu verschieben. Daraus wurde der Mach-Kernel.
Ich bin mir nicht 100 % sicher, ob mmap von Mach kam und später von BSD übernommen wurde, oder ob Mach lediglich den Weg für die Idee bereitete und BSD ihre eigene mmap basierend auf den Ideen von Mach hinzufügte.
Obwohl der Mach-Kernel als Mikrokernel beschrieben wurde, war er bis Version 2.5 lediglich ein System, das Thread-, mmap- und Message-Passing-Funktionen bereitstellte, aber ein monolithischer Kernel blieb, alle Dienste liefen im Kernel-Modus.
Zu dieser Zeit hatten Rick Rashid (jetzt bei Microsoft) und Avie Tevanian (jetzt bei Apple) eine neuartige Idee entwickelt, die Unix beschleunigen könnte. Die Idee war, den mmap-Systemaufruf zu verwenden, um Daten, die aus dem Benutzerbereich kopiert werden sollen, an die „Server“ zu übergeben, die das Dateisystem implementieren. Diese Idee war im Wesentlichen eine Variation des Versuchs, das Erstellen von Kopien derselben Daten zu vermeiden, aber sie wurde als Vorteil von Mikrokerneln angepriesen, selbst wenn die Funktion von einem Mikrokernel isoliert werden könnte.
Die Benchmarks dieses VM-gestützten schnelleren Unix-Systems haben die Leute bei NeXT und der FSF dazu veranlasst, Mach als Grundlage für ihre Kernel zu wählen.
NeXT ging mit dem Mach 2.5-Kernel (der entweder auf BSD 4.2 oder 4.3 basierte) und GNU würde jahrelang nicht mit der Arbeit beginnen. Dies wurde von den NeXTSTEP-Betriebssystemen verwendet.
In der Zwischenzeit wurde bei CMU die Arbeit an Mach fortgesetzt und sie verwirklichten schließlich die Vision, mehrere Server auf einem Mikrokernel mit Version 3.0 laufen zu lassen. Mir ist nicht bekannt, dass irgendjemand in der Wildnis Mach 3.0 ausführen könnte, da alle interessanten Server auf Benutzerebene AT&T-Code verwendeten, sodass sie als belastet galten, sodass es ein Forschungsprodukt blieb.
Ungefähr zu dieser Zeit hatte das Jolitz-Team eine Portierung von 4.3+ BSD auf die 386-Architektur durchgeführt und ihre Portierungsbemühungen auf DrDobbs veröffentlicht. 386BSD wurde nicht aktiv gepflegt und eine Gruppe entstand, um 386BSD zu pflegen und voranzubringen, das NetBSD-Team. Interne Streitereien innerhalb der NetBSD-Gruppe führten zur ersten Spaltung und daraus entstand FreeBSD. NetBSD wollte sich damals darauf konzentrieren, ein plattformübergreifendes BSD zu haben, und FreeBSD wollte sich darauf konzentrieren, ein Unix zu haben, das auf x86-Plattformen großartig funktioniert. Etwas später trennte sich NetBSD aufgrund einiger anderer Streitigkeiten erneut und dies führte zur Gründung von OpenBSD.
Verwandte:Mac – Ist es möglich, eine Apple Time Capsule nur als ein an das Netzwerk angeschlossenes Backup-Laufwerk und nicht als Router zu verwenden?Ein Fork von BSD 4.3 für x86-Plattformen wurde mit einer Firma namens BSDi kommerziell, und verschiedene Mitglieder des ursprünglichen Berkeley-Teams arbeiteten dort und pflegten gute Beziehungen zum BSD-Team der Universität.
AT&T war nicht amüsiert und begann die Klage AT&T gegen BSDi, die später erweitert wurde, um auch die Universität zu verklagen. In der Klage ging es um BSDi, das proprietären Code von AT&T verwendete, der nicht von Berkeley umgeschrieben worden war. Dies hat BSD im Vergleich zum aufstrebenden Linux-Betriebssystem zurückgeworfen.
Obwohl es für die Angeklagten nicht gut aussah, erkannte jemand irgendwann, dass SystemV große Teile des BSD-Codes unter die BSD-Lizenz eingebaut hatte und AT&T seinen Verpflichtungen aus der Lizenz nicht nachgekommen war. Es wurde eine Einigung erzielt, in der AT&T sein Produkt nicht vom Markt nehmen musste, und die Universität stimmte zu, jeden Code herauszureißen, der noch auf AT&T-Code basieren könnte.
Die Universität veröffentlichte daraufhin zwei Versionen von BSD 4.4 belastet und 4.4 lite. Die belastete Version würde booten und laufen, enthielt aber AT&T-Code. Die Lite-Version enthielt keinen Code von AT&T, funktionierte aber nicht.
Die verschiedenen BSD-Bemühungen haben ihre Arbeit auf der Grundlage der neuen Version 4.4 lite erneut ausgeführt und hatten innerhalb von Monaten ein bootfähiges System.
In der Zwischenzeit blieb der Mach 3.0-Mikrokernel ohne einen der User-Land-Server nicht sehr nützlich.
Ein Student einer skandinavischen Universität (ich glaube, ich habe das falsch verstanden) war der erste, der ein vollständiges Mach 3.0-System mit einem vollständigen Betriebssystem basierend auf der Version 4.4 lite erstellte, ich glaube, das hieß „Lites“. Das System funktionierte, war aber langsam.
In den Jahren 1992-1996 und jetzt hatte BSD bereits einen mmap()-Systemaufruf sowie die meisten anderen Unix-Systeme. Der „Mikrokern-Vorteil“, der nicht da war, kam nie wirklich zum Tragen. NeXT hatte noch einen monolithischen Kernel. Die FSF versuchte immer noch, Mach zum Bauen zu bringen, und wollte den BSD-Code nicht anfassen oder zu den Open-Source-BSD-Bemühungen beitragen, sie stürzten sich weiter auf eine schlecht spezifizierte Kernel-Vision und ertranken in RPC-Protokollen für ihre eigenen Kernel. Der Mikrokernel sah auf dem Papier großartig aus, stellte sich jedoch als überentwickelt heraus und machte alles nur langsamer.
An diesem Punkt hatten wir auch die Debatte zwischen Linus und Andy über Mikrokerne und monolithische Kernel, und die Welt begann zu erkennen, dass es einfach unmöglich war, all diese zusätzlichen Zyklen zu einem Mikrokernel hinzuzufügen und trotzdem einen gut gestalteten monolithischen Kernel zu übertreffen .
Apple hatte NeXTSTEP noch nicht erworben, begann aber auch, sich mit Mach als potenziellem Kernel für ihre zukünftigen Betriebssysteme zu befassen. Sie beauftragten die Open Software Foundation damit, Linux auf den Mach-Kernel zu portieren, und dies geschah von ihren Büros in Grenoble aus, ich glaube, das hieß „mklinux“.
Als Apple NeXT kaufte, hatten sie eine relativ alte Unix-Grundlage in der Hand, ein 4.2- oder 4.3-basiertes Unix, und inzwischen lief auf diesen Systemen nicht einmal freie Software problemlos. Sie heuerten Jordan Hubbard außerhalb von FreeBSD an, um ihren Unix-Stack zu aktualisieren. Sein Team war für die Aktualisierung des Benutzerlandes verantwortlich, und es ist keine Überraschung, dass das MacOS-Benutzerland auf die neuesten Versionen aktualisiert wurde, die auf BSD verfügbar sind.
Verwandte:Mac – Installieren von Mac OS X Mountain Lion Apple iD-Fehler?Apple hat seinen Mach irgendwann von 2.5 auf 3.0 umgestellt, sich aber gegen den Mikrokernel-Ansatz entschieden und stattdessen alles im Prozess belassen. Ich konnte nie bestätigen, ob Apple Lites verwendet, den skandinavischen Hacker engagiert oder ob sie 4.4 Lite als ihr Betriebssystem übernommen haben. Ich vermute, dass sie es taten, aber ich war bereits zu Linux übergegangen und hatte aufgehört, die BSD/Mach-Welt zu verfolgen.
In den späten 90er Jahren ging das Gerücht um, dass Avie bei Apple versuchte, Linus (der zu diesem Zeitpunkt bereits berühmt war) einzustellen, um an seinem Baby zu arbeiten, aber Linus entschied sich dafür, weiter an Linux zu arbeiten.
Abgesehen von der Geschichte beschreibt diese Seite das Userland und den Mach/Unix-Kernel:
http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDAEDC
Ich habe diese Grafik der Geschichte von OSX gefunden: