Abbildung: Echtzeit-Scheduler,
Wenn man den Scheduletakt
im Bereich des Taktes der
Steuerung oder kleiner wählt, bekommt man einen
Echtzeit-Scheduler. Man wählt dann z.B. einen Scheduletakt von 1500
Hz oder 2000 Hz. Nach Möglichkeit sollte vermieden werden, daß
der Hardwaretakt ein Vielfaches des Scheduletaktes ist, da sonst
Interferenzerscheinungen die Steuerung erheblich stören können,
z.B. wenn sich die Interrupts der Hardware dauernd mit dem Scheduler
überschneiden.
Wenn beim Echtzeit-Scheduler ein anderer Prozeß zum Laufen kommt, ist die
Zeitspanne bis zum nächsten Prozeßwechsel wesentlich kürzer, da
viel kleiner ist, z.B. 10ms beim normalen Scheduler und 0,5ms beim
Echtzeitscheduler. Dies bewirkt, daß die Zeit ohne Steuerimpulse im
Mittel geringer ist.
In Abbildung
wird der Vorteil des Schlafens deutlich.
Obwohl die maximale Zeit ohne Steuerimpulse in der zweiten Zeitreihe
erheblich kürzer ist, bekommen die anderen Prozesse dort sogar mehr
Rechenzeit (9 Zeiteinheiten im Vergleich zu 8 Einheiten in der ersten
Zeitreihe). Wenn der Steuerprozeß schläft verteilt sich in diesem Fall die
Rechenzeit der anderen Prozesse besser, da im Falle des Nichtschlafens
zur Rechenzeit des
Steuerprozesses auch die Zeit gezählt wird, in der er eigentlich nichts
rechnet, sondern nur Rechenzeit beim Warten auf neue Daten verbraucht.
Insgesamt erreicht man schon eine wesentliche Verbesserung der Steuerung.
Die maximale Totzeit ist, wie oben beschrieben, immer noch
. Da der Scheduletakt
wesentlich kleiner ist, wird die
maximale Zeit ohne Steuerimpulse, die für die Pendelsteuerung äußerst
relevant ist, reduziert. Falls aber mehrere Prozesse zur Laufzeit
anstehen, besteht trotzdem noch ein Problem von zu langen Totzeiten ohne
Steuerimpulsen, denn der Wert von x kann bei mehreren lauffähigen
Prozessen immer noch zu hoch sein.