Unterbrechung vs Falle
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. Unterbrechungen können entweder durch Software- oder Hardwarefehler verursacht werden. Hardware-Interrupts werden (einfach) Interrupts genannt, während Software-Interrupts als Ausnahmen oder Traps bezeichnet werden. Eine Exception ist ein automatisch generierter Software-Interrupt, während ein Trap ein vom Programmierer initiierter Software-Interrupt ist. 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 ein 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.) Löschen sti Anweisung). Auf 80 × 86-Computern wirkt sich das Löschen des Interrupt-Flags 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 austauschbar 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 hervorgerufenen Interrupts. Zum Beispiel kann ein Programmierer in 80 × 86-Maschinen die int Anweisung, eine Falle zu initiieren. Da ein Trap immer bedingungslos ist, wird die Steuerung immer an das dem Trap zugeordnete Unterprogramm übertragen. Die genaue Anweisung, die die Routine zur Handhabung des Traps aufruft, kann leicht identifiziert werden, da ein expliziter Befehl zum Angeben eines Traps verwendet wird.
Was ist der Unterschied zwischen Interrupt und Trap??
Interrupts sind Hardware-Interrupts, während Traps von der 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 geliefert wird, müssen Sie das Interrupt-Flag explizit löschen. Normalerweise beeinflusst das Interrupt-Flag auf dem Computer (Hardware) Interrupts im Gegensatz zu Fallen. Das bedeutet, dass das Löschen dieses Flags keine Fallen verhindert. Im Gegensatz zu Fallen sollten Interrupts den vorherigen Zustand der CPU beibehalten.