Unterbrechung vs. Ausnahme
In 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 dieses werden als Interrupts bezeichnet. Unterbrechungen können entweder durch Software- oder Hardwarefehler verursacht werden. Hardware-Interrupts werden (einfach) Interrupts genannt, während Software-Interrupts als Ausnahmen bezeichnet werden. Sobald ein Interrupt (Software oder Hardware) ausgelöst wird, wird die Steuerung an ein spezielles Unterprogramm namens ISR (Interrupt Service Routine) übergeben, das die durch den Interrupt verursachten Bedingungen verarbeiten 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 hier außerhalb der CPU. Hardware-Interrupts kommen normalerweise aus vielen verschiedenen Quellen, wie z. B. Timer-Chips, Peripheriegeräten (Tastaturen, Maus usw.), E / A-Ports (seriell, parallel usw.), Festplattenlaufwerken, CMOS-Takt, Erweiterungskarten (Soundkarte, Video) Karte usw.). Dies bedeutet, dass Hardware-Interrupts aufgrund von Ereignissen, die mit dem ausführenden Programm zusammenhängen, fast nie auftreten. Beispielsweise kann ein Ereignis wie ein Tastendruck auf der Tastatur durch den Benutzer oder ein Timeout des internen Hardware-Timers diese Art von Interrupt auslösen und die CPU darüber informieren, dass ein bestimmtes Gerät etwas Aufmerksamkeit benötigt. In einer solchen Situation stoppt die CPU, was immer sie gerade getan hat (d. H. Das aktuelle Programm pausiert), stellt den Dienst bereit, der vom Gerät benötigt wird, und kehrt zum normalen Programm zurück. Wenn Hardware-Interrupts auftreten und die CPU die ISR startet, werden andere Hardware-Interrupts deaktiviert (z. B. bei 80 × 86-Maschinen). Wenn andere Hardware-Interrupts erforderlich sind, während die ISR ausgeführt wird, müssen Sie dies explizit tun, indem Sie das Interrupt-Flag (mit dem Befehl sti) löschen. Auf 80 × 86-Computern wirkt sich das Löschen des Interrupt-Flags nur auf Hardware-Interrupts aus.
Was ist Ausnahmen??
Ausnahme ist ein Software-Interrupt, der als spezielle Handlerroutine erkannt werden kann. Eine 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 spezifischen Anweisungen, die mit Ausnahmen verbunden 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. Beispielsweise kann die Division durch Null, die Ausführung eines ungültigen Opcodes oder ein Fehler im Zusammenhang mit dem Arbeitsspeicher Ausnahmen verursachen. Immer wenn eine Ausnahme ausgelöst wird, setzt die CPU das Programm, das sie gerade ausgeführt hat, vorübergehend aus und startet die ISR. ISR enthält, was mit der Ausnahme zu tun ist. Möglicherweise wird das Problem behoben oder das Programm kann durch Drucken einer entsprechenden Fehlermeldung abgebrochen werden, falls dies nicht möglich ist. Obwohl eine bestimmte Anweisung keine Ausnahme verursacht, wird eine Ausnahme immer durch eine Anweisung verursacht. Zum Beispiel 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, Ausnahmen sind Software-Interrupts. Das Auftreten von Hardware-Interrupts deaktiviert normalerweise andere Hardware-Interrupts. Dies gilt jedoch nicht für Ausnahmen. Wenn Sie Hardware-Interrupts nicht zulassen müssen, bis eine Ausnahme ausgeführt wird, müssen Sie das Interrupt-Flag explizit löschen. Normalerweise beeinflusst das Interrupt-Flag auf dem Computer (Hardware-) Interrupts im Gegensatz zu Ausnahmen. Das bedeutet, dass das Löschen dieses Flags keine Ausnahmen verhindert.