next up previous contents
Next: Leistungsfähigkeit der Echtzeitsteuerung Up: Steuerung durch einen normalen Previous: Echtzeit-Scheduler

Echtzeit-Scheduler mit Prioritätsanpassung

   figure556
Abbildung: Echtzeit-Scheduler mit Prioritätsanpassung, tex2html_wrap_inline3508

Der Grund für zu lange Totzeiten bei mehreren lauffähigen Prozessen ist, daß andere Prozesse bevorzugt werden können, wenn sie gleichzeitig mit dem Steuerprozeß lauffähig sind. Um dies zu verhindern, wird in der Interruptfunktion die Priorität des Steuerprozesses geändert.

Der Prozeß wird zum einen als Echtzeitprozeß eingestuft. Zum anderen wird bei jedem Interrupt von der Hardware die aktuelle Laufpriorität auf den maximalen Wert gesetzt. Dies bewirkt, daß beim nächsten Prozeßwechsel im Scheduler auf jeden Fall der Steuerungsprozeß ausgeführt wird. Die Funktionsweise wird in Kap. gif in der Interruptfunktion erläutert. Auf einem System darf aber immer nur ein Echtzeitprozeß laufen. Andernfalls geht die Echtzeitfähigkeit durch die konkurrierenden Echtzeitprozesse verloren.

Der Vorteil dieser Prioritätsanpassung ist nun, daß der Steuerprozeß wirklich nach jedem Prozeßwechsel als nächstes rechnen kann. Damit sinkt die maximale Zeit ohne Steuerung von tex2html_wrap_inline3504 auf tex2html_wrap_inline3476 , da x nur den Wert 1 annehmen kann. Mit einem Echtzeitscheduler, wobei tex2html_wrap_inline3476 kleiner als tex2html_wrap_inline3494 ist, geht normalerweise kein Takt verloren.

Leider trifft dies nur solange zu, wie keine intensiven I/O-Zugriffe stattfinden. Denn bei Zugriffen auf bestimmten Geräten, z.B. IDE-Platten, wird für längere Zeit durch busy-waiting der Prozeßwechsel unterbrochen bzw. die Interrupts abgeschaltet, siehe dazu auch Kap. gif. Bei intensiven Zugriffen auf solche Geräte kann sich die Totzeit auf einige Millisekunden erhöhen.

Ein Problem besteht jetzt noch, wenn der Rechner zu langsam ist, d.h. die Zeit zum Berechnen des Steuerimpulses höher ist, als die Taktrate tex2html_wrap_inline3494 . In diesem Fall wird der Steuerprozeß fortwährend ausgeführt. Dies bedeutet, daß dann kein anderer Prozeß laufen kann und das ganze System scheinbar steht. Um dies zu verhindern, wird durch die Interruptfunktion der Steuerprozeß abgebrochen, falls dieser Fall eintreten sollte.



Marius Heuler
Tue Jan 7 12:11:50 MET 1997