2.3.4 Interrupt-Controller

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 23: Zeile 23:
Es ist an dieser Stelle wichtig zu verstehen was genau passiert, wenn ein Interrupt auftritt und von der CPU bearbeitet wird. Die Beschreibung oben auf dieser Seite ist noch recht allgemein gehalten, weshalb jetzt einige entscheidende Details betrachtet werden sollen.
Es ist an dieser Stelle wichtig zu verstehen was genau passiert, wenn ein Interrupt auftritt und von der CPU bearbeitet wird. Die Beschreibung oben auf dieser Seite ist noch recht allgemein gehalten, weshalb jetzt einige entscheidende Details betrachtet werden sollen.


Die Abarbeitung eines angezeigten Interrupts durch die CPU ist wichtig, aber genau so wichtig ist es, dass der durch den Interrupt unterbrochene Prozess später ohne negative Beeinträchtigung weiter ausgeführt werden kann. Das vom Prozess erarbeitete Ergebnis darf sich unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) auftrat(en), oder nicht. Erreicht wird dieses durch sogenannte präzise Unterbrechungen.
Die Abarbeitung eines angezeigten Interrupts durch die CPU ist wichtig, aber genau so wichtig ist es, dass der durch den Interrupt unterbrochene Prozess später ohne negative Beeinträchtigung weiter ausgeführt werden kann. Das vom Prozess erarbeitete Ergebnis darf sich unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) auftrat(en), oder nicht. Erreicht wird dieses durch sogenannte präzise Unterbrechungen.<br />
 
<br />
<loop_area type="definition">'''Definition: Präzise Unterbrechung (Precise Interrupt)'''<br />
<loop_area type="definition">'''Definition: Präzise Unterbrechung (Precise interrupt)'''<br />
Einen Interrupt nennt man eine '''präzise Unterbrechung''', falls die folgenden Bedingungen erfüllt sind:
Einen Interrupt nennt man eine '''präzise Unterbrechung''', falls alle der folgenden Bedingungen erfüllt sind:
# Der Programmzähler des unterbrochenen Prozesses wird an einer bekannten Stelle gesichert.
# Der Programmzähler des unterbrochenen Prozesses wird an einer bekannten Stelle gesichert.
# '''Alle''' Befehle des unterbrochenen Prozesses, die '''vor''' dem Befehl ausgeführt werden müssen, auf den der Programmzähler zeigt, sind vollständig abgearbeitet.
# '''Alle''' Befehle des unterbrochenen Prozesses, die '''vor''' dem Befehl ausgeführt werden müssen, auf den der Programmzähler zeigt, sind vollständig abgearbeitet.
# '''Kein''' Befehl des unterbrochenen Prozesses, der '''nach''' dem Befehl ausgeführt werden muss, auf den der Programmzähler zeigt, ist bereits abgearbeitet.
# '''Kein''' Befehl des unterbrochenen Prozesses, der '''nach''' dem Befehl ausgeführt werden muss, auf den der Programmzähler zeigt, ist bereits abgearbeitet.
# Der Ausführungszustand des Befehls des unterbrochen Prozesses, auf den der Programmzähler zeigt, ist bekannt.
# Der Ausführungszustand des Befehls des unterbrochen Prozesses, auf den der Programmzähler zeigt, ist bekannt.
</loop_area>
<loop_area type="definition">'''Definition: Unpräzise Unterbrechung (Imprecise interrupt)'''<br />
Einen Interrupt nennt man eine '''unpräzise Unterbrechung''', falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist.
</loop_area>
</loop_area>
<br />
<br />

Version vom 19. September 2013, 10:15 Uhr

Der Interrupt-Controller ist ein weiterer Hardware-Baustein in der Architektur eines Computers. Seine Aufgabe besteht darin, Interrupt-Signale von verschiedenen Komponenten des Rechners entgegen zu nehmen, und die CPU über das Vorliegen von einem (oder mehreren) Interrupts zu informieren.

Die CPU ist dann für die Abarbeitung des Interrupts zuständig. Dies geschieht, indem eine sogenannte Interruptbehandlungsroutine aufgerufen wird.

Die deutsche Übersetzung des englischen Begriffs "Interrupt" ist "Unterbrechung". Und genau diese Unterbrechung eines laufenden Prozesses passiert in dem Moment, wo sich die CPU entschließt, einen vom Interrupt-Controller angezeigten Interrupt zu bearbeiten.

Den vereinfachten Ablauf zeigt das folgende Video:

Im Video ist erkennbar, dass der Interrupt-Controller als eigenständige Hardware-Komponente über den Systembus mit anderen Komponenten und insbesondere mit der CPU kommuniziert.

Cpu13-interrupt-controller.jpg


Vnrgesamt2.jpg


Hinweis

Weiterführende Literatur

erläutert in den Kapiteln 8.1 (Interrupts) und 8.2 (Ausnahmen) weitere Hintergründe zu den genannten Themen. Die Lektüre dieser Quelle sei ausdrücklich empfohlen.

Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten über ihre Hochschulen von Springerlink zu beziehen.


Es ist an dieser Stelle wichtig zu verstehen was genau passiert, wenn ein Interrupt auftritt und von der CPU bearbeitet wird. Die Beschreibung oben auf dieser Seite ist noch recht allgemein gehalten, weshalb jetzt einige entscheidende Details betrachtet werden sollen.

Die Abarbeitung eines angezeigten Interrupts durch die CPU ist wichtig, aber genau so wichtig ist es, dass der durch den Interrupt unterbrochene Prozess später ohne negative Beeinträchtigung weiter ausgeführt werden kann. Das vom Prozess erarbeitete Ergebnis darf sich unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) auftrat(en), oder nicht. Erreicht wird dieses durch sogenannte präzise Unterbrechungen.

Definition

Definition: Präzise Unterbrechung (Precise interrupt)

Einen Interrupt nennt man eine präzise Unterbrechung, falls alle der folgenden Bedingungen erfüllt sind:

  1. Der Programmzähler des unterbrochenen Prozesses wird an einer bekannten Stelle gesichert.
  2. Alle Befehle des unterbrochenen Prozesses, die vor dem Befehl ausgeführt werden müssen, auf den der Programmzähler zeigt, sind vollständig abgearbeitet.
  3. Kein Befehl des unterbrochenen Prozesses, der nach dem Befehl ausgeführt werden muss, auf den der Programmzähler zeigt, ist bereits abgearbeitet.
  4. Der Ausführungszustand des Befehls des unterbrochen Prozesses, auf den der Programmzähler zeigt, ist bekannt.
Definition

Definition: Unpräzise Unterbrechung (Imprecise interrupt)

Einen Interrupt nennt man eine unpräzise Unterbrechung, falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist.


Gründe für eine Interrupt-Auslösung

Näher betrachtet werden hier folgende Gründe für eine Interrupt-Auslösung:

  • Auslösung aufgrund einer Speicherschutzverletzung.
  • Auslösung durch einen Hardware-Taktgeber zur Quasi-gleichzeitigen Ausführung mehrerer Prozesse.
  • Auslösung durch ein E/A-Gerät während der Kommunikation zwischen CPU und E/A-Gerät.

In den folgenden Unterkapiteln werden diese Punkte näher erläutert.


Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png