Zum Inhalt springen

Kernel-Modul

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 17. Juni 2013 um 20:30 Uhr durch 81.217.182.156 (Diskussion) (Es wurde ein Beispiel für die Implementierung eines HelloWorld Kernel Moduls hinzugefügt. #gsi). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ein Kernel-Modul (kurz „LKM“ für englisch: „loadable kernel module“) ist ein spezielles Computerprogramm, das im laufenden Betrieb in den Kernel eines Betriebssystems geladen und wieder daraus entfernt werden kann.

Kernel-Module werden häufig für Gerätetreiber verwendet, da eine große Auswahl der Module für die unterschiedlichsten Hardware-Komponenten mit dem Betriebssystem mitgeliefert werden können, aber nur die wirklich benötigten Treiber in den Speicher geladen werden müssen.

Kernel-Module gibt es bei unterschiedlichen Betriebssystemen, wie zum Beispiel Linux, BSD oder Solaris.


Beispiel

Im Folgenden wird ein Beispiel für die Implementierung eines Hello World Moduls gezeigt.

#include <linux/init.h>         /* __init, __exit */
#include <linux/module.h>	/* MACROS */     
#include <linux/kernel.h> 	/* KERN_INFO Loglevel */

int __init initHelloWorld(void) {

    printk(KERN_INFO "Hello World!\n");
    return 0;	
}
  
void __exit cleanupHelloWorld(void) {
 
    printk(KERN_INFO "Bye!\n");	
}

module_init( initHelloWorld );
module_exit( cleanupHelloWorld );

MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("Hello World Module.");


Weitere Details

Kernel-Module werden üblicherweise in der Programmiersprache C geschrieben und vor ihrem Laden, in den Betriebssystemkern und der späteren Ausführung dort, in die Maschinensprache für die jeweilige Ziel-Plattform übersetzt (kompiliert).

Das Verfahren des dynamischen Hinzufügens von Kernel-Modulen wird z. B. beim Linux-Kernel dazu verwendet, um einen Standardkernel an die Hardware, auf der er ausgeführt wird, dynamisch anzupassen. So kann zum Beispiel der Treiber einer vorgefundenen Soundkarte zur Laufzeit des Systemkerns geladen werden, während die vorliegenden Treiber für nicht vorhandene Soundkarten ignoriert werden können und somit auch keinen Hauptspeicher belegen.

Ein weiterer Vorteil liegt darin, dass Erweiterungen für den Kernel integriert werden können, ohne dass das Betriebssystem neu gestartet werden muss. Denkbar wäre, dass man auf diese Weise den als Kernel-Modul realisierten Treiber einer Soundkarte entfernt und eine neuere Version dieses Treibers in das laufende System einbindet.