Priority Ceiling Protocol
Last updated
Last updated
Extension of PIP with one additional rule about access to free semaphores, inserted to guarantee that all required semaphores are free.
For each semaphore it is defined a priority ceiling , which equals the priority of the maximum priority task that uses it.
A task can only take a semaphore if this one is free and if its priority is greater than the ceilings of all semaphores currently taken.
The PCP protocol only allows the access to the first semaphore when all other semaphores that a task needs are free.
o bound the blocking time (B) note that a task can be blocked only once by lower priority tasks . Only lower priority tasks that use semaphores which have a ceiling at least equal to the higher priority task can cause blocking.
Note also that each task can only be blocked once.
Worst-case blocking times.
Schedulability analysis with PCP.
Same equations as for PIP, only Bi computes differently.
Smaller blocking than PIP, free of chain blocking and deadlocks.
Much harder to implement than PiP. On the TCB it requires one additional field for the inherited priority and another one for the semaphore where the task is blocked. To facilitate the transitivity of the inheritance it also requires a structure to the semaphores, their respective ceilings and the identification of the tasks that are using them.
Moreover, it is not transparent to the programmer as the semaphore ceilings are not local to the tasks.