Jeder, der mit einem Be­triebs­sys­tem arbeitet, arbeitet auch mit einem Kernel. In der Regel ohne es zu bemerken. Denn der Kernel überwacht die Prozess- und Da­ten­or­ga­ni­sa­ti­on eines jeden Rechners im Hin­ter­grund. Ohne ihn läuft praktisch nichts.

Ein Kernel ist buch­stäb­lich der Kern eines Be­triebs­sys­tems und damit die Schnitt­stel­le zwischen Software und Hardware. Damit wird er dauerhaft gebraucht, ist ständig im Einsatz oder kurzum: Er ist der zentrale Be­stand­teil eines Be­triebs­sys­tems.

Er ist aber nicht nur der Sys­tem­kern, sondern auch ein Programm und steuert damit alle Prozessor- und Spei­cher­zu­grif­fe, ist zuständig für die wich­tigs­ten Treiber und kann direkt auf die Hardware zugreifen. Ein Kernel ist Grundlage für das Zu­sam­men­spiel von Hard- und Software und verwaltet ihre Res­sour­cen so effizient wie möglich.

KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on

Was ist ein Kernel?

Der Kernel befindet sich mitten im Be­triebs­sys­tem und steuert alle wichtigen Funk­tio­nen der Hardware, ganz egal, ob es sich um ein Linux-, macOS- oder Windows-System handelt, ob es sich um ein Smart­phone, einen Server, eine Vir­tua­li­sie­rung wie bei­spiels­wei­se 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 Schnitt­stel­le zur Hardware (Pro­zes­so­ren, Speicher und Geräte). Darunter fallen Aufgaben für den Kernel, wie Netz­werk­con­trol­ler oder PCI-Express-Con­trol­ler.
  • Darauf liegt die Spei­cher­ver­wal­tung, die den Ar­beits­spei­cher verteilt – auch den von vir­tu­el­len Haupt­spei­chern.
  • In der nächsten Schicht steckt die Pro­zess­ver­wal­tung (Scheduler), die das Zeit-Ma­nage­ment übernimmt und damit Mul­ti­tas­king er­mög­licht.
  • Darauf folgt die Ge­rä­te­ver­wal­tung (Device Ma­nage­ment).
  • Die oberste Schicht ist das Da­tei­sys­tem. Dort werden Prozessen ihre Bereiche auf dem Ar­beits­spei­cher bzw. auf der Fest­plat­te zu­ge­wie­sen.

Pro­zess­ab­lauf

Ein Kernel begleitet und leitet den ganzen Weg von der Sys­tem­hard­ware bis zur An­wen­dungs­soft­ware. 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 Be­nut­zer­ober­flä­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 Com­pu­ter­pro­gramm?

Als Esels­brü­cke hilft hier die Laut­ähn­lich­keit von Kernel zum englisch- bzw. fran­zö­sisch­spra­chi­gen Mi­li­tär­rang „Colonel“ (deutsch: Oberst): Beide geben Befehle weiter bzw. ver­mit­teln diese. Ein Programm sendet „System Calls“ an den Kernel, zum Beispiel wenn eine Datei ge­schrie­ben wird. Dieser Sys­tem­auf­ruf wird vom Kernel in Ma­schi­nen­spra­che übersetzt an die CPU wei­ter­ge­lei­tet. Der Kernel be­herrscht hierfür den gesamten Be­fehls­satz für die CPU. Oft passiert das komplett im Hin­ter­grund, ohne dass Benutzer es merken.

Was sind die Aufgaben eines Kernels?

Die Haupt­an­for­de­rung an den Kernel ist die Par­al­lel­ver­ar­bei­tung ver­schie­de­ner Aufgaben, das Mul­ti­tas­king. Dabei müssen ei­ner­seits zeit­kri­ti­sche Grenzen ein­ge­hal­ten werden und an­de­rer­seits muss ein Kernel offen für weitere An­wen­dun­gen und Er­wei­te­run­gen bleiben.

Die Regel kann nur mit Ausnahmen in einem so durch­ge­tak­te­ten System wie dem Be­triebs­sys­tem funk­tio­nie­ren. Deshalb dient der Kernel bei Sys­tem­soft­ware, Bi­blio­the­ken und An­wen­dungs­soft­ware nur als Ver­mitt­ler. Die grafische Ober­flä­che eines Be­triebs­sys­tems ist sogar unter Linux komplett un­ab­hän­gig vom Kernel.

Hinweis

Bei Mehr-User-Systemen überwacht der Kernel zu­sätz­lich die Zu­griffs­rech­te auf Dateien und Hardware-Kom­po­nen­ten. 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 ab­zu­bre­chen und damit den zu­ge­wie­se­nen Spei­cher­platz wieder frei zu geben.

Wenn ein Computer hochfährt, wird der Kernel als erstes nach dem Start in den Ar­beits­spei­cher geladen. Das passiert in einem ge­schütz­ten Bereich, im Boot­loa­der, damit der Kernel als Programm weder verändert noch gelöscht werden kann.

Danach in­itia­li­siert der Kernel die ver­bun­de­nen Geräte und startet die ersten Prozesse. Die Sys­tem­diens­te werden geladen, weitere Prozesse gestartet oder an­ge­hal­ten, An­wen­der­pro­gram­me sowie die Zuweisung von Spei­cher­plät­zen werden initiiert.

Wie funk­tio­niert ein Kernel?

Die Frage nach seiner Funk­ti­ons­wei­se klärt sich mit einer Ge­gen­fra­ge: Was ist ein Kernel nicht? Beim Kernel handelt es sich nicht um einen Pro­zes­sor­kern, sondern um den Be­triebs­sys­tem­kern. Ein Kernel ist auch kein API oder ein Framework.

Statt­des­sen können Multi-Kernel-Be­triebs­sys­te­me ver­schie­de­ne Kerne eines Multikern-Pro­zes­sors wie ein Netzwerk un­ab­hän­gi­ger CPUs nutzen. Wie das funk­tio­niert? Durch den be­son­de­ren Aufbau des Kernels, der sich aus einer Reihe un­ter­schied­li­cher Be­stand­tei­le zu­sam­men­setzt:

  • Dadurch, dass seine unterste Schicht ma­schi­nen­nah ist, kann sie direkt mit der Hardware, dem Prozessor und dem Speicher kom­mu­ni­zie­ren. Entlang der fünf Layer un­ter­schei­den sich die Funk­tio­nen des Kernels, von der Pro­zess­ver­wal­tung bis zum Ge­rä­te­ma­na­ger. Die oberste Schicht hingegen hat keinen Ma­schi­nen­zu­griff, sondern schafft den Übergang zur Software.
  • An­wen­dungs­pro­gram­me laufen auf dem Be­triebs­sys­tem getrennt vom Kernel ab und greifen nur auf dessen Funk­tio­nen zurück. Ohne den Kernel wäre die Kom­mu­ni­ka­ti­on zwischen Programm und Hardware nicht möglich.
  • Mehrere Prozesse können über Mul­ti­tas­king-Kernel zur gleichen Zeit ablaufen. Grund­sätz­lich ist es aber so, dass von einer CPU immer nur ein Prozess be­ar­bei­tet werden kann – außer es liegt ein Mehr­kern­sys­tem vor. Den schnellen Pro­zess­wech­sel, der sich letztlich wie Mul­ti­tas­king anfühlt, erledigt der Scheduler.

Aus den Be­stand­tei­len lassen sich die vier Funk­tio­nen des Kernels ableiten:

  1. Spei­cher­ver­wal­tung: Regelt, wie viel Ar­beits­spei­cher wo verwendet wird.
  2. Pro­zess­ma­nage­ment: Bestimmt, welche Prozesse die CPU wann und wie lange nutzen kann.
  3. Ge­rä­te­trei­ber: Ver­mit­telt zwischen Hardware und Prozessen.
  4. Sys­tem­auf­ruf und Si­cher­heit: Nimmt Ser­vice­an­fra­gen von den Prozessen entgegen.

Die Funk­tio­nen eines Kernels bleiben, wenn er ord­nungs­ge­mäß im­ple­men­tiert ist, für User un­sicht­bar. Er arbeitet in seiner eigenen Welt, dem Ker­nel­space. Dateien, Programme, Games, Browser - kurzum alles, was der User sieht, findet im Userspace statt. Die In­ter­ak­ti­on beider Welten läuft über eine Sys­tem­auf­ruf­schnitt­stel­le, das SCI.

Der Kernel im Be­triebs­sys­tem

Um zu verstehen, wie der Kernel im Be­triebs­sys­tem funk­tio­niert, stellt man sich einen Computer am besten un­ter­glie­dert in drei Ebenen vor:

  1. Hardware: Die Basis des Systems aus Ar­beits­spei­cher, Prozessor sowie Ein- und Aus­ga­be­ge­rä­te. Die CPU führt Lese- und Schreib­vor­gän­ge und Be­rech­nun­gen für den Speicher durch.
  2. Kernel: Der Nucleus eines Be­triebs­sys­tems. Sagt der CPU, was sie tun soll.
  3. Be­nut­zer­pro­zes­se: Alle laufenden Prozesse, die der Kernel verwaltet. Der Kernel er­mög­licht die Kom­mu­ni­ka­ti­on zwischen Prozessen und Servern, auch bekannt als Inter-Process Com­mu­ni­ca­ti­on (IPC).

Es gibt grund­le­gend zwei Modi für den Code in einem System: den Ker­nel­mo­de oder den Usermode. Der Code im Ker­nel­mo­de hat un­ein­ge­schränk­ten Zugriff auf die Hardware, während im Usermode der Zugriff auf die SCI be­schränkt ist. Wenn es zu einem Fehler im Usermode kommt, passiert nicht viel: Tat­säch­lich 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 al­ler­dings Si­cher­heits­vor­keh­run­gen vorhanden.

Welche Kernel-Arten gibt es?

Eine Kernel-Art wurde bereits in diesem Artikel be­schrie­ben: Wenn auf einem Kernel mehrere Prozesse zur gleichen Zeit ablaufen, liegen so­ge­nann­te Mul­ti­tas­king-Kernel vor. Durch die Ergänzung einer Zu­griffs­ver­wal­tung wird aus diesem ein Multiuser-System, auf dem mehrere Benutzer gleich­zei­tig arbeiten können. Die Au­then­ti­fi­zie­rung erfolgt dabei durch den Kernel, der auf­ge­ru­fe­ne Prozesse zuteilen oder se­pa­rie­ren kann.

Was ist ein Kernel als Open Source?

Linux führt ein um­fang­rei­ches Archiv über seine Kernel. Apple hat die Kernel-Arten aller seiner Be­triebs­sys­te­me bereits als Open Source zur Verfügung gestellt. Microsoft setzt in­zwi­schen ebenfalls einen Linux-Kernel für das Windows Subsystem for Linux ein.

Hinweis

Was die un­ter­schied­li­chen 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 Sub­sys­te­me aufsetzen, während Apple einen XNU Kernel verwendet.

Die drei Kernel-Arten

Es gibt für die un­ter­schied­li­chen Be­triebs­sys­te­me und Endgeräte un­ter­schied­li­che Kernel-Arten. Hin­sicht­lich ihrer Merkmale kann man diese in drei Gruppen un­ter­tei­len:

  1. Mo­no­li­thi­scher Kernel: Ein großer Kernel für alle Aufgaben. Er alleine ist für Speicher- und Pro­zess­ver­wal­tun­gen sowie die Kom­mu­ni­ka­ti­on zwischen den Prozessen ver­ant­wort­lich und bietet Funk­tio­nen für Treiber- und Hardware-Support. Be­triebs­sys­te­me wie Linux, OS X und Windows setzen auf den Mo­no­li­then.
  2. Mikro-Kernel: Der Mikro-Kernel ist bewusst klein angelegt, damit er bei Fehlern nicht das gesamte Be­triebs­sys­tem lahmlegt. Damit er trotzdem dieselben Funk­tio­nen über­neh­men kann wie ein großer Kernel, wird er in mehrere Module un­ter­teilt. Als An­wen­dungs­bei­spiel kann hier nur die OS X Kom­po­nen­te Mach herhalten, denn bislang gibt es noch kein Be­triebs­sys­tem mit Mikro-Kerneln.
  3. Hybrid-Kernel: Die Mischung aus Monolith und Mikro-Kernel wird Hybrid-Kernel genannt. Dabei wird der große Kernel kompakter und mo­du­lier­bar. Es lassen sich weitere Ker­nel­tei­le dynamisch dazuladen. In Ansätzen passiert das bereits unter Linux und OS X.
Zum Hauptmenü