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

Linux – Wie unterscheidet sich der Linux-Kernel von Mikrokernel-Architekturen?

Ich habe einmal gelesen, dass ein Vorteil einer Mikrokernel-Architektur darin besteht, dass Sie wichtige Dienste wie Netzwerke und Dateisysteme stoppen / starten können, ohne das gesamte System neu starten zu müssen. Aber wenn man bedenkt, dass der Linux-Kernel heutzutage (war das schon immer so?) die Möglichkeit bietet, Module zu verwenden, um den gleichen Effekt zu erzielen, was sind die (verbleibenden) Vorteile eines Mikrokernels?

Akzeptierte Antwort:

Mikrokernel benötigen weniger Code, um im innersten, vertrauenswürdigsten Modus ausgeführt zu werden, als monolithische Kernel. Dies hat viele Aspekte, wie zum Beispiel:

  • Mikrokerne ermöglichen das beliebige Laden und Entladen nicht grundlegender Funktionen (z. B. Treiber für Hardware, die nicht angeschlossen oder nicht verwendet wird). Dies ist unter Linux meistens durch Module erreichbar.
  • Mikrokerne sind robuster:Wenn eine Nicht-Kernel-Komponente abstürzt, wird nicht das gesamte System mitgenommen. Ein fehlerhaftes Dateisystem oder ein fehlerhafter Gerätetreiber kann ein Linux-System zum Absturz bringen. Linux hat keine Möglichkeit, diese Probleme zu mindern, außer Programmierpraktiken und Tests.
  • Mikrokerne haben eine kleinere vertrauenswürdige Rechenbasis. Daher kann nicht einmal ein bösartiger Gerätetreiber oder Dateisystem die Kontrolle über das gesamte System übernehmen (z. B. könnte ein Treiber zweifelhafter Herkunft für Ihr neuestes USB-Gerät Ihre Festplatte nicht lesen).
  • Eine Konsequenz aus dem vorherigen Punkt ist, dass normale Benutzer ihre eigenen Komponenten laden können, die Kernelkomponenten in einem monolithischen Kernel wären.

Unix-GUIs werden über X Window bereitgestellt, das Userland-Code ist (mit Ausnahme (eines Teils) des Videogerätetreibers). Viele moderne Unices ermöglichen es normalen Benutzern, Dateisystemtreiber über FUSE zu laden. Ein Teil der Linux-Netzwerkpaketfilterung kann im Userland durchgeführt werden. Gerätetreiber, Scheduler, Speichermanager und die meisten Netzwerkprotokolle sind jedoch immer noch Kernel-only.

Eine klassische (wenn auch veraltete) Lektüre über Linux und Mikrokernel ist die Tanenbaum-Torvalds-Debatte. Zwanzig Jahre später könnte man sagen, dass sich Linux sehr, sehr langsam in Richtung einer Mikrokernel-Struktur bewegt (ladbare Module erschienen früh, FUSE ist jünger), aber es ist noch ein langer Weg zu gehen.

Eine andere Sache, die sich geändert hat, ist die gestiegene Relevanz der Virtualisierung auf Desktop- und High-End-Embedded-Computern:Für einige Zwecke ist die relevante Unterscheidung nicht zwischen Kernel und Userland, sondern zwischen Hypervisor und den Gastbetriebssystemen.

Verwandte:Wie kann man die automatische Vervollständigung von Bash anpassen, um die Dateien in einem anderen Verzeichnis aufzulisten?
Linux
  1. So aktualisieren Sie den Kernel auf dem Linux-Desktop

  2. Linux – Wie lädt man ein Kernel-Modul richtig neu?

  3. Wie vergleicht sich die Befehlszeile von Mac mit Linux?

  4. Wie kann ein Linux-Kernel so klein sein?

  5. Wie überprüfe ich, ob KPTI unter Linux aktiviert ist?

So vergleichen Sie Verzeichnisse mit Meld unter Linux

So vergleichen Sie zwei Dateien im Linux-Terminal

So erstellen Sie einen Linux-Kernel von Grund auf neu

Wie funktioniert Swap-Speicher in Linux?

Wie führt Docker einen Linux-Kernel unter einem macOS-Host aus?

Wie lädt Linux das 'initrd'-Image?