Zum Inhalt springen

Unterbrechungsanforderung

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 11. Mai 2004 um 19:56 Uhr durch Zwobot (Diskussion | Beiträge) (Zwobot - Kat - Bot-unterstützte Begriffsklärung: Kaskade). Sie kann sich erheblich von der aktuellen Version unterscheiden.

IRQ ist eine Abkürzung aus dem Computerbereich und bedeutet Interrupt Request. Auf Deutsch kann man es als Unterbrechungsanforderung bezeichnen.

Varianten des IRQs sind NMI - Non Maskable Interrupt und RST - Reset.

Ein Interrupt ist ein Signal, meist von einem externen Gerät, mit dem der Prozessor aufgefordert wird, den aktuellen Programmablauf anzuhalten (zu unterbrechen) und eine sog. Interrupt-Service-Routine aufzurufen.

Durch spezielle Einstellungen kann verhindert werden, dass die CPU auf einen IRQ reagiert. Dies ist z.B. dann sinnvoll, wenn gerade ein IRQ behandelt wird. Diese Maskierung kann nur für IRQ vorgenommen werden - NMI (Non Maskable Interrupt) können demnach nicht verhindert werden. RST sind spezielle Interrupt-Signale (ebenfalls nicht-maskierbar) die die CPU auch in einen definierten Zustand versetzen können, bzw. die Verarbeitung an einer fest vorgegebenen Speicheradresse (neu) starten.

Je nach Type der CPU können dieser nur einer oder mehrere, von einander unterscheidbare, IRQ gemeldet werden. Mit einem IRQ ist eine Service-Routine verbunden, diese kann dann entweder sofort die entsprechende Aktion durchführen, oder (wie bei den IBM-kompatible PC's) muss erst ermitteln, welches Gerät die Unterbrechung engefordert hat und kann dann erst die Verarbeitung beginnen.

Die Zeit zwischen dem anlegen des IRQ-Signals und dem Beginn der entsprechenden Verabeitung nennt mann auch Latenzzeit. Man spricht im Zusammenhang mit Realtime oder Echtzeit-Betriebssystem davon, dass diese Latenzzeit immer kleiner als ein definierter Wertes bleibt (egal wie gross/klein dieser Wert ist und egal was die CPU gerade macht).

IBM-kompatible PC's

In normalen handelsüblichen (=IBM-kompatiblen) PCs gibt es 16 IRQs. Diese 16 Adressen werden verschiedenen Peripheriegeräten und Steckkarten zugewiesen, um eine eindeutige Verwaltung derselben zu ermöglichen.

Über den IRQ-Kanal stehen Adapter, Karten und Teile der Peripherie eines PC mit der CPU in Verbindung.

Mit einem IRQ wird dem Prozessor mitgeteilt, dass ein externes Gerät eine bestimmte Aktion durchführen möchte. Dies geschieht über so genannte Interrupt-Leitungen. Sobald ein Interrupt am Controller anliegt, ermittelt dieser den Ursprung und teilt diesen der CPU mit. Die CPU kann dann die jeweilige, gerätespezifische, Aktion durchführen.

Ein solcher PIC (programmable interrupt controller) mit 8 Leitungen wurde in die ersten PCs eingebaut. Allerdings reichte der sehr bald schon nicht mehr aus, aber statt einen größeren zu bauen, verwendete man (und verwendet bis heute) einfach zwei davon, die auf besondere Art und Weise hintereinander geschaltet sind:

PIC 1 (Master)
+--------------+         PIC 2 (Slave)
| IRQ  0       |        +-------------+
| IRQ  1       |        | IRQ  8      |
| IRQ  2       +--------+ IRQ  9      |
| IRQ  3       |        | IRQ 10      |
| IRQ  4       |        | IRQ 11      |
| IRQ  5       |        | IRQ 12      |
| IRQ  6       |        | IRQ 13      |
| IRQ  7       |        | IRQ 14      |
+------+-------+        | IRQ 15      |
       |                +-------------+
       |
       +----- Steuerbus

Über den Steuerbus wird eine IRQ-Meldung an den Prozessor weitergeleitet.

Die Reihenfolge, wann ein IRQ und damit "sein" Gerät "dran" sind (ein Prozessor kann ja schließlich immer nur eins auf einmal machen), wird durch die Position des IRQ bestimmt. Durch die Art der Schaltung sieht die Reihenfolge so aus:

0, 1, (2), 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7.

Der IRQ 2 wird selbst nicht belegt, er ist die "Durchreiche" für die IRQs des zweiten PIC (Fachsprache: Kaskade, man spricht bei dieser Funktionsweise von Kaskadierung des PIC).

Belegen zwei Geräte die selbe Leitung, kann es zu Fehlfunktionen kommen. Bei einigen Betriebssystemen, auf welchen man die IRQs frei wählen kann, gibt es jedoch auch das IRQ-Sharing (to share = teilen): Zwei Geräte teilen sich einen IRQ. Knackpunkt: Sie dürfen nicht zeitgleich betrieben werden, sonst gibt's Datensalat.

Bei neueren Peripheriegeräten kümmern sich der Computer und das Betriebssystem selbst um die Vergabe der IRQ-Nummern (PnP = Plug-and-Play-Geräte). Bei alten Steckkarten, z.B. ISA-Karten, müssen die IRQs von Hand eingestellt werden.

Unter Linux kann man die Interrupts mit folgendem Befehl abfragen: cat /proc/interrupts

IRQ-Geräte-Tabelle # (Diese Liste kann sich bei manchen Geräten anders darstellen)