Unterbrechungsroutine - LinkFang.de





Unterbrechungsroutine


Eine Unterbrechungsroutine (auch Unterbrechungsbehandlung genannt, engl. interrupt handler, interrupt service routine oder kurz ISR) ist ein Programmstück, das von einem Hauptprozessor (CPU) ausgeführt wird, wenn er durch einen Softwareinterrupt oder Unterbrechungsanforderung (engl. Interrupt Request) gezwungen wird, den gegenwärtigen Programmablauf zu unterbrechen und einen Interrupt auszuführen.

Ablauf

Innerhalb einer Unterbrechungsroutine geschieht normalerweise folgendes:

  1. Weitere Interrupts verhindern
    Je nachdem, ob das Betriebssystem Multitasking unterstützt und welcher Natur die Behandlung des Interrupts ist, kann es notwendig sein, weitere Unterbrechungen bei der Verarbeitung zu verhindern. Je nach Architektur sieht dies unterschiedlich aus, z. B. wird ein Interruptflag gesetzt.
  2. Sichern des Prozessorzustandes
    Um das unterbrochene Programm nicht zu stören, darf es von der zwischengeschalteten Ausführung der Unterbrechungsroutine nichts bemerken. Daher ist dieser Zwischenschritt notwendig. Normalerweise werden die Register, insbesondere das Befehlszähler- und das Statusregister, auf dem Stapel abgelegt.
  3. Abarbeiten des Interrupts
    Die Aufgabe, um derentwillen die laufenden Prozesse unterbrochen wurden, wird erledigt. Beispielsweise legen die meisten Betriebssysteme bei einem Tastendruckinterrupt den Code der Taste in eine Tastenqueue, aus der die Anwendungsprogramme mit den Benutzereingaben gespeist werden.
    Die Vorgänge dieser Phase sind zeitkritisch, da Interrupts Vorrang vor dem normalen Ablauf von Anwendungen haben bzw. selbst nicht durch Interrupts unterbrochen werden können. In Echtzeitbetriebssystemen gelten enge Vorgaben, wie lange in dieser Phase verweilt werden darf. In modernen Multitaskinganwendungen ist dies ebenfalls ein wichtiger Faktor, da dem Benutzer die Illusion der Gleichzeitigkeit von Programmabläufen durch andauerndes und schnelles Umschalten zwischen verschiedenen Tasks vermittelt wird.
  4. Wiederherstellen des Prozessorzustandes
    Der in Schritt 2 gesicherte Zustand wird wiederhergestellt.
  5. Interrupts wieder zulassen
    Falls oben Interrupts verboten wurden, müssen sie nun wieder erlaubt werden.
  6. Rücksprung in das unterbrochene Programm

Merkmale

Aus dem geschilderten Ablauf ergeben sich für Unterbrechungsroutinen drei wichtige Merkmale. Sie sind:

  • zeitkritisch – langwierige Prozeduren sollten ausgelagert werden,
  • transparent – ein Anwendungsprogramm darf nichts von der Unterbrechung bemerken und
  • exklusiv – solange die Routine nicht fertig ist, passiert normalerweise nichts anderes.

Entsprechend anspruchsvoll ist die Implementierung dieser Routinen. Als Beispiel sei der Linuxkernel genannt, bei dem

  • ein Großteil der Entwicklung zwischen den Versionen 2.4 und 2.6 in die Möglichkeit floss, möglichst viele Routinen selbst wieder unterbrechbar zu machen und so die Latenzzeit für die Anwendungen zu verkürzen und
  • ein Fehler in der Abarbeitung eines mathematischen Interrupts (die Unterbrechungsroutine löste selbst einen Interrupt aus, der sie wieder aufrief) bösartigen Programmen die Möglichkeit bot, das System komplett einzufrieren.

Weblinks

 Wiktionary: Unterbrechungsroutine – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen
 Wikibooks: Erklärung von Unterbrechungen – im Kapitel „Prozessor“ des Wikibooks „Computerhardware“

Kategorien: Programmierung | Betriebssystemkomponente

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Unterbrechungsroutine (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.