Hauptseite Lesezeichen
Liste Artikel | Liste Kategorien | Zufälliger Artikel | Links auf diese Seite

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.

Ablaufbeispiel

Aufgaben der untersten Schicht eines Betriebssystems beim Auftreten einer Unterbrechung:

  1. Hardware sichert Befehlszähler
  2. Hardware holt neuen Befehlszähler vom Interruptvektor
  3. Assemblerfunktion speichert Register
  4. Assemblerfunktion erzeugt neuen Stack
  5. C-Unterbrechungsroutine läuft (puffert Ein- und Ausgaben)
  6. Scheduler sucht nächsten Prozess
  7. C-Funktion kommt zur Assemblerfunktion zurück
  8. Assemblerfunktion startet neuen aktuellen Prozess

Weblinks





This site support the Wikimedia Foundation. This Article originally from Wikipedia. All text is available under the terms of the GNU Free Documentation License Page HistoryOriginal ArticleWikipedia