Unterschied zwischen Interrupt und Trap

Anonim

Interrupt vs. Trap

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 oder Traps genannt werden. Ein Exception ist ein automatisch generierter Software-Interrupt, während ein Trap ein Software-Interrupt ist, der vom Programmierer initiiert wird. 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 eine Unterbrechung?

Der Begriff Interrupt ist in der Regel für Hardware-Interrupts reserviert. Dies sind Programmsteuerungsunterbrechungen, die durch externe Hardwareereignisse verursacht werden. Hier bedeutet extern 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, Grafikkarte 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 hört die CPU auf, was immer sie gerade macht (dh hält das aktuelle Programm an), 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 löschen (mit sti -Befehl). Bei 80 × 86-Maschinen wird das Löschen des Interrupt-Flags nur auf Hardware-Interrupts einwirken.

Was ist eine Falle?

Eine Falle kann als eine Übertragung der Kontrolle identifiziert werden, die vom Programmierer initiiert wird. Der Begriff Trap wird austauschbar mit dem Begriff Exception (was ein automatisch auftretender Software-Interrupt ist) verwendet. Aber manche mögen argumentieren, dass eine Falle einfach ein spezieller Subroutinen-Aufruf ist. Sie fallen also in die Kategorie von Software-Interrupts. Beispielsweise kann ein Programmierer in 80 × 86-Maschinen den Befehl int verwenden, um eine Falle zu initiieren. Da eine Falle immer bedingungslos ist, wird die Kontrolle immer an die Unterroutine übertragen, die der Falle zugeordnet ist. Die genaue Anweisung, die die Routine zur Handhabung der Falle aufruft, kann leicht identifiziert werden, da eine explizite Anweisung verwendet wird, um eine Falle zu spezifizieren.

Was ist der Unterschied zwischen Interrupt und Trap?

Interrupts sind Hardware-Interrupts, während Traps softwaregesteuerte Interrupts sind. Durch das Auftreten von Hardware-Interrupts werden normalerweise andere Hardware-Interrupts deaktiviert, dies gilt jedoch nicht für Traps. Wenn Sie Hardware-Interrupts nicht zulassen müssen, bis eine Trap ausgeliefert wird, müssen Sie das Interrupt-Flag explizit löschen. Und normalerweise betrifft das Interrupt-Flag auf dem Computer (Hardware) Interrupts im Gegensatz zu Traps. Das bedeutet, dass das Löschen dieser Markierung Fallen nicht verhindert. Im Gegensatz zu Traps sollten Interrupts den vorherigen Zustand der CPU beibehalten.