WikiDer > Unterbrechen
In dem Computertechnik ist ein unterbrechen (buchstäblich Unterbrechung) eine Bitte um Aufmerksamkeit von a Hardwarekomponente zu einer anderen Komponente, normalerweise a Prozessor. Der Interrupt wurde zuerst im applied X1-Computer von elektrologisch, und wurde dann Operation erwähnt. Die Abkürzung IRQ kommt von Anfrage unterbrechen, eine Unterbrechungsanforderung.
Auf physischer Ebene sind verschiedene Teile eines elektronischen Geräts mit einer Reihe von Leitungen verbunden. Durch Aktivieren einer solchen Leitung kann eine Komponente (z.B. EthernetChip), weil er die Aufmerksamkeit des anderen will. Diese Zustandsänderung erfolgt typischerweise durch Invertieren der Spannung (3V auf 0V oder umgekehrt). Der Interrupt-Eingang kann pegelsensitiv sein oder Pegelwechsel (Flanke).
Im Fall von a Prozessor, es antwortet mit a Serviceroutine unterbrechen (ISR). Diese ISR wird vorzugsweise so kurz wie möglich gehalten, damit der Prozessor auch auf das Hauptprogramm zugreifen kann und bereit ist, neue Interrupts zu bearbeiten.
Viele digitale Systeme, wie z persönliche Computer, sind Interrupt-basiert. Wenn beispielsweise eine Taste auf einer Tastatur gedrückt wird, erzeugt dies einen Interrupt, der schließlich dazu führt, dass ein bestimmter Buchstabe auf dem Bildschirm angezeigt oder ein bestimmter Befehl ausgeführt wird. Dieser Mechanismus liegt auch in einer für den Benutzer verborgeneren Weise zugrunde: Eine Netzwerkschnittstelle erzeugt Unterbrechungen für den Prozessor, wenn neue Daten empfangen werden, um anzuzeigen, dass neue Daten verfügbar sind. Auf diese Weise ist der Prozessor in vielen Fällen hauptsächlich damit beschäftigt, auf Interrupts zu warten und die diesen Interrupts zugeordneten Befehle auszuführen.
IRQ und NMI
Ein modernes Mikroprozessor hat zwei Interrupt-Eingänge, IRQ (Interrupt Request) und NMI (Non-maskable Interrupt).
IRQ
IRQ kann von der Mikroprozessor-Hardware maskiert werden, so dass auf einen Interrupt nicht reagiert wird. Der IRQ-Eingang ist pegelempfindlich (pegelempfindlich). Sobald der Mikroprozessor auf einen Interrupt reagiert, wird IRQ maskiert, damit der noch aktive IRQ-Eingang keinen weiteren Interrupt verursacht.
NMI
NMI kann nicht maskiert werden und wird nur in sehr dringenden Fällen verwendet. NMI ist Flankenempfindlich (kantenempfindlich), das heißt, ein Interrupt tritt auf, wenn NMI aktiv wird, und tritt dann nicht mehr auf, wenn NMI aktiv bleibt. Wenn NMI pegelsensitiv wäre, würde ein aktiver NMI-Eingang ständig Unterbrechungen verursachen, so dass der Mikroprozessor die Unterbrechungen nicht mehr verarbeiten könnte.
Handhabung von IRQ
Normalerweise gibt es mehrere Geräte, die Interrupts geben können. Daher wird ein Interrupt-Controller (IRC - ein separater Chip) verwendet, um die Interrupts an den Prozessor weiterzugeben. Der IRC hat beispielsweise acht Eingänge mit jeweils unterschiedlicher Priorität und einen Ausgang, der mit dem IRQ-Eingang des Prozessors verbunden ist.
Wenn ein Interrupt beim IRC ankommt, leitet der IRC ihn an den IRQ-Eingang des Prozessors weiter. Der Prozessor maskiert Interrupts und speichert den aktuellen Zustand des Prozessors (Register). Der Prozessor fragt den IRC, welcher ISR ausgeführt werden soll. Der IRC antwortet und macht IRQ inaktiv. Der ISR wird Interrupts so schnell wie möglich demaskieren - ungestraft, da IRQ wieder inaktiv ist. Nachdem der ISR abgeschlossen ist, wird er dem IRC gemeldet und der Prozessor wird in seinen ursprünglichen Zustand zurückversetzt, wodurch das ursprüngliche Programm fortgesetzt werden kann.
Wenn während der Ausführung des ISR ein Interrupt mit niedrigerer Priorität eintrifft, blockiert der ISR diesen Interrupt. Sobald gemeldet wird, dass der ISR abgeschlossen ist, wird der neue Interrupt an den Prozessor gesendet.
Wenn ein Interrupt mit einer höheren Priorität eintrifft, während der ISR ausgeführt wird, leitet der ISR diesen Interrupt an den Prozessor weiter. Wenn IRQ nicht länger maskiert ist, behandelt der Prozessor zuerst den neuen Interrupt.
Alternativen zu Unterbrechungen
Umfragen
Im Gegensatz zur Verwendung von Interrupts ist die Polling-Technik. Beim Polling überprüft eine Komponente regelmäßig, ob ein bestimmtes Ereignis bereits eingetreten ist. Die Geschwindigkeit dieser Überprüfungen bestimmt maßgeblich die Reaktionszeit. Bei dieser Technik geht viel Zeit verloren, da das Testergebnis meist negativ ausfällt und auch im Programm berücksichtigt werden muss. Ein Interrupt hingegen garantiert (fast immer) die kürzeste Reaktionszeit auf ein Ereignis bei minimaler Verarbeitungsbelastung des empfangenden Geräts. In Fällen jedoch, in denen einige Komponenten keine Interrupt-Leitungen haben (oder für einen anderen Zweck verwendet werden), kann Polling eine Lösung bieten. Polling kann auch dann eine Lösung sein, wenn der Programmmacher ein Ereignis nur zu bestimmten Zeiten überprüfen möchte, damit er nicht berücksichtigen muss, dass das Ereignis zu einem bestimmten Zeitpunkt im Programm bereits aufgetreten ist.
DMA
Eine noch effizientere Art der Handhabung von Ein- und Ausgaben als der Interrupt ist Direkter Speicherzugriff, wobei das Eingabe- oder Ausgabegerät Daten mit Teilen der of Erinnerung austauschen kann. Wenn der Speicherblock abgeschlossen ist, kann immer noch ein Interrupt gegeben werden, um einen neuen Befehl anzufordern.