it-swarm.com.de

Was ist der Unterschied zwischen Monolith- und Mikrokernel?

Könnte jemand bitte anhand von Beispielen den Unterschied zwischen Monolith- und Mikrokern erklären? Auch andere Klassifizierungen des Kernels?

98
Renjith G

Der monolithische Kern ist ein einzelner großer Prozess, der vollständig in einem einzelnen Adressraum ausgeführt wird. Es ist eine einzelne statische Binärdatei. Alle Kernel-Services sind im Kernel-Adressraum vorhanden und werden ausgeführt. Der Kernel kann Funktionen direkt aufrufen. Beispiele für monolithische Kernel-basierte Betriebssysteme: Unix, Linux.

In Mikrokernen wird der Kernel in separate Prozesse unterteilt, die als Server bezeichnet werden. Einige Server laufen im Kernel-Space und andere im User-Space. Alle Server werden getrennt gehalten und in unterschiedlichen Adressräumen ausgeführt. Server rufen "Dienste" voneinander auf, indem sie über IPC (Interprocess Communication) Nachrichten senden. Diese Trennung hat den Vorteil, dass bei Ausfall eines Servers andere Server trotzdem effizient arbeiten können. Beispiele für Mikrokernel-basierte Betriebssysteme: Mac OS X und Windows NT.

102
sariful islam

1 ) Monolithischer Kernel ist viel älter als Microkernel, die Idee wurde Ende der 80er Jahre entwickelt.

2 ) Monolithische Kernel werden unter Unix und Linux verwendet. Mikrokerne werden in QNX, L4 und HURD verwendet. Es wurde anfangs in Mach (nicht Mac OS X) verwendet, später jedoch in einen Hybridkernel umgewandelt. Selbst Minix ist kein reiner Kernel, da Gerätetreiber als Teil des Kernels kompiliert werden.

3 ) Monolithische Kernel sind schneller als Mikrokerne. Der erste Mikrokern-Mach war 50% langsamer als der monolithische Kern, während spätere Versionen wie L4 nur 2% oder 4% langsamer waren als der monolithische Kern.

4 ) Monolithische Kerne sind im Allgemeinen sperrig. Ein reiner Mikrokernel muss klein sein, um in den L1-Cache des Prozessors zu passen (Mikrokernel der ersten Generation).

5 ) In monolithischen Kerneln befinden sich die Gerätetreiber im Kernelbereich, während sich die Gerätetreiber im Microkernel im Benutzerraum befinden.

6 ) Da sich der Gerätetreiber im Kernel-Space befindet, ist der monolithische Kern weniger sicher als der Mikrokernel, und ein Ausfall des Treibers kann zum Absturz führen. Mikrokerne sind sicherer als der monolithische Kern und werden daher in einigen militärischen Geräten verwendet.

7 ) Monolithische Kernel verwenden Signale und Sockets, um sicherzustellen, dass der IPC verwendet wird, der Mikrokernel-Ansatz verwendet Nachrichtenwarteschlangen. Mikrokerne der ersten Generation, die IPC schlecht implementiert waren, waren bei Kontextwechseln langsam.

8 ) Das Hinzufügen eines neuen Features zu einem monolithischen System bedeutet, dass der gesamte Kernel neu kompiliert wird. Mit Mikrokernen können Sie jedoch neue Features oder Patches hinzufügen, ohne dass ein Neukompilieren erforderlich ist.

61
Rahul Bhadana

Monolithischer Kernel

Alle Teile eines Kernels wie der Scheduler, das Dateisystem, die Speicherverwaltung, Netzwerkstacks, Gerätetreiber usw. werden in einer Einheit innerhalb des Kernels in Monolithic Kernel verwaltet

Vorteile

• Schnellere Bearbeitung

Nachteile

• Absturz unsicher • Portierung der Inflexibilität • Kernelgrößenexplosion

Beispiele • MS-DOS, Unix, Linux

Mikrokernel

In den Kernel werden nur die wichtigsten Komponenten wie IPC (Inter Process Communication), Basis-Scheduler, grundlegende Speicherbehandlung, grundlegende E/A-Grundfunktionen usw. eingefügt. Kommunikation erfolgt über Message Passing. Andere werden als Serverprozesse im User Space verwaltet

Vorteile

• Absturzsicher, tragbar, kleiner

Nachteile

• Langsamere Verarbeitung durch zusätzliche Nachrichtenübergabe

Beispiele • Windows NT

20
user2018144

1.Monolithischer Kern (Pure Monolithic): all

  • Alle Kernel-Services aus einer einzigen Komponente

    (-) Hinzufügen/Entfernen ist nicht möglich, weniger/null flexibel

    (+) inter Component Communication ist besser

z.B. : - Traditionelles Unix

2.Mikro-Kernel: few

  • einige Dienste (Speicherverwaltung, CPU-Verwaltung, IPC usw.) aus dem Kernkern, andere Dienste (Dateiverwaltung, E/A-Verwaltung usw.) aus verschiedenen Schichten/Komponenten

  • Split Approach [Einige Dienste befinden sich im privilegierten (Kernel) Modus und einige befinden sich im normalen (Benutzer) Modus.]

    (+) flexibel für Änderungen/Upgrades

    (-) Kommunikationsaufwand

z.B.: QNX usw.

3.Modularer Kern (Modular Monolithic): most

  • Kombination aus Mikro- und Monolithkern

  • Sammlung von Modulen - Module können -> Statisch + Dynamisch sein

  • Treiber kommen in Form von Modulen

z.B. : - Linux Modernes Betriebssystem 

13
Naman Vaishnav

Der monolithische Kernel hat alle Kernel-Services zusammen mit dem Kernel-Kernteil, ist also schwer und hat negative Auswirkungen auf Geschwindigkeit und Leistung. Auf der anderen Seite ist der Mikrokern leicht und erhöht die Leistung und Geschwindigkeit.
Ich habe dieselbe Frage auf WordPress-Site beantwortet. Für den Unterschied zwischen Monolith, Mikrokernel und Exokernel in Tabellenform können Sie hier

1
Yogesh Jilhawar

Im Spektrum der Kernel-Designs sind die beiden extremen Punkte monolithische Kernel und Mikrokerne.

Der (klassische) Linux Kernel ist beispielsweise ein monolithischer Kernel (und damit auch jedes kommerzielle OS bis heute - obwohl sie vielleicht etwas anderes behaupten können);

Sein Code ist dabei eine einzelne C-Datei, die zu einem einzigen Prozess führt, der alle oben genannten Services ausführt.
Um die Verkapselung des Linux-Kernels zu veranschaulichen, stellen wir fest, dass Der Linux-Kernel nicht einmal Zugriff auf eine der Standard-C-Bibliotheken hat . Der Linux-Kernel kann keine rudimentären C-Bibliotheksfunktionen wie .__ verwenden. .printf. Stattdessen implementiert sie eine eigene Druckfunktion (Drucke genannt) .

Diese Abgeschiedenheit des Linux-Kernels und der Selbsteinschließung verschaffen dem Linux-Kernel .__ seinen Hauptvorteil: Der Kernel befindet sich in einem einzigen Adressraum .1 Dadurch können alle Funktionen auf dem schnellsten Weg kommunizieren, ohne auf .__ zurückgreifen zu müssen. Jede Art von Message Passing . Insbesondere implementiert ein monolithischer Kernel alle Gerätetreiber des Systems.

Dies ist jedoch der Hauptnachteil eines monolithischen Kernels: Für die Einführung neuer, nicht unterstützter Hardware ist es erforderlich, den Kernkern (in den betreffenden Abschnitten) neu zu schreiben, ihn neu zu kompilieren und das gesamte Betriebssystem .__ neu zu installieren .
Noch wichtiger ist, dass bei einem Absturz eines Gerätetreibers der gesamte Kernel leidet als Ergebnis . Dieser unmodulare Ansatz für Hardware-Ergänzungen und Hardware-Abstürzeist das Hauptargument für die Unterstützung des anderen extremen Designansatzes für Kernel. Ein Mikrokernel ist in gewisser Weise ein minimalistischer Kernel, der nur die grundlegendsten OS-Dienste (wie Prozessverwaltung und Dateisystemmanagement) beherbergt. In einem Mikrokernel liegen die Gerätetreiber außerhalb des Kernels Dies ermöglicht das Hinzufügen und Entfernen von Gerätetreibern, während das Betriebssystem Läuft, und erfordern keine Änderungen des Kernels.

0
TheLogicGuy

Unterschiede zwischen Mikrokernel und monolithischem Kernel

Einige der Unterschiede zwischen Mikrokernel und monolithischem Kernel werden wie folgt angegeben

  • Der Mikrokern ist im Vergleich zum monolithischen Kern viel kleiner.
  • Der Mikrokernel ist leicht erweiterbar, während dies für den monolithischen Kernel ziemlich kompliziert ist.
  • Die Ausführung des Mikrokerns ist im Vergleich zum monolithischen Kern langsamer.
  • Zum Schreiben eines Mikrokerns wird viel mehr Code benötigt als für den monolithischen Kernel.
  • Monolithisch ist weniger sicher als die Micro-Kernel-Architektur.
  • Die monolithische Architektur bietet mehr Leistung, wenn man die Mocrokernel-Architektur berücksichtigt
  • Beispiele für Microkernel sind QNX, Symbian, L4 Linux usw. Beispiele für monolithische Kernel sind Linux, BSD usw.
0