Unterschied zwischen Unterbrechung und Ausnahme

Anonim

Interrupt vs. Exception

Bei jedem Computer können während der normalen Ausführung eines Programms Ereignisse auftreten, die dazu führen können, dass die CPU vorübergehend angehalten wird. Ereignisse wie diese heißen Interrupts. Interrupts können entweder durch Software- oder Hardwarefehler verursacht werden. Hardware-Interrupts werden (einfach) Interrupts genannt, während Software-Interrupts Ausnahmen genannt werden. Sobald ein Interrupt (Software oder Hardware) ausgelöst wird, wird die Steuerung an eine spezielle Unterroutine mit der Bezeichnung ISR (Interrupt Service Routine) übergeben, die die vom Interrupt ausgelösten Bedingungen abwickeln kann.

Was ist Interrupt?

Der Begriff Interrupt ist normalerweise für Hardware-Interrupts reserviert. Sie sind Programmsteuerungsunterbrechungen, die durch externe Hardwareereignisse verursacht werden. Extern bedeutet extern von der CPU. Hardware-Interrupts kommen in der Regel aus vielen verschiedenen Quellen wie Timer-Chip, Peripheriegeräten (Tastaturen, Maus usw.), I / O-Ports (seriell, parallel usw.), Festplatten, CMOS- Karte, usw.). Das bedeutet, dass Hardware-Interrupts aufgrund eines Ereignisses, das mit dem ausführenden Programm zusammenhängt, fast nie auftreten. Zum Beispiel kann ein Ereignis wie ein Tastendruck auf der Tastatur durch den Benutzer oder ein interner Hardware-Timer-Timeout diese Art von Interrupt anheben und die CPU darüber informieren, dass ein bestimmtes Gerät etwas Aufmerksamkeit benötigt. In einer solchen Situation stoppt die CPU, was auch immer sie gerade gemacht hat (dh das aktuelle Programm wird angehalten), stellt den vom Gerät benötigten Dienst bereit und kehrt zum normalen Programm zurück. Wenn Hardware-Interrupts auftreten und die CPU den ISR startet, werden andere Hardware-Interrupts deaktiviert (zum Beispiel in 80 × 86-Maschinen). Wenn während der Ausführung des ISR andere Hardware-Interrupts erforderlich sind, müssen Sie dies explizit tun, indem Sie das Interrupt-Flag (mit Sti-Anweisung) löschen. Bei 80 × 86-Maschinen wird das Löschen des Interrupt-Flags nur auf Hardware-Interrupts einwirken.

Was sind Ausnahmen?

Ausnahme ist ein Software-Interrupt, der als spezielle Handler-Routine identifiziert werden kann. Ausnahme kann als automatisch auftretende Falle identifiziert werden (eine Falle kann als Übertragung der Kontrolle identifiziert werden, die vom Programmierer initiiert wird). Im Allgemeinen gibt es keine speziellen Anweisungen, die Ausnahmen zugeordnet sind (Traps werden mit einer bestimmten Anweisung generiert). Daher tritt eine Ausnahme aufgrund einer "außergewöhnlichen" Bedingung auf, die während der Programmausführung auftritt. Zum Beispiel kann eine Division durch Null, die Ausführung eines ungültigen Opcodes oder eines speicherbezogenen Fehlers Ausnahmen verursachen. Immer wenn eine Ausnahme ausgelöst wird, unterbricht die CPU das gerade ausgeführte Programm vorübergehend und startet die ISR. ISR wird enthalten, was mit der Ausnahme zu tun ist. Es kann das Problem beheben oder wenn es nicht möglich ist, kann es das Programm durch das Drucken einer geeigneten Fehlermeldung mühsam abbrechen.Obwohl eine bestimmte Anweisung keine Ausnahme verursacht, wird eine Ausnahme immer durch eine Anweisung verursacht. Beispielsweise kann der Fehler Division durch Null nur während der Ausführung der Unterteilungsanweisung auftreten.

Was ist der Unterschied zwischen Interrupt und Exception?

Interrupts sind Hardware-Interrupts, Ausnahmen sind Software-Interrupts. Das Auftreten von Hardware-Interrupts deaktiviert normalerweise andere Hardware-Interrupts, aber dies gilt nicht für Ausnahmen. Wenn Sie Hardware-Interrupts nicht zulassen müssen, bis eine Ausnahme ausgelöst wird, müssen Sie das Interrupt-Flag explizit löschen. Und normalerweise betrifft das Interrupt-Flag auf dem Computer (Hardware) Interrupts im Gegensatz zu Ausnahmen. Dies bedeutet, dass das Löschen dieses Flags Ausnahmen nicht verhindert.