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

Hauptunterschiede zwischen Linux und UNIX-Kernel

UNIX gilt als Mutter der meisten Betriebssysteme. Zu den beliebten Mitgliedern dieser Familie gehören:

  • System V Release 4 (SVR4), entwickelt von AT&T.
  • 4.4 BSD von der University of California
  • AIX von IBM.
  • HP-UX von Hewlett-Packard.
  • Solaris von Sun Microsystems.


Linux ist ein relativ neues Mitglied dieser Familie. Linux wurde ursprünglich 1991 von Linus Torvalds für IBM-kompatible PCs geschrieben. Als Betriebssystem hat GNU Linux in den letzten 20 Jahren großen Erfolg und Popularität erfahren, wobei die meisten kommerziellen Server jetzt GNU Linux verwenden. Um die Popularität noch zu steigern, haben Endbenutzer heutzutage auch begonnen, Linux zu verwenden, wobei die meisten bekannten Laptop- und PC-Hersteller GNU Linux als pro installiertes Betriebssystem anbieten.

Für diejenigen, die immer noch verwirrt sind, ob Linux ein Betriebssystem oder ein Kernel ist, Linux im eigentlichen Sinne, wie es von Linus geschrieben wurde, war ein Kernel, der unter Bezugnahme auf das Buch über Unix-Interna geschrieben wurde (obwohl der Linux-Kernel gute Eigenschaften von vielen anderen Unix-ähnlichen Kerneln übernommen hat auch), während die im Handel erhältlichen Distributionen, die Dienstprogramme wie grafische Desktops, Texteditoren, Compiler usw. zusätzlich zum Linux-Kernel enthalten, vollständige Betriebssysteme sind.

Obwohl der Linux-Kernel die meisten seiner Funktionen von Unix/Unix-ähnlichen Kerneln entlehnt, gibt es dennoch viele Punkte, in denen sich die beiden Kernel-Typen erheblich unterscheiden. In diesem Artikel wird das Hauptaugenmerk auf diesen Unterschieden liegen. Die Liste ist nicht vollständig, enthält aber die wichtigsten Unterschiede.

1. Monolithischer vs. Mikrokern-Ansatz

Monolithische Kernel sind solche, bei denen der gesamte Kernel-Code als ein einziger Prozess ausgeführt wird, während Mikrokernel-Kernel diejenigen sind, bei denen der Kern eines Kernels (der die verschiedenen Teile des Betriebssystems steuert) in einem Prozess ausgeführt wird, während andere Dienste wie Gerätetreiber usw. als unterschiedlich ausgeführt werden Prozesse. Linux folgt einem monolithischen Ansatz, während es einige Ausnahmen in Unix-ähnlichen Kerneln gibt, die dem Micro-Kernel-Ansatz folgen.

2. Funktionen zum Kernel hinzufügen/entfernen

Während traditionelle Unix/Unix-ähnliche Systeme das statische Linken neuer Module erfordern, die hinzugefügt werden, unterstützt Linux eine leistungsstarke Funktion, bei der Kernel-Komponenten wie Gerätetreiber usw. dynamisch geladen und entladen werden können. Diese Funktion ist als ladbare Kernelmodule (LKM) bekannt. Jede neue Komponente kann als LKM zum Kernel hinzugefügt/entfernt werden. Das bedeutet, dass nicht der gesamte Kernel neu kompiliert werden muss. Auch wenn eine Komponente nicht benötigt wird, kann sie einfach entladen werden. Diese Funktion macht den Linux-Kernel sehr flexibel.

3. Kernel-Threading

Viele Unix-ähnliche Kernel sind als eine Reihe von Kernel-Threads organisiert. Ein Kernel-Thread kann als unabhängiger Ausführungsablauf betrachtet werden. Ein Kernel-Thread kann einen Benutzerprozess oder Kernel-Code ausführen. Die Grundidee besteht darin, Kontextwechsel zwischen den Kernel-Threads durchzuführen, was weniger kostspielig ist als Kontextwechsel zwischen Prozessen, da Threads im selben Adressraum arbeiten. Während viele Unix-ähnliche Betriebssysteme Kernel-Threads zum Wechseln des Prozesskontexts verwenden, verwendet Linux Kernel-Threads nur, um regelmäßig Kernel-Code auszuführen.

4. Unterstützung von Multithreading-Anwendungen

Fast alle modernen Betriebssysteme, seien es Unix-ähnliche oder Linux-Distributionen, unterstützen Multithreading. Eine Multithread-Anwendung ist eine Anwendung, die mehr als einen Ausführungsfluss erzeugt. Diese unabhängigen Ausführungsabläufe werden als Threads bezeichnet. Threads sind leichte Prozesse. In den meisten Unix-ähnlichen Systemen basieren leichte Prozesse auf Kernel-Threads, während diese LWP unter Linux durch einen Aufruf der Funktion clone () erstellt werden, wodurch die Anwendung einen separaten Prozess wie Fork () erstellen kann, aber mit dem Unterschied dass mit clone() der neu generierte Prozess seinen physischen Speicher, geöffnete Dateien, Adressraum usw. teilen kann. Da diese neu erstellten Prozesse in einer gemeinsam genutzten Umgebung arbeiten, erhalten sie einen anderen Namen "Threads". Wir sehen also, dass sich Linux und Unix/Unix-Like darin unterscheiden, wie Multithread-Umgebungen intern gehandhabt werden.

5. STREAM

Das Streams-E/A-Subsystem ist in den meisten Unix-Kernels enthalten und ist zu einer bevorzugten Schnittstelle zum Schreiben von Gerätetreibern, Terminaltreibern usw. geworden. Andererseits gibt es unter Linux nichts Vergleichbares zu Streams.

6. Preemptive vs. nicht-preemptive Kernel

Preemptive Kernel sind die Kernel, die den aktuell ausgeführten Prozess unterbrechen können. Dies bedeutet, dass ein aktuell ausgeführter Prozess zwangsweise unterbrochen werden kann, wenn ein Prozess mit höherer Priorität zur Ausführung bereit ist. Andererseits sind nicht präemptive Kernel solche, bei denen ein laufender Prozess nicht zwangsweise unterbrochen werden kann, selbst wenn ein Prozess mit höherer Priorität zur Ausführung bereit ist. Normalerweise sind Linux-Betriebssysteme nicht präemptiv, während einige der Unix-Systeme wie Solaris 2.x usw. vollständig präemptiv sind. Normalerweise haben Echtzeit-Betriebssysteme vollständig präventive Kernel. Heutzutage haben wir Linux-Echtzeit-Betriebssysteme mit vollständig präventiven Kerneln.

Wir sehen also, dass Linux zwar aus der Grundidee von Unix geboren wurde, sich aber dennoch in vielerlei Hinsicht von Unix/Unix-ähnlichen Kerneln unterscheidet. Trotz dieser Unterschiede erbt Linux immer noch viel von Unix und wird immer noch als Mitglied der Unix-Kernel-Familie betrachtet.


Linux
  1. Linux – Ist Linux ein Unix?

  2. Linux – Kernel:Namespaces-Unterstützung?

  3. Linux – Kernel-IP-Weiterleitung?

  4. Linux – Sind verschiedene Linux/Unix-Kernel austauschbar?

  5. Linux-/UNIX-Betriebssystemdienst:autofs

Linux-Kernel vs. Mac-Kernel

mkdir-Befehl unter Linux/Unix

Linux gegen Unix

Grep-Befehl unter Linux/UNIX

ls-Befehl unter Linux/UNIX

cp-Befehl unter Linux/UNIX