Navigation


Scheduler

  1. Die Scheduler haben zwei grundsätzliche Aufgaben:
    • Sie können Taskzustände von "blockiert" auf "lauffähig" ändern (Hochsprach-Befehle WHEN...CONTINUE, AT...CONTINUE, AFTER...CONTINUE, AFTER...RESUME) oder von "eingeplant" auf "lauffähig" (Hochsprach-Befehle WHEN...ACTIVATE, AT...ACTIVATE, AT...ALL...UNTIL...ACTIVATE, AFTER...ALL...UNTIL...ACTIVATE etc.)
    • Ereilt eine Task eine Aktivierung, während sie läuft, werden bis zu drei Aktivierungen samt Priorität für die Task gepuffert.
  2. Der Clock-Scheduler hat darüber hinaus vier weitere:
    • Er prüft, bei welcher Uhrzeit die nächste zeitliche Einplanung fällig ist und legt diese Zeit in einer mit der Timer-IRSR und den entsprechenden Traps gemeinsam genutzten Zelle ab.
    • Bei zyklisch eingeplanten Tasks (z.B. durch ALL...ACTIVATE) berechnet der Clock-Scheduler den Zeitpunkt, wann die Task erneut aktiviert bzw. fortgesetzt werden muß und trägt den neuen Zeitpunkt in der Verwaltungsstruktur der Task ein.
    • Bei zyklisch eingeplanten Tasks mit Einplanungsende (z.B. durch ALL...ACTIVATE...UNTIL) plant er die Task nach Erreichen des Endezeitpunkts aus.
    • Um Mitternacht setzt er die Uhrzeit auf 00:00:00.00000 und erhöht die Datumszelle.
  3. Die Scheduler laufen nur an, wenn der "Outer-State" der User-Mode ist. Ist der "Outer-State" der Supervisor-Mode, setzt der gerufene Scheduler das entsprechende Scheduler-Call-Flag, und setzt den Prozeß erster Art, auf den der System-Stack-Pointer zeigt, fort. Dies passiert wenn:
    • Sich eine IRSR durch Scheduleransprung beendet, diese IRSR jedoch einen niederpriore IRSR unterbrochen hatte.
    • Sich eine IRSR durch Scheduleransprung beendet, diese IRSR jedoch einen Trap unterbrochen hatte.
  4. Nach dem Anlaufen löschen die Scheduler bei gesetzter Interruptsperre des Prozessors ihr Scheduler-Call-Flag. Die Scheduler beenden sich durch Aussprung in den Dispatcher.
  5. Die Scheduler laufen zwar im Supervisor-Mode, die Interruptsperre des Prozessors ist allerdings fast nie gesetzt. Während einer der Scheduler läuft, kann er erneut für den Aufruf vorgemerkt werden bzw. sogar angesprungen werden.
  6. Die für die zeitlichen und zyklischen Einplanungen vorgesehenen Traps ändern den Zeitpunkt, an dem die Timer-IRSR in den Clock-Scheduler springt, wenn die neue Einplanung früher eintritt als die bisher früheste zeitliche Einplanung.
  7. Der Clock-Scheduler wird nur aktiv, wenn die Timer-IRSR festgestellt hat, dass die vom Clock-Scheduler bzw. von den entsprechenden Traps vorgegebene Zeit erreicht ist.