Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?

Was sind Kernel Extensions (KEXTs)?

MTN erklärt Fachbegriffe, Teil 16

Mac OS X unterscheidet sich in vielerlei Hinsicht von Mac OS 9, die tiefgreifenste Neuerung war der Umstieg auf den Mach-Kernel. Dieser brachte den Mac-Benutzern präemptives Multitasking und Speicherschutz, beendete allerdings die Kompatibilität mit älteren Applikationen und Systemerweiterungen.

Systemerweiterungen und Treiber für Geräte mussten also für Mac OS X von Grund auf neu entwickelt werden. Um den Kernel um Fähigkeiten zu erweitern, führte Apple die Kernel Extensions (Kurz KEXT) ein, mit denen man, ohne den Kernel wie in den meisten Unix-Systemen rekompilieren zu müssen, das Betriebssystem um Kernfunktionalitäten, wie z.B. um ein neues Dateiformat oder einen Gerätetreiber, erweitern kann.

Kernel Extensions haben die Eigenschaft, dass sie nicht dem Speicherschutz des Kernels unterliegen, da diese im Supervisor-Mode laufen. Damit können die Kernel-Extensions auf alle Endgeräte und auf alle Speicheradressen ungehindert zugreifen, erst mit dieser Funktionalität kann man Treiber für Geräte schreiben. Allerdings hat diese Eigenschaft der KEXTs auch einen entscheidenden Nachteil: Ist ein Fehler in einer Kernel Extension aufgetreten, führt dies unter umständen direkt zu einer Kernel Panic. Applikationen unter Mac OS X genießen kompletten Speicherschutz, sodass eine Applikation nicht den ganzen Mac zum Absturz bringen kann, so wie es noch unter Mac OS 9 der Fall war.

KEXTs werden, wie fast alles in Mac OS X, als Bundle verpackt, das heißt, dass es sich in Wirklichkeit um einen Ordner handelt, der aber von Finder als eine Datei angezeigt wird. Das hat den Vorteil, dass man alle Resourcen (Bilder, Lokalisierungen etc) und die Binaries (die ausführbaren Dateien) in einer logischen Einheit zusammenfasst. Die Kernel Extensions können in C oder in C++ implementiert werden, man muss sich allerdings an sehr strenge Vorgaben halten.

Die Erweiterungen können, anders als in Mac OS 9 und den meisten anderen Betriebssystemen, dynamisch nachgeladen werden, sodass man beispielsweise die Unterstützung für ein USB-Gerät erst beim Einstecken nachgeladen wird um davor nicht unnötig Ressourcen zu verbrauchen. Im System finden Sie die Kernel Extensions im Verzeichnis /System/Library/Extensions/ , im Apple System Profiler können Sie sich anzeigen lassen, welche Kernel Extensions auf Ihrem System geladen wurden und welche nicht benötigt werden.