Wenn ein Prozessor einen Interrupt hat, bedeutet dies, dass ein Interrupt -Anforderungssignal empfangen wurde, aber noch nicht gewartet wurde. Hier ist, was der Prozessor normalerweise tut:
1. Bestürze unterbrechen (falls zutreffend): Der Prozessor kann ein Bestätigungssignal an das Unterbrechungsgerät zurücksenden und bestätigen, dass die Anfrage erhalten wurde. Dies hängt von der spezifischen Interrupt -Architektur ab (z. B. Vectored Interrupts vs. Polling).
2. Umgang mit Interrupt: Der Prozessor führt ein bestimmtes Verfahren aus, um den Interrupt zu verarbeiten. Dies umfasst typischerweise die folgenden Schritte:
* Kontext speichern: Der Prozessor rettet den aktuellen Stand des laufenden Programms. Dies schließt Dinge wie die Werte von Registern, den Programmzähler (der die nächste Ausführung anzeigt) und möglicherweise andere Statusflags ein. Dies stellt sicher, dass das ursprüngliche Programm nach Abschluss der Interrupt -Handhabung die Ausführung nahtlos von der Stelle, an der es aufgehört hat, wieder aufnehmen kann.
* Vektoring unterbrechen (oft): Der Prozessor bestimmt, welche Handler -Routine für die Ausführung unterbricht. Dies geschieht häufig mit einer Interrupt -Vektor -Tabelle. Jeder Eintrag in dieser Tabelle zeigt auf die Speicheradresse des Code, der einen bestimmten Interrupt -Typ übernimmt. Der Interrupt -Vektor wird basierend auf der Quelle oder dem Typ des Interrupts bestimmt.
* Interrupt -Handler ausführen: Der Prozessor springt zu der vom Interrupt -Vektor angegebenen Adresse und führt die entsprechende Interrupt -Service -Routine (ISR) oder den Interrupt -Handler aus. Dieser Code führt die erforderliche Aktion aus, um auf den Interrupt zu reagieren (z. B. Daten von einem Gerät lesen, einen Timer aktualisieren und eine Tastaturdrücke verarbeiten).
* Kontext wiederherstellen: Nach Abschluss des ISR stellt der Prozessor den gespeicherten Kontext aus Schritt 2 wieder her. Dies beinhaltet das Nachladen der Register, des Programmschalters und der Statusflaggen.
* Rückkehr von Interrupt: Eine spezielle Anweisung (z. B. "Iret" in x86) wird ausgeführt, um die Kontrolle in das unterbrochene Programm zurückzugeben. Der Prozessor setzt die Ausführung von der Anweisung fort, unmittelbar nach dem Punkt, an dem der Interrupt aufgetreten ist.
3. Priorität unterbrechen (falls zutreffend): Wenn mehrere Interrupts anhängig sind, kann der Prozessor sie basierend auf ihren zugewiesenen Prioritätsstufen priorisieren. Interrupts mit höherer Priorität könnten die unteren Priorität vorbeugen. Der genaue Mechanismus zum Umgang mehrerer Interrupts hängt von der Prozessorarchitektur ab.
4. Unterbrechungsmaskierung (optional): Der Prozessor kann möglicherweise spezifische Interrupts maskieren (deaktivieren). Dies verhindert, dass bestimmte Interrupts die Ausführung des aktuellen Programms oder einen anderen Interrupt -Handler unterbrechen. Dies ist oft nützlich, um Konflikte zu verhindern oder sicherzustellen, dass kritische Aufgaben nicht unterbrochen werden.
Im Wesentlichen veranlasst ein ausstehender Interrupt den Prozessor, seine aktuelle Aufgabe vorübergehend auszusetzen, den Interrupt zu behandeln und dann die ursprüngliche Aufgabe wieder aufzunehmen. Auf diese Weise kann das System zeitnah und effizient auf externe Ereignisse reagieren.