Interrupt (Unterbrechung): Definition, Ursachen & Funktionsweise

Interrupts erklärt: Definition, Ursachen & Funktionsweise – wie Hardware- und Software-Signale Mikroprozessoren sofort unterbrechen (Tasten, Timer, I/O) verständlich & praxisnah.

Autor: Leandro Alegsa

Ein Interrupt tritt auf, wenn ein Mikroprozessor seine aktuelle Arbeit unterbricht, um auf ein Ereignis zu reagieren, das von außen kommt und nicht Teil des aktuellen Programms ist. Meistens werden Unterbrechungen von der Hardware ausgelöst — zum Beispiel durch ein Signal, das an den Prozessor gesendet wird — aber sie können auch durch laufende Software verursacht werden. Häufige Auslöser sind das Drücken einer Taste auf einer Tastatur, das Ablaufen eines Timers, das Ende einer Datenübertragung oder jedes andere Ereignis, das eine sofortige Reaktion des Prozessors erfordert. Unterbrechungen können jederzeit auftreten, während der Prozessor ein Programm ausführt, unabhängig davon, wo im Quellcode sich der Prozessor gerade befindet.

Typen von Interrupts

  • Hardware-Interrupts: Von Peripheriekomponenten (z. B. Tastatur, Netzwerkadapter, Timer, DMA-Controller) erzeugt.
  • Software-Interrupts: Explizit durch Instruktionen im Programm erzeugt (z. B. Systemaufrufe) oder durch fehlerhafte Bedingungen.
  • Maskierbare vs. nicht-maskierbare Interrupts: Maskierbare Interrupts können vorübergehend deaktiviert (maskiert) werden; nicht-maskierbare Interrupts (NMI) müssen sofort behandelt werden, z. B. bei kritischen Fehlern.
  • Synchronous vs. Asynchronous: Synchronous (z. B. Ausnahmen/Exceptions) treten als direkte Folge einer Instruktion auf; asynchronous (z. B. externe Hardware-Interrupts) können zu beliebigen Zeiten eintreten.

Wie ein Interrupt technisch abläuft

Der typische Ablauf einer Interrupt-Behandlung umfasst mehrere Schritte:

  • Erkennung: Der Prozessor erkennt das Interrupt-Signal (extern oder intern).
  • Vektorierung: Dem Interrupt wird eine Nummer bzw. Adresse (Interrupt-Vektor) zugeordnet, die auf die entsprechende Interrupt-Service-Routine (ISR) verweist.
  • Kontext speichern: Registerinhalt, Programmzähler und Status werden gesichert, damit später an der gleichen Stelle weitergearbeitet werden kann.
  • ISR ausführen: Die zugeordnete Routine bearbeitet das Ereignis (z. B. Lesepuffer füllen, Status zurücksetzen).
  • Kontext wiederherstellen: Nach Beendigung der ISR werden gesicherte Register und Status wiederhergestellt und die Ausführung des unterbrochenen Programms fortgesetzt.

Wichtige Konzepte

  • Interrupt-Service-Routine (ISR): Spezielle Funktion, die das Interrupt-Ereignis behandelt. ISRs müssen kurz, deterministisch und reentrant bzw. geschützt sein.
  • Interrupt-Vektor und Tabellen: Moderne Systeme nutzen eine Interrupt-Tabelle, die Vektoren auf ISRs enthält. x86-Systeme z. B. haben ein Interrupt Descriptor Table (IDT).
  • Prioritäten und Maskierung: Mehrere Interrupts können gleichzeitig auftreten; Prioritätssysteme (oder Controller wie PIC/APIC) bestimmen die Reihenfolge. Maskierung verhindert oder erlaubt bestimmte Interrupts vorübergehend.
  • Verschachtelung (Nested Interrupts): Höherprioritäre Interrupts können eine laufende ISR unterbrechen, sofern das System dies erlaubt.
  • Interrupt-Latenz: Zeit zwischen Auslösen des Interrupts und Beginn der ISR. Kritisch in Echtzeitsystemen.

Interrupts vs. Polling

Polling bedeutet, dass die CPU regelmäßig prüft, ob ein Gerät etwas zu tun hat. Interrupts sparen CPU-Zeit, weil die CPU nur reagiert, wenn wirklich ein Ereignis eintritt. Polling kann einfacher implementiert sein, ist aber ineffizienter und weniger reaktionsschnell, besonders bei seltenen Ereignissen.

Anwendungsbereiche

  • Echtzeitsysteme (z. B. Steuerungen) — schnelle Reaktion auf Sensoren und Timer.
  • Betriebssysteme — Verwaltung von Ein-/Ausgabe, Systemaufrufen und Kontextwechseln.
  • Peripheriegeräte und Treiber — Signalisierung abgeschlossener DMA-Transfers oder neuer Daten.
  • Fehlerbehandlung — nicht-maskierbare Interrupts für Hardwarefehler.

Vor- und Nachteile

  • Vorteile: Reaktionsschnell, effizienter Ressourcenverbrauch, ermöglicht asynchrone Ereignisverarbeitung.
  • Nachteile: Komplexere Programmierung (Race-Conditions, Synchronisation), Overhead durch Kontextwechsel, schwierige Echtzeitgarantien ohne sorgfältiges Design.

Praxis-Tipps

  • Halte ISRs so kurz wie möglich und delegiere aufwändige Arbeit an Hintergrundtasks oder Threads.
  • Vermeide in ISRs blockierende oder lang laufende Operationen.
  • Nutze geeignete Synchronisationsmechanismen (z. B. atomare Operationen) zwischen ISR und Hauptprogramm.
  • Teste Interrupt-Latenzen und Prioritäten in realen Szenarien, besonders in zeitkritischen Anwendungen.

Zusammengefasst sind Interrupts ein zentrales Mittel, damit Prozessoren effizient und zeitgerecht auf externe und interne Ereignisse reagieren können. Ihr korrektes Design und ihre Handhabung sind entscheidend für Stabilität, Performance und Vorhersagbarkeit eines Systems.

Dieses Diagramm zeigt, was passiert, wenn ein Interrupt aufgerufen wirdZoom
Dieses Diagramm zeigt, was passiert, wenn ein Interrupt aufgerufen wird

Wie unterbricht die Arbeit

Ein Hardware- oder Software-Aufruf für einen Interrupt (bekannt als Interrupt-Anforderung oder IRQ) wird von einem "Interrupt-Handler" oder einer "Interrupt-Service-Routine" (ISR) im Prozessor erledigt. Sie legt das, was sie gerade tut, auf einen Stapel (Stack) und folgt dann bestimmten Anweisungen, die eine bestimmte Aufgabe im Namen des Systems ausführen, das nicht Teil des Programms sein muss, das es ausführt. Sobald er die Anweisungen befolgt hat, nimmt der ISR das, was er auf den Stack gelegt hat, wieder zurück und fährt mit dem fort, was er tat, bevor die Unterbrechung auftrat.

Viele Interrupt-Controller heutiger Prozessoren verwenden einen Interrupt-Vektor, um Interrupts u.a. danach zu sortieren, woher sie stammen. Der Vektor enthält normalerweise den Code, der ausgeführt werden muss, wenn die Unterbrechung stattfindet. ISRs sind in der Regel dafür verantwortlich, den Interrupt zu behandeln oder zu "warten" und sich selbst in einem funktionierenden Zustand zu halten.

Verwendung von Unterbrechungen

  • Auslösen von Aufgaben in regelmäßigen Abständen
  • Wartung eines externen Geräts, die jederzeit erfolgen kann
  • Die Notwendigkeit für synchrones Polling entfällt
  • Auslösen einer Aktion eines Betriebssystems (OS)

Fragen und Antworten

F: Was ist eine Unterbrechung?


A: Eine Unterbrechung ist eine Aktion eines Mikroprozessors, die aufgrund von externen Ereignissen nicht Teil des ausgeführten Programms ist.

F: Wodurch werden Interrupts auf einem Prozessor am häufigsten ausgelöst?


A: Unterbrechungen treten bei einem Prozessor am häufigsten auf, weil er Signale von der Hardware empfängt.

F: Können Unterbrechungen durch Software verursacht werden?


A: Ja, Unterbrechungen können auch durch Software verursacht werden, die parallel zu dem ausgeführten Programm läuft.

F: Nennen Sie einige Beispiele für Ereignisse, die einen Interrupt auslösen können.
A: Beispiele für Ereignisse, die eine Unterbrechung auslösen können, sind das Drücken von Tasten auf einer Tastatur, das Auslösen eines Timers und die Durchführung von Datenübertragungen.

F: Ist ein Interrupt davon abhängig, wo das Programm ausgeführt wird?


A: Nein, Unterbrechungen können jederzeit während der Programmausführung auftreten, unabhängig davon, wo sich das Programm in seinem Quellcode befindet.

F: Ist ein Interrupt ein wünschenswertes Ereignis für einen Mikroprozessor?


A: Unterbrechungen sind in der Regel unerwünschte Ereignisse für einen Mikroprozessor, da sie die Ausführung des Programms unterbrechen und sofortige Aufmerksamkeit erfordern.

F: Wie reagiert ein Mikroprozessor auf eine Unterbrechung?


A: Ein Mikroprozessor unterbricht vorübergehend das ausgeführte Programm und führt eine Interrupt Service Routine (ISR) aus, um die Unterbrechung zu behandeln, bevor er zum ausgeführten Programm zurückkehrt.


Suche in der Enzyklopädie
AlegsaOnline.com - 2020 / 2025 - License CC3