Was ist ein Kernel?

Aus xinux.net
Zur Navigation springen Zur Suche springen

Grundlegendes

  • Der Kernel eines Betriebssystems bildet die hardwareabstrahierende Schicht
  • Er stellt auf dieser Basis der aufsetzenden Software eine einheitliche Schnittstelle (API) zur Verfügung.
  • Diese agiert unabhängig von der Rechnerarchitektur.
  • Die Software kann so immer auf die Schnittstelle zugreifen und braucht die Hardware nicht genauer zu kennen.
  • Linux ist dabei ein modularer monolithischer Kernel.
  • Der Kernel ist so etwas wie ein Vermittler zwischen Anwendungsprogrammen und Hardware.
  • Die Aufgaben sind Speicherverwaltung, Prozessverwaltung, Multitasking, Lastverteilung, Durchsetzung der Berechtigungen und Eingabe/Ausgabe-Operationen auf verschiedenen Geräten.
  • Der Kernel wird beim Systemstart in den Speicher geladen und verbleibt dort während der ganzen Zeit.
  • Der Kern selbst hat keine Anwendungsprogramme, Bibiotheken oder Sytemsoftware.

Schaubild

  • Die Anwendungsprogramme greifen nicht direkt auf die Hardware zu.
  • Sie rufen Kernel System Calls auf und diese machen dann die wirklichen Aktionen.
  • Der Kernel kann aber auch Aufrufe verweigern.

Kernel und Module

  • Ein Kernel Modul ist mit einem Treiber vergleichbar.
  • Er wird geladen und bildet eine Einheit mit dem Kernel.

Kernelarten

Monolithischer Kernel

  • Funktionen zu Speicher- und Prozessverwaltung und zur Kommunikation zwischen den Prozessen, Treiber sind direkt eingebaut
  • Für die Treiber werden keine zusätzlichen Programme benötigt – ein Geschwindigkeitsvorteil gegenüber einem Mikrokernel.

Mikrokernel

  • Auch µ-Kernel oder Mikrokern, ist ein Betriebssystemkern, der im Gegensatz zu einem monolithischen Kernel nur grundlegende Funktionen erfüllt.
  • In der Regel sind dies Speicher- und Prozessverwaltung, sowie Grundfunktionen zur Synchronisation und Kommunikation.
  • Alle weiteren Funktionen werden als eigene Prozesse (Server), die mit den nachfragenden Programmen (Client) kommunizieren
  • Diese laufen im User-Space
  • Oder sie werden als Programmbibliothek, welche von den nachfragenden Programmen eingebunden wird, im Benutzer-Modus implementiert.

Hybridkernel

  • Ein Hybridkernel (oder auch Makrokernel) ist ein Kompromiss zwischen einem Microkernel und einem monolithischen Kernel.
  • Es werdenaus Geschwindigkeitsgründen einige Teile von monolithischen Kerneln in den Kern integriert und ist deswegen kein reiner Mikrokernel mehr.
  • Er besitzt aber noch nicht genügend Funktionen um als monolithischer Kernel zu gelten.

Kernelarten.png