[gesichtete Version] | [gesichtete Version] |
Keine Bearbeitungszusammenfassung |
Kwastg (Diskussion | Beiträge) |
||
(35 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<p> | <p> | ||
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. | Der <loop_index id="5fa97861a7878">Interrupt|Interrupt-Controller|Controller, Interrupt</loop_index>'''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. | ||
</p> | </p> | ||
<p> | <p> | ||
Die CPU ist dann für die Abarbeitung des Interrupts zuständig. Dies geschieht, indem eine sogenannte | Die CPU ist dann für die Abarbeitung des Interrupts zuständig. Dies geschieht, indem eine sogenannte <loop_index id="5fa97861a7883">Interruptbehandlungsroutine</loop_index>Interruptbehandlungsroutine aufgerufen wird. | ||
</p> | </p> | ||
<br /> | |||
== Definition: Interruptbehandlungsroutine == | |||
<p> | |||
<loop_index id="5fa97861a788c">ISR, Interrupt Service Routine|Interrupt Service Routine</loop_index> | |||
<loop_area type="definition"> | |||
<p> | <p> | ||
Die deutsche Übersetzung des englischen Begriffs "Interrupt" ist "Unterbrechung". Und genau diese Unterbrechung eines laufenden Prozesses passiert in dem Moment, | Unter einer '''Interruptbehandlungsroutine''' (ISR, Interrupt Service Routine) versteht man eine Reihe von Anweisungen, die einem bestimmten Interrupt zugeordnet ist und deren Anweisungen auf einer CPU ausgeführt werden können. | ||
</p> | |||
</loop_area> | |||
</p> | |||
<br /> | |||
== Interrupt bedeutet Unterbrechung == | |||
<p> | |||
Die deutsche Übersetzung des englischen Begriffs "Interrupt" ist "<loop_index id="5fa97861a7894">Unterbrechung, Interrupt</loop_index>Unterbrechung". Und genau diese Unterbrechung eines laufenden Prozesses passiert in dem Moment, in dem sich die CPU entschließt, einen vom Interrupt-Controller angezeigten Interrupt zu bearbeiten. | |||
</p> | </p> | ||
<p> | <p> | ||
Zeile 13: | Zeile 28: | ||
<p> | <p> | ||
<loop_area icon="Video.png" icontext="Video"> | <loop_area icon="Video.png" icontext="Video"> | ||
<loop_media type="video" title="Interrupt-Controller (01:30)" description="http://youtu.be/ML9mwQ5TyzI" copyright="CC-BY" index=true show_copyright=true>{{#ev:youtube|ML9mwQ5TyzI|700}}</loop_media> | <loop_media type="video" title="Interrupt-Controller (01:30)" description="http://youtu.be/ML9mwQ5TyzI" copyright="CC-BY" index=true show_copyright=true id="5fa97861a789d">{{#ev:youtube|ML9mwQ5TyzI|700}}</loop_media> | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
<br /> | |||
<p> | |||
Im Video ist erkennbar, dass der Interrupt-Controller als eigenständige Hardware-Komponente über den <loop_index id="5fa97861a78a5">Systembus</loop_index>Systembus mit anderen Komponenten und insbesondere mit der CPU kommuniziert. | |||
</p> | |||
<br /> | |||
<p> | |||
<loop_figure title="CPU mit Interrupt-Controller" description="" copyright="CC-BY" index=true show_copyright=true id="5fa97861a78ad">[[Datei:Cpu13-interrupt-controller.jpg|700px]]</loop_figure> | |||
</p> | |||
<br /> | |||
<p> | <p> | ||
<loop_figure title="Interrupt-Controller im Gesamtbild" description="" copyright="CC-BY" index=true show_copyright=true id="5fa97861a78b5">[[Datei:vnrgesamt2.jpg|700px]]</loop_figure> | |||
</p> | </p> | ||
<br /> | |||
<p> | |||
<loop_area type="notice">'''Weiterführende Literatur''' | |||
<p> | <p> | ||
< | <cite id="5fa97861a78bd">Wuest+2011</cite> 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. | ||
</p> | </p> | ||
<p> | <p> | ||
< | <small>Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten [[Hinweise für Studierende#Downloadbare Bücher von Springerlink|über ihre Hochschulen von Springerlink zu beziehen.]]</small> | ||
</p> | </p> | ||
</loop_area> | |||
</p> | |||
<br /> | |||
<p> | <p> | ||
<loop_area type="notice">'''Weiterführende Literatur''' | <loop_area type="notice">'''Weiterführende Literatur''' | ||
<p> | <p> | ||
<cite> | <cite id="5fa97861a78c6">Mandl+2013</cite> erläutert in Kapitel 3.1 (Interrupts) weitere Hintergründe zum Thema. Die Lektüre dieser Quelle sei ausdrücklich empfohlen. | ||
</p> | </p> | ||
<p> | <p> | ||
Zeile 35: | Zeile 67: | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
<br /> | |||
<p> | <p> | ||
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. | ||
</p> | </p> | ||
<br /> | |||
== Keine negative Beeinträchtigung == | |||
<p> | <p> | ||
Ein entscheidendes Kriterium bei der Abarbeitung eines Interrupts durch die CPU ist, 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 nicht unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) | Ein entscheidendes Kriterium bei der Abarbeitung eines Interrupts durch die CPU ist, 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 nicht unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) aufträt(en), oder nicht. Erreicht wird dieses durch die Einhaltung der Bedingungen einer <loop_index id="5fa97861a78ce">präzise Unterbrechung</loop_index><loop_index id="5fa978b21dd40">präzise Unterbrechung, Bedingungen</loop_index><loop_index id="5fa978b21dd50">Bedingungen präzise Unterbrechung</loop_index><loop_index id="5fa978b21dd59">Unterbrechung, präzise</loop_index><loop_index id="5fa978b21dd60">Precise interrupt</loop_index><loop_index id="5fa978b21dd68">Interrupt, precise</loop_index>präzisen Unterbrechung. | ||
</p> | </p> | ||
<br /> | |||
== Definition: Präzise Unterbrechung == | |||
<p> | <p> | ||
<loop_area type="definition"> | <loop_area type="definition"> | ||
<p> | <p> | ||
Einen Interrupt nennt man eine '''präzise Unterbrechung''', falls alle der folgenden Bedingungen erfüllt sind: | Einen Interrupt nennt man eine '''präzise Unterbrechung''' (precise interrupt), 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 | # Der Ausführungszustand des Befehls des unterbrochenen Prozesses, auf den der Programmzähler zeigt, ist bekannt. | ||
</p> | </p> | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
<br /> | |||
== Definition: Unpräzise Unterbrechung == | |||
<p> | <p> | ||
< | <loop_index id="5fa97861a78d5">Unpräzise Unterbrechung</loop_index><loop_index id="5fa97862a9fa5">Unterbrechung, unpräzise</loop_index><loop_index id="5fa97862a9fb8">Imprecise interrupt</loop_index><loop_index id="5fa97862a9fc7">Interrupt, imprecise</loop_index> | ||
<loop_area type="definition"> | |||
<p> | <p> | ||
Einen Interrupt nennt man eine '''unpräzise Unterbrechung''', falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist. | Einen Interrupt nennt man eine '''unpräzise Unterbrechung''' (Imprecise interrupt), falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist. | ||
</p> | </p> | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
<br /> | |||
== Was bei einem Interrupt passiert == | |||
<p> | <p> | ||
Das folgende Video zeigt ein Beispiel, anhand dessen nachvollzogen werden kann, was genau bei einem Interrupt passiert, und ob die Bedingungen für eine präzise Unterbrechung erfüllt werden. | Das folgende Video zeigt ein Beispiel, anhand dessen nachvollzogen werden kann, was genau bei einem Interrupt passiert, und ob die Bedingungen für eine präzise Unterbrechung erfüllt werden. | ||
Zeile 64: | Zeile 113: | ||
<p> | <p> | ||
<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="5fa97861a78dd">{{#ev:youtube|_wVNpUW3kdM|700}}</loop_media> | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
<br /> | |||
<p> | <p> | ||
Mit Hilfe dieses Videos ist es nun möglich, die folgenden Aufgaben zu bearbeiten: | Mit Hilfe dieses Videos ist es nun möglich, die folgenden Aufgaben zu bearbeiten: | ||
</p> | </p> | ||
<br /> | |||
== Aufgabe 1 == | |||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title=" | <loop_task title="Prüfe die Bedingungen!" id="5fa97861a78e5"> | ||
<p> | <p> | ||
Prüfe für jede der vier Bedingungen einer präzisen Unterbrechung, ob diese '''tatsächlich erfüllt''' ist! | Prüfe anhand des [http://youtu.be/_wVNpUW3kdM Videos] für jede der [[Interrupt-Controller#Definition:_Präzise_Unterbrechung|vier Bedingungen einer präzisen Unterbrechung]], ob diese '''tatsächlich erfüllt''' ist! | ||
* Ist Bedingung 1 erfüllt? Erläutere warum! | * Ist Bedingung 1 erfüllt? Erläutere warum! | ||
* Ist Bedingung 2 erfüllt? Erläutere warum! | * Ist Bedingung 2 erfüllt? Erläutere warum! | ||
Zeile 83: | Zeile 137: | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
<br /> | |||
== Aufgabe 2 == | |||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title=" | <loop_task title="Schätze die Folgen ab!" id="5fa97861a78ed"> | ||
<p> | <p> | ||
Beschreibe ein Szenario, bei dem jeweils eine der vier Bedingungen einer präzisen Unterbrechung '''nicht erfüllt''' ist. | Beschreibe ein Szenario, bei dem jeweils eine der [[Interrupt-Controller#Definition:_Präzise_Unterbrechung|vier Bedingungen einer präzisen Unterbrechung]] '''nicht erfüllt''' ist. | ||
* Was sind die Folgen, wenn Bedingung 1 nicht erfüllt ist? | * Was sind die Folgen, wenn Bedingung 1 nicht erfüllt ist? | ||
* Was sind die Folgen, wenn Bedingung 2 nicht erfüllt ist? | * Was sind die Folgen, wenn Bedingung 2 nicht erfüllt ist? | ||
Zeile 96: | Zeile 154: | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
<br /> | |||
== Aufgabe 3 == | |||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title=" | <loop_task title="Wer wenn nicht das Steuerwerk?" id="5fa97861a78f5"> | ||
<p> | <p> | ||
Im [http://youtu.be/_wVNpUW3kdM Video] wird gezeigt, wie der aktuelle Wert des Befehlszählers bei einer Unterbrechung in einem anderen Register gesichert wird. Alle weiteren Register oder die Statusflags werden hingegen nicht gesichert. | Im [http://youtu.be/_wVNpUW3kdM Video] wird gezeigt, wie der aktuelle Wert des Befehlszählers bei einer Unterbrechung in einem anderen Register gesichert wird. Alle weiteren Register oder die Statusflags werden hingegen nicht gesichert. | ||
Zeile 108: | Zeile 170: | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
<br /> | |||
== Aufgabe 4 == | |||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title=" | <loop_task title="Vier Bit" id="5fa97861a78fd"> | ||
<p> | <p> | ||
Im [http://youtu.be/_wVNpUW3kdM Video] werden in den Registern PC und IR jeweils Werte abgelegt, die aus vier Bit bestehen. | Im [http://youtu.be/_wVNpUW3kdM Video] werden in den Registern PC und IR jeweils Werte abgelegt, die aus vier Bit bestehen. | ||
* Wie | * Wie realistisch sind diese ''vier Bit''? | ||
* Wieviele Bit erwartest du hier bei deinem eigenen PC oder Laptop? | * Wieviele Bit erwartest du hier bei deinem eigenen PC oder Laptop? | ||
</p> | </p> | ||
Zeile 119: | Zeile 184: | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
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.
Unter einer Interruptbehandlungsroutine (ISR, Interrupt Service Routine) versteht man eine Reihe von Anweisungen, die einem bestimmten Interrupt zugeordnet ist und deren Anweisungen auf einer CPU ausgeführt werden können.
Die deutsche Übersetzung des englischen Begriffs "Interrupt" ist "Unterbrechung". Und genau diese Unterbrechung eines laufenden Prozesses passiert in dem Moment, in dem sich die CPU entschließt, einen vom Interrupt-Controller angezeigten Interrupt zu bearbeiten.
Den vereinfachten Ablauf zeigt das folgende Video:
Wenn Sie dieses Element öffnen, werden Inhalte von externen Dienstleistern geladen und dadurch Ihre IP-Adresse an diese übertragen.
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.
Weiterführende Literatur
Wuest 2011 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.
Weiterführende Literatur
Mandl 2013 erläutert in Kapitel 3.1 (Interrupts) weitere Hintergründe zum Thema. 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.
Ein entscheidendes Kriterium bei der Abarbeitung eines Interrupts durch die CPU ist, 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 nicht unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) aufträt(en), oder nicht. Erreicht wird dieses durch die Einhaltung der Bedingungen einer präzisen Unterbrechung.
Einen Interrupt nennt man eine präzise Unterbrechung (precise interrupt), falls alle der folgenden Bedingungen erfüllt sind:
Einen Interrupt nennt man eine unpräzise Unterbrechung (Imprecise interrupt), falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist.
Das folgende Video zeigt ein Beispiel, anhand dessen nachvollzogen werden kann, was genau bei einem Interrupt passiert, und ob die Bedingungen für eine präzise Unterbrechung erfüllt werden.
Wenn Sie dieses Element öffnen, werden Inhalte von externen Dienstleistern geladen und dadurch Ihre IP-Adresse an diese übertragen.
Mit Hilfe dieses Videos ist es nun möglich, die folgenden Aufgaben zu bearbeiten:
Prüfe anhand des Videos für jede der vier Bedingungen einer präzisen Unterbrechung, ob diese tatsächlich erfüllt ist!
Beschreibe ein Szenario, bei dem jeweils eine der vier Bedingungen einer präzisen Unterbrechung nicht erfüllt ist.
Im Video wird gezeigt, wie der aktuelle Wert des Befehlszählers bei einer Unterbrechung in einem anderen Register gesichert wird. Alle weiteren Register oder die Statusflags werden hingegen nicht gesichert.
Im Video werden in den Registern PC und IR jeweils Werte abgelegt, die aus vier Bit bestehen.