Systemaufruf vs. Interrupt
Ein typischer Prozessor führt Anweisungen nacheinander aus. Es kann jedoch vorkommen, dass der Prozessor vorübergehend anh alten und die aktuelle Anweisung h alten und ein anderes Programm oder Codesegment (das sich an einem anderen Ort befindet) ausführen muss. Danach kehrt der Prozessor zur normalen Ausführung zurück und fährt dort fort, wo er aufgehört hat. Ein Systemaufruf und ein Interrupt sind solche Gelegenheiten. Ein Systemaufruf ist ein Aufruf einer in das System eingebauten Subroutine. Ein Interrupt ist eine Programmsteuerungsunterbrechung, die durch externe Hardwareereignisse verursacht wird.
Was ist ein Systemaufruf?
Systemaufrufe bieten Programmen, die auf dem Computer laufen, eine Schnittstelle, um mit dem Betriebssystem zu kommunizieren. Wenn ein Programm einen Dienst (für den es selbst keine Berechtigung hat) vom Kernel des Betriebssystems anfordern muss, verwendet es einen Systemaufruf. Prozesse auf Benutzerebene haben nicht die gleichen Berechtigungen wie die Prozesse, die direkt mit dem Betriebssystem interagieren. Um beispielsweise mit einem externen I/O-Gerät zu kommunizieren oder mit anderen Prozessen zu interagieren, muss ein Programm Systemaufrufe verwenden.
Was ist ein Interrupt?
Während der normalen Ausführung eines Computerprogramms können Ereignisse eintreten, die dazu führen können, dass die CPU vorübergehend anhält. Solche Ereignisse 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. 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.
Wie oben erwähnt, ist der Begriff Interrupt 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.
Was ist der Unterschied zwischen Systemaufruf und Interrupt?
Systemaufruf ist ein Aufruf einer in das System eingebauten Subroutine, während Interrupt ein Ereignis ist, das den Prozessor veranlasst, die aktuelle Ausführung vorübergehend anzuh alten. Ein wesentlicher Unterschied besteht jedoch darin, dass Systemaufrufe synchron sind, Interrupts hingegen nicht. Das bedeutet, dass Systemaufrufe zu einem festen Zeitpunkt erfolgen (normalerweise vom Programmierer festgelegt), aber Interrupts können jederzeit aufgrund eines unerwarteten Ereignisses wie einem Tastendruck auf der Tastatur durch den Benutzer auftreten. Daher muss sich der Prozessor immer dann, wenn ein Systemaufruf auftritt, nur merken, wohin er zurückkehren soll, aber im Falle einer Unterbrechung muss sich der Prozessor sowohl den Ort merken, an den er zurückkehren soll, als auch den Zustand des Systems. Im Gegensatz zu einem Systemaufruf hat ein Interrupt normalerweise nichts mit dem aktuellen Programm zu tun.