Interrupt vs Trap
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 diese werden als Interrupts bezeichnet. Interrupts können entweder durch Software- oder Hardwarefehler verursacht werden. Hardware-Interrupts werden (einfach) als Interrupts bezeichnet, während Software-Interrupts als Ausnahmen oder Traps bezeichnet werden. Eine Ausnahme ist ein automatisch generierter Software-Interrupt, während ein Trap ein vom Programmierer initiierter, durch Software aufgerufener Interrupt ist. Sobald ein Interrupt (Software oder Hardware) ausgelöst wird, wird die Steuerung an eine spezielle Unterroutine namens ISR (Interrupt Service Routine) übertragen, die die durch den Interrupt ausgelösten Bedingungen verarbeiten kann.
Was ist ein Interrupt?
Der Begriff Interrupt ist normalerweise für Hardware-Interrupts reserviert. Dies sind Programmsteuerungsunterbrechungen, die durch externe Hardwareereignisse verursacht werden. Extern bedeutet hier extern außerhalb der CPU. Hardware-Interrupts kommen normalerweise von vielen verschiedenen Quellen wie Timer-Chips, Peripheriegeräten (Tastaturen, Maus usw.), E / A-Anschlüssen (seriell, parallel usw.), Festplatten, CMOS-Takt, Erweiterungskarten (Soundkarte, Video) Karte usw.). Das bedeutet, dass Hardware-Interrupts aufgrund eines Ereignisses im Zusammenhang mit dem ausgeführten Programm fast nie auftreten. Beispielsweise kann ein Ereignis wie ein Tastendruck auf der Tastatur durch den Benutzer oder ein internes Zeitlimit für den Hardware-Timer 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 alles, was sie getan hat (dh pausiert das aktuelle Programm).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 (z. B. in 80 × 86-Computern). Wenn andere Hardware-Interrupts auftreten müssen, während der ISR ausgeführt wird, müssen Sie dies explizit tun, indem Sie das Interrupt-Flag löschen (mit sti-Anweisung). In 80 × 86-Computern wirkt sich das Löschen des Interrupt-Flags nur auf Hardware-Interrupts aus. Das Löschen des Interrupt-Flags wirkt sich nur auf Hardware-Interrupts aus. Das Löschen des Interrupt-Flags wirkt sich nur auf Hardware-Interrupts aus.
Was ist eine Falle?
Eine Falle kann als eine Übertragung der Kontrolle identifiziert werden, die vom Programmierer initiiert wird. Der Begriff Trap wird synonym mit dem Begriff Exception (ein automatisch auftretender Software-Interrupt) verwendet. Einige mögen jedoch argumentieren, dass eine Falle einfach ein spezieller Unterprogrammaufruf ist. Sie fallen also in die Kategorie der durch Software aufgerufenen Interrupts. Beispielsweise kann ein Programmierer in 80 × 86-Maschinen den int-Befehl verwenden, um einen Trap zu initiieren. Da eine Falle immer unbedingt erforderlich ist, wird die Steuerung immer an die der Falle zugeordnete Unterroutine übertragen. Die genaue Anweisung, die die Routine zum Behandeln der Falle aufruft, ist leicht zu identifizieren, da eine explizite Anweisung verwendet wird, um eine Falle anzugeben.
Was ist der Unterschied zwischen Interrupt und Trap?
Interrupts sind Hardware-Interrupts, während Traps durch Software aufgerufene Interrupts sind. Das Auftreten von Hardware-Interrupts deaktiviert normalerweise andere Hardware-Interrupts, dies gilt jedoch nicht für Traps. Wenn Sie Hardware-Interrupts nicht zulassen müssen, bis ein Trap bereitgestellt wird, müssen Sie das Interrupt-Flag explizit löschen. Und normalerweise wirkt sich das Interrupt-Flag auf dem Computer auf (Hardware-) Interrupts im Gegensatz zu Traps aus. Dies bedeutet, dass das Löschen dieses Flags keine Fallen verhindert. Im Gegensatz zu Traps sollten Interrupts den vorherigen Status der CPU beibehalten.