logo

Unterschied zwischen ISR und Funktionsaufruf

In diesem Artikel erfahren Sie mehr über den Unterschied zwischen ISR Und Funktionsaufruf , aber bevor Sie die Unterschiede besprechen, müssen Sie sich kurz mit dem ISR und dem Funktionsaufruf vertraut machen.

Länge des Arrays in Java

Was ist ISR?

Eine Interrupt Service Routine (ISR) ist eine Softwareroutine, die von der Hardware als Reaktion auf einen Interrupt aufgerufen wird. ISR untersucht einen Interrupt, bestimmt, wie damit umzugehen ist, führt ihn aus und gibt einen logischen Interrupt-Wert zurück. Wenn keine weitere Bearbeitung erforderlich ist, benachrichtigt der ISR den Kernel mit einem Rückgabewert. Ein ISR muss sehr schnell arbeiten, um den Betrieb des Geräts und den Betrieb aller ISRs mit niedrigerer Priorität nicht zu verlangsamen.

Obwohl ein ISR möglicherweise Daten von einem CPU-Register oder einem Hardware-Port in einen Speicherpuffer verschiebt, ist er im Allgemeinen auf einen dedizierten Interrupt-Thread (oder eine Aufgabe) angewiesen, der als Interrupt-Service-Thread (IST) bezeichnet wird, um den Großteil der erforderlichen Verarbeitung durchzuführen. Wenn eine zusätzliche Verarbeitung erforderlich ist, gibt der ISR einen logischen Interrupt-Wert an den Kernel zurück. Dann ordnet es eine physische Interrupt-Nummer einem logischen Interrupt-Wert zu.

Mechanismus der Interrupt-Behandlung

Nachfolgend finden Sie den Mechanismus der Interrupt-Behandlung in den folgenden Schritten, z. B.:

  • Ein Interrupt ist eine Bedingung, die dazu führt, dass die CPU das aktuelle Programm anhält und einen ISR ausführt. Ein ISR ist ein speziell geschriebenes Programm zur Bearbeitung der Bedingung, die den Interrupt verursacht hat.
  • Nachdem ein Interrupt bearbeitet wurde, kehrt die CPU genau bei der nächsten Anweisung an der Stelle zum Hauptprogramm zurück, an der sie aufgehört hat.
  • Bei der unterbrechungsgesteuerten Datenübertragung unterbricht das E/A-Gerät die CPU, wenn es für die Datenübertragung bereit ist. Im ISR führt die CPU die Datenübertragung durch.
  • Diese Methode ist besser als Polling, da die CPU keine Zeit mit der Überprüfung des Status des E/A-Geräts verschwenden muss. Eine Tastatur ist ein gutes Beispiel für einen Interrupt-gesteuerten I/O-Zugriff.
  • Anstatt die CPU zu überprüfen, sollte die Tastatur die CPU unterbrechen, wenn eine Taste gedrückt wird. Somit wird keine Zeit damit verschwendet, die Tastatur wiederholt zu überprüfen, wenn der Benutzer überhaupt nicht tippt.
  • Das E/A-Gerät fordert einen Interrupt an, indem es sendet $overline{INTR}$ Signal an die CPU.
  • Immer wenn die CPU empfängt $overline{INTR}$ Signal, schließt es die Ausführung des aktuellen Befehls ab und führt dann den ISR aus. Wenn die CPU bereit ist, sendet sie ein Bestätigungssignal über WÄHREND Linie.
  • ISR wird ausgeführt und die CPU kehrt zum Hauptprogramm zurück.
  • E/A-Geräte schalten die aus $overline{INTR}$ Signal nach der Ausführung.
Unterschied zwischen ISR und Funktionsaufruf

Zum Beispiel: Im folgenden Beispiel erfolgt die E/A-Übertragung durch unterbrechungsgesteuerte E/A.

  • Wenn ein I/O-Gerät eine Datenübertragung mit dem Prozessor durchführen möchte, muss der Prozessor unterbrochen werden.
  • Ein Interrupt ist eine Bedingung, die den Prozessor dazu veranlasst, eine Interrupt-Service-Routine auszuführen.
  • Im ISR führt der Prozessor die Datenübertragung mit dem E/A-Gerät durch.

In diesem Beispiel unterbrechen Sie die Anforderung durch Drücken der Tastaturtaste.

  • Anstatt dass der Prozessor prüft, ob eine Taste gedrückt wird, unterbricht die Tastatur den Prozessor beim Drücken einer Taste.
  • Im ISR der Tastatur, das Teil der Tastaturtreibersoftware ist, liest der Prozessor die Daten von der Tastatur.
Unterschied zwischen ISR und Funktionsaufruf

Vorteile von ISR

Im Folgenden sind die folgenden Vorteile von ISR aufgeführt, wie zum Beispiel:

  • Asynchrone ISR-Ereignisse können jederzeit während der Programmausführung auftreten.
  • ISR speichert den PC, Flags und Register auf dem Stapel, deaktiviert alle Interrupts und lädt die Adresse des ISR.
  • ISR kann keine Argumente haben, die an ihn übergeben werden können.
  • ISR kann keine Werte zurückgeben.
  • ISR aktiviert die Interrupts.
  • Im Allgemeinen ist der ISR klein, da er die Zeit eines anderen Prozesses in Anspruch nimmt.
  • Einige ISR haben ihren eigenen Stack.

Was ist ein Funktionsaufruf?

Ein Funktionsaufruf wird auch Unterprogrammaufruf genannt. Eine Unterroutine ist eine Reihe von Anweisungen, die das Programm wiederholt benötigt. Es ist Teil eines größeren Programms, das für die Ausführung einer bestimmten Aufgabe verantwortlich ist. Das größere Programm führt möglicherweise eine hohe Arbeitslast aus und die Unterroutine führt möglicherweise nur eine einfache Aufgabe aus, die auch unabhängig von der übrigen Programmcodierung ist.

Eine Funktion ist so codiert, dass sie mehrmals und von verschiedenen Stellen aus aufgerufen werden kann (sogar innerhalb anderer Funktionen). Wenn eine Funktion aufgerufen wird, kann der Prozessor dorthin gehen, wo sich der Code für die Funktion befindet, und die Anweisungen der Funktion nacheinander ausführen. Nach Abschluss der Funktionen kehrt der Prozessor genau an die Stelle zurück, an der er aufgehört hat, und setzt die Ausführung ab der nächsten Anweisung fort.

Funktionen sind ein großartiges Werkzeug für die Wiederverwendung von Code. Viele moderne Programmiersprachen unterstützen Funktionen. Eine Sammlung von Funktionen heißt a Bibliothek . Bibliotheken werden häufig als Mittel zum Teilen und Tauschen von Software genutzt. In einigen Fällen könnte das gesamte Programm eine Folge von Unterprogrammen sein.

Was ist ein besonderer Charakter?

Im Fall eines 8086-Prozessors wird eine Unterroutine von a aufgerufen ANRUF Anweisung und Kontrollrückgabe durch a RECHTS Anweisung. Es reduziert die Größe des Programms.

Unterschied zwischen ISR und Funktionsaufruf

Eine Funktion muss explizit aufgerufen werden und ist Teil desselben Kontexts und Ausführungsthreads wie ihr Aufrufer. Ein Hardware-ISR wird nicht explizit aufgerufen, sondern durch ein externes Ereignis aufgerufen. Der Kontext des aktuellen Threads bleibt automatisch erhalten, wenn ein Interrupt aufgerufen wird, bevor der Kontext zum ISR gewechselt wird.

Im Gegenzug erfolgt der umgekehrte Kontextwechsel, der den Zustand des Prozessors vor der Unterbrechung wiederherstellt, sodass die Ausführung an der Stelle der Unterbrechung fortgesetzt wird. Nachfolgend finden Sie einige weitere Unterschiede zwischen ISR und Funktionsaufruf.

ISR Funktionsaufruf
Der Interrupt wird normalerweise durch ein internes oder externes Signal eines Mikroprozessors und nicht durch die Ausführung von Anweisungen initiiert. Der ISR wird ausgeführt, nachdem der aktuelle Status des Programms im Stapel gespeichert wurde.
ISR führt abhängig vom unterbrochenen Gerät oder den von einem Programmierer geschriebenen Anweisungen unterschiedliche Aufgaben aus.
Der Funktionsaufruf wird durch die Ausführung von Anweisungen aufgerufen, die die spezifischen Aufgaben ausführen und die Programmgröße reduzieren.
Die Hardware bestimmt die Adresse des ISR.
Die ISR-Adresse wird in die Interrupt-Vektortabelle geschrieben und die ISR-Adresse für jeden Interrupt ist festgelegt.
Die Adresse des Unterprogramms wird in die Anweisung geschrieben, die wiederum in den Hauptprogrammcode geschrieben wird.
ISR wird für alle allgemeinen Aufgaben verwendet. Funktionsaufrufe werden für programmspezifische Aufgaben durchgeführt.
Wenn während der Ausführung eines aktuellen Programms ein Interrupt auftritt, führt der Prozessor daher nach der Ausführung des aktuellen Befehls ISR aus. Nach der Ausführung von ISR muss der Prozessor das Programm genau so fortsetzen, wie es vor dem Interrupt erfolgte.
Hierzu werden der PC-Inhalt, µP-Register und einige Statuszustände gespeichert. Die Sammlung aller Statusbitzustände in einem Mikroprozessor wird PSW (Programmstatuswort) genannt.
  • Während des Interrupt-Zyklus werden die Inhalte von PC und PSW auf den Stapel geschoben. Die Verzweigungsadresse für den jeweiligen Interrupt wird dann an den PC übergeben und ein neues PSW wird in das Statusregister geladen.
  • Der letzte Befehl im ISR ist die Rückkehr von einem unterbrochenen Befehl. Wenn dieser Befehl ausgeführt wird, werden das alte PSW und die Rücksprungadresse vom Stapel entfernt.
Hier wird lediglich ein PC auf dem Stack abgelegt, um die Adresse der nächsten Anweisung im Hauptprogramm zu erhalten.
Die Unterroutine muss Zugriff auf Daten der aufrufenden Unterroutine haben und Ergebnisse an diese Unterroutine zurückgeben. Daher werden Unterprogrammparameter und Datenverknüpfungen durchgeführt.
Dies kann durch erfolgen
  • Das AC-Register kann für einen einzelnen Eingangsparameter und einen einzelnen Ausgangsparameter verwendet werden. Bei Computern mit mehreren Prozessorregistern können auf diese Weise mehr Parameter übergeben werden.
  • Eine andere Möglichkeit, Daten an ein Unterprogramm zu übergeben, ist der Speicher.