Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2003  »  11  »  Kern-Technik  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Kernel- und Treiberprogrammierung mit dem künftigen Kernel 2.6 - Folge 4

Kern-Technik

von Eva-Katharina Kunst, J
Erschienen im Linux-Magazin 2003/11

Die Treiber aus den ersten Kern-Technik-Folgen reagieren nur auf Anfragen einer Userspace-Applikation. Andere Vorgänge laufen im Kernel asynchron ab. Sie reagieren auf Hardware- und Software-Interrupts, sind Timer-gesteuert oder arbeiten als eigenständiger Kernel-Thread.

Es spart Zeit, Vorgänge automatisiert im Kernel ablaufen zu lassen. Das bewies beispielsweise der im 2.4er Kernel integrierte Webserver »khttpd«, auch Tux genannt[1]. Er ist im Kernel 2.6 allerdings wieder verschwunden. Die Technik, einzelne Funktionen oder ganze Applikationen im Kernel ablaufen zu lassen, wurde aber erweitert und verfeinert. Wer ein bestimmtes Zeitverhalten implementieren oder zyklisch auf Daten zugreifen muss, Statistiken erstellen oder Informationen puffern will, der verwendet asynchrone Funktionen.

Aufgeräumt

Dem im Kernel 2.4 vorherrschenden Wildwuchs hat Linus Torvalds in Version 2.6 Einhalt geboten. Neben den in der dritten Kern-Technik-Folge[4] vorgestellten Interrupts (Hard-IRQs) gibt es jetzt die beiden Basistechnologien Soft-IRQ und Kernel-Thread.

Zur Unterscheidung: Beim Abarbeiten eines Hard-IRQ sind weitere Interrupts auf dem gleichen Prozessor im Regelfall nicht zugelassen. Soft-IRQs und Kernel-Threads hingegen können sehr wohl von Interrupts unterbrochen werden. Soft-IRQs laufen im so genannten Interrupt-Kontext ab, Kernel-Threads im Prozess-Kontext (siehe Kasten "Begriffe aus der Kernelwelt").

Diese Unterschiede sind gerade für Kernel-Programmierer wesentlich, da ihnen einige Kernelfunktionen im Interrupt-Kontext nicht zur Verfügung stehen. Die Basistechnologien Soft-IRQ und Kernel-Thread existieren in unterschiedlichen Ausprägungen. So sind Soft-IRQs feiner differenziert in Soft-IRQ, Tasklet und Timer. Bei Kernel-Threads unterscheidet man Kernel-Thread, Workqueue und Event-Workqueue.

Kernel-Programmierer sollten die Ausprägung Soft-IRQ nach Möglichkeit meiden und dafür auf Tasklets und Timer zurückgreifen. Ein Tasklet übernimmt länger dauernde Aufgaben von einer ISR (Interrupt Service Routine). Ein Timer ist dann nützlich, wenn zu einem bestimmten Zeitpunkt oder periodisch Jobs auszuführen sind.

Wenn es um komplexe Aufgaben geht, greift der Entwickler gern zu Kernel-Threads. In der Ausprägung Workqueue kann er Funktionen durch den Betriebssystemkern aufrufen lassen. Noch weniger Aufwand fällt bei der vordefinierten Event-Workqueue an; allerdings ist bei ihr am wenigsten genau bestimmbar, wann der Auftrag an der Reihe ist.

Weiche Interrupts und Tasklets

Soft-IRQs sind als Erste an der Reihe, wenn alle Hardware-ISRs abgearbeitet sind. Von den 32 möglichen sind in den Kernelquellen (»linux/interrupt.h«) die sechs bereits vordefinierten Soft-IRQs aufgelistet. Für den Treiberentwickler sind hiervon die beiden Ausprägungen Tasklet sowie Timer interessant.

Tasklets übernehmen komplexe Aufgaben von Hardware-ISRs. Lange Hardware-ISRs führen zu ungünstigen Interrupt-Latenzzeiten und sind daher zu vermeiden. Sinnvoller ist es, solche Routinen in zwei Teile zu trennen. Der erste führt die (zeit-)kritischen Aktionen aus, während die Interrupts gesperrt sind. Die übrigen Berechnungen finden im zweiten Teil statt, bei freigegebenen Interrupts. Für diesen früher Bottom Half genannten Teil (siehe Kasten "Portierungshilfe") eignen sich Tasklets.

Der Kernel sorgt dafür, dass ein Tasklet zu einem Zeitpunkt maximal einmal abläuft. Das gilt auch für Mehrprozessorsysteme. Unterschiedliche Tasklets zur gleichen Zeit einzusetzen ist allerdings möglich. Da Tasklets zur Gruppe der Soft-IRQs gehören, genießen sie im System die zweithöchste Priorität, direkt nach den Hardware-Interrupts. Allerdings kommen Tasklets in zwei Prioritätsstufen vor.


Abbildung 1: Asynchrone Verarbeitung im Kernel ist mit mehreren Technologien möglich, die in unterschiedlichen Kontexten ablaufen. Bei Soft-IRQs und Kernel-Threads gibt es je drei Ausprägungen.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Kern-Technik Kernel- und Treiberprogrammierung mit dem Kernel 2.6 - Folge 27
Kern-Technik Kernel- und Treiberprogrammierung mit dem Kernel 2.6 - Folge 51
Gerade echtzeitig Grundlagen: Echtzeitsysteme mit Linux
Kern-Technik Kernel- und Treiberprogrammierung mit dem Kernel 2.6 - Folge 41
Mit Schutzmantel Gekapselt und überschaubar: Minix 3 strebt nach Sicherheit
Kern-Technik Kernel- und Treiberprogrammierung mit dem Kernel 2.6 - Folge 46
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Kommentare (0)