Was ist der Kernel im Betriebssystem und was sind die verschiedenen Arten von Kernel?

Was ist ein Kernel in einem Betriebssystem und was sind die verschiedenen Arten von Kernel?

Ein Kernel ist ein Computerprogramm, das das Herz und den Kern eines Betriebssystems darstellt. Da das Betriebssystem also die Kontrolle über das System hat, hat der Kernel auch die Kontrolle über alles im System. Er ist der wichtigste Teil eines Betriebssystems. Immer wenn ein System gestartet wird, ist der Kernel das erste Programm, das nach dem Bootloader geladen wird, da der Kernel für das Betriebssystem die restlichen Dinge des Systems erledigen muss. Der Kernel verbleibt im Speicher, bis das Betriebssystem heruntergefahren wird.

Der Kernel ist für Low-Level-Aufgaben wie Festplattenverwaltung, Speicherverwaltung, Task-Management usw. zuständig. Er stellt eine Schnittstelle zwischen dem Benutzer und den Hardwarekomponenten des Systems dar. Wenn ein Prozess eine Anfrage an den Kernel stellt, wird dies als Systemaufruf bezeichnet.

Ein Kernel verfügt über einen geschützten Kernel Space, der ein separater Speicherbereich ist, auf den andere Anwendungsprogramme nicht zugreifen können. Daher wird der Code des Kernels in diesen geschützten Kernel Space geladen. Daneben wird der von anderen Anwendungen genutzte Speicher als User Space bezeichnet. Da es sich um zwei verschiedene Bereiche im Speicher handelt, ist die Kommunikation zwischen ihnen etwas langsamer.

Funktionen eines Kernels

Nachfolgend sind die Funktionen eines Kernels aufgeführt:

  • Zugriff auf Computerressourcen: Ein Kernel kann auf verschiedene Computerressourcen wie die CPU, E/A-Geräte und andere Ressourcen zugreifen. Er fungiert als Brücke zwischen dem Benutzer und den Ressourcen des Systems.
  • Ressourcenverwaltung: Es ist die Aufgabe eines Kernels, die Ressourcen zwischen verschiedenen Prozessen so aufzuteilen, dass jeder Prozess einen einheitlichen Zugriff auf die Ressourcen hat.
  • Speicherverwaltung: Jeder Prozess benötigt etwas Speicherplatz. Daher muss für seine Ausführung Speicher zugewiesen und freigegeben werden. All diese Speicherverwaltung wird von einem Kernel durchgeführt.
  • Gerätemanagement: Die im System angeschlossenen Peripheriegeräte werden von den Prozessen genutzt. Daher wird die Zuordnung dieser Geräte vom Kernel verwaltet.

Kernelmodus und Benutzermodus

Es gibt bestimmte Anweisungen, die nur vom Kernel ausgeführt werden müssen. Die CPU führt diese Befehle also nur im Kernel-Modus aus. Zum Beispiel sollte die Speicherverwaltung nur im Kernel-Mode durchgeführt werden. Während im User-Mode die CPU die Prozesse ausführt, die vom Benutzer im User-Space vorgegeben werden.

Typen von Kernel

Im Allgemeinen gibt es fünf Arten von Kernel. Sie sind:

1. Monolithische Kernel

Monolithische Kernel sind solche Kernel, bei denen die Benutzerdienste und die Kernel-Dienste im gleichen Speicherbereich implementiert sind, d.h. unterschiedlicher Speicher für Benutzerdienste und Kernel-Dienste wird in diesem Fall nicht verwendet. Dadurch wird die Größe des Kernels erhöht, was wiederum die Größe des Betriebssystems erhöht. Da es keinen getrennten User Space und Kernel Space gibt, ist die Ausführung des Prozesses in monolithischen Kerneln schneller.

Vorteile:

  • Es bietet CPU-Scheduling, Speicher-Scheduling, Dateiverwaltung nur durch Systemaufrufe.
  • Die Ausführung des Prozesses ist schnell, da es keinen getrennten Speicherbereich für User und Kernel gibt.

Nachteile:

  • Fällt ein Dienst aus, führt dies zum Systemausfall.
  • Wenn neue Dienste hinzugefügt werden sollen, muss das gesamte Betriebssystem geändert werden.

2. Mikrokernel

Ein Mikrokernel unterscheidet sich von einem monolithischen Kernel, weil in einem Mikrokernel die Benutzerdienste und die Kernel-Dienste in verschiedenen Bereichen implementiert sind, d.h. wir verwenden im Falle eines Mikrokernels User Space und Kernel Space. Da wir User Space und Kernel Space separat verwenden, wird die Größe des Kernels reduziert und dies wiederum reduziert die Größe des Betriebssystems.

Da wir verschiedene Spaces für User Services und Kernel Service verwenden, wird die Kommunikation zwischen Anwendung und Services mit Hilfe von Message Parsing durchgeführt und dies wiederum reduziert die Geschwindigkeit der Ausführung.

Vorteile:

  • Wenn neue Dienste hinzugefügt werden sollen, können diese leicht hinzugefügt werden.

Nachteile:

  • Da wir User Space und Kernel Space getrennt verwenden, kann die Kommunikation zwischen diesen die Gesamtausführungszeit reduzieren.

3. Hybrider Kernel

Ein hybrider Kernel ist eine Kombination aus monolithischem Kernel und Mikrokernel. Er macht sich die Geschwindigkeit des monolithischen Kernels und die Modularität des Mikrokernels zunutze.

Hybrid-Kernel sind Mikrokernel, die einen Teil des „nicht-essentiellen“ Codes im Kernel-Space haben, damit der Code schneller läuft als im User-Space. So werden einige Dienste wie der Netzwerkstack oder das Dateisystem im Kernel-Space ausgeführt, um den Performance-Overhead zu reduzieren, aber trotzdem läuft der Kernel-Code als Server im User-Space.

4. Nanokernel

In einem Nanokrnel ist, wie der Name schon sagt, der gesamte Code des Kernels sehr klein, d.h. der Code, der im privilegierten Modus der Hardware ausgeführt wird, ist sehr klein. Der Begriff Nanokernel wird verwendet, um einen Kernel zu beschreiben, der eine Nanosekunden-Taktauflösung unterstützt.

5. Exokernel

Exokernel ist ein Betriebssystem-Kernel, der von der MIT Parallel and the Distributed Operating Systems Group entwickelt wird. Bei dieser Art von Kernel ist der Ressourcenschutz von der Verwaltung getrennt, was wiederum dazu führt, dass man anwendungsspezifische Anpassungen vornehmen kann.

Im Exokernel besteht die Idee nicht darin, alle Abstraktionen zu implementieren. Sondern die Idee ist, so wenig Abstraktionen wie möglich zu implementieren und dabei die Abstraktion nur bei Bedarf zu verwenden. Es wird also keine Zwangsabstraktion im Exokernel geben und das ist die Eigenschaft, die ihn von einem monolithischen Kernel und Mikrokernel unterscheidet. Der Nachteil dabei ist jedoch das komplexe Design. Das Design des Exokernels ist sehr komplex.

Das war’s für diesen Blog. Ich hoffe, dieser Blog hat Ihnen gefallen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.