Ein Gerätetreiber ist zuständig für die Behandlung von Interrupts, die durch das zugehörige Gerät (bzw. dessen Controller) ausgelöst werden.
Zum tieferen Verständnis dieses einfachen Sachverhalts rufe man sich die bereits bekannte Verfahrensweise rund um Interrupts in Erinnerung:
Wenn Sie dieses Element öffnen, werden Inhalte von externen Dienstleistern geladen und dadurch Ihre IP-Adresse an diese übertragen.
In dem vorangegangenen Video wird gezeigt, wie ein Interrupt einen aktuell auf der CPU laufenden Prozess A unterbricht. Prozess A bekommt direkt nach der Abarbeitung der Interruptbehandlungsroutine die CPU zurück. Die folgende Abbildung greift diese Situation auf und zeigt den zeitlichen Verlauf auf dem Prozessor. Weiterhin ist der Unterschied zwischen einem Kontextwechsel und einem Interrupt zu erkennen.
Aus dem Abschnitt Datentransfer und Interrupts stammt das folgende Video. Es geht u.a. auf eine Interruptbehandlungsroutine ein, welche im Video ganz allgemein als ein "Teil des Betriebssystems" bezeichnet wird (ISR #14 ab Minute 1:44).
Wenn Sie dieses Element öffnen, werden Inhalte von externen Dienstleistern geladen und dadurch Ihre IP-Adresse an diese übertragen.
Diese allgemeine Beschreibung ("Die Interruptbehandlungsroutine ist Teil des Betriebssystems") wird nun etwas konkretisiert:
Die Interruptbehandlungsroutine ist Teil des Gerätetreibers!
(Und der Treiber ist Teil der Geräteverwaltung, welche wiederum ein Teil des Betriebssystems ist.)
Betrachte noch einmal die beispielhaft erläuterten Tätigkeiten des FDC-Treibers.
Welche der dort aufgelisteten Tätigkeiten beinhaltet die Interruptbehandlung für ein Gerät?
(Besteht die Interruptbehandlung vielleicht aus mehr als nur einer Tätigkeit?)
Wenn du in der vorangegangenen Aufgabe die Tätigkeiten identifiziert hast, welche durch die vom Treiber bereitgestellte Interruptbehandlungsroutine durchgeführt werden, dann kannst du sicher auch die folgende Frage beantworten:
Warum kann diese Tätigkeiten nur der Treiber vollständig und korrekt durchführen?
Das oben eingebundene Video verdeutlicht die Interruptbehandlung bei einzeln von der Festplatte übertragenen Datenwörtern. Dabei hatte ein Datenwort gerade einmal die Breite des Datenbusses.
Im Abschnitt Datentransfer und Interrupts findet sich zudem eine Auflistung vieler durchzuführender Schritte, die bei der Übertragung jedes einzelnen Datenwortes anfallen.
Moderne Systeme arbeiten jedoch schon lange nicht mehr nach diesem Verfahren, sondern es kommt ein DMA-Controller zum Einsatz.
Auf der Seite zum DMA-Controller wurde erläutert, wie sich der Einsatz eines DMA-Controllers auf die Anzahl der zu verarbeitenden Interrupts auswirkt.
Erläutere in einem Satz:
Wie wirkt sich der Einsatz eines DMA-Controllers auf die Anzahl der (vom Treiber) zu verarbeitenden Interrupts aus?
(Du kannst für diese Aufgabe vom Standardbeispiel ausgehen: Eine große Datei soll von der Festplatte in den Hauptspeicher kopiert werden.)
Die bisherigen Beispiele haben sich oft auf einen Standardfall bezogen: Datenübertragung mit der Festplatte. Jetzt ist eine Festplatte allerdings ein klassisches Gerät, welches Datentransfer per DMA unterstützt.
Außer Festplatten gibt es noch viel weitere Geräte, die von der Geräteverwaltung des Betriebssystems unterstützt werden müssen, und für die ein Treiber eingebunden ist.
Und lange nicht alle Geräte unterstützen den Einsatz eines DMA-Controllers!
Man kann sich an dieser Stelle leicht vorstellen, dass die Interruptverarbeitung im Treiber sehr unterschiedlich ablaufen kann. Mit diesem Umstand beschäftigt sich die folgende Aufgabe vor dem Hintergrund: DMA oder kein DMA.
Betrachte die folgenden Geräte:
und beantworte die folgenden Fragen:
Im Gegensatz zum bisherigen Standardbeispiel (Datenübertragung mit der Festplatte) können die in der vorangegangenen Aufgabe genannten Geräte eine besondere Eigenschaft aufweisen:
Diese Geräte können auch Daten zur weiteren Verarbeitung liefern, obwohl niemand danach gefragt hat.
(Unter "niemand" kann man hierbei z.B. verstehen: "der Treiber", "das Betriebssystem" oder "ein Prozess".)
Glücklicherweise bietet das Interruptkonzept auch genau für diesen Fall eine einfache Reaktionsmöglichkeit des Treibers auf die ungefragt eintreffenden Daten.
Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png