3.4.4.4 Interruptbehandlung für ein Gerät

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:


video


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.


Kontextwechsel und ISR.jpg


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).


video


Diese allgemeine Beschreibung ("Die Interruptbehandlungsroutine ist Teil des Betriebssystems") wird nun etwas konkretisiert:


Wichtig

Die Interruptbehandlungsroutine ist Teil des Gerätetreibers!

(Und der Treiber ist Teil der Geräteverwaltung, welche wiederum ein Teil des Betriebssystems ist.)


Aufgabe 1

Aufgabe

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?)


Aufgabe 2

Aufgabe

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?


Interruptbehandlung bei einzeln übertragenen Datenwörtern

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.


Interruptbehandlung bei Einsatz eines DMA-Controllers

Auf der Seite zum DMA-Controller wurde erläutert, wie sich der Einsatz eines DMA-Controllers auf die Anzahl der zu verarbeitenden Interrupts auswirkt.


Aufgabe 3

Aufgabe

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.)


Nicht jedes Gerät ist DMA-fähig

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.


Wichtig

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.


Aufgabe 4

Aufgabe

Betrachte die folgenden Geräte:

  • Maus
  • Tastatur
  • Netzwerkkarte

und beantworte die folgenden Fragen:

  • Ist das Gerät DMA-fähig?
  • Wann tritt bei der Arbeit mit dem Gerät jeweils ein Interrupt auf?
    (Nenne nur die wichtigsten Gründe.)
  • Welche Schritte oder Tätigkeiten muss die Interruptbehandlungsroutine im zugehörigen Treiber ausführen?


Im Gegensatz zum bisherigen Standardbeispiel (Datenübertragung mit der Festplatte) können die in der vorangegangenen Aufgabe genannten Geräte eine besondere Eigenschaft aufweisen:


Hinweis

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.