Was ist der Unterschied zwischen Ausnahme und Interrupt in Betriebssystemen?


Antwort 1:
  • FehlerFehler werden vom Prozessor vor den fehlerhaften Anweisungen erkannt und gewartet. Traps Traps werden nach dem Befehl gewartet, der den Trap verursacht. Benutzerdefinierte Interrupts fallen in diese Kategorie und können als Traps bezeichnet werden. Abbrüche Abbrüche werden nur verwendet, um schwerwiegende Systemprobleme anzuzeigen, wenn der Betrieb nicht mehr möglich ist.

Antwort 2:

Ishan Mittal hat diese Antwort sehr gut erklärt. Interrupt / Exception ist ein vektorisiertes Ereignis, bei dem der Prozessor zur weiteren Verarbeitung verzweigt.

Interrupts treten zu ungeraden Zeiten (in Bezug auf den Befehlszyklus) von der Hardware (meistens Peripheriegeräte) während der Ausführung eines Programms auf. Der Prozessor springt zum Interrupt-Handler, nachdem er seinen aktuellen Kontext gespeichert hat. Der Handler, zu dem der Prozessor verzweigt, hängt vom Vektor ab. Software kann auch Interrupts auslösen. Hardware-Interrupts sind asynchron (bezogen auf den CPU-Takt)

Ausnahmen sind ebenfalls vektorisierte Ereignisse, die sich jedoch aus der Ausführung von Anweisungen durch den Prozessor ergeben. Immer wenn der Prozessor einen fehlerhaften Zustand erkennt, generiert er eine Ausnahme. Ausnahmen werden je nach Art der Meldung und deren Auswirkungen auf das aktuell ausgeführte Programm als Fehler, Traps oder Abbrüche gruppiert. Ausnahmen sind synchron.

Jetzt spezifisch für das Intel x86-Modell.

Ein Trap ist eine Ausnahme, die unmittelbar nach der Ausführung des Trapping-Befehls gemeldet wird. Traps ermöglichen die Fortsetzung der Ausführung eines Programms oder einer Aufgabe ohne Verlust der Programmkontinuität. Die Rücksprungadresse für den Trap-Handler zeigt auf den Befehl, der nach dem Trapping-Befehl ausgeführt werden soll. Ein Fehler ist eine Ausnahme, die im Allgemeinen korrigiert werden kann und die nach der Korrektur einen Neustart des Programms ohne Verlust der Kontinuität ermöglicht. Wenn ein Fehler gemeldet wird, stellt der Prozessor den Maschinenzustand vor Beginn der Ausführung der Fehleranweisung wieder her. Die Rücksprungadresse (gespeicherter Inhalt der CS- und EIP-Register) für den Fehlerbehandler zeigt auf den Fehlerbefehl und nicht auf den Befehl, der auf den Fehlerbefehl folgt. Ein Abbruch ist eine Ausnahme, die nicht immer den genauen Ort des verursachenden Befehls meldet die Ausnahme und erlaubt keinen Neustart des Programms oder der Aufgabe, die die Ausnahme verursacht hat. Abbrüche werden verwendet, um schwerwiegende Fehler wie Hardwarefehler und inkonsistente oder unzulässige Werte in Systemtabellen zu melden.

Antwort 3:

Einer der Unterschiede ist, dass die Ausnahme synchron ist, während der Interrupt asynchron ist. Aus diesem Grund muss der Prozessor jederzeit bereit sein, Interrupts zu verarbeiten.

Andere ist die Priorität, Interrupt hat mehr Priorität als Ausnahme.

Drittens ist die Ausnahme, dass Software generiert wird, während Interrupt hauptsächlich durch Hardware generiert wird.


Antwort 4:

Ausnahmen / Interrupts sind eher Konstrukteure der Prozessorarchitektur als Konstrukte des Betriebssystems. Aufgabe eines Betriebssystems ist es, diese Ausnahmen / Interrupts zu behandeln.

Ich werde versuchen, diese Frage aus Sicht der Power PC-Architektur zu beantworten. In PPC sind Interrupts "Aktionen", die den Prozessor veranlassen, den Kontext zu speichern. Ausnahmen sind "Ereignisse", die dazu führen, dass der Prozessor einen Interrupt ausführt. Beispiele für solche Ereignisse können Buslese- / Schreibfehler, unzulässige Opcodes, Lade- / Speicheradressenfehlausrichtungen, Speicherschutzverletzungen, Systemaufrufe, Traps, Interrupts von Peripheriegeräten wie DMA Controller, Gleitkommaausnahmen usw. sein.

Beachten Sie, dass Interrupts die Art und Weise sind, wie das System vom Benutzermodus in den Kernelmodus wechselt.