Unterschied zwischen Unterbrechung und Ausnahme

Unterschied zwischen Unterbrechung und Ausnahme
Unterschied zwischen Unterbrechung und Ausnahme

Video: Unterschied zwischen Unterbrechung und Ausnahme

Video: Unterschied zwischen Unterbrechung und Ausnahme
Video: Wie entsteht Hochwasser und was kann man dagegen tun? 2024, Juli
Anonim

Unterbrechung vs. Ausnahme

In jedem Computer kann es während der normalen Ausführung eines Programms zu Ereignissen kommen, die dazu führen können, dass die CPU vorübergehend anhält. Solche Ereignisse werden Interrupts genannt. Unterbrechungen können entweder durch Software- oder Hardwarefehler verursacht werden. Hardware-Interrupts werden (einfach) Interrupts genannt, während Software-Interrupts Exceptions genannt werden. Sobald ein Interrupt (Software oder Hardware) ausgelöst wird, wird die Steuerung an eine spezielle Subroutine namens ISR (Interrupt Service Routine) übertragen, die die Bedingungen behandeln kann, die durch den Interrupt ausgelöst werden.

Was ist Interrupt?

Der Begriff Interrupt ist normalerweise für Hardware-Interrupts reserviert. Sie sind Unterbrechungen der Programmsteuerung, die durch externe Hardwareereignisse verursacht werden. Extern bedeutet hier außerhalb der CPU. Hardware-Interrupts stammen normalerweise aus vielen verschiedenen Quellen, wie z Karte usw.). Das bedeutet, dass Hardware-Interrupts fast nie aufgrund eines Ereignisses im Zusammenhang mit dem ausgeführten Programm auftreten. Beispielsweise kann ein Ereignis wie ein Tastendruck auf der Tastatur durch den Benutzer oder das Zeitlimit eines internen Hardware-Timers diese Art von Interrupt auslösen und die CPU darüber informieren, dass ein bestimmtes Gerät etwas Aufmerksamkeit erfordert. In einer solchen Situation stoppt die CPU, was immer sie gerade getan hat (d. h. hält das aktuelle Programm an), stellt den vom Gerät angeforderten Dienst bereit und kehrt zum normalen Programm zurück. Wenn Hardware-Interrupts auftreten und die CPU die ISR startet, werden andere Hardware-Interrupts deaktiviert (z. B. in 80 × 86-Maschinen). Wenn Sie andere Hardware-Interrupts benötigen, während die ISR läuft, müssen Sie dies explizit tun, indem Sie das Interrupt-Flag löschen (mit der sti-Anweisung). Auf 80×86-Rechnern wirkt sich das Löschen des Interrupt-Flags nur auf Hardware-Interrupts aus.

Was sind Ausnahmen?

Exception ist ein Software-Interrupt, der als spezielle Behandlungsroutine identifiziert werden kann. Eine Ausnahme kann als automatisch auftretender Trap identifiziert werden (ein Trap kann als eine Übertragung der Kontrolle identifiziert werden, die vom Programmierer initiiert wird). Im Allgemeinen sind Ausnahmen keine spezifischen Anweisungen zugeordnet (Traps werden unter Verwendung einer spezifischen Anweisung generiert). Eine Ausnahme tritt also aufgrund einer „außergewöhnlichen“Bedingung auf, die während der Programmausführung auftritt. Zum Beispiel könnten eine Division durch Null, die Ausführung eines illegalen Opcodes oder ein speicherbezogener Fehler Ausnahmen verursachen. Immer wenn eine Ausnahme ausgelöst wird, setzt die CPU vorübergehend das Programm, das sie gerade ausführt, aus und startet die ISR. ISR enthält, was mit der Ausnahme zu tun ist. Es kann das Problem beheben oder, falls dies nicht möglich ist, das Programm durch Ausgabe einer geeigneten Fehlermeldung ordnungsgemäß 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 des Divisionsbefehls auftreten.

Was ist der Unterschied zwischen Unterbrechung und Ausnahme?

Interrupts sind Hardware-Interrupts, während Ausnahmen Software-Interrupts sind. Das Auftreten von Hardware-Interrupts deaktiviert normalerweise andere Hardware-Interrupts, aber dies gilt nicht für Ausnahmen. Wenn Sie Hardware-Interrupts verbieten müssen, bis eine Ausnahme bedient 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. Das bedeutet, dass durch das Löschen dieses Flags Ausnahmen nicht verhindert werden.

Empfohlen: