Priority Inheritance Protocol
Last updated
Last updated
The blocking task (lower priority) temporarily inherits the priority of the blocked task (the one with higher priority).
Limits the blocking duration, preventing the execution of intermediate priority tasks while the blocking tasks owns the critical region. The priority of the blocking task returns to its nominal value when leaving the critical region.
To bound the blocking time (B) it is important to note that a task can be blocked by any lower priority task that:
Shares a resource with it - Direct blocking , or
Can block a task with higher priority - Push-through or Indirect blocking.
Note also that in the absence of chained accesses:
Each task can block any other task just once.
Each task can block only once in each resource.
Worst-case blocking times.
Schedulability analysis with PiP.
Relatively easy to implement.
Only one additional field on the TCB, the inherited priority.
Transparent to the programmer.
Each task only uses local information.
Suffers from chain blocking and does not prevent deadlocks.