Priority Inheritance Protokoll

Eine Strategie, um Priority Inversion zu verhindern, ist durch das Priority Inheritance (PI) Protokoll von Sha, Rajkumar und Lehoczky (1990)[102] gegeben. Die Grundidee dieses Protokolls läßt sich wie folgt beschreiben:

PREEMPTION:
Wenn ein Task $\tau_{i}$ die höchste Priorität hat und er ist nicht blockiert, dann gelangt er zur Ausführung. Ein eventuell anderer aktuell laufender Task$\tau'$ wird ausgesetzt (preempted).
LOCKING/BLOCKING:
Wenn ein Task $\tau_{i}$ sich in der Ausführung befindet und er kommt zu einer kritischen Sektion $Z_{i.j}$, dann wird er den nächsten Semaphor $S$ anfordern. Ist dieser noch frei, dann wird dieser Semaphor gelocked; andernfalls wird Task $\tau_{i}$ blockiert.
UNLOCKING/ PRIORITY NORMALIZATION:
Wenn ein Task $\tau_{i}$ eine kritische Sektion $\beta_{i}^{*}$ verläßt, dann wird der zuvor gelockte Semaphor $S_{R}$ unlocked. Zugleich werden alle aktuellen Prioritäten, die durch wartende Tasks mit höherer Priorität erzeugt worden sind, wieder normalisiert.
PRIORITY INHERITANCE:
Wenn ein Task $\tau_{i}$ sich in der Ausführung einer kritischen Sektion $Z_{i.j}$ befindet und er wird von einem anderen Task $\tau$ mit einer höheren Priorität angefordert, dann übernimmt der Task $\tau_{i}$ die höhere Priorität von Task $\tau$ als seine neue aktuelle Priorität $\pi^{*}$. Dadurch kann er seine Abarbeitung fortsetzen und Task $\tau$ ist blockiert.



Subsections
Gerd Doeben-Henisch 2013-01-16