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 :
Der UNIX 03-Produktstandard ist das Zeichen für Systeme, die der Version 3 der Single UNIX Specification entsprechen. Es handelt sich um eine erheblich verbesserte Version des UNIX 98-Produktstandards. Die obligatorischen Verbesserungen umfassen die Anpassung an die Programmiersprache ISO / IEC 9989: 1999 C, IEEE Std 1003.1-2001 und ISO / IEC 9945: 2002. Diese Produktnorm enthält die folgenden verbindlichen Produktnormen: Internationalisierte Systemaufrufe und Bibliotheken Extended V3, Befehle und Dienstprogramme V4, C Language V2 und Internationalisierte Terminalschnittstellen.
UNIX98 :
Der UNIX 98-Produktstandard ist eine erheblich erweiterte Version des UNIX 95-Produktstandards. Die obligatorischen Verbesserungen umfassen (1) Threads-Schnittstellen, (2) Multibyte Support Extension (MSE), (3) Large File Support, (4) Dynamic Linking, (5) Änderungen, um Abhängigkeiten oder Einschränkungen der Hardwaredatenlänge zu entfernen, und (6 ) Änderungen im Jahr 2000. Darüber hinaus sind die folgenden optionalen Erweiterungen enthalten: Softwareverwaltungsfunktionen und eine Reihe von APIs für die Echtzeitunterstützung. Diese Produktnorm enthält die folgenden verbindlichen Produktnormen: Internationalisierte Systemaufrufe und Bibliotheken Extended V2, Befehle und Dienstprogramme V3, Sprache C, Transport Service (XTI) V2, Sockets V2 und Internationalisierte Terminalschnittstellen. Darüber hinaus entspricht es möglicherweise auch dem Produktstandard für die Softwareverwaltung.
UNIX95 (mein Schwerpunkt):
Diese Produktnorm definiert eine konsolidierte Plattform für die Unterstützung einer Vielzahl von Anwendungen, die ursprünglich für eines der Betriebssystemklassen entwickelt wurden, die sich zusätzlich zu den bereitgestellten Funktionen aus dem UNIX-Betriebssystemcode und / oder den ursprünglich von AT & T entwickelten Schnittstellen ableiten nach dem Basisproduktstandard. Es hat einen größeren Anwendungsbereich als Base. Diese Produktnorm enthält die folgenden Produktnormen: Erweiterte internationalisierte Systemaufrufe und Bibliotheken, Befehle und Dienstprogramme V2, Sprache C, Transportdienst (XTI), Sockets und internationalisierte Terminalschnittstellen.
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:
Sie [Anwendungssubsysteme und -programme] verwenden jedoch alle Dienste auf niedrigerer Ebene, die letztendlich vom Kernel bereitgestellt werden, und sie greifen über die Reihe von Systemaufrufen auf diese Dienste zu. Es gibt ungefähr 64 Systemaufrufe in System V, von denen weniger als 32 häufig verwendet werden. Sie verfügen über einfache Optionen, die ihre Verwendung vereinfachen, dem Benutzer jedoch viel Leistung bieten. Die Menge der Systemaufrufe und die internen Algorithmen, die sie implementieren, bilden den Kernel-Body [...]
Die beiden Hauptkomponenten sind das Datei-Subsystem und das Prozess-Subsystem.
Dateien werden in Dateisystemen organisiert, die als logische Einheiten behandelt werden. Ein physisches Gerät wie eine Festplatte kann mehrere logische Geräte (Dateisysteme) enthalten. Jedes Dateisystem verfügt über einen Superblock, der die Struktur und den Inhalt des Dateisystems beschreibt, und jede Datei in einem Dateisystem wird durch einen Inode beschrieben, der die Attribute der Datei angibt. Systemaufrufe, die Dateien manipulieren, tun dies über Inodes. [und der Pufferpool]
[...] Es gibt zwei Versionen des Inodes: die Datenträgerkopie, die die Inode-Informationen speichert, wenn die Datei nicht verwendet wird, und die Incore-Kopie, die Informationen zu aktiven Dateien aufzeichnet.
Die Ausführung von Benutzerprozessen auf UNIX-Systemen ist in zwei Ebenen unterteilt: Benutzer und Kernel. Wenn ein Prozess einen Systemaufruf ausführt, wechselt der Ausführungsmodus des Prozesses vom Benutzermodus in den Kernelmodus : Das Betriebssystem wird ausgeführt und versucht, die Benutzeranforderung zu bearbeiten. [...]
Die Philosophie des UNIX-Systems besteht darin, Betriebssystemprimitive bereitzustellen, mit denen Benutzer kleine, modulare Programme schreiben können, die als Bausteine für die Erstellung komplexerer Programme verwendet werden können. Ein solches für Shell-Benutzer sichtbares Grundelement ist die Fähigkeit, E / A umzuleiten .
[...] Zusätzlich zur Bearbeitung von Systemaufrufen führt der Kernel die allgemeine Buchhaltung für die Benutzergemeinschaft durch, steuert die Prozessplanung, verwaltet die Speicherung und den Schutz von Prozessen im Hauptspeicher, fängt Interrupts auf, verwaltet Dateien und Geräte und kümmert sich um Systemfehler Bedingungen.
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.