Frage

Ich habe gelesen, dass Linux ein monolithischer Kernel. Hat monolithischen Kernel bedeuten Kompilieren und Linken die komplette Kernel-Code in eine ausführbare Datei?

Wenn Linux Lage ist, Module zu unterstützen, warum brechen nicht alle Subsysteme in Module und sie laden, wenn nötig? In diesem Fall muss der Kernel nicht alle Module geladen werden muß zunächst und könnte einen Index der Funktionen im Modul halten und sie laden, wenn notwendig.

War es hilfreich?

Lösung

Ein monolithischer Kernel ist ein Kernel, wo alle Dienste (Dateisystem, VFS, Gerätetreiber, etc.) sowie Kernfunktionalität (Terminplanung, Speicherzuweisung, etc.) eine enge stricken Gruppe den gleichen Raum teilen. Das direkt gegenüber einem Mikro-Kernel .

Ein Mikro-Kernel bevorzugt einen Ansatz, bei der Kernfunktionalität von Systemdienste und Gerätetreiber isoliert ist (die im Grunde sind nur Systemdienste). Zum Beispiel VFS (virtuelles Dateisystem) und Block-Device-Dateisysteme (d.h. minixfs) sind getrennte Prozesse, die außerhalb des Kernels Raumes laufen, IPC Verwendung mit dem Kernel, anderen Diensten und Benutzerprozessen zu kommunizieren. Kurz gesagt, wenn es eine ist Modul in Linux, es ist ein Service in einem Mikro-Kernel, ein isoliertes Prozess anzeigt.

Sie den Begriff nicht verwechseln modular kernel alles andere als monolithisch zu sein. Einig monolithische Kernel kann seine modular zusammengestellt werden (zum Beispiel Linux), was zählt, ist, dass das Modul eingesetzt und läuft aus dem gleichen Raum, die Kernfunktionalität (Kernel-Space) behandelt.

Der Vorteil ein Mikro-Kernel ist, dass jeder ausgefallener Service kann einfach neu gestartet werden, zum Beispiel, gibt es keinen Kernel halt, wenn das Root-Dateisystem einen Abbruch führt. Dies kann auch als Nachteil gesehen werden, obwohl, weil es ziemlich kritische Fehler verbergen kann (oder sie nicht so kritisch zu machen scheinen, weil das Problem scheint ständig selbst zu beheben). Es ist, als ein großer Vorteil in Szenarien zu sehen, wo man einfach nicht bequem etwas reparieren kann, wenn es im Einsatz ist.

Der Nachteil ein Mikro-Kernel ist, dass asynchrones IPC-Messaging zum Debuggen sehr schwierig werden kann, vor allem, wenn Fibrillen implementiert. Darüber hinaus nur eine FS / Schreib Ausgabe nach unten Tracking bezeichnet den Benutzerraum Prozess der Prüfung, der Block-Device-Service, VFS-Dienst, Dateisystemdienst und (möglicherweise) der PCI-Service. Wenn Sie ein weißer Fleck auf das bekommen, seine Zeit an der IPC-Dienst zu suchen. Dies ist oft einfacher, in einem monolithischen Kernel. GNU Hurd aus diesen Debug-Problemen leidet ( Referenz ). Ich werde nicht einmal in Prüfpunkten geht bei komplexen Nachrichtenwarteschlangen zu tun. Mikrokerne sind nicht für schwache Nerven.

Der kürzeste Weg zu einem Arbeits, stabiler Kernel ist der monolithische Ansatz. Jeder Ansatz kann eine POSIX-Schnittstelle bieten, wo das Design des Kernels von geringem Interesse wird jemand einfach nur zu wünschen, Code schreiben an einem bestimmten Design ausgeführt werden.

Ich benutze Linux (monolithisch) in der Produktion. Allerdings geht die meisten meiner Lernen, Hacking oder bastelt mit Kernel-Entwicklung in einen Mikrokernel, speziell helenos .

Bearbeiten

Wenn Sie bis hierher durch meine sehr langatmig Antwort bekommen, werden Sie wahrscheinlich etwas Spaß die ‚Lesen haben Große Torvalds-Tanenbaum Debatte über Kernel-design ‘. Es ist noch witziger im Jahr 2013 zu lesen, mehr als 20 Jahre, nachdem es durchsickerte. Das Tollste war Linus' Unterschrift in einer der letzten Meldungen:

Linus "my first, and hopefully last flamefest" Torvalds

Natürlich, das nicht wahr sowenig Vorhersage Tanenbaum, dass x86 bald veraltet sein würde.

Hinweis:

Als ich „Minix“ sagen, ich implizieren Minix nicht 3. Außerdem, wenn ich Hurd erwähnen, ich bin Referenzierung (meistens) die Mach-Microkernel. Es ist nicht meine Absicht, die jüngste Arbeit anderer zu verunglimpfen.

Andere Tipps

Monolithic Kern bedeutet, daß das gesamte Betriebssystem läuft im Kernel-Modus (das heißt hoch privilegierte von der Hardware). Das heißt, läuft kein Teil des OS im Benutzermodus (unteres Privileg). Nur Anwendungen, die auf dem O läuft im User-Modus.

In nicht-monolithischen Kernel-Betriebssysteme wie Windows, ein großer Teil des OS selbst im Benutzermodus ausgeführt wird.

In jedem Fall kann das Betriebssystem sehr modular aufgebaut sein.

Wikipedia :

  

Ein monolithischer Kern ist eine Kern-Architektur, auf die das gesamte Betriebssystem wird in dem Kernel-Raum arbeiten und allein als Supervisor-Modus. Im Unterschied zu anderen Architekturen, die monolithische Kernel definiert allein eine hochrangige virtuelle Schnittstelle über Computer-Hardware, mit einem Satz von Primitiven oder System ruft alle Betriebssystemdienste wie Prozessmanagement, Gleichzeitigkeit und Speicherverwaltung selbst und einer oder mehrere zu implementieren Gerätetreiber als Module.

Neuere Versionen von Windows auf der anderen Seite verwenden, um ein Hybrid-Kernel .

  

Ein Hybrid-Kernel ist ein Kernel-Architektur basiert auf Aspekte der Mikrokernel und monolithischen Kernel-Architekturen verwendet, in Computerbetriebssystemen zu kombinieren. Die Kategorie ist umstritten wegen der Ähnlichkeit zu monolithischer Kernel; Der Begriff wurde von einigen als einfaches Marketing entlassen. Die traditionellen Kernkategorien sind monolithische Kernel und Mikrokerne (mit nanokernels und Exokernel als extremeren Versionen von Mikrokernen zu sehen).

  

;. Tl-dr - Nein, Linux ist immer monolithisch

Linux Module kann bedeuten modular in gewissem Sinne. Wie andere monolithische erwähnt haben in der Regel ist das ein Mikro-Kernel im Vergleich zu monolithisch kernel. Ein traditioneller Mikro-Kernel hat nur diese Funktionen,

  1. Planen
  2. Speicherverwaltung
  3. Inter-Prozess-Kommunikation

Es gibt keine Hardware-Treiber Protokollstapel Dateisysteme Suspend / Resume Uhr Management , usw. in dem Haupt-Kernel. Diese Dinge sind identisch für jeden Benutzer-Task (obwohl sie unterschiedliche Privilegien über die MMU / Scheduler haben kann).


Tanenbaum Vorhersagen

  1. Mikrokerne sind die Zukunft
  2. x86 aussterben und RISC-Architekturen auf den Markt
  3. dominieren
  4. (5 Jahre ab dann) jedem werden ein freies GNU OS
  5. laufen

PC- und Server-Programmierer lachen können, aber zwei und drei sind für die Mehrheit der Handy in Existenz sicherlich wahr. Tanenbaum würde auf alle Konten richtig, wenn Blackberry QNX ein Erfolg war.

Auch viele L1-Hypervisor einen Mikro-Kernel darunter. Dies liegt daran, ein Hypervisor-Regel nicht viel neben macht Kontext Schalter.

Offenbar drei prognostiziert den Erfolg von Linux. ; -)


Ein Argument für Mikrokerne ist, dass alle der monolithischen Teilsysteme mehrere Werte auf einmal synchronisieren müssen. Um dies zu tun, müssen sie Schlösser verwenden und von Amdahl Gesetz leiden wird, wenn verlängert parallel-Architekturen. Der Zähler ist, dass Mikrokerne in vielen IPC-Nachrichten führen.

Eine wichtige Entwicklung ist die Verwendung von Lock-frei Programmierung Anstoß in einem monolithischen Kernel zu vermeiden. Dies vermeidet die Verriegelung in einem monolithischen Kernel, während auch IPC-Overhead reduziert wird. Kürzlich alle CPUs wurden erweitern ihre ISA besser Primitiven für Lock-frei Algorithmen enthalten. So wahrscheinlich Linux wird ein monolithischer Kernel für einige Zeit bleiben.

‚monolithisch‘ in diesem Zusammenhang bezieht sich nicht auf eine einzige große ausführbar sind, und wie Sie sagen, es Linux unterstützt die dynamische Laden von Kernel-Module zur Laufzeit. Wenn man über Kernel sprechen ‚monolithisch‘ bedeutet, daß das gesamte Betriebssystem läuft in ‚privilegiert‘ oder ‚Supervisor‘ -Modus, im Gegensatz zu anderen Arten von Betriebssystemen, die eine Art von Kern wie beispielsweise ein ‚Mikro-Kernel‘ verwenden, wobei nur ein minimalen Satz von Funktionen läuft im privilegierten Modus, und der größte Teil des Betriebssystems läuft im Benutzerraum.

Die Befürworter der Mikrokerne sagen, dass dies besser ist, weil kleinere Code weniger Fehler bedeutet, und Fehler im Supervisor-Modus ausgeführt wird, kann viel mehr Probleme verursachen als im User-Space-Code (wie zum Beispiel eine größere Chance auf Sicherheitslücken aufweisen oder Gesamtsystemabstürze in der Form eines 'kernel panic'). Einige Mikrokerne sind ausreichend gering, dass sie ‚offiziell bestätigt‘ werden, was bedeutet, dass Sie mathematisch beweisen können, dass der Kern ist ‚richtig‘ nach einer Spezifikation. L4 ist ein gutes Beispiel dafür.

Monolithische Kernel ist ein einziger großen Prozesse vollständig in einem einzigen Adressraum ausgeführt wird. Es ist eine einzige statische Binärdatei. Alle Kernel-Dienste existieren und im Kernel-Adressraum ausgeführt werden. Der Kernel kann Funktionen direkt aufrufen. Die Beispiele von monolithischen Kernel basieren OSs sind Linux, Unix.

Ich denke, dieser Beitrag wird Ihnen helfen, mehr zu verstehen, das Konzept.

http: //learnlinuxconcepts.blogspot. in / 2014/03 / was-ist-monolithische-and-Mikro-kernels.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top