Kernelprogrammierer können auf die effiziente dynamische Speicherverwaltung von Linux bauen. Doch auch für Applikationsentwickler sind Kenntnisse des Buddy-Systems und des Slab-Allokators interessant, denn es stecken trickreiche Algorithmen dahinter.
Mit dem Anticipatory-IO-Scheduler greift der Linux-Kernel vorausschauend und damit recht effektiv auf Festplatten zu. Der brandneue CFQ-IO-Scheduler tritt als ambitionierter Konkurrent auf. Der Artikel erklärt die Arbeitsweise beider Zugriffsstrategien und zeigt, worin sie sich unterscheiden.
Bei Linux 2.6.10 kann der Anwender über die Auswahl von IO-Schedulern bestimmen, wie der Kernel auf Festplatten zugreift. Wer weiß, wie sie intern funktionieren, passt das System optimal an die eigene Anwendung an. Zur Laufzeit lassen sich die IO-Scheduler über das SysFS austauschen und einstellen.
Ob für Applikations- oder Treiberprogrammierer: Der asynchrone Zugriffsmodus im Kernel 2.6 verspricht Geschwindigkeitsvorteile bei der Ein- und Ausgabe. Dieser Artikel zeigt, wie Entwickler von Async-I/O profitieren, und untersucht, ob die Implementation die Versprechungen erfüllt.
Der unüberschaubar große Zoo von Netzwerkgeräten spiegelt sich im Kernel in der Anzahl zugehöriger Treiber wider. Wie sie intern funktionieren, zeigt diese Folge der Kern-Technik. Ein virtuelles Netzwerk-Device dient als Einstieg für eigene Experimente.
Verbindungslose Kommunikation über UDP ist im Kernel mit weniger Aufwand zu programmieren als das verbindungsorientierte TCP. Eine geschickte Einstellung der Socket-Parameter lässt eigene Module auf Broadcasts hören und steigert die Performance.
Dass es TCP/IP-Netzwerkfunktionen im Kernel gibt, überrascht kaum, denn schließlich implementiert der Betriebssystemkern den zugehörigen Stack. Das Nutzen der Funktionen in eigenen Kernelmodulen funktioniert aber etwas anders als bei den Userspace-Verwandten.
Systemaufrufe bilden die Schnittstelle zwischen Userspace und Kernel. Dieser Artikel zeigt, wie sie funktionieren und wie man sogar eigene Systemcalls implementiert.
Fertige Bibliotheken nehmen Programmierern Arbeit ab. Auch der Kernel bietet Hilfsfunktionen, obwohl er keinen Zugriff auf Libraries wie die Glibc hat. Von der Stringumwandlung bis zur Listenverwaltung findet sich allerlei Nützliches, das dieser Artikel erklärt und übersichtlich auflistet.
Aus Platz- und Übersichtsgründen lagert der Kernel seine Funktionalität größtenteils in Module aus. Dieser Vorgang lässt sich über Parameter fein einstellen. Linux 2.6 bietet Typsicherheit für Modulparameter und erlaubt es dem Kernelprogrammierer, dafür eigene Datentypen zu verwenden.
USB hat die klassische serielle Schnittstelle als Allround-Interface abgelöst und macht mit Version 2.0 den Highspeed-Bussen Konkurrenz. Kernel 2.6 unterstützt schon ein breites Spektrum an Hardware und hilft unbekannte USB-Geräte direkt zu programmieren.
Die Geräteklasse der Blockdevices bildet die Grundlage für Filesysteme. Diese Kern-Technik-Folge erklärt die Treiberkomponenten und zeigt die Implementierung einer RAM-Disk als Beispiel für das neue Blockgeräte-Interface in Kernel 2.6.
Laufzeit-Informationen des Kernels lassen sich über das Proc-Filesystem auslesen und verändern. Die siebente Kern-Technik-Folge zeigt, wie man in seinem eigenen Code dieses virtuelle Dateisystem unterstützt. Im Kernel 2.6 vereinfachen Sequence Files die Programmierung.
Das neue Gerätemodell ordnet Hardware nach Kategorien und bildet die Struktur im Sys-Filesystem ab. Hält sich der Entwickler daran, unterstützt sein Treiber automatisch Powermanagement. Das Gerätemodell besteht aus einem Kernel-API und einem Laufzeitsystem.
Die neue Serie "Kern-Technik" untersucht den kommenden Linux-Kernel 2.6 und seine Bestandteile. Wer Treiber programmieren, Kernelfunktionen verändern oder einfach die Vorgänge im Inneren von Linux verstehen will, der findet hier einen praktischen Einstieg.














