Interrupt vs Trap
In jedem Computer kann es während seiner normalen Ausführung eines Programms Ereignisse geben, die dazu führen können, dass die CPU vorübergehend eingestellt wird. Ereignisse wie diese werden als Interrupts bezeichnet. Interrupts können entweder durch Software- oder Hardwarefehler verursacht werden. Hardware -Interrupts werden (einfach) Interrupts bezeichnet, während Software -Interrupts als Ausnahmen oder Fallen bezeichnet werden. Eine Ausnahme ist ein automatisch generierter Software-Interrupt, während eine Falle ein von dem Programmierer initiierter Software-Interrupt ist. Sobald ein Interrupt (Software oder Hardware) angehoben ist.
Was ist ein Interrupt?
Der Begriff Interrupt ist normalerweise Hardware -Interrupts reserviert. Sie sind Programmsteuerungsunterbrechungen durch externe Hardwareereignisse. Hier bedeutet externe Mittel außerhalb der CPU. Hardware -Interrupts stammen normalerweise aus vielen verschiedenen Quellen wie Timer -Chip, peripheren Geräten (Tastaturen, Maus usw.), E/O -Ports (seriell, parallel usw.), Festplattenlaufwerke, CMOS -Uhr, Erweiterungskarten (Soundkarte, Grafikkarte usw.). Das bedeutet. Beispielsweise kann ein Ereignis wie ein Taste -Drücken auf der Tastatur des Benutzers oder ein internes Hardware -Timer -Timing diese Art von Interrupt erhöhen und die CPU darüber informieren, dass ein bestimmtes Gerät einige Aufmerksamkeit benötigt. In einer solchen Situation wird die CPU aufhören, was auch immer es tat (ich.e. pausiert das aktuelle Programm), bietet den vom Gerät benötigten Dienst und kehrt zum normalen Programm zurück. Wenn Hardware -Interrupts auftreten und die CPU die ISR startet, sind andere Hardware -Interrupts deaktiviert (e.G. in 80 × 86 Maschinen). Wenn Sie andere Hardware -Interrupts benötigen, während der ISR ausgeführt wird, müssen Sie dies explizit tun, indem Sie die Interrupt -Flagge löschen (mit sti Anweisung). In 80 × 86 Maschinen wirkt sich das Löschen des Interrupt -Flags nur auf Hardware -Interrupts aus.
Was ist eine Falle?
Eine Falle kann als Kontrolltransfer identifiziert werden, die vom Programmierer ausgelöst wird. Der Begriff Trap wird austauschbar mit der Begriffsausnahme verwendet (eine automatisch vorkommende Software -Interrupt). Einige mögen jedoch argumentieren, dass eine Falle einfach ein spezieller Unterroutine -Anruf ist. Deshalb fallen sie in die Kategorie der von Software angerufenen Interrupts ein. Zum Beispiel kann ein Programmierer in 80 × 86 -Maschinen die verwenden int Anweisung zum Einleiten einer Falle. Da eine Falle immer bedingungslos ist, wird die Kontrolle immer auf die mit der Falle verbundene Unterroutine übertragen. Die genaue Anweisung, die die Routine zum Umgang mit der Falle aufruft.
Was ist der Unterschied zwischen Interrupt und Falle?
Interrupts handelt. Auftreten von Hardware -Interrupts deaktivieren normalerweise andere Hardware -Interrupts, aber dies gilt nicht für Fallen. Wenn Sie Hardware -Interrupts nicht zulassen müssen, bis eine Falle serviert wird, müssen Sie die Interrupt -Flagge explizit löschen. Und normalerweise die Interrupt -Flag auf dem Computer wirkt sich (Hardware) Interrupts im Gegensatz zu Fallen aus. Dies bedeutet, dass das Löschen dieser Flagge keine Fallen verhindert. Im Gegensatz zu Fallen sollten Interrupts den vorherigen Zustand der CPU bewahren.