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:
- 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.
- 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
 |
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
 |
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: Memory Management System
Up: Hardware
Previous: Schematischer Aufbau eines Rechners
  Contents
Prof. Dr. Pluemicke
2003-05-10