Unterschied zwischen Interrupt und Trap

Unterschied zwischen Interrupt und Trap
Unterschied zwischen Interrupt und Trap

Video: Unterschied zwischen Interrupt und Trap

Video: Unterschied zwischen Interrupt und Trap
Video: Betriebssystem-Grundlagen für den Informatikunterricht 2024, Juli
Anonim

Unterbrechung vs. Falle

In jedem Computer kann es während der normalen Ausführung eines Programms zu Ereignissen kommen, die dazu führen können, dass die CPU vorübergehend anhält. Ereignisse wie diese werden Interrupts genannt. Unterbrechungen können entweder durch Software- oder Hardwarefehler verursacht werden. Hardware-Interrupts werden (einfach) Interrupts genannt, während Software-Interrupts Exceptions oder Traps genannt werden. Eine Ausnahme ist ein automatisch generierter Software-Interrupt, während ein Trap ein durch Software aufgerufener Interrupt ist, der vom Programmierer initiiert wird. Sobald ein Interrupt (Software oder Hardware) ausgelöst wird, wird die Steuerung an eine spezielle Subroutine namens ISR (Interrupt Service Routine) übertragen, die die Bedingungen handhaben kann, die durch den Interrupt ausgelöst werden.

Was ist ein Interrupt?

Der Begriff Interrupt ist normalerweise für Hardware-Interrupts reserviert. Sie sind Unterbrechungen der Programmsteuerung, die durch externe Hardwareereignisse verursacht werden. Extern bedeutet hier außerhalb der CPU. Hardware-Interrupts stammen normalerweise aus vielen verschiedenen Quellen, wie z Karte usw.). Das bedeutet, dass Hardware-Interrupts fast nie aufgrund eines Ereignisses im Zusammenhang mit dem ausgeführten Programm auftreten. Beispielsweise kann ein Ereignis wie ein Tastendruck auf der Tastatur durch den Benutzer oder das Zeitlimit eines internen Hardware-Timers diese Art von Interrupt auslösen und die CPU darüber informieren, dass ein bestimmtes Gerät etwas Aufmerksamkeit erfordert. In einer solchen Situation stoppt die CPU alles, was sie gerade getan hat (d. h. pausiert das aktuelle Programm), stellt den vom Gerät angeforderten Dienst bereit und kehrt zum normalen Programm zurück. Wenn Hardware-Interrupts auftreten und die CPU die ISR startet, werden andere Hardware-Interrupts deaktiviert (z.g. in 80×86 Maschinen). Wenn Sie andere Hardware-Interrupts benötigen, während die ISR läuft, müssen Sie dies explizit tun, indem Sie das Interrupt-Flag löschen (mit der sti-Anweisung). Auf 80×86-Rechnern wirkt sich das Löschen des Interrupt-Flags nur auf Hardware-Interrupts aus.

Was ist eine Falle?

Ein Trap kann als Kontrollübergabe identifiziert werden, die vom Programmierer initiiert wird. Der Begriff Trap wird austauschbar mit dem Begriff Exception verwendet (was ein automatisch auftretender Software-Interrupt ist). Aber einige mögen argumentieren, dass ein Trap einfach ein spezieller Subroutinenaufruf ist. Sie fallen also in die Kategorie der durch Software aufgerufenen Interrupts. Beispielsweise kann ein Programmierer in 80 × 86-Maschinen die Int-Anweisung verwenden, um einen Trap zu initiieren. Da ein Trap immer unbedingt ist, wird die Steuerung immer an die dem Trap zugeordnete Subroutine übertragen. Die genaue Anweisung, die die Routine zum Behandeln des Trap aufruft, ist leicht zu identifizieren, da ein expliziter Befehl verwendet wird, um einen Trap zu spezifizieren.

Was ist der Unterschied zwischen Interrupt und Trap?

Interrupts sind Hardware-Interrupts, während Traps durch Software ausgelöste Interrupts sind. Das Auftreten von Hardware-Interrupts deaktiviert normalerweise andere Hardware-Interrupts, aber das gilt nicht für Traps. Wenn Sie Hardware-Interrupts verbieten müssen, bis ein Trap bedient 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. Das bedeutet, dass durch das Löschen dieses Flags Traps nicht verhindert werden. Im Gegensatz zu Traps sollten Interrupts den vorherigen Zustand der CPU bewahren.

Empfohlen: