Wikipedia · einfach zusammengefasst · Stand
Kernel (Betriebssystem)
Ein Kernel (englisch [ˈkɝːnəl], übersetzt Kern), auch Betriebssystemkern (oder verkürzt Systemkern), ist der zentrale Bestandteil eines Betriebssystems.
Inhalt5 Abschnitte
Kern des Betriebssystems
Der Kernel, auch Betriebssystemkern oder Systemkern, ist der zentrale Bestandteil eines Betriebssystems. Er legt die Prozess- und Datenorganisation fest, auf der alle weiteren Bestandteile des Betriebssystems aufbauen. Als unterste Softwareschicht hat er direkten Zugriff auf die Hardware; andere Software liegt meist in darüberliegenden Schichten.
Wichtige Anforderungen sind Multitasking, also die Verarbeitung mehrerer Aufgaben im Wechsel, das Einhalten zeitkritischer Grenzen sowie die Erweiterbarkeit für unterschiedliche Anwendungen.
Schichten und Kerneltypen
Ein Kernel kann in Schichten aufgebaut sein: Untere, maschinennahe Schichten bilden die Grundlage für höhere Schichten. Höhere Schichten dürfen Funktionen niedrigerer Schichten aufrufen, nicht aber umgekehrt.
Von unten nach oben gehören dazu die Schnittstelle zu Hardware wie Geräten, Speicher und Prozessoren, die Speicherverwaltung einschließlich möglichen virtuellen Hauptspeichers, die Prozessverwaltung beziehungsweise der Scheduler, die Geräteverwaltung und die Dateisysteme.
Bei einem monolithischen Kernel sind alle diese Funktionen im Kernel integriert. Ein Mikrokernel verlagert wesentliche Teile in getrennte Prozesse. Ein Hybridkernel ist eine Zwischenform: Ein Teil der Funktionen bleibt im Kernel, der Rest ist ausgelagert. Exokernel teilen nur die Hardware zwischen Prozessen auf; weitere Aufgaben übernehmen die Prozesse selbst. Sie werden selten eingesetzt.
Der Kernel läuft im Kernel-Mode, ebenso Gerätetreiber und andere hardwarenahe Anwendungen. Kernel und Kernel-Mode sind jedoch nicht dasselbe: Unter Windows NT laufen neben dem Kernel ntoskrnl.exe beispielsweise auch die Hardware Abstraction Layer hal.dll im Kernel-Mode.
Aufgaben und Ressourcenschutz
Der Kernel stellt Anwenderprogrammen eine Schnittstelle bereit, etwa zum Starten und Beenden, für Ein- und Ausgabe sowie für Speicherzugriffe. Er kontrolliert den Zugriff auf Prozessor, Geräte und Speicher; dazu gehören Scheduler, Gerätetreiber und Speicherschutz. Möglichst soll nur der Kernel direkt auf diese Ressourcen zugreifen.
Er verteilt Ressourcen, beispielsweise Prozessorzeit oder Prozessoren, auf Anwenderprogramme. Außerdem strukturiert er Ressourcen: Dateisysteme werden auf blockorientierte Geräte wie Festplattenlaufwerke abgebildet, ein Netzwerkstack auf Netzwerkkarten.
Der Kernel löst Zugriffskonflikte, etwa durch Verriegelungen in Mehrprozessorsystemen oder Warteschlangen bei knappen Ressourcen. Er virtualisiert Ressourcen: Prozessoren erscheinen als Prozesse, Festplatten als Dateien, Netzwerkkarten beispielsweise als Sockets, Speicher als virtueller Speicher und Geräte als Spezialdateien. In Mehrbenutzersystemen überwacht er auch Zugriffsrechte auf Dateien und Geräte.
Prozesse und Mehrbenutzersysteme
Ein Prozess oder Task enthält mindestens einen Registersatz des Prozessors. Der Scheduler kann ihn anhalten und wieder starten. Prozesse erhalten kontrollierten Zugriff auf einen Teil des Speichers sowie auf Ein- und Ausgabekanäle für Dateien oder Geräte. Sie kommunizieren mit dem Kernel über Systemaufrufe. Ein Programm läuft normalerweise in genau einem, ausnahmsweise in mehreren Prozessen; auch Systemdienste können in Prozessen laufen.
Können auf einem Kernel mehrere Prozesse gleichzeitig laufen, handelt es sich um einen Multitasking-Kernel. Tatsächlich bearbeitet eine CPU normalerweise nur einen Prozess zur selben Zeit, außer bei Mehrkernsystemen; der Scheduler organisiert den Wechsel.
Ergänzt eine Zugriffsverwaltung für Prozesse und Geräte Multitasking, entsteht ein Multiuser- oder Mehrbenutzersystem. Mehrere Benutzer können gleichzeitig arbeiten, müssen sich authentifizieren und besitzen jeweils Prozesse mit eingeschränkten Rechten. Der Kernel trennt Prozesse und damit Benutzer voneinander. Auch heutige Desktopsysteme sind meist mehrbenutzerfähig: Neben dem direkt arbeitenden Nutzer können andere Nutzer Programme von anderen Rechnern ausführen; Systemdienste laufen zudem unter anonymen Benutzern. Eigene, eingeschränkte Rechte für Dienste und Benutzer erhöhen die Systemsicherheit.
Start des Kernels
Beim Booten wird der Kernel nach einem möglichen Hardwarecheck und einer teilweisen Geräteinitialisierung durch einen Bootloader in den Speicher geladen und gestartet. Danach initialisiert der Kernel die Geräte vollständig und startet einen weiteren Prozess.
Bei MS-DOS ist dies ein Kommandozeileninterpreter. Komplexere Betriebssysteme starten eine bestimmte Anwendung. Auf unixoiden Systemen ist es normalerweise init, das alle Systemdienste lädt und gegebenenfalls nach einem Login eine grafische Benutzeroberfläche startet.