Was macht der Kernel?
MTN erklärt Fachbegriffe, Teil 8
Wenn man ein UNIX-System in drei Teile gliedern will, so muss man Kernel, Dateisystem und Shell nennen. Doch was bedeutet der oft verwendete Begriff Kernel eigentlich? Der Kernel ist für die grundlegenden Funktionen des Systems zuständig, stellt die Schnittstelle zwischen Hardware und Software dar und kümmert sich zum Beispiel darum, wie die Rechenzeit verteilt wird, also welchem Thread welche Prozessorleistung zugeteilt wird.
Auch andere Betriebsysteme verfügen über einen Kernel, doch unterscheidet sich der des Mac OS in einem wichtigen Punkt vom Linux-Kernel. Während Apple sich für den Mikrokernel entschieden hat, setzt Linux auf einen monolithischen Kernel, der bereits viel mehr Funktionen auf unterster Ebene zur Verfügung stellt. Mach (Mac OS X) kümmert sich nur um Aufgaben wie Speicherzuweisung oder Zuweisung der Rechenzeit. Alle weiteren Dienste, wie zum Beispiel das Netzwerk oder das Dateisystem sind auf einer höheren Ebene angeordnet.
In der Theorie stürzt ein System mit Mikrokernel fast nie ab, denn crasht ein Dienst auf höherer Ebene, so betrifft das den Kernel nicht. Nur ein Fehler im Kernel kann das System noch zum Absturz bringen. Je mehr Dienste also vom Kernel übernommen werden, desto öfter wird das ganze System in Mitleidenschaft gezogen. In der Praxis verlangsamt der Mikrokernel das System aber etwas, da permanent mit anderen Ebenen kommuniziert werden muss. Man kann also nicht sagen, dass ein Mikrokernel besser als ein monolithischer Kernel ist, da beide Systeme Vor- und Nachteile haben.
Interessant ist, dass bei Windows NT die komplette GUI (grafische Benutzeroberfläche) mit im Kernel ist, was die Performance steigert, aber auch die Stabilität wie auch die Erweiterbarkeit einschränkt.
Der Ausdruck "Kernel" impliziert meist präemtives Multitasking, d.h. dass nicht die Applikationen untereinander für die Verteilung von Rechenzeit zuständig sind, sondern der Kernel. Für den Benutzer äußert sich das in der Tatsache, dass ein abgestürztes Programm ganz einfach "abgeschossen" werden kann, das System aber deswegen keine Probleme macht.
Vor Mac OS X mussten sich die Programme auf Apple-Rechnern um die Rechenzeit "streiten".
Jedes Programm konnte die gesamte Leistung für sich beanspruchen, erst wenn diese Applikation es zuließ, durfte eine andere Applikation Rechenzeit in Anspruch nehmen. Dies nennt man kooperatives Multitasking. Das Problem daran war, dass eine zu bestätigende Meldung das ganze System lahm legte und man unter OS 9 oft mit keiner Applikation mehr arbeiten konnte, bis ein Dialog nicht weggeklickt wurde. Stürzte ein Programm ab, musste man zudem in den meisten Fällen auch den Computer neu starten. Zum Glück änderte sich das mit OS X.