GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum ist Linux Unix-ähnlich, wenn sein Kernel monolithisch ist?

Ich glaube, die Antwort liegt darin, wie Sie "Unix-ähnlich" definieren. Gemäß dem Wikipedia-Eintrag für "Unix-like" scheint es keine Standarddefinition zu geben.1

Ein Unix-ähnliches (manchmal auch als UN*X oder *nix bezeichnetes) Betriebssystem ist eines, das sich ähnlich wie ein Unix-System verhält, aber nicht unbedingt einer Version der Single UNIX Specification entspricht oder dafür zertifiziert ist.

Es gibt keinen Standard für die Definition des Begriffs, und einige Meinungsverschiedenheiten darüber, inwieweit ein bestimmtes Betriebssystem "Unix-ähnlich" ist, sind möglich.

Der Begriff kann freie und Open-Source-Betriebssysteme umfassen, die von Unix von Bell Labs inspiriert sind oder darauf ausgelegt sind, seine Funktionen zu emulieren, kommerzielle und proprietäre Work-alikes und sogar Versionen, die auf dem lizenzierten UNIX-Quellcode basieren (der ausreichend „Unix-ähnlich“ sein kann, um die Zertifizierung zu bestehen und das Warenzeichen „UNIX“ tragen).

Der wahrscheinlich offensichtlichste Grund ist, dass UNIX und MINIX Vorläufer von Linux sind und seine Entwicklung inspiriert haben.2

Torvalds begann mit der Entwicklung des Linux-Kernels auf MINIX, und für MINIX geschriebene Anwendungen wurden auch auf Linux verwendet. Später erfolgte die Ausreifung von Linux und die Weiterentwicklung des Linux-Kernels auf Linuxsystemen.

Linus Torvalds wollte seine Erfindung Freax nennen, ein Kunstwort aus „free“, „freak“ und „x“ (als Anspielung auf Unix).

Ob ein System monolithisch oder Mikrokernel ist, scheint nicht berücksichtigt zu werden, wenn man ein Betriebssystem als "Unix-ähnlich" bezeichnet. Zumindest nicht annähernd so oft, ob das System POSIX-konform oder überwiegend POSIX-konform ist.


Der "UNIX-Weg" bezieht sich wirklich auf die Erfahrung des Benutzers. Eine kleine Gruppe von Dienstprogrammen kann kombiniert werden, um eine effektive Befehlszeile für das Betriebssystem zu erstellen. In diesem Zusammenhang sind Dienstprogramme von Betriebssystemen in keiner Weise "besonders" oder haben mehr Macht als Programme, die Sie selbst schreiben können.

Dies ist heutzutage ein schwieriger Punkt, da UNIX in diesem Aspekt so erfolgreich war, dass es die Art und Weise geworden ist, wie Betriebssysteme ihre Befehlszeilenschnittstellen darstellen sollen. Der Punkt wird am besten durch ein Gegenbeispiel veranschaulicht:So wird cp a.txt b.txt ausgeführt auf einem IBM Mainframe:

//COPY     JOB ,CLASS=E,MSGCLASS=X,NOTIFY=&SYSUID
//cp       EXEC PGM=IEBGENER
//SYSIN    DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSNAME=a.txt,DISP=SHR
//SYSUT2   DD DSNAME=b.txt,DISP=(NEW,CATLG),UNIT=SYSDA

Dadurch werden nicht einmal alle Dateitypen kopiert.

UNIX hat eine Reihe von Annahmen getroffen, die die Benutzerfreundlichkeit auf Kosten der Leistung vereinfachen. Die Dateikanäle 1 (stdin), 2 (stdout) und 3 (stderr) gehen zum und vom Terminal, wodurch ein Großteil der Boilerplate aus der obigen JCL entfernt wird. Das Dateisystem unterstützt einen Datentyp – Bytes – und einen Zugriffsmodus – sequentiell (obwohl der Zeiger, wo die sequentiellen Daten gelesen oder geschrieben werden können, bewegt werden kann, um eine Art „wahlfreien Zugriff“ zu implementieren). Das bedeutet, dass Systemdienstprogramme nur mit einem Dateityp und einem Datentyp umgehen müssen, um alle Dateien und Datentypen abzudecken. Das Dateisystem erfordert keine Vorabzuweisung. Das Hinzufügen von Dateien zum Verzeichnis (auf IBM-Mainframes auch als „Festplattenkatalog“ bezeichnet) erfolgt automatisch, wenn der Dateiname dem Betriebssystem bekannt ist.

Diese Annahmen waren so erfolgreich, dass wir heute nicht einmal mehr darüber nachdenken. Während sie zu der Zeit verschwenderisch erschienen wären -- stellen Sie sich den schieren Overhead eines Dateisystems vor, dem die maximale Größe einer Datei nicht im Voraus mitgeteilt wurde.

Aber UNIX hörte hier nicht auf. Es förderte einen "Toolbox"-Ansatz für Systemdienstprogramme. Der IEBGENER des Mainframes kann Dateien drucken, Felder innerhalb von Datensätzen neu anordnen, Datensätze löschen und leere Datensätze erstellen. Im Gegensatz dazu kopiert cp unter UNIX Dateien, cat listet Dateiinhalte auf, cut bearbeitet Felder. Es gibt eine nette Syntax, um die stdout eines Befehls mit der stdin der nächsten Datei zu verknüpfen, alles auf einer Terminalzeile. Mit dieser "Pipe"-Syntax und diesen kleinen Befehlen können wir alles tun, was IEBGENER kann. Und Dinge, von denen die Autoren von IEBGENER nie geträumt haben.

Kernighan und Plauger schrieben 1976 ein einflussreiches Buch über diesen Ansatz – Software-Tools -- und das ist wirklich die erste Darstellung des "UNIX-Wegs". Kernighan und Pike wiederholten diesen Ansatz 1984 in ihrem Buch The UNIX Programming Environment .


Linux
  1. So überprüfen Sie die Kernel-Version unter Linux

  2. Linux – Ist Linux ein Unix?

  3. Linux – Warum ist kein Rootfs-Dateisystem auf dem System vorhanden?

  4. Warum heißt der mächtigste Benutzer auf einem Unix/Linux-System „root“?

  5. Warum müssen Systemaufruftabellen in Linux geändert werden?

Ist Linux ein Betriebssystem oder ein Kernel?

Was ist POSIX? Warum ist es für Linux/UNIX-Benutzer wichtig?

Linux-Kernel und seine Funktionen

Unix- und Linux-Geschichte

Linux gegen Unix

Sind verschiedene Linux/Unix-Kernel austauschbar?