Was ist ein Kernel?
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.