3.4.4.4 Interruptbehandlung für ein Gerät

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
 
(15 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Interruptbehandlung für ein Gerät=
 
<loop_index>Interrupt|Interruptbehandlung im Treiber</loop_index>
<loop_index id="5fa9786307957">Interrupt</loop_index><loop_index id="5fa978634dd9e">Interruptbehandlung im Treiber</loop_index>
<p>
<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.
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.
Zeile 10: Zeile 10:
<br />
<br />
<loop_area icon="Video.png" icontext="Video">
<loop_area icon="Video.png" icontext="Video">
<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>{{#ev:youtube|_wVNpUW3kdM|700}}</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 />
<p>
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>


<br />
<br />
<p>
<p>
Aus dem Abschnitt [[Kommunikation_mit_E/A-Geräten#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).
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>
</p>


<br />
<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="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>
</loop_area>


Zeile 42: 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 beispielhaft 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 59: 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 70: 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 91: 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 99: 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 105: Zeile 116:


<br />
<br />
== Nicht jedes Gerät ist DMA-fähig ==
== Nicht jedes Gerät ist DMA-fähig ==
<p>
<p>
Zeile 132: Zeile 144:
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Geräte und ihre Interrupts">
<loop_task title="Geräte und ihre Interrupts" id="5fa978630798d">
<p>
<p>
Betrachte die folgenden Geräte
Betrachte die folgenden Geräte:
* Maus
* Maus
* Tastatur
* Tastatur
Zeile 140: Zeile 152:
</p>
</p>
<p>
<p>
und beantworte die folgenden Fragen jeweils im Hinblick auf eines der genannten Geräte:
und beantworte die folgenden Fragen:
</p>
</p>
<p>
<p>
Zeile 155: Zeile 167:
Im Gegensatz zum bisherigen Standardbeispiel (''Datenübertragung mit der Festplatte'') können die in der vorangegangenen Aufgabe genannten Geräte eine besondere Eigenschaft aufweisen:
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>
</p>
<br />
<loop_area type="notice">
<p>
<p>
Diese Geräte können auch Daten zur weiteren Verarbeitung liefern, obwohl ''niemand'' danach gefragt hat.
Diese Geräte können auch Daten zur weiteren Verarbeitung liefern, obwohl ''niemand'' danach gefragt hat.
</p>
</p>
<p>
<p>
Unter "''niemand''" kann man hierbei z.B. verstehen: "''der Treiber''", "''das Betriebssystem''" oder "''ein Prozess''".
<small>(Unter "''niemand''" kann man hierbei z.B. verstehen: "''der Treiber''", "''das Betriebssystem''" oder "''ein Prozess''".)</small>
</p>
</p>
</loop_area>
<br />
<p>
<p>
Glücklicherweise bietet das Interruptkonzept auch genau für diesen Fall eine einfache Reaktionsmöglichkeit des Treibers auf die ungefragt eintreffenden Daten.
Glücklicherweise bietet das Interruptkonzept auch genau für diesen Fall eine einfache Reaktionsmöglichkeit des Treibers auf die ungefragt eintreffenden Daten.

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.