Unterschied zwischen Systemaufruf und Interrupt

Anonim

Systemaufruf gegen Interrupt

Ein typischer Prozessor führt Anweisungen einzeln aus. Es kann jedoch Situationen geben, in denen der Prozessor vorübergehend stoppen und die aktuelle Anweisung halten und ein anderes Programm oder Codesegment ausführen muss (das sich an einem anderen Ort befindet). Danach kehrt der Prozessor zur normalen Ausführung zurück und fährt von dort fort, wo er aufgehört hat. Ein Systemaufruf und ein Interrupt sind solche Anlässe. 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 stellen Programme bereit, die auf dem Computer eine Schnittstelle zum Sprechen mit dem Betriebssystem ausführen. Wenn ein Programm vom Kernel des Betriebssystems nach einem Dienst fragen muss (für den er keine Berechtigung besitzt), verwendet er 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 eine Unterbrechung?

Während der normalen Ausführung eines Computerprogramms können 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. 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.

Wie bereits erwähnt, ist der Begriff Interrupt normalerweise 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.

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 dazu führt, dass der Prozessor die aktuelle Ausführung vorübergehend hält. Ein Hauptunterschied besteht jedoch darin, dass Systemaufrufe synchron sind, während Interrupts dies nicht tun. Dies bedeutet, dass Systemaufrufe zu einer festen Zeit (normalerweise vom Programmierer bestimmt) ausgeführt werden, aber Unterbrechungen können jederzeit aufgrund eines unerwarteten Ereignisses, wie z. B. eines Tastendrucks auf der Tastatur durch den Benutzer, auftreten. Daher muss der Prozessor, wann immer ein Systemaufruf stattfindet, sich nur daran erinnern, wohin er zurückkehren soll, aber im Falle eines Interrupts muss sich der Prozessor sowohl an den Ort als auch an den Zustand des Systems erinnern. Im Gegensatz zu einem Systemaufruf hat ein Interrupt normalerweise nichts mit dem aktuellen Programm zu tun.