Interrupts (IRQ‘s)
Von WebMaster Mario
Interrupts
• Ein Interrupt ist eine Folge von Aktionen, bei denen der
Prozessor seinen aktuellen Zustand (Machine Status
Register (MSR), den Program Counter (PC)) sichert und
die Ausführung an einer vordefinierten Adresse (Eintrag in
der Exception Entry Table) fortsetzt. Diese Adresse ist der
Einsprung in den entsprechenden Interrupt-Handler, in
dem verifiziert wird, welches Device die Ausnahme
ausgelöst hat. Entsprechend wird dann die zugehörige
Interrupt-Service-Routine aufgrufen, in welcher dann die
Ausnahmen behandelt wird.
•
Interrupt. Eigentlich müßte die CPU alle an den Computer angeschlossenen
Geräte (z.B. die Tastatur) regelmäßig fragen, ob irgendwelche Eingaben
gemacht worden sind. Würde dies zu oft geschehen, wäre das System durch
diese Abfragen (polling) stark ausgebremst; wären diese zu selten, müßte man
zu lange warten, bis der Computer reagiert. Deshalb geht man hier anders vor.
Die einzelnen Geräte melden sich bei der CPU, wenn sie dem System etwas
mitzuteilen haben. Diese Meldung heißt Interrupt-Request (IRQ), da die
Geräte verlangen, daß das System den aktuellen Prozeß kurz unterbricht, um
auf ihre Eingabe einzugehen. Diese Interrupts werden vom InterruptController verwaltet, der die Abarbeitung der Interrupts nach einer
Prioritätsliste verwaltet. In PCs gibt es 15 Interrupts, von IRQ 0 bis IRQ 15
durchnumeriert (IRQ2 zeigt auf die IRQs 8 bis 15). Damit ein reibungsloses
Arbeiten des PC gewährleistet ist, darf jeder Interrupt im Prinzip nur einmal
vergeben werden. Beim PCI-Bus wird ein ähnliches Verfahren verwendet. Hier
gibt es die Interrupts INTA bis INTD. Diese werden auf normale Interrupts
(IRQs) umgelegt.
Ausnahmen
• Als Ausnahme wird ein Ereignis (Event) bezeichnet, bei dem der
Prozessor, sofern die entsprechenden Register konfiguriert sind, dazu
veranlaßt wird, darauf mit einem Interrupt zu reagieren. Bei den
Ausnahmen unterscheidet man:
• Asynchrone Ausnahmen, welche durch externe Ereignisse indiziert
werden.
• Synchrone Ausnahmen, welche durch Befehle des Prozessors indiziert
werden.
• Präzise Ausnahmen, bei denen der gesicherte PC entweder die Adresse
des Befehls, bei dem die Ausnahme auftrat oder die des im
sequentiellen Ablauf darauffolgendenden Befehls enthält.
• Unpräzise Ausnahmen, bei denen der gesicherte PC auch eine
beliebige Adresse enthalten kann.
Eigenschaften von Interrupts
Interrupts besitzen Eigenschaften:
•
•
•
Syncron oder asyncron:
Wenn das Ereignis bei jeder Programmausführung an der gleichen Stelle mit gleichen Daten und
gleicher Speicherplatzzuweiseung, dann ist es ein syncrones Ereignis. Mit Ausnahme der
Hardware-Funktionsstörung werden asyncrone Ereignis durch Geräte verursacht, die extern
zum Prozessor und Speicher sind.
Nutzergewünscht oder erzwungen:
Wenn das Ereignis vom Programmierer direkt herbeiführt wird, so ist es ein nutzergewünschtes
Ereignis, sonst ein ein erzwungenes Ereignis.
Nutzermaskierbare oder nichtmaskierbare:
Wenn ein Ereignis durch einen Prozeß verhinderbar ist, so spricht man von einem
nutzermaskierbarem Ereignis.
•
Innerhalb oder zwischen Befehlen:
Es gibt Ereignisse, die während einer Befehlsausführung eintreten und andere, die zwischen
zwei Befehlsausführungen eintreten.
•
Fortsetzende und abschließende:
Wenn ein Programmablauf nach Ausführung des Interrupts stoppt, nennt man das Ereignis
abschließend.
Arten der Interrupts
• Wir unterscheiden:
• Software - Interrupts
• Hardware - Interrupts
Hardware - Interrupts
• Hardware-Interrupts werden durch verschiedene
Hardware-Komponenten erzeugt und über den InterruptController, einen INTEL 8259, an die CPU weitergeleitet.
Während der PC und der XT mit den acht durch einen
8259 verwaltbaren Interrupt-Quellen auskommt, ist dies
für den AT nicht ausreichend. Aus diesem Grund enthält er
zwei 8259-Interrupt-Controller, so daß er 16 InterruptQuellen IRQ0 bis IRQ15 verwalten kann.
Software - Interrupts
• Dies sind bestimmte Assembler- bzw. MaschinenInstruktionen, die Software-Interrupts erzeugen. Sie
heißen in der Praxis etwa INT (Intel 80X86) oder TRAP
(MC68000). Sie ähneln normalen Unterprogrammaufrufen
(Calls), aber die Zieladresse ist nicht fest vorgegeben,
sondern durch eine Tabelle, die sog. InterruptvektorTabelle bestimmt. Parameter werden in Registern oder mit
Hilfe des Stacks übergeben.

Interrupts (IRQ`s)