Im Gespräch mit Mac-Besitzern habe ich verschiedene Versionen von Mac OS X erhalten. Es ist bekannt, dass BSD Wurzeln hat, aber wie viel und wo?
Einige sagen, dass Mac OS X einen FreeBSD-Kernel hat, mit allen oben genannten Dienstprogrammen, die es zu einem Mac-spezifischen Betriebssystem machen. (Sprechen nicht über Benutzer apps hier nur alle die init
, ls
, cd
und andere. Binutils? )
Andere sagen, dass Mac OS X ein Darwin-Kernel ist, also ein reiner Mac, und dass die OS-Dienstprogramme von BSD stammen.
Wo ist die wahrheit
Antworten:
Die Geschichte von MacOS ist etwas komplizierter. Ich war in den späten 90ern sehr daran interessiert, als Mach als schnellerer Weg, ein Unix-System aufzubauen, auf der ganzen Welt bekannt 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. Es enthielt mehrere neue Innovationen wie das "Fast File System" (UFS), eingeführte Symlinks und die Sockets-API. AT & T ging eigene Wege und baute gleichzeitig System V.
In der Zwischenzeit wurde die Forschung fortgesetzt und einige Leute nahmen die Arbeit von BSD als Grundlage. An der CMU wurde der BSD-Kernel als Grundlage für das Prototyping einiger neuer Ideen verwendet: Threads, eine API zur Steuerung des virtuellen Speichersystems (über steckbare "Pager" - User Level MMAP), ein Remote Procedure Call-System auf Kernel-Ebene und die meisten Wichtig ist die Idee, einige Operationen auf Kernelebene in den Benutzerbereich zu verlagern. Dies wurde der Mach-Kernel.
Ich bin mir nicht hundertprozentig sicher, ob mmap von Mach stammt und später von BSD übernommen wurde oder ob Mach lediglich Pionierarbeit geleistet hat und BSD seine eigene mmap basierend auf den Ideen von Mach hinzugefügt hat.
Obwohl der Mach-Kernel als Mikrokernel beschrieben wurde, war er bis zur Version 2.5 lediglich ein System, das Thread-, MMAP- und Nachrichtenübermittlungsfunktionen bereitstellte, aber ein monolithischer Kernel blieb. Alle Dienste wurden im Kernelmodus ausgeführt.
Zu dieser Zeit hatten Rick Rashid (jetzt bei Microsoft) und Avie Tevanian (jetzt bei Apple) eine neue Idee, die Unix beschleunigen könnte. Die Idee war, den Systemaufruf mmap 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 Abwandlung des Versuchs, keine Kopien derselben Daten anzufertigen. Sie wurde jedoch als Vorteil von Mikrokernen bewertet, selbst wenn die Funktion von einem Mikrokern isoliert werden konnte.
Die Benchmarks dieses VM-gestützten, schnelleren Unix-Systems haben die Leute bei NeXT und bei der FSF dazu bewogen, 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 ist, was die NeXTSTEP-Betriebssysteme verwendeten.
In der Zwischenzeit wurde an Mach weitergearbeitet und schließlich die Vision verwirklicht, mehrere Server auf einem Mikrokernel mit Version 3.0 laufen zu lassen. Ich bin mir nicht bewusst, dass irgendjemand in der Wildnis Mach 3.0 ausführen kann, da alle interessanten Server auf Benutzerebene AT & T-Code verwendeten, sodass sie als überlastet galten, sodass es ein Forschungsprodukt blieb.
Um diese Zeit hatte das Jolitz-Team eine Portierung von 4.3+ BSD auf die 386-Architektur vorgenommen und ihre Portierungsbemühungen auf DrDobbs veröffentlicht. 386BSD wurde nicht aktiv gewartet und eine Gruppe entstand, um das NetBSD-Team 386BSD zu pflegen und voranzubringen. Interne Kämpfe innerhalb der NetBSD-Gruppe verursachten den ersten Split und FreeBSD wurde daraus gebildet. NetBSD wollte sich zu der Zeit auf ein plattformübergreifendes BSD konzentrieren, und FreeBSD wollte sich auf ein Unix konzentrieren, das auf x86-Plattformen hervorragend funktioniert. Ein wenig später spaltete sich NetBSD aufgrund anderer Streitigkeiten wieder und dies führte zur Schaffung von OpenBSD.
Eine Abzweigung von BSD 4.3 für x86-Plattformen wurde bei einer Firma namens BSDi kommerziell eingeführt, und verschiedene Mitglieder des ursprünglichen Berkeley-Teams arbeiteten dort und unterhielten gute Beziehungen zum BSD-Team der Universität.
AT & T war nicht amüsiert und leitete den Rechtsstreit AT & T gegen BSDi ein, der später erweitert wurde, um auch die Universität zu verklagen. In der Klage ging es darum, dass BSDi proprietären Code von AT & T verwendete, der von Berkeley nicht umgeschrieben worden war. Dies hat BSD im Vergleich zum aufstrebenden Linux-Betriebssystem beeinträchtigt.
Obwohl es für die Angeklagten nicht gut aussah, wurde irgendwann jemandem klar, dass SystemV große Teile des BSD-Codes in die BSD-Lizenz aufgenommen hatte und AT & T ihren Verpflichtungen aus der Lizenz nicht nachgekommen war. Es wurde eine Einigung erzielt, in der AT & T ihre Produkte nicht vom Markt nehmen müsste, und die Universität stimmte zu, jeden Code herauszureißen, der noch auf AT & T-Code basieren könnte.
Die Universität veröffentlichte dann zwei Versionen von BSD 4.4 und 4.4 lite. Die belastete Version würde starten und ausgeführt werden, enthielt jedoch 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 neuen Version 4.4 wieder aufgenommen und hatten innerhalb weniger Monate ein Boot-System.
In der Zwischenzeit war der Mach 3.0-Mikrokernel ohne einen der User-Land-Server nicht sehr nützlich.
Ein Student von einer skandinavischen Universität (ich glaube, das könnte falsch sein) war der erste, der ein vollständiges Mach 3.0-System mit einem vollständigen Betriebssystem auf Basis der 4.4-Lite-Version erstellte. Ich glaube, das wurde "Lites" genannt. Das System funktionierte, war aber langsam.
In den Jahren 1992-1996 hatte BSD bereits einen mmap () - Systemaufruf sowie die meisten anderen Unix-Systeme. Der "Vorteil des Mikrokerns", der nicht da war, wurde nie wirklich verwirklicht. NeXT hatte noch einen monolithischen Kernel. Die FSF versuchte immer noch, Mach zum Bauen zu bringen, und wollte weder den BSD-Code berühren noch zu den Open-Source-BSD-Bemühungen beitragen. Sie stürmten weiter auf eine schlecht spezifizierte Kernel-Vision zu und ertranken für sich selbst auf RPC-Protokollen Kernel. Der Mikrokern sah auf dem Papier großartig aus, stellte sich jedoch als überentwickelt heraus und verlangsamte einfach alles.
Zu diesem Zeitpunkt hatten wir auch die Debatte zwischen Linus und Andy über Mikrokerne und monolithische Kerne und die Welt begann zu erkennen, dass es einfach unmöglich war, alle diese zusätzlichen Zyklen zu einem Mikrokern hinzuzufügen und einem gut gestalteten monolithischen Kern immer noch einen Schritt voraus zu sein .
Apple hatte NeXTSTEP noch nicht erworben, untersuchte aber Mach als potenziellen Kernel für seine zukünftigen Betriebssysteme. Sie beauftragten die Open Software Foundation, Linux auf den Mach-Kernel zu portieren, und dies geschah von ihren Grenoble-Büros aus, ich glaube, dies hieß "mklinux".
Als Apple NeXT kaufte, war das, was sie vorhatten, eine relativ alte Unix-Stiftung, ein 4.2- oder 4.3-basiertes Unix, und bis jetzt lief auf diesen Systemen nicht einmal freie Software ohne weiteres. Sie beauftragten Jordan Hubbard von FreeBSD mit dem Upgrade ihres Unix-Stacks. Sein Team war für die Aktualisierung des Benutzerlandes verantwortlich, und es ist keine Überraschung, dass das MacOS-Benutzerland auf die neuesten BSD-Versionen aktualisiert wurde.
Apple hat irgendwann seinen Mach von 2.5 auf 3.0 umgestellt, sich aber gegen den Micro-Kernel-Ansatz entschieden und stattdessen alles im Prozess belassen. Ich konnte nie bestätigen, ob Apple Lites verwendet, den skandinavischen Hacker eingestellt oder die 4.4-Lite als Betriebssystem übernommen hat. Ich vermute, dass dies der Fall war, aber ich war bereits zu Linux übergegangen und hatte aufgehört, die BSD / Mach-Welt zu verfolgen.
Es gab ein Gerücht in den späten 90ern, dass Avie bei Apple versuchte, Linus (der zu diesem Zeitpunkt bereits berühmt war) für die Arbeit an seinem Baby zu engagieren, aber Linus entschied sich dafür, weiter an Linux zu arbeiten.
Abgesehen vom Verlauf 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:
quelle
Auf der Unix-Seite ist OS X ein Abkömmling von NeXTSTEP , das von 4.3BSD abgeleitet wurde, wobei die Kernteile des Kernels durch Mach ersetzt wurden .
Der NeXT Programmier - API, die schließlich kamen aufgerufen wird Openstep , ist die Grundlage des heutigen Cocoa - API für OS X. Zwei APIs hat stark divergierten da Apple NeXT 1997 gekauft, obwohl es laufende Bemühungen Open - Source - API-kompatibel Cocoa - Klone zu schaffen .
Fügen Sie dazu die Classic MacOS-Kompatibilitäts-API namens Carbon hinzu, und Sie haben die OS X-Programmierschnittstelle.
(Es gibt noch viel mehr zu OS X, aber dazu kommen noch Anwendungen: Finder, die BSD- und GNU-Userland-Tools usw.)
Was die FreeBSD-Kernelidee betrifft, ist sie irgendwie korrekt, aber es ist eine unkomplizierte Art, sie zu betrachten. Der ursprüngliche Kernel kam, wie gesagt, von NeXT, der seinen ersten Kernel aus 4.3BSD und Mach zusammenstellte. Dies bedeutet, dass sowohl FreeBSD als auch NeXTSTEP Code über 4.3BSD gemeinsam nutzten.
Das Meme, dass OS X auf FreeBSD basiert, enthält zwei neuere Quellen. Erstens hat Apple weiterhin Innovationen aus der BSD-Welt ausgeliehen, normalerweise von FreeBSD. Zweitens beauftragte Apple Jordan Hubbard, Mitbegründer des FreeBSD-Projekts, kurz nach der Veröffentlichung des ersten öffentlichen OS X-Releases. Er arbeitete bis Juni 2013 für Apple.
quelle
Als Sie erfuhren, dass OSX eine eigene Unix-Variante hat, waren diese technisch korrekt.
BSD + Elemente von NeXTSTEP + Apple Tweaks = DARWIN
Um es anders zu sagen. Wenn Sie nur Hot Fudge / Eis (BSD) bestellen, geben Sie Nüsse (NeXTStep) plus Schlagsahne und eine Kirsche (Apple Add-In und Tweaks) hinzu = A Hot Fudge Sundae (Darwin)
Aber BSD ist die Basis, der die anderen hinzugefügt wurden, weshalb ein Großteil von BSD in Darwin funktionieren wird (hier und da mit einem Tweak).
quelle