next up previous contents
Next: Memory Management System Up: Hardware Previous: Schematischer Aufbau eines Rechners   Contents


Interrupts

Betrachten wir den Programmablauf eines im Speicher befindlichen Programms. Angenommen während eines solchen Programmablaufs tritt ein Ereignis ein (z.B. ein Hardwarefehler tritt ein, oder bei einer arithmetischen Berechnung tritt ein Überlauf oder ein Unterlauf ein), so dass eine sofortige Reaktion des Rechners nötig ist, dann muß der Programmablauf unterbrochen werden und es muß eine Routine aufgerufen werden, die das Ereignis behandelt. Man nennt eine solche Verzweigung Interrupt (Unterbrechung). Zunächst wollen wir einmal einige gängige Interrupts nennen und kurz beschreiben:

E/A-Geräteanforderung:
Ein E/A-Gerät sendet ein Signal, beispielsweise stellt es Daten bereit oder erwartet bestimmte Daten.
Weckeralarm:
Signal von der Uhr, wenn eine vorher bestimmte Zeit erreicht ist.
Rechnerkernalarm:
Signal eines Rechnerkerns an einen anderen Rechnerkern.
Aufruf eines Betriebssystemdienstes in einem Nutzerprogramm:
Während ein Programm abläuft, ruft das Betriebssystem einen Betriebssystemdienst auf.
Protokollierung der Befehlsausführung:
Die einzelnen abgearbeiteten Befehle werden protokolliert.
Unterbrechungspunkt:
Eine vom Programmierer gesetzte Unterbrechung.
Arithmetiküber- bzw. unterlauf:
Bei einer arithmetischen Berechnung werden Ober- bzw. Untergrenze des Rechenbereichs über- bzw. unterschritten.
Seitenfehler:
Eine gewünschte virtuelle Adresse ist nicht im Speicher eingelagert (siehe Kapitel [*]).
nicht ausgerichteter Speicherzugriff:
Es gibt Architekturen, dessen Speicher byteweise adressiert wird (für jeweils 8 Bit eine Adresse) und trotzdem wortweisen Zugriff (16 Bit oder mehr) erlaubt. Bei Wortzugriffen darf häufig nur auf gerade Adressen zugegriffen werden (ausgerichteter Zugriff). Wenn nun auf ungerade Adressen zugegriffen wird, tritt dieser Fehler ein.
Speicherschutzverletzung:
Es wird auf eine Adresse zugegriffen, für die keine Berechtigung vorliegt (z.B. ins ROM schreiben).
Nutzung eines nicht definierten Befehls:
Ein Programm ruft einen Code auf, dem kein Befehl zugeordnet ist.

Die verschiedenen Interrupts teilt man in zwei Klassen ein:

  1. Synchrone Interrupts: Wenn das Ereignis bei jeder Programmausführung an der gleichen Stelle mit gleichen Daten und gleicher Speicherplatzzuweisung eintritt, dann ist es ein synchrones Ereignis. Synchrone Ereignisse lösen synchrone Interrupts aus. Synchrone Interrupts werden vom Rechnerkern selbst ausgelöst.
  2. Asynchrone Interrupts: Interrupts, die von externen Geräten oder der Uhr ausgelöst werden nennt man asynchrone Interrupts. Die Interrupts sind unabhängig von der Arbeit des Rechnerkerns.

In Abbildung [*] sind den oben genannten Interrupts mit ihren Eigenschaften zusammengefasst.

Figure: Eigenschaften von Ereignissen
\begin{figure}\begin{center}
\begin{tabular}{\vert l\vert\vert l\vert l\vert}
...
...ern\\
\hline
\end{tabular} <tex2html_comment_mark>34 \end{center}\end{figure}

Die Prozessorsteuerung ist dafür verantwortlich zu testen, ob ein Ereignis vorliegt, welches einen Interrupt auslösen muss. Wenn ein Interrupt ausgelöst wird, so wird der derzeit bearbeitete Vorgang unterbrochen. Es wird die Interruptbehandlung vom Rechnerkern ausgeführt. Anschließend muss mit dem unterbrochenen Vorgang genau an der Stelle fortgefahren werden, an der er unterbrochen wurde.

Figure: Ablauf eines Interrupts
\begin{figure}\begin{center}
\epsfxsize7.5cm
\epsfbox{unterbrechung}
\end{center}\end{figure}

Dies erfordert, dass der Rechnerkernzustand zum Zeitpunkt der Unterbrechung abgespeichert wird. Zum Rechnerkernzustand gehören unter anderem der Befehlszähler, die Inhalte der Register des Prozessors und Informationen über die vom Vorgang benutzten Speicherbereiche. In Abbildung [*] ist die Unterbrechungsbehandlung schematische dargestellt.


next up previous contents
Next: Memory Management System Up: Hardware Previous: Schematischer Aufbau eines Rechners   Contents
Prof. Dr. Pluemicke 2003-05-10