Ich stoße auf vielen Websites häufig auf den Begriff "Unix-like".
Es gibt keinen Standard; es ist nur so, wie es sich verhält.
Aber wenn ich einen Kernel von Grund auf neu entwickeln würde, was würde ihn dann als "unixartig" bezeichnen?
Was sind im Grunde die Dinge, die geschriebenen Code wie Unix machen?
linux
unix-philosophy
Ein Axon fehlt
quelle
quelle
Antworten:
Ich glaube, dass die meisten "Unix-ähnlichen" Betriebssysteme sehr ernsthafte Anstrengungen unternehmen, um den POSIX-Standard einzuhalten , der von der Open Group überwacht wird, die auch die Single UNIX-Spezifikation kontrolliert, die ein "echtes UNIX" definiert. Ersteres ist der Kern des Späten.
Es gibt also tatsächlich einen Standard, der die Praktikabilität von Unix-ähnlichen Betriebssystemen definiert. Schauen Sie sich die Liste der "vollständig" und "meist" kompatiblen Betriebssysteme am Ende des Wikipedia-Artikels über POSIX an.
Es gibt einige offensichtliche Gründe, warum Linux von der Single Unix Specification (SUS) möglicherweise nicht als vollständig kompatibel oder zertifizierbar eingestuft wird. Der Wikipedia-Artikel fasst die Spezifikation folgendermaßen zusammen:
Dies bezieht sich offensichtlich speziell auf viele Userland-Komponenten (wie die Shell), die einfach nicht Teil des Linux-Kernels sind. Linux.org et. al. kann den Kernel allein zertifizieren lassen - in diesem Sinne handelt es sich überhaupt nicht um ein Betriebssystem. Sie könnten natürlich versuchen, ein bestimmtes System mithilfe des Kernels zu zertifizieren, aber dies wäre angesichts des allgemeinen Verteilungsschemas bedeutungslos: Der Kernel und die Personen, die ihn verwalten, sind unabhängig von den Personen, die den Userland Core (GNU) verwalten. Sie sind unabhängig von den Leuten, die die aktuell installierten Betriebssystemdistributionen (Debian, Fedora usw.) verwalten.
Ich nehme an, Debian oder Fedora könnten sich selbst am Zertifizierungsprozess beteiligen (z. B. könnte RedHat Enterprise zu einem "zertifizierten Unix" werden), aber dies wirft die Frage auf, ob dies tatsächlich wünschenswert ist. Ich gehe davon aus, dass der Hauptgrund für SUS-Systeme darin besteht, für solche Systeme geschriebene Software (im kommerziellen Maßstab, nicht für Endverbraucher) zu verwenden, was einfach nicht die Linux-Nische ist - Leute, die dies tun, zahlen Tausende von Dollar pro Lizenz für das Betriebssystem, einschließlich der Lose Unterstützung usw., weil sie auch Zehntausende oder Hunderttausende Dollar pro Lizenz für jede zusätzliche Software zahlen, die sie auf dem System ausführen möchten. Linux und die anderen Ausreißer haben andererseits Designziele verfolgt, die über die reine Compliance für kommerzielle Zwecke hinausgehen, und dafür gibt es verschiedene Beispiele, zhttp://en.wikipedia.org/wiki/STREAMS ):
Eine interessante Unterkunft, die den Punkt hervorhebt, dass SUS und The Open Group! = Linux,! = BSD usw.
quelle
Um die erste Antwort zu POSIX zu erweitern und zu verstehen, was "Unix-like" bedeutet, sollte man zunächst versuchen zu verstehen, was genau UNIX ist. In der Dokumentation der Open Group , der das Unix-Warenzeichen gehört, finden Sie Details zur Entwicklung der Single-UNIX-Spezifikation - hier UNIX03 :
UNIX98 :
UNIX95 (mein Schwerpunkt):
Server - Versionen des Standard Add Internet Servers und IPv6 in einigen Fällen.
Daher sehen wir natürlich den Verweis auf AT & T Bell Laboratories und die C-Sprache ist das Kernstück von UNIX: die C-Sprache, die modularen Basistools und die Shell sowie die Art und Weise, wie der Kernel, das Dateisystem und andere wichtige Betriebssystemkomponenten entworfen und implementiert wurden .
Hier wird das Buch Das Design des UNIX-Betriebssystems von Maurice J. Bach zu einer unschätzbaren Lektüre, da es sich an dieser Stelle um historische Themen handelt. Natürlich hängt dies auch mit anderen Erfindungen wie der C-Sprache zusammen. C wurde von AT & T Bell entwickelt, um Unix mit einer Sprache zu implementieren, die so schnell wie Assembler sein kann, aber auf verschiedene Hardware portierbar ist. Viele POSIX-Anwendungen sind eine Erweiterung von Standard C.
In Bezug auf den Kernel selbst finden Sie häufig ein konzeptionelles Diagramm wie dieses, um zu veranschaulichen, worum es bei einem UNIX-Kernel traditionell ging:
Hier einige Auszüge aus Herrn Bachs klassischem Buch (1986), in dem die Grundlagen des UNIX-System-V-Kernels erörtert werden:
Wenn Sie sich für die verschiedenen Implementierungen von Kerneln in Unix-ähnlichen Betriebssystemen interessieren, können Sie sich auch die FreeBSD- Implementierung (4.4BSD) oder den Mach-Kernel ansehen oder sich diesen Vergleich ihrer Funktionen ansehen .
Je mehr Sie über das Design von UNIX wissen, desto besser verstehen Sie, was in der folgenden Abbildung über die Herkunft von UNIX und seine Geschichte geschehen ist . Herr Bach spricht in seinem Buch hauptsächlich über System V, aber auch über BSD:
Es gibt mehr, als die Augen wirklich sehen. Zum Beispiel ist Mac OSX UNIX03- zertifiziert, aber sehen Sie, dass es mit einem der reinen UNIXe verbunden ist (meistens in Rot)?
Oben sehen Sie, wie BSD, GNU, Microsoft und verschiedene Personen zu diesem Universum beigetragen haben. Obwohl GNU und letztendlich Linux keine direkte Linie zu UNIX haben, sehen Sie, dass GNU eine Bemühung ist, die Tools und Software von kommerziellem UNIX, die geschlossen wurden, in der Open-Source-Welt neu zu konstruieren. Ein Blick auf die von GNU gepflegte Software gibt beispielsweise einen Eindruck von den ersten Prototypen von Apps und Bibliotheken.
Licensing Kriege spielten eine Rolle in der Entwicklung (und Stagnation manchmal) von UNIX. Sie können sofort sehen, dass UNIXe nach Lizenztypen sortiert sind - Closed vs. BSD ( BSD ermöglicht es , den Code zu Closed Source zu machen ... siehe OSX) und GPL , wodurch Linux und GNU sich in der Copyleft-Welt ergänzen können. Hier ist die klassische Karte des Linux-Kernels, die ursprünglich von Linus Torvalds entwickelt wurde. Sie zeigt auch, was ein Kernel in einem Unix-ähnlichen Betriebssystem "kann":
Dies deutet auf die Idee hin, dass ein " Kernel " -Designtyp nicht das ist, was den UNIX-Standard ausmacht oder was ein Unix-ähnliches Betriebssystem definiert. Dies wird durch die Tatsache belegt, dass viele Unix-ähnliche Betriebssysteme entweder einen monolithischen Kernel oder einen Mikrokernel haben können - monolithisch war der klassische Designtyp für UNIX. Selbst in reinen UNIX-Umgebungen verfügt HPUX über einen monolithischen Kernel, während AIX einen Mikrokernel verwendet. Bei dieser Debatte über Design geht es um Leistung und nicht um Unix-Abstammung oder Identität. Andererseits gibt es einen traditionellen konzeptionellen Ansatz für die Bereitstellung von Diensten für Software, den Umgang mit Dateisystemen usw. unter UNIX / Unix-ähnlichen Betriebssystemen.
Ich glaube, dass solche Überlegungen dem OS-Teil Ihrer Frage einen Kontext hinzufügen werden.
quelle