Weiter: D.4 Priority Ceiling
Hinauf: D Echtzeitprogrammierung
Zurück: Das Task-Dispatching-Modell
Mit dem Pragma
pragma Task_Dispatching_Policy(Name);
wird die Dispatching-Politik festgelegt.
Dabei darf <Name> entweder FIFO_Within_Priorities oder
ein implementationsabhängiger Name sein.
Wenn FIFO_Within_Priorities angegeben wird, so sollte auch
die Ceiling_Locking-Politik (vgl. Abschnitt D.4)
gewählt werden.
Die FIFO_Within_Priorities-Politik funktioniert folgendermaßen:
-
Wenn ein blockierter Task ready wird, wird er am Ende
der Ready-Warteschlange seiner Priorität eingereiht.
-
Wenn sich die Priorität eines ready Tasks, der nicht läuft,
ändert, so wird er aus seiner derzeitigen Ready-Warteschlange entfernt
und am Ende der seiner neuen Priorität entsprechende Ready-Warteschlange
eingereiht.
Sollte sich die Priorität aufgrund der Aufhebung einer geerbten Priorität
vermindern, wird der Task jedoch am Anfang der
seiner neuen Priorität entsprechende Ready-Warteschlange eingereiht.
-
Wenn sich die Priorität eines laufenden Tasks ändert, wird er am Ende
der Ready-Warteschlange seiner neuen Priorität eingereiht.
-
Wenn ein Task eine Delay-Anweisung ausführt, die ihn nicht blockiert, wird er am Ende
der Ready-Warteschlange seiner Priorität eingereiht.
Alle oben angeführten Zeitpunkte sind Dispatching-Zeitpunkte.
Wenn ein Task preempted wird, wird er am Anfang der Ready-Warteschlange
seiner Priorität eingereiht.
Johann Blieberger
Wed Feb 11 09:58:52 MET 1998