next up previous contents
Next: Java Up: Grundlagen Previous: Umschaltzeiten   Inhalt


Interrupt Service Threads (IST)

Normalerweise werden Hardware-Ereignisse dem Prozessor mit Hilfe von Interrupts gemeldet. Der Prozessor startet daraufhin eine Interrupt-Service-Routine (ISR), um das Ereignis zu behandeln. Dazu ist zunächst ein Kontextwechsel nötig, der den Prozessor in den System-Modus umschaltet. Dann muß noch festgestellt werden, welches Gerät bedient werden muß. Erst danach kann die eigentliche Bearbeitung des Ereignisses beginnen.

Diese Latenzzeiten sind unerwünscht und schwer vorhersagbar. Insbesondere wenn viele Ereignisse in sehr kurzer Zeit auftreten, kann die Antwortzeit eines Systems stark von solchen Latenzen abhängen.

Die Abarbeitung mehrerer gleichzeitig auftretender Ereignisse erfolgt immer nach einer festen Priorität. Dieses Verfahren ist durch den Interruptcontroller vorgegeben, der nur die jeweils höchstpriorisierte Unterbrechung durchschaltet. Das bedeutet zum einen, daß der Prozessor nicht voll ausgelastet werden kann, wie in Abschnitt 2.5.4.4 genauer ausgeführt wird. Zum anderen kann dadurch ein Interrupt-Handler mit niedrigerer Priorität von solchen mit höherer Priorität unterbrochen und für längere Zeit verdrängt werden. Daher müssen die Interrupt Service Routinen sehr kurz sein und die eigentliche Arbeit delegieren, was die Programmierung komplizierter macht.

Die Idee von [BKKU99a] ist es nun, die Interrupt Service Routinen durch Interrupt Service Threads (IST) zu ersetzen. Wenn der Prozessor ein externes Ereignis signalisiert bekommt, startet er sofort den mit diesem Signal verknüpften Thread. Da der Prozessor den Kontextwechel in der Hardware unterstützt und der Thread schon bereit steht, seine Register also schon geladen sind, kann die Behandlung des Ereignisses sofort und ohne Latenz beginnen.

Ein weiterer Vorteil der IST ist, daß sie vom Prozessor in jeder Hinsicht wie ein (echtzeitfähiger) Thread behandelt werden können. Das bedeutet, es können neben dem bei ISRs üblichen Scheduling mit festen Prioritäten auch andere Scheduling-Techniken eingesetzt werden, die den Prozessor besser auslasten oder Datenraten genauer einhalten können. In Abschnitt 2.5 werden verschiedene Scheduling-Verfahren vorgestellt.


next up previous contents
Next: Java Up: Grundlagen Previous: Umschaltzeiten   Inhalt
Alexander Schulz
2000-06-18