Informatik

Interrupt erklärt: Ablauf, IRQ und sichere ISR

Interrupt erklärt: Ablauf, IRQ und sichere ISR
Interrupt erklärt: Ablauf, IRQ und sichere ISR
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Ein Interrupt unterbricht den normalen Programmablauf kurz, damit der Prozessor auf ein wichtiges Ereignis reagieren kann. Er sichert den benötigten Zustand, führt eine Interrupt Service Routine (ISR) aus und setzt danach das unterbrochene Programm fort.

Auf dieser Seite lernst du, warum Interrupts gegenüber Polling nützlich sind, welche Schritte bei einer Unterbrechung ablaufen und worauf eine sichere ISR achten muss.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Warum Interrupts statt ständiger Abfragen?

Stell dir vor, ein Prozessor wartet auf einen Tastendruck. Er könnte den Zustand der Tastatur immer wieder abfragen. Dieses Verfahren heißt Polling.

Beim Polling entscheidet das Abfrageintervall über den Zielkonflikt:

  • Häufige Abfragen verkürzen die mögliche Reaktionszeit, beanspruchen aber viel Prozessorzeit.
  • Seltene Abfragen sparen Prozessorzeit, können ein Ereignis jedoch verspätet erkennen.

Bei einem Interrupt meldet sich das Gerät selbst. Der Prozessor kann bis dahin andere Aufgaben bearbeiten oder in einem energiesparenden Zustand warten.

Definition

Interrupt Request

Ein Interrupt Request, kurz IRQ, ist die Unterbrechungsanforderung eines Geräts oder einer anderen Interruptquelle. Der IRQ meldet dem Prozessor: Ein Ereignis muss behandelt werden.

Die Türklingel liefert eine passende Analogie: Mit Klingel arbeitest du weiter, bis ein Besucher ein Signal gibt. Polling wäre das regelmäßige Nachsehen an der Tür. Die Analogie hat eine Grenze: Bei Vorgängen, die ständig überwacht werden müssen, kann regelmäßiges Prüfen sinnvoller sein.

Merke

Polling fragt regelmäßig nach einem Ereignis. Bei einem Interrupt meldet die Quelle das Ereignis selbst.

Teste dich
Frage 1 von 2LeichtWelche Beschreibung trifft Polling?
Lösung: Der Prozessor fragt einen Zustand regelmäßig ab. — Beim Polling geht die Aktivität vom Prozessor aus: Er prüft den Zustand in bestimmten Abständen.
Frage 2 von 2MittelEine Schleife prüft einen Taster nur am Anfang jedes langen Durchlaufs. Welcher Nachteil entsteht?
Lösung: Ein Tastendruck kurz nach der Abfrage wird erst beim nächsten Durchlauf erkannt. — Die maximale Verzögerung hängt beim Polling von der Zeit bis zur nächsten Abfrage ab.
So läuft ein Hardware-Interrupt ab

Ein Hardware-Interrupt wird durch ein externes, zeitlich nicht genau vorhersehbares Ereignis ausgelöst. Beispiele sind ein Tastendruck, eingetroffene Netzwerkdaten, ein abgelaufener Timer oder der Abschluss einer Ein-/Ausgabeoperation.

Der typische Ablauf besteht aus diesen Schritten:

  1. Ein Gerät oder Timer erzeugt einen IRQ.
  2. Ein Interrupt-Controller prüft gegebenenfalls Maskierung und Priorität.
  3. Der Prozessor beendet die gerade laufende Instruktion.
  4. Er sichert den nötigen Ausführungskontext. Dazu gehören mindestens die Rücksprunginformation und je nach Architektur weitere Register oder Statusinformationen.
  5. Über einen festen Eintrag oder einen Interruptvektor ermittelt der Prozessor die zuständige ISR.
  6. Die ISR behandelt das Ereignis, sichert nötige Daten und quittiert die Ursache beziehungsweise löscht das Interrupt-Flag.
  7. Die gesicherten Register und Statusinformationen werden wiederhergestellt.
  8. Eine besondere Rückkehranweisung beendet die ISR. Das unterbrochene Programm wird an der passenden Stelle fortgesetzt.
Definition

Interrupt Service Routine

Die Interrupt Service Routine, kurz ISR, ist der Programmteil, der ein gemeldetes Ereignis behandelt. Sie wird auch Interrupt-Handler oder Unterbrechungsroutine genannt.

Der Stack ist dabei ein Speicherbereich für vorübergehend gesicherte Rücksprung- und Kontextinformationen. Ohne korrekte Sicherung könnte das Hauptprogramm nach der ISR mit veränderten Registern weiterlaufen und schwer nachvollziehbare Fehler erzeugen.

Beispiel

Du drückst eine Taste, während der Prozessor ein anderes Programm ausführt:

  1. Der Tastaturcontroller meldet einen IRQ.
  2. Der Prozessor beendet seine aktuelle Instruktion und sichert den benötigten Zustand.
  3. Er startet die ISR des Tastaturtreibers.
  4. Die ISR liest die bereitgestellte Eingabe und bestätigt das Ereignis.
  5. Nach der Rückkehr stellt der Prozessor den alten Zustand wieder her und setzt das zuvor laufende Programm fort.

Der entscheidende Gedanke: Nicht das Anwendungsprogramm muss die Tastatur ununterbrochen abfragen. Die Hardware macht durch den IRQ auf die Eingabe aufmerksam.

Lückentext

Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.

Eine Interruptquelle sendet einen . Der Prozessor sichert den benötigten Kontext häufig auf dem . Anschließend läuft die . Vor der Rückkehr muss die Ursache bestätigt oder das Interrupt-Flag werden.

Lösungen: Lücke 1: IRQ; Lücke 2: Stack; Lücke 3: ISR; Lücke 4: gelöscht. IRQ bezeichnet die Anforderung, ISR die Behandlungsroutine und Stack den Speicherbereich für den gesicherten Kontext. Die Quittierung verhindert eine unerwünschte erneute Meldung derselben Anforderung.
Hardware-Interrupt, Softwareinterrupt oder Exception?

Nicht jede interruptähnliche Unterbrechung kommt von einem Gerät.

  • Ein Hardware-Interrupt entsteht durch ein externes Ereignis. Sein Zeitpunkt ist zum laufenden Programm asynchron, also nicht an eine bestimmte Programmanweisung gebunden.
  • Ein expliziter Softwareinterrupt wird absichtlich durch einen Programmbefehl ausgelöst. Betriebssysteme können einen solchen Mechanismus beispielsweise für Systemaufrufe verwenden.
  • Eine Exception entsteht durch ein von der CPU erkanntes Ereignis, etwa eine Division durch null, eine verbotene Instruktion oder einen unerlaubten Speicherzugriff.

Diese Fälle können ähnliche Mechanismen für Kontextwechsel und Handleraufruf verwenden. Ihre Auslöser sind jedoch verschieden.

Teste dich
Frage 1 von 2LeichtWelches Ereignis ist ein typischer Hardware-Interrupt?
Lösung: Eine Netzwerkschnittstelle meldet empfangene Daten. — Ein Hardware-Interrupt geht von einer externen Quelle wie einem Gerät oder Timer aus.
Frage 2 von 2MittelWährend eines Programms erkennt die CPU eine unerlaubte Instruktion. Wie ist das Ereignis einzuordnen?
Lösung: Als Exception — CPU-intern erkannte Fehler und besondere Zustände werden als Exceptions behandelt, auch wenn der weitere Mechanismus einem Interrupt ähnelt.
Wie Maskierung und Priorität zusammenarbeiten

Mehrere Geräte können fast gleichzeitig eine Unterbrechung anfordern. Deshalb muss das System entscheiden, welche Anforderung zuerst behandelt wird.

Ein Interrupt-Controller sammelt Anforderungen verschiedener Quellen. Er kann sie priorisieren, einzeln sperren und dem Prozessor eine Interruptnummer beziehungsweise einen Vektor liefern. Der Vektor führt nicht zwingend direkt zur Einsprungadresse; er kann auch einen Eintrag in einer Tabelle auswählen, in dem die Handleradresse steht.

Maskierung bedeutet, dass bestimmte Interruptanforderungen vorübergehend nicht angenommen werden. Ein maskierbarer Interrupt kann beispielsweise während eines besonders kritischen Ablaufs zurückgestellt werden.

Ein nicht maskierbarer Interrupt (NMI) ist für besondere Ereignisse wie schwerwiegende Hardwarefehler oder einen drohenden Stromausfall vorgesehen. Er lässt sich nicht wie ein gewöhnlicher maskierbarer IRQ unterdrücken.

Priorität beantwortet eine andere Frage als Maskierung:

  • Maskierung: Darf diese Anforderung momentan behandelt werden?
  • Priorität: Welche der zugelassenen Anforderungen kommt zuerst?

Besitzt ein Prozessor nur einen gemeinsamen IRQ-Eingang, muss die Software prüfen, welche Quelle den Interrupt ausgelöst hat. Bei vektorisierten Interrupts kann eine Kennung direkt zum passenden Tabelleneintrag führen.

Beispiel

Ein Timer und eine Netzwerkschnittstelle melden gleichzeitig ein Ereignis. Der Controller prüft zunächst, ob beide Quellen freigegeben sind. Danach wählt er anhand der festgelegten Priorität eine Anforderung aus. Nach ihrer Behandlung kann die noch anstehende Anforderung folgen.

Eine höhere Priorität bedeutet dabei nicht, dass andere Ereignisse unwichtig sind. Eine lange Behandlung kann niedrigere Prioritäten verzögern und im ungünstigen Fall zum Überlaufen eines Gerätepuffers führen.

Teste dich
Frage 1 von 2MittelZwei nicht maskierte IRQs liegen gleichzeitig an. Welche Aufgabe übernimmt ein Interrupt-Controller?
Lösung: Er wählt nach seiner Prioritätsregel aus, welcher IRQ zuerst gemeldet wird. — Priorisierung legt die Bearbeitungsreihenfolge gleichzeitig anstehender, zugelassener Anforderungen fest.
Frage 2 von 2SchwerEin maskierter IRQ hat die höchste Priorität. Was folgt daraus?
Lösung: Trotz seiner Priorität wird er während der Maskierung nicht angenommen. — Zuerst entscheidet die Maskierung, ob ein IRQ zugelassen ist. Erst unter den zugelassenen Anforderungen wirkt die Priorität.
So bleibt eine ISR sicher und kurz

Eine ISR unterbricht andere Arbeit. Deshalb soll sie nur die zeitkritische Behandlung erledigen und aufwendige Weiterverarbeitung möglichst vorbereiten oder an einen normalen Task übergeben.

In einer ISR solltest du insbesondere vermeiden:

  • blockierende Wartefunktionen;
  • Endlosschleifen;
  • langsame oder ungeeignete System- und Bibliotheksaufrufe;
  • Operationen wie printf, malloc oder new, wenn sie nicht ausdrücklich für den ISR-Einsatz geeignet sind.

Außerdem muss die ISR die Interruptursache quittieren oder das zugehörige Flag löschen. Geschieht das nicht, kann dieselbe Anforderung sofort erneut auftreten oder der Controller weitere Meldungen dieser Quelle zurückhalten.

Gemeinsame Daten brauchen besondere Aufmerksamkeit

Ein externer Interrupt kann das Hauptprogramm an einer kaum vorhersehbaren Stelle unterbrechen. Greifen Hauptprogramm und ISR auf dieselben Daten zu, kann das Ergebnis von der Ausführungsreihenfolge abhängen. Das nennt man Race Condition.

Beispiel

Das Hauptprogramm liest eine gemeinsam verwendete Variable und will sie danach verändern. Genau zwischen Lesen und Schreiben tritt ein Interrupt auf. Die ISR verändert dieselbe Variable. Wenn anschließend das Hauptprogramm mit seinem alten gelesenen Wert weitermacht, kann die Änderung der ISR verloren gehen.

Die sichere Lösung hängt von Prozessor, Betriebssystem und Datenzugriff ab. Entscheidend ist, den gemeinsamen Zugriff als kritischen Bereich zu erkennen und mit einem passenden Synchronisationskonzept zu schützen.

Werden Interrupts bereits innerhalb einer ISR wieder freigegeben, kann eine höher priorisierte ISR dazwischenlaufen. Auch ein erneuter Eintritt in dieselbe Routine ist je nach System möglich. Eine ISR muss für eine solche Verschachtelung ausdrücklich ausgelegt sein.

Merke

Eine gute ISR sichert den benötigten Kontext, behandelt nur das Dringende, bestätigt die Ursache und kehrt kontrolliert zurück.

Teste dich
Frage 1 von 2LeichtWelche Tätigkeit ist in einer ISR besonders problematisch?
Lösung: Eine blockierende Warteschleife — Blockierendes Warten verlängert die ISR und kann andere Interrupts oder Aufgaben unnötig verzögern.
Frage 2 von 2SchwerHauptprogramm und ISR verändern dieselbe Variable ohne Schutz. Welches Problem kann entstehen?
Lösung: Das Ergebnis hängt von der zufälligen Unterbrechungsstelle und Reihenfolge ab. — Ein ungeschützter gemeinsamer Zugriff kann eine Race Condition erzeugen. Kritische Zugriffe müssen passend synchronisiert werden.
Interrupts im System beurteilen

Interrupts sind besonders nützlich, wenn Ereignisse unregelmäßig auftreten oder schnell gemeldet werden müssen. Dazu gehören Eingaben, empfangene Daten, abgeschlossene Geräteoperationen, Fehler und Timerereignisse.

Polling kann trotzdem passend sein, wenn ein Zustand ohnehin regelmäßig geprüft wird, die Schleife kurz und vorhersagbar ist oder zusätzliche Interrupttechnik nicht benötigt wird. Die Wahl hängt also von Reaktionszeit, Prozessorbelastung und Systemaufbau ab.

Auch Interrupts verursachen Aufwand: Der Kontext muss gesichert und wiederhergestellt werden, Prioritäten müssen sinnvoll gewählt sein und lange ISRs können andere Arbeit verzögern. Sie beseitigen Nebenläufigkeitsprobleme nicht, sondern können sie durch unvorhersehbare Unterbrechungsstellen sichtbar machen.

Gut zu wissen

Interruptlatenz bezeichnet die Zeit zwischen einer Unterbrechungsanforderung und dem Beginn ihrer Verarbeitung. Sie hängt unter anderem von der Hardware, der Maskierung und bereits laufenden, höher priorisierten Behandlungen ab.

Teste dich
Frage 1 von 1SchwerEin Sensor liefert seltene, aber zeitkritische Warnsignale. Die Hauptschleife ist lang. Welche Lösung ist am plausibelsten?
Lösung: Der Sensor meldet das Ereignis per Interrupt, und die ISR erledigt nur die dringende Behandlung. — Seltene, zeitkritische Ereignisse sprechen für eine selbstständige Meldung. Die ISR sollte dabei auf die dringenden Schritte begrenzt bleiben.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Interrupt
    • Auslöser
      • Hardwareereignis
      • Softwarebefehl
      • CPU-Exception
    • Ablauf
      • IRQ prüfen
      • Kontext sichern
      • ISR ausführen
      • Ursache quittieren
      • Kontext wiederherstellen
    • Steuerung
      • Maskierung
      • Priorität
      • Interruptvektor
    • sichere ISR
      • kurz bleiben
      • nicht blockieren
      • gemeinsame Daten schützen
Abschluss-Check
Teste dich
Frage 1 von 4LeichtWelche Reihenfolge beschreibt den Kern eines Hardware-Interrupts korrekt?
Lösung: IRQ, Kontext sichern, ISR ausführen, Ursache quittieren, Kontext wiederherstellen — Nach dem angenommenen IRQ schützt die Kontextrettung das Hauptprogramm. Die ISR behandelt und bestätigt das Ereignis, bevor der Zustand wiederhergestellt wird.
Frage 2 von 4MittelEin Programm fragt ein Gerät alle 200 Schleifendurchläufe ab. Ein Ereignis tritt unmittelbar nach einer Abfrage auf. Was ist zu erwarten?
Lösung: Es wird frühestens bei der nächsten Abfrage erkannt. — Beim Polling bestimmt der Abstand zwischen zwei Abfragen die mögliche Erkennungsverzögerung.
Frage 3 von 4SchwerEin System reagiert trotz hoher IRQ-Priorität nicht auf ein Gerät. Der betreffende Eingang ist maskiert. Welche Erklärung ist richtig?
Lösung: Die Maskierung verhindert momentan die Annahme; die hohe Priorität wirkt erst unter zugelassenen IRQs. — Maskierung entscheidet über die Zulassung einer Anforderung. Priorisierung ordnet anschließend die zugelassenen Anforderungen.
Frage 4 von 4SchwerEine ISR verändert eine Variable, die auch das Hauptprogramm in mehreren Schritten bearbeitet. Was musst du zuerst prüfen?
Lösung: Ob eine Unterbrechung zwischen den Zugriffsschritten eine Race Condition erzeugen kann. — Prüfe, ob beide Ausführungskontexte denselben veränderlichen Zustand nutzen. Ist der Zugriff nicht unteilbar, braucht der kritische Bereich einen passenden Schutz.

Du beherrschst das Grundmodell, wenn du zu einem Ereignis den Weg IRQ → Prüfung → Kontextrettung → ISR → Quittierung → Rückkehr erklären und die Wahl zwischen Polling und Interrupt begründen kannst.

Passend dazu