 |
Real-Time Scheduling-Algorithmen →
Ressourcenzugriffsprotokoll mit Prioritätsvererbung
|
Eine Möglichkeit, die Prioritätsumkehrung zu vermeiden, besteht in der Verwendung des
Prioritätsvererbungs-Protokolls. Dieses funktioniert folgendermassen:
-
Tasks werden gemäß ihrer Prioritäten eingeplant. Tasks mit der gleichen Priorität
werden in der Reihenfolge eingeplant, in der sie ausführbereit werden.
-
Wenn eine Task T1 eine P(S)-Operation ausführt und die Ressource ist bereits exklusiv einer anderen
Task T2 zugeordnet, so wird T1 blockiert. Wenn die Priorität von T2 niedriger ist als die von T1,
erbt T2 die Priorität von T1. Daher führt T2 die Ausführung fort. Im Allgemeinen erbt
eine Task die höchste Priorität der Tasks, die von ihr blockiert werden.
-
Wenn eine Task T2 eine V(S)-Operation ausführt, wird ihre Priorität herabgesetzt auf die höchste Priorität
der Tasks, die sie blockiert. Wenn keine weitere Task von T2 blockiert wird, so wird ihre Priorität
auf den ursprünglichen Wert zurückgesetzt. Außerdem wird diejenige Task mit der
höchsten Priorität fortgesetzt, die wegen der Ressource S blockiert war.
-
Prioritätsvererbung ist transitiv: wenn T0 von T1 blockiert wird, und T1 wird von T2 blockiert, so
erbt T2 die Priorität von T0.
Einführung > Real-Time Scheduling-Algorithmen
> Ressourcenzugriffsprotokoll mit Prioritätsvererbung<