Interrupts

Interrupts unterbrechen die aktuelle Befehlsabarbeitung aufgrund von besonders wichtigen externen (oder internen) Ereignissen. Damit ist bspw. gemeint, wenn Daten an einem I/O-Device anliegen, kann dieses Gerät an der CPU einen Interrupt auslösen, sodass diese die Befehlsabarbeitung (Fetch / Decode / Execute / Write-Back) unterbricht und den Interrupt behandelt. Der Programmcode, der den Interrupt behandelt wird Interrupt Service Routine genannt, und ist Teil des Betriebssystems.

Zum Start des Betriebssystems müssen die ISRs mit der CPU registriert werden. Es muss also festgelegt werden, wohin die CPU springen soll, wenn ein bestimmter Interrupt (mit einer bestimmten Nummer) ausgelöst wird. Als Beispiel für einen Interrupt sei hier ein Page Fault aufgeführt, dh. es wird versucht auf eine Speicherseite zuzugreifen, die im Moment ausgelagert ist. Dann muss das Betriebssystem in einer ISR veranlassen, dass diese Speicherseite wieder eingelagert (in den Hauptspeicher geladen) wird.

Wichtige Eigenschaften

Eine Interrupt Service Routine bearbeitet einen Interrupt. Sie unterbricht laufende Programme. Das Erste, was eine ISR machen muss, ist es weitere Unterbrechung durch Interrupts abzustellen. Dann muss der Kontext des Prozesses zu gespeichert werden (dh. virtuellen Adressraum wechseln, Registerwerte abspeichern), wenn die CPU das nicht bereits von sich aus tut.

Dh. eine Interrupt Service Routine kann nicht unterbrochen werden. Es ist wichtig, dass nichts einer ISR dazwischenkommt, weil ansonsten evtl. der Interrupt nicht behandelt werden kann. Oftmals bleibt allerdings nicht unendlich viel Zeit einen Interrupt zu behandeln, sonst müsste der laufende Prozess nicht unterbrochen werden.

Wichtig ist auch, dass eine ISR als Critical Section betrachtet wird, sodass auch kein weiterer Prozessorkern eine ISR ausführen kann, wenn bereits eine läuft - vor allem dann, wenn die beiden ISRs sich in die Quere kommen würden. Da ISRs nicht unterbrochen werden können, sollte vermiedenen werden innerhalb einer ISR bspw. Festplattenzugriff zu realisieren, weil das i.d.R. verhältnismäßig lange dauert.