Systemaufruf vs Interrupt
Ein typischer Prozessor führt die Anweisungen nacheinander aus. Es kann jedoch vorkommen, dass der Prozessor vorübergehend anhalten 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 dort fort, wo er aufgehört hat. Ein Systemaufruf und ein Interrupt sind solche Ereignisse. Ein Systemaufruf ist ein Aufruf einer im 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 ausgeführt werden, eine Schnittstelle für die Kommunikation mit dem Betriebssystem. Wenn ein Programm einen Dienst (für den es selbst keine Berechtigung hat) vom Kernel des Betriebssystems abfragen muss, verwendet es einen Systemaufruf. Prozesse auf Benutzerebene haben nicht die gleichen Berechtigungen wie Prozesse, die direkt mit dem Betriebssystem interagieren. Um beispielsweise mit einem externen E / A-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 auftreten, die dazu führen können, dass die CPU vorübergehend angehalten wird. Ereignisse wie dieses 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. 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.
Wie oben erwähnt, ist der Begriff Interrupt 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.
Was ist der Unterschied zwischen Systemaufruf und Interrupt??
Ein Systemaufruf ist ein Aufruf einer im System integrierten Unterroutine, während Interrupt ein Ereignis ist, bei dem der Prozessor die aktuelle Ausführung vorübergehend hält. Ein Hauptunterschied besteht jedoch darin, dass Systemaufrufe synchron sind, Interrupts jedoch nicht. Dies bedeutet, dass Systemaufrufe zu einem festen Zeitpunkt (normalerweise vom Programmierer festgelegt) ausgeführt werden, Interrupts können jedoch jederzeit aufgrund eines unerwarteten Ereignisses, z. B. eines Tastendrucks auf der Tastatur, durch den Benutzer auftreten. Wenn ein Systemaufruf auftritt, muss sich der Prozessor daher nur daran erinnern, wohin er zurückkehren soll, aber im Falle eines Interrupts muss sich der Prozessor sowohl den Ort, an den er zurückkehren soll, als auch den Status des Systems merken. Im Gegensatz zu einem Systemaufruf hat ein Interrupt normalerweise nichts mit dem aktuellen Programm zu tun.