Interrupt
In der Informatik versteht man unter Interrupt (lat interruptus, Unterbrechung) die kurzfristige Unterbrechung eines laufenden Programmes oder, genauer gesagt, einer von der CPU abzuarbeitenden Befehlssequenz, um einen anderen Prozess, die Interrupt-Routine, auszuführen. Anschließend wird die Ausführung des Programmes an der Unterbrechungsstelle fortgesetzt.Sinn eines Interrupts ist z.B. die Möglichkeit einer schnellen Reaktion auf Signale von Ein/Ausgabe-Bausteinen oder Zeitgebern (Timern). Auch Multitasking wäre ohne Interrupts kaum möglich.
Ausgelöst werden Interrupts meist durch Elektronikkomponenten mittels einer so genannten "Unterbrechungs-Anfrage" (engl. Interrupt-Request - IRQ). Die meisten Prozessoren kennen auch spezielle Interrupt-Befehle, um so genannte Software-Interrupts auszulösen. Bei den Hardwareinterrupts unterscheidet man zwischen maskierbaren Interrupts, deren Auslösung man (bei gewissen zeitkritischen Routinen) unterbinden kann, und nicht-maskierbaren Interrupts (NMI), die immer einen Sprung des Prozessors in die Interruptroutine auslösen.
Bei x86-Prozessoren gibt es 256 Interrupts. Wird ein Interrupt aufgerufen, egal ob von der Software oder von der Hardware, so werden Flagregister, Codesegment und Instruction Pointer auf dem Stack gesichert und zu einer Funktion gesprungen, deren Adresse in der Interrupttabelle steht.
Im Real Mode befindet sich diese Tabelle in dem ersten Kilobyte des Hauptspeichers (0000h:0000h-0000h:0400h). Jede Interruptnummer benötigt 4 Bytes, 2 Bytes für das neue Codesegment und 2 für den Offset innerhalb des Segments.
Im Protected Mode der CPU wird die Position in der Interrupt-Deskriptor-Tabelle festgelegt. Hier benötigt sie jedoch mehr Speicher, da hier für jeden Interrupt ein Deskriptor gebraucht wird.