Ein Interrupt (deutsch: Unterbrechung) ist ein Signal, das den aktuellen Befehlsfluss der CPU unterbricht, damit der Prozessor eine spezielle Routine ausführt – die Interrupt-Service-Routine (ISR) oder den Interrupt-Handler. Nach dem Abarbeiten des Handlers setzt die CPU an der unterbrochenen Stelle fort. Interrupts sind das wichtigste Mittel, damit Hardware-Ereignisse (Tastendruck, Netzwerkpaket, Festplatten-Daten) nicht dauerhaft abgefragt werden müssen.
Ablauf eines Interrupts
- Ein Gerät oder Programm löst den Interrupt aus.
- Ein Interrupt-Controller (heute meist der Advanced Programmable Interrupt Controller, APIC) priorisiert und meldet den Interrupt an die CPU.
- Die CPU sichert den aktuellen Kontext (Programmzähler, Flags, Register) und wechselt in den Kernel-Modus.
- Die zugehörige ISR wird ausgeführt – sie ist im Kernel registriert, meist von einem Gerätetreiber.
- Die CPU stellt den Kontext wieder her; das unterbrochene Programm läuft unmerklich weiter.
Hardware-, Software-Interrupts und Exceptions
Hardware-Interrupts kommen von Peripheriegeräten (Tastatur, Netzwerkkarte, Timer). Software-Interrupts löst das Programm selbst aus, z. B. mit einem speziellen Befehl (auf x86: INT), um einen Systemaufruf des Betriebssystems anzufordern – der Befehl ist ein Opcode wie jeder andere. Exceptions (auch Traps/Faults genannt) entstehen bei Problemen im laufenden Befehl: Division durch null, ungültiger Speicherzugriff oder ein Page Fault, bei dem eine Seite noch gar nicht im RAM liegt und der Kernel sie erst laden muss (TLB und virtueller Speicher sind hier eng beteiligt).
Prioritäten und Maskierung
Nicht jeder Interrupt ist gleich wichtig: Der Controller vergibt Prioritäten, und die CPU kann Interrupts per Flag temporär unterdrücken (maskieren). Nicht maskierbare Interrupts (NMI) bleiben davon ausgenommen und sind schwerwiegenden Ereignissen vorbehalten – etwa einem Hardware-Fehler. Die ISR sollte so kurz wie möglich laufen; aufwändige Arbeit wird an den normalen Prozesskontext verschoben.
Polling im Vergleich
Die Alternative zum Interrupt ist das Polling (aktives Abfragen): Das Programm fragt in einer Schleife, ob ein Gerät bereit ist. Das verschwendet Rechenzeit und Energie. Interrupt-getriebene Systeme reagieren sofort und lassen die CPU schlafen, bis ein Ereignis eintritt – ein Grund, warum selbst kleine Controller Interrupts nutzen.
Interrupts sind ein Thema der Mikroarchitektur und der Von-Neumann-Architektur, da sie den Ein-/Ausgabe-Weg des Rechners steuern. Der Scheduler des Betriebssystems nutzt einen periodischen Timer-Interrupt für die Zeitscheiben der Prozesse. Beim Wechsel des Prozesses muss auch der komplette Prozessorzustand gesichert werden – bei aktuellen CPUs inklusive der breiten SIMD-Register.