Der Kernel verwaltet alle Betriebsmittel eines Computers. Er ist der erste
Schritt von der Hardware zum Benutzer. Nach innen, zur Hardware hin,
ist der Kernel ein Organisator. Er teilt den unterschiedlichen Geräten
mit, was sie wann zu tun haben und sorgt für möglichst reibungslose,
effiziente Abläufe. Nach außen, zum Benutzer hin,
ist er ein Dienstleister:
Er bietet Funktionen an, die von Programmen verwendet werden können.
Programme verlangen Prozessorzeit, Speicherplatz, möchten von Geräten lesen
oder auf sie schreiben, sie wollen andere Programme starten oder sich
selbst beenden. Für all diese Aktionen müssen sie eine Anfrage an den
Kernel richten, die von diesem an die Hardware weitergegeben oder auch
verweigert werden kann.
Der Kernel selbst ist ein Programm. Er liegt im Hauptspeicher, erhält
dann und wann Prozessorzeit und kontrolliert in diesen Intervallen, welches
Programm außer ihm etwas tun darf. Mit dem Systemstart muss der Kernel
also in den Speicher geladen werden. Dies geschieht üblicherweise mittels
eines
Bootloaders wie Lilo oder Grub
von der lokalen Festplatte. Es gibt
jedoch auch andere Möglichkeiten. Booten von Diskette oder CD ist ebenso
möglich wie das Booten über ein Netzwerk.
Um mit der Hardware kommunizieren zu können, benötigt ein Kernel spezielle
Treiber. Des weiteren bestehen meist sehr konkrete Anforderungen an ein
Rechnersystem - und diese Anforderungen können sich von System zu System
stark unterscheiden. Benötigte Treiber und die konkreten Anforderungen an
das System verlangen nach ganz unterschiedlichen Kernelfunktionen. Daher
ist Kernel nicht gleich Kernel. Es wäre unsinnig, einen einzigen großen
Kernel zu erstellen, der gewissermaßen alles kann. Ein enormer
Speicherbedarf wäre die Folge. Es ist also eine Auswahl der Treiber
und Funktionen notwendig.
Diese Auswahl geschieht unter Linux auf zweierlei Weise. Zum einen kann
bereits vor dem Kompilieren des Kernels angegeben werden, welche Komponenten
überhaupt Bestandteil des Kernels werden sollen. Zweitens bietet Linux
die Möglichkeit, einzelne Komponenten als Module zu kompilieren. Module
können dann zur Laufzeit geladen und wieder aus dem Speicher entfernt
werden.
|