Was macht der Kernel?
Ein UNIX-System kann man in drei Teile gliedern:
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.
Erklärung präemptives Multitasking:Es geht darum, auf welche Art und Weise das Betriebssystem eines Computers das Problem löst, dass mehrere Prozesse gleichzeitig ausgeführt werden. Sofern der Computer nur über eine CPU verfügt, kann zu einem bestimmten Zeitpunkt nur ein Prozess diese benutzen.
Beim präemptiven Multitasking wird der Zeitraum in Scheiben definierter Länge unterteilt. Den einzelnen Prozessen werden durch den Scheduler Zeitscheiben zugewiesen. Läuft ihre Zeitscheibe ab, so werden sie unterbrochen und ein anderer Prozess erhält eine Zeitscheibe.
Mac OS 9verwendete das kooperative (nicht-präemptive) Multitasking,das ohne Zeitscheiben arbeitet. Hier blockiert ein Prozess die CPU solange bis er sie freiwillig abgibt.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 verabschiedet sich 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.
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".
Kernel-Etensions (Kext)
Kommentare
Neuen Kommentar hinzufügen