Kernel – Aufgaben, Funktionsweise und Arten
Jeder, der mit einem Betriebssystem arbeitet, arbeitet auch mit einem Kernel. In der Regel ohne es zu bemerken. Denn der Kernel überwacht die Prozess- und Datenorganisation eines jeden Rechners im Hintergrund. Ohne ihn läuft praktisch nichts.
Ein Kernel ist buchstäblich der Kern eines Betriebssystems und damit die Schnittstelle zwischen Software und Hardware. Damit wird er dauerhaft gebraucht, ist ständig im Einsatz oder kurzum: Er ist der zentrale Bestandteil eines Betriebssystems.
Er ist aber nicht nur der Systemkern, sondern auch ein Programm und steuert damit alle Prozessor- und Speicherzugriffe, ist zuständig für die wichtigsten Treiber und kann direkt auf die Hardware zugreifen. Ein Kernel ist Grundlage für das Zusammenspiel von Hard- und Software und verwaltet ihre Ressourcen so effizient wie möglich.
- Inklusive Wildcard-SSL-Zertifikat
- Inklusive Domain Lock
- Inklusive 2 GB E-Mail-Postfach
Was ist ein Kernel?
Der Kernel befindet sich mitten im Betriebssystem und steuert alle wichtigen Funktionen der Hardware, ganz egal, ob es sich um ein Linux-, macOS- oder Windows-System handelt, ob es sich um ein Smartphone, einen Server, eine Virtualisierung wie beispielsweise KVM oder eine andere Art von Computer handelt.
Kernel-Aufbau
Ein Kernel ist immer gleich aufgebaut und besteht aus mehreren Layern (Schichten):
- Die unterste Schicht ist die Schnittstelle zur Hardware (Prozessoren, Speicher und Geräte). Darunter fallen Aufgaben für den Kernel, wie Netzwerkcontroller oder PCI-Express-Controller.
- Darauf liegt die Speicherverwaltung, die den Arbeitsspeicher verteilt – auch den von virtuellen Hauptspeichern.
- In der nächsten Schicht steckt die Prozessverwaltung (Scheduler), die das Zeit-Management übernimmt und damit Multitasking ermöglicht.
- Darauf folgt die Geräteverwaltung (Device Management).
- Die oberste Schicht ist das Dateisystem. Dort werden Prozessen ihre Bereiche auf dem Arbeitsspeicher bzw. auf der Festplatte zugewiesen.
Prozessablauf
Ein Kernel begleitet und leitet den ganzen Weg von der Systemhardware bis zur Anwendungssoftware. Seine Arbeit endet da, wo der Zugriff der User beginnt: im Graphical User Interface (GUI). Der Kernel grenzt damit direkt an die Shell (also an der Benutzeroberfläche) an. Am besten stellt man sich den Kernel als einen Kern und die Shell als einen Ring um diesen Kern vor.
Was ist ein Kernel für ein Computerprogramm?
Als Eselsbrücke hilft hier die Lautähnlichkeit von Kernel zum englisch- bzw. französischsprachigen Militärrang „Colonel“ (deutsch: Oberst): Beide geben Befehle weiter bzw. vermitteln diese. Ein Programm sendet „System Calls“ an den Kernel, zum Beispiel wenn eine Datei geschrieben wird. Dieser Systemaufruf wird vom Kernel in Maschinensprache übersetzt an die CPU weitergeleitet. Der Kernel beherrscht hierfür den gesamten Befehlssatz für die CPU. Oft passiert das komplett im Hintergrund, ohne dass Benutzer es merken.
Was sind die Aufgaben eines Kernels?
Die Hauptanforderung an den Kernel ist die Parallelverarbeitung verschiedener Aufgaben, das Multitasking. Dabei müssen einerseits zeitkritische Grenzen eingehalten werden und andererseits muss ein Kernel offen für weitere Anwendungen und Erweiterungen bleiben.
Die Regel kann nur mit Ausnahmen in einem so durchgetakteten System wie dem Betriebssystem funktionieren. Deshalb dient der Kernel bei Systemsoftware, Bibliotheken und Anwendungssoftware nur als Vermittler. Die grafische Oberfläche eines Betriebssystems ist sogar unter Linux komplett unabhängig vom Kernel.
Bei Mehr-User-Systemen überwacht der Kernel zusätzlich die Zugriffsrechte auf Dateien und Hardware-Komponenten. Welche das in diesem Moment sind, zeigt der Task-Manager auf. Wenn dort ein Prozess vom User beendet wird, gibt der Task-Manager dem Kernel die Anweisung dafür, diesen Prozess abzubrechen und damit den zugewiesenen Speicherplatz wieder frei zu geben.
Wenn ein Computer hochfährt, wird der Kernel als erstes nach dem Start in den Arbeitsspeicher geladen. Das passiert in einem geschützten Bereich, im Bootloader, damit der Kernel als Programm weder verändert noch gelöscht werden kann.
Danach initialisiert der Kernel die verbundenen Geräte und startet die ersten Prozesse. Die Systemdienste werden geladen, weitere Prozesse gestartet oder angehalten, Anwenderprogramme sowie die Zuweisung von Speicherplätzen werden initiiert.
Wie funktioniert ein Kernel?
Die Frage nach seiner Funktionsweise klärt sich mit einer Gegenfrage: Was ist ein Kernel nicht? Beim Kernel handelt es sich nicht um einen Prozessorkern, sondern um den Betriebssystemkern. Ein Kernel ist auch kein API oder ein Framework.
Stattdessen können Multi-Kernel-Betriebssysteme verschiedene Kerne eines Multikern-Prozessors wie ein Netzwerk unabhängiger CPUs nutzen. Wie das funktioniert? Durch den besonderen Aufbau des Kernels, der sich aus einer Reihe unterschiedlicher Bestandteile zusammensetzt:
- Dadurch, dass seine unterste Schicht maschinennah ist, kann sie direkt mit der Hardware, dem Prozessor und dem Speicher kommunizieren. Entlang der fünf Layer unterscheiden sich die Funktionen des Kernels, von der Prozessverwaltung bis zum Gerätemanager. Die oberste Schicht hingegen hat keinen Maschinenzugriff, sondern schafft den Übergang zur Software.
- Anwendungsprogramme laufen auf dem Betriebssystem getrennt vom Kernel ab und greifen nur auf dessen Funktionen zurück. Ohne den Kernel wäre die Kommunikation zwischen Programm und Hardware nicht möglich.
- Mehrere Prozesse können über Multitasking-Kernel zur gleichen Zeit ablaufen. Grundsätzlich ist es aber so, dass von einer CPU immer nur ein Prozess bearbeitet werden kann – außer es liegt ein Mehrkernsystem vor. Den schnellen Prozesswechsel, der sich letztlich wie Multitasking anfühlt, erledigt der Scheduler.
Aus den Bestandteilen lassen sich die vier Funktionen des Kernels ableiten:
- Speicherverwaltung: Regelt, wie viel Arbeitsspeicher wo verwendet wird.
- Prozessmanagement: Bestimmt, welche Prozesse die CPU wann und wie lange nutzen kann.
- Gerätetreiber: Vermittelt zwischen Hardware und Prozessen.
- Systemaufruf und Sicherheit: Nimmt Serviceanfragen von den Prozessen entgegen.
Die Funktionen eines Kernels bleiben, wenn er ordnungsgemäß implementiert ist, für User unsichtbar. Er arbeitet in seiner eigenen Welt, dem Kernelspace. Dateien, Programme, Games, Browser - kurzum alles, was der User sieht, findet im Userspace statt. Die Interaktion beider Welten läuft über eine Systemaufrufschnittstelle, das SCI.
Der Kernel im Betriebssystem
Um zu verstehen, wie der Kernel im Betriebssystem funktioniert, stellt man sich einen Computer am besten untergliedert in drei Ebenen vor:
- Hardware: Die Basis des Systems aus Arbeitsspeicher, Prozessor sowie Ein- und Ausgabegeräte. Die CPU führt Lese- und Schreibvorgänge und Berechnungen für den Speicher durch.
- Kernel: Der Nucleus eines Betriebssystems. Sagt der CPU, was sie tun soll.
- Benutzerprozesse: Alle laufenden Prozesse, die der Kernel verwaltet. Der Kernel ermöglicht die Kommunikation zwischen Prozessen und Servern, auch bekannt als Inter-Process Communication (IPC).
Es gibt grundlegend zwei Modi für den Code in einem System: den Kernelmode oder den Usermode. Der Code im Kernelmode hat uneingeschränkten Zugriff auf die Hardware, während im Usermode der Zugriff auf die SCI beschränkt ist. Wenn es zu einem Fehler im Usermode kommt, passiert nicht viel: Tatsächlich greift dann auch der Kernel ein und behebt mögliche Schäden. Auf der anderen Seite kann ein Kernel-Absturz das gesamte System zum Absturz bringen. Dagegen sind allerdings Sicherheitsvorkehrungen vorhanden.
Welche Kernel-Arten gibt es?
Eine Kernel-Art wurde bereits in diesem Artikel beschrieben: Wenn auf einem Kernel mehrere Prozesse zur gleichen Zeit ablaufen, liegen sogenannte Multitasking-Kernel vor. Durch die Ergänzung einer Zugriffsverwaltung wird aus diesem ein Multiuser-System, auf dem mehrere Benutzer gleichzeitig arbeiten können. Die Authentifizierung erfolgt dabei durch den Kernel, der aufgerufene Prozesse zuteilen oder separieren kann.
Was ist ein Kernel als Open Source?
Linux führt ein umfangreiches Archiv über seine Kernel. Apple hat die Kernel-Arten aller seiner Betriebssysteme bereits als Open Source zur Verfügung gestellt. Microsoft setzt inzwischen ebenfalls einen Linux-Kernel für das Windows Subsystem for Linux ein.
Was die unterschiedlichen Kernel-Arten betrifft, kann man schnell die Übersicht verlieren: Linux-Systeme und Android-Geräte nutzen einen Linux Kernel, Windows nutzt den NT-Kernel, auf den mehrere Subsysteme aufsetzen, während Apple einen XNU Kernel verwendet.
Die drei Kernel-Arten
Es gibt für die unterschiedlichen Betriebssysteme und Endgeräte unterschiedliche Kernel-Arten. Hinsichtlich ihrer Merkmale kann man diese in drei Gruppen unterteilen:
- Monolithischer Kernel: Ein großer Kernel für alle Aufgaben. Er alleine ist für Speicher- und Prozessverwaltungen sowie die Kommunikation zwischen den Prozessen verantwortlich und bietet Funktionen für Treiber- und Hardware-Support. Betriebssysteme wie Linux, OS X und Windows setzen auf den Monolithen.
- Mikro-Kernel: Der Mikro-Kernel ist bewusst klein angelegt, damit er bei Fehlern nicht das gesamte Betriebssystem lahmlegt. Damit er trotzdem dieselben Funktionen übernehmen kann wie ein großer Kernel, wird er in mehrere Module unterteilt. Als Anwendungsbeispiel kann hier nur die OS X Komponente Mach herhalten, denn bislang gibt es noch kein Betriebssystem mit Mikro-Kerneln.
- Hybrid-Kernel: Die Mischung aus Monolith und Mikro-Kernel wird Hybrid-Kernel genannt. Dabei wird der große Kernel kompakter und modulierbar. Es lassen sich weitere Kernelteile dynamisch dazuladen. In Ansätzen passiert das bereits unter Linux und OS X.