Heim >häufiges Problem >Was sind die fünf Phasen der Interrupt-Behandlung?

Was sind die fünf Phasen der Interrupt-Behandlung?

青灯夜游
青灯夜游Original
2021-04-14 16:06:2038149Durchsuche

Fünf Phasen des Interrupt-Verarbeitungsprozesses: 1. Interrupt-Anforderungsphase 2. Interrupt-Arbitrierungsphase, es gibt zwei Methoden der Hardware-Arbitrierung und der Software-Arbitrierung 3. Interrupt-Antwortphase, die CPU sendet ein Interrupt-Antwortsignal an die Interrupt-Quelle 4. Unterbrechen Sie die Servicephase. 5. Unterbrechen Sie die Rückkehrphase, kehren Sie zum Haltepunkt des ursprünglichen Programms zurück, stellen Sie die Hardware-Site wieder her und führen Sie die Ausführung des ursprünglichen Programms fort.

Was sind die fünf Phasen der Interrupt-Behandlung?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.

Der grundlegende Prozess der Interrupt-Verarbeitung umfasst fünf Phasen, darunter Interrupt-Anfrage, Interrupt-Schiedsgerichtsbarkeit, Interrupt-Antwort, Interrupt-Dienst und Interrupt-Rückgabe.

1. Interrupt-Anforderungsphase


1) Interrupts, die innerhalb der CPU auftreten (interner Interrupt), erfordern keine Interrupt-Anforderungen und die Interrupt-Steuerlogik in der CPU empfängt und verarbeitet sie direkt.

2) Externer Interrupt Die Anforderung wird von der Interrupt-Quelle gestellt. Die externe Interrupt-Quelle verwendet den Interrupt-Eingangspin der CPU, um ein Interrupt-Anforderungssignal einzugeben. Im Allgemeinen verfügt die CPU über zwei Interrupt-Anforderungseingangspins: einen maskierbaren Interrupt-Anforderungseingangspin und einen nicht maskierbaren Interrupt-Anforderungseingangspin.

1.1 Interrupt-Anforderungsauslöser

Der Zeitpunkt, zu dem jede Interrupt-Quelle ein Interrupt-Anforderungssignal sendet, ist ungewiss, und auch der Zeitpunkt, zu dem die CPU auf den Interrupt reagiert, ist ungewiss. Daher verfügt jede Interrupt-Quelle über ein Interrupt-Anforderungs-Flip-Flop, das sein eigenes Interrupt-Anforderungssignal zwischenspeichert und hält, bis die CPU auf die Interrupt-Anforderung antwortet, bevor sie sie löscht.

1.2 Interrupt-Freigabe-Flip-Flop

Es gibt ein Interrupt-Freigabe-Flip-Flop in der CPU. Wenn es „1“ ist, darf die CPU auf Interrupts reagieren, was als „on interrupt“ bezeichnet wird. Wenn es „0“ ist, darf die CPU nicht auf Interrupts reagieren und die Interrupts werden blockiert, was als „Off-Interrupts“ bezeichnet wird. %%Normalerweise wird beim Zurücksetzen der CPU auch das Interrupt-Freigabe-Flip-Flop auf „0“ zurückgesetzt, was bedeutet, dass Interrupts ausgeschaltet sind. Wenn der CPU-Interrupt reagiert, schaltet die CPU den Interrupt automatisch aus und darf keinen weiteren neuen Interrupt akzeptieren. %%Der Status des Interrupt-Aktivierungstriggers kann mithilfe der Interrupt-Ein- oder Aus-Anweisung festgelegt werden.

2. Interrupt-Vermittlungsphase

Die CPU kann jeweils nur eine Anfrage von einer Interrupt-Quelle annehmen. Wenn mehrere Interrupt-Quellen gleichzeitig Interrupt-Anfragen an die CPU stellen, muss die CPU die Interrupt-Quelle finden die höchste Interrupt-Priorität. Dieser Vorgang wird als Interrupt-Arbitrierung bezeichnet.

Die Interrupt-Schiedsgerichtsbarkeit kann Hardware-Methoden oder Software-Methoden verwenden.

2.1 Software-Schiedsgerichtsbarkeit

Nachdem die CPU eine Interrupt-Anforderung erkannt hat, liest sie zunächst den Inhalt des Interrupt-Anforderungsregisters und erkennt deren Status Bit für Bit. Wenn festgestellt wird, dass ein bestimmtes Bit 1 ist, wird dies festgestellt Die entsprechende Interrupt-Quelle hat eine Interrupt-Anfrage und eine Übertragung zur Ausführung ihrer Interrupt-Service-Routine. Diejenige, die zuerst erkannt wird, hat eine höhere Priorität, diejenige, die später erkannt wird, hat eine niedrigere Priorität. Die Reihenfolge der Erkennung ist die Prioritätsreihenfolge jeder Interrupt-Quelle.

Angenommen, die Eingangsportadresse im obigen Bild ist 87FFH. Es gibt das folgende Abfrageprogramm:

Was sind die fünf Phasen der Interrupt-Behandlung?MOV DX, 87FFH
IN AL, DX; Inhalt des Interrupt-Request-Registers lesen
SHR AL, 1

JC IR0; IRQ0 hat eine Anfrage, Übertragung an IR0

SHR AL, 1
JC IR1; IRQ1 hat eine Anfrage, Weitergabe an IR1
SHR AL,1
JC IRQ2 hat eine Anfrage, Weitergabe an IR2
...

Die Software-Entscheidungsfindung dauert lange. Wenn es viele Interrupt-Quellen gibt, ist die Echtzeitleistung der Interrupts schlecht, aber die Software-Prioritätsanordnung ist flexibel.


2.2 Hardware-Arbitrierung

Verwenden Sie spezielle Hardware-Schaltkreise, um die Priorität von Interrupt-Quellen zu bestimmen. Es gibt zwei gängige Methoden: Daisy-Chain-Arbitrierungsschaltung und Interrupt-Controller-Arbitrierung.

2.2.1 Daisy-Chain-Arbitrierungsschaltung

Designidee: Jede Interrupt-Quelle verfügt über eine Interrupt-Logikschaltung, und alle Interrupt-Logikschaltungen bilden eine Kette, wie eine Daisy-Chain. Die Interrupt-Quelle am Anfang der Kette hat die höchste Priorität, und je weiter hinten das Gerät liegt, desto niedriger ist die Priorität.

Implementierungsprozess:
Die CPU empfängt eine Interrupt-Anfrage. Wenn der Interrupt zulässig ist, sendet die CPU ein Interrupt-Antwortsignal. Das Interrupt-Antwortsignal erreicht zuerst das vordere Ende der Daisy-Chain. Wenn Interrupt-Quelle 1 eine Interrupt-Anfrage stellt, fängt sie das Interrupt-Antwortsignal ab und blockiert es, sodass es nicht an die nächste Interrupt-Quelle übertragen werden kann. Unabhängig davon, ob die folgenden Interrupt-Quellen Interrupt-Anfragen ausgelöst haben, ist es unmöglich, Interrupt-Antwortsignale zu empfangen, sodass auf ihre Interrupt-Anfragen nicht reagiert werden kann. Was sind die fünf Phasen der Interrupt-Behandlung?
2.2.2 Interrupt-Controller-Arbitrierung

Interrupt-Controller wie Intel8259A können die Interrupt-Priorität von Interrupt-Quellen auf verschiedene Weise festlegen. Im Interrupt-Controller gibt es einen Interrupt-Prioritätsdiskriminator, der automatisch die Interrupt-Quelle mit der höchsten Priorität ermittelt und ihren Interrupt-Vektorcode an den Datenbus sendet. Die CPU empfängt den Interrupt-Vektorcode und findet ihn entsprechend .

3. Interrupt-Antwortphase


Nach der Interrupt-Arbitrierung tritt die Interrupt-Verarbeitung in die Interrupt-Antwortphase ein. Bei der Reaktion auf einen Interrupt sendet die CPU ein Interrupt-Antwortsignal an die Interrupt-Quelle und

① schützt die Hardware-Site;

③ schützt Breakpoints; Adresse des Interrupt-Service-Programms.

4. Unterbrechungsdienstphase

Die allgemeine Struktur des Unterbrechungsdienstprogramms ist:

1)
Schützen Sie den Standort.

Ordnen Sie am Anfang der Interrupt-Serviceroutine mehrere Push-Anweisungen an, um den Inhalt jedes Registers zur Speicherung auf den Stapel zu verschieben.

2)Unterbrechung aktivieren. Während der Ausführung der Interrupt-Serviceroutine dürfen Interrupt-Anforderungen höherer Ebenen die aktuelle Interrupt-Serviceroutine unterbrechen, um eine Interrupt-Verschachtelung zu erreichen.

3)Dienstunterbrechung. Vervollständigen Sie die spezifischen Anforderungen für Interrupt-Quellen.

4)Stellen Sie die Szene wieder her. Bevor die Interrupt-Serviceroutine endet, muss die Interrupt-Szene des Hauptprogramms wiederhergestellt werden. Normalerweise werden die im Stapel gespeicherten lokalen Informationen in das Originalregister eingefügt.

5)Rückkehr unterbrechen. Kehren Sie zum Haltepunkt des Originalprogramms zurück und fahren Sie mit der Ausführung des Originalprogramms fort.

5. Rückkehrphase unterbrechen

Kehren Sie zum Haltepunkt des ursprünglichen Programms zurück, stellen Sie die Hardware-Site wieder her und führen Sie das ursprüngliche Programm weiter aus.


Der Interrupt-Return-Vorgang ist der umgekehrte Vorgang des Interrupt-Response-Vorgangs.

Weitere Programmierkenntnisse finden Sie unter: Programmiervideo
! !

Das obige ist der detaillierte Inhalt vonWas sind die fünf Phasen der Interrupt-Behandlung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn