3.4.4.4 Interruptbehandlung für ein Gerät

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
 
(35 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Interruptbehandlung für ein Gerät=
 
<loop_index id="5fa9786307957">Interrupt</loop_index><loop_index id="5fa978634dd9e">Interruptbehandlung im Treiber</loop_index>
<p>
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.
</p>
<p>
<p>
Aus dem Abschnitt [[Kommunikation_mit_E/A-Geräten#Datentransfer_und_Interrupts|Datentransfer und Interrupts]] ist bereits das folgende Video bekannt:
Zum tieferen Verständnis dieses einfachen Sachverhalts rufe man sich die bereits bekannte [[Interrupt-Controller#Was_bei_einem_Interrupt_passiert|Verfahrensweise rund um Interrupts]] in Erinnerung:
</p>
</p>


<br />
<loop_area icon="Video.png" icontext="Video">
<loop_area icon="Video.png" icontext="Video">
<loop_media type="video" title="Ein- und Ausgabe mit Festplatte und Interrupts (04:00)" description="http://youtu.be/nOEW4I_QX2c" copyright="CC-BY" index=true show_copyright=true>{{#ev:youtubehd|nOEW4I_QX2c|700|center||104|239}}</loop_media>
<loop_media type="video" title="Was passiert bei einem Interrupt? (02:14)" description="http://youtu.be/_wVNpUW3kdM" copyright="CC-BY" index=true show_copyright=true id="5fa9786307960">{{#ev:youtube|_wVNpUW3kdM|700}}</loop_media>
</loop_area>
</loop_area>
<br />
<br />
<p>
<p>
Es geht u.a. auf eine [[Interrupt-Controller#Definition:_Interruptbehandlungsroutine|Interruptbehandlungsroutine]] ein, welche im Video ganz allgemein als ein "Teil des Betriebssystems" bezeichnet wird (''ISR #14'' ab Minute 1:44).
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.
</p>
<br />
<p>
<loop_figure title="Ein Interrupt mit seiner zugehörigen Interruptbehandlungsroutine (ISR) unterbricht den Prozess A auf der CPU" description="" copyright="CC-BY" index=true show_copyright=true id="5fa9786307968">
[[Datei:Kontextwechsel_und_ISR.jpg|700px]]
</loop_figure>
</p>
</p>
<br />
<p>
<p>
Diese allgemeine Beschreibung wird nun etwas konkretisiert:
Aus dem Abschnitt [[Datentransfer_und_Interrupts|Datentransfer und Interrupts]] stammt das folgende Video. Es geht u.a. auf eine [[Interrupt-Controller#Definition:_Interruptbehandlungsroutine|Interruptbehandlungsroutine]] ein, welche im Video ganz allgemein als ein "Teil des Betriebssystems" bezeichnet wird (''ISR #14'' ab Minute 1:44).
</p>
 
<br />
<loop_area icon="Video.png" icontext="Video">
<loop_media type="video" title="Ein- und Ausgabe mit Festplatte und Interrupts (04:00)" description="http://youtu.be/nOEW4I_QX2c" copyright="CC-BY" index=true show_copyright=true id="5fa9786307970">{{#ev:youtube|nOEW4I_QX2c|700|center||104|239}}</loop_media>
</loop_area>
 
<br />
<p>
Diese allgemeine Beschreibung <small>(''"Die Interruptbehandlungsroutine ist Teil des Betriebssystems"'')</small> wird nun etwas konkretisiert:
</p>
</p>
<br />
<br />
Zeile 18: Zeile 41:
<loop_area type="important">
<loop_area type="important">
<p>
<p>
Eine Interruptbehandlungsroutine ist Teil eines Gerätetreibers!
Die Interruptbehandlungsroutine ist Teil des Gerätetreibers!
</p>
</p>
<p>
<p>
<small>(Und der Treiber ist Teil der Geräteverwaltung, welche natürlich ein Teil des Betriebssystems ist.)</small>
<small>(Und der Treiber ist Teil der Geräteverwaltung, welche wiederum ein Teil des Betriebssystems ist.)</small>
</p>
</p>
</loop_area>
</loop_area>
Zeile 29: Zeile 52:
== Aufgabe 1 ==
== Aufgabe 1 ==
<loop_area type="task">
<loop_area type="task">
<loop_task title="Interruptbehandlung als Tätigkeit">
<loop_task title="Interruptbehandlung als Tätigkeit" id="5fa9786307977">
<p>
<p>
Betrachte noch einmal die bereits erläuterten [[Bereitstellen_einer_Schnittstelle_zum_Geräte-Controller#Tätigkeiten_des_Treibers|Tätigkeiten eines Treibers]].
Betrachte noch einmal die beispielhaft erläuterten [[Bereitstellen_einer_Schnittstelle_zum_Geräte-Controller#Tätigkeiten_des_FDC-Treibers|Tätigkeiten des FDC-Treibers]].
</p>
</p>
<p>
<p>
Zeile 46: Zeile 69:
== Aufgabe 2 ==
== Aufgabe 2 ==
<loop_area type="task">
<loop_area type="task">
<loop_task title="Nur der Treiber!">
<loop_task title="Nur der Treiber!" id="5fa978630797e">
<p>
<p>
Wenn du in der [[Interruptbehandlung_für_ein_Gerät#Aufgabe_1|vorangegangenen Aufgabe]] die [[Bereitstellen_einer_Schnittstelle_zum_Geräte-Controller#Tätigkeiten_des_Treibers|Tätigkeiten]] identifiziert hast, welche durch die vom Treiber bereitgestellte Interruptbehandlungsroutine durchgeführt werden, dann kannst du sicher auch die folgende Frage beantworten:
Wenn du in der [[Interruptbehandlung_für_ein_Gerät#Aufgabe_1|vorangegangenen Aufgabe]] die [[Bereitstellen_einer_Schnittstelle_zum_Geräte-Controller#Tätigkeiten_des_FDC-Treibers|Tätigkeiten]] identifiziert hast, welche durch die vom Treiber bereitgestellte Interruptbehandlungsroutine durchgeführt werden, dann kannst du sicher auch die folgende Frage beantworten:
</p>
</p>
<p>
<p>
Zeile 57: Zeile 80:


<br />
<br />
== Interruptbehandlung bei einzeln übertragenen Datenwörtern ==
== Interruptbehandlung bei einzeln übertragenen Datenwörtern ==
<p>
<p>
Das [http://youtu.be/nOEW4I_QX2c oben eingebundene Video] verdeutlicht die Interruptbehandlung bei einzeln übertragenen Datenwörtern. Dabei hatte ein Datenwort gerade einmal die Breite des Datenbusses.
Das [http://youtu.be/nOEW4I_QX2c oben eingebundene Video] verdeutlicht die Interruptbehandlung bei einzeln von der Festplatte übertragenen Datenwörtern. Dabei hatte ein Datenwort gerade einmal die Breite des Datenbusses.
</p>
</p>
<p>
<p>
Im Abschnitt [[Kommunikation_mit_E/A-Geräten#Datentransfer_und_Interrupts|Datentransfer und Interrupts]] findet sich zudem eine Auflistung vieler durchzuführender Schritte, die bei der Übertragung jedes einzelnen Datenwortes anfallen.
Im Abschnitt [[Datentransfer_und_Interrupts|Datentransfer und Interrupts]] findet sich zudem eine Auflistung vieler durchzuführender Schritte, die bei der Übertragung jedes einzelnen Datenwortes anfallen.
</p>
</p>
<p>
<p>
Zeile 78: Zeile 102:
== Aufgabe 3 ==
== Aufgabe 3 ==
<loop_area type="task">
<loop_area type="task">
<loop_task title="DMA und Interrupts - Wie war das noch mal?">
<loop_task title="DMA und Interrupts - Wie war das nochmal?" id="5fa9786307986">
<p>
<p>
Erläutere in einem Satz:
Erläutere in einem Satz:
Zeile 86: Zeile 110:
</p>
</p>
<p>
<p>
<small>(Du kannst für diese Aufgabe vom Standardbeispiel ausgehen: Es große Datei soll von der Festplatte in den Hauptspeicher kopiert werden.)</small>
<small>(Du kannst für diese Aufgabe vom Standardbeispiel ausgehen: Eine große Datei soll von der Festplatte in den Hauptspeicher kopiert werden.)</small>
</p>
</p>
</loop_task>
</loop_task>
Zeile 92: Zeile 116:


<br />
<br />
== Aufgabe 4 ==
 
<loop_area type="task">
== Nicht jedes Gerät ist DMA-fähig ==
<loop_task title="Interruptverarbeitung und Interruptverarbeitung">
<p>
<p>
Du hast sicher schon erkannt: Die Interruptverarbeitung im Treiber unterscheidet sich je nachdem, ob ein DMA-Controller zum Einsatz kommt, oder nicht.
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.
</p>
</p>
<br />
<p>
<loop_area type="important">
<p>
<p>
Dann stelle in einer Auflistung doch einmal gegenüber:
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.
</p>
</p>
<p>
<p>
Welche Schritte oder Tätigkeiten muss der Treiber bei der Interruptverarbeitung durchführen, wenn:
Und lange nicht alle Geräte unterstützen den Einsatz eines DMA-Controllers!
# Kein DMA-Controller zum Einsatz kommt, oder
# Ein DMA-Controller und DMA-fähige Geräte zum Einsatz kommen.
</p>
</p>
</loop_area>
</p>
<br />
<p>
<p>
<small>(Du kannst für diese Aufgabe vom Standardbeispiel ausgehen: Es große Datei soll von der Festplatte in den Hauptspeicher kopiert werden.)</small>
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.
</p>
</p>
</loop_task>
</loop_area>


<br />
<br />


== Aber nicht jedes Gerät ist DMA-fähig! ==
== Aufgabe 4 ==
<p>
<loop_area type="task">
<loop_task title="Geräte und ihre Interrupts" id="5fa978630798d">
<p>
Betrachte die folgenden Geräte:
* Maus
* Tastatur
* Netzwerkkarte
</p>
<p>
und beantworte die folgenden Fragen:
</p>
<p>
<p>
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.
* Ist das Gerät DMA-fähig?
* Wann tritt bei der Arbeit mit dem Gerät jeweils ein Interrupt auf?<br /><small>(Nenne nur die wichtigsten Gründe.)</small>
* Welche Schritte oder Tätigkeiten muss die Interruptbehandlungsroutine im zugehörigen Treiber ausführen?
</p>
</loop_task>
</loop_area>
</p>
</p>


<br />
<br />
<p>
<p>
<loop_area type="important">
Im Gegensatz zum bisherigen Standardbeispiel (''Datenübertragung mit der Festplatte'') können die in der vorangegangenen Aufgabe genannten Geräte eine besondere Eigenschaft aufweisen:
</p>
<br />
 
<loop_area type="notice">
<p>
<p>
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.
Diese Geräte können auch Daten zur weiteren Verarbeitung liefern, obwohl ''niemand'' danach gefragt hat.
</p>
</p>
<p>
<p>
Und lange nicht alle Geräte unterstützen den Einsatz eines DMA-Controllers!
<small>(Unter "''niemand''" kann man hierbei z.B. verstehen: "''der Treiber''", "''das Betriebssystem''" oder "''ein Prozess''".)</small>
</p>
</p>
</loop_area>
</loop_area>
<br />
<p>
Glücklicherweise bietet das Interruptkonzept auch genau für diesen Fall eine einfache Reaktionsmöglichkeit des Treibers auf die ungefragt eintreffenden Daten.
</p>
</p>
- to do -


<div class="autoit_do_not_print">
<div class="autoit_do_not_print">

Aktuelle Version vom 10. November 2020, 14:00 Uhr

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.