각 lock에 대한 Priority Ceiling은,
해당 lock을 쓸 수 있는 Highest Priority Task를 의미합니다.
offline scheduling이죠. 누가 어떤 lock 쓰는지 사전에 다 알아야 하니까요
이걸 online으로 구현할 때에는,
Task의 priority가 현재 lock을 들고 있는 모든 lock의 priority ceiling보다 크다면 lock을 잡을 수 있습니다.
말이 좀 어려운데요.
예시를 보면 이해하기 좋습니다.

다음과 같은 상황에서,
현재 이용되고 있는 resource는 이고,
의 ceiling은 죠?
가 을 쓰고 있으니까요.
그러면, 는 생각합니다.
내가 이 S1의 ceiling보다 priority가 '높지는 않으니까'
내가 잡을 수 없구나

그렇게 blocking이 일어나게 되고,
여기까지는 PIP와 같습니다.

이런 schedule에서는 PIP와 확고하게 다릅니다.
그러니까 포인트는, 감히 미개한 따위가 S1을 잡으려 해도,
현재 S1, S2의 priority ceiling이 이기 때문에 lock을 못 잡습니다!

이게 PIP구요.

PCP에서는 deadlock도 없습니다.
처음에야 lock잡은 애가 없으니 S2가 자유롭게 잡았고,
두번째는 T1이 S1 lock 잡고싶어도 S1 lock에 대한 priority ceiling이 T1이니까 못잡죠

다음 공식을 씁니다.
해당 task보다 priority가 낮은 task들에 대하여,
lock S를 그 낮은 task가 쓸 때의 execution time중 max를 택합니다.

T1 입장에선,
T2, T3에 의해선 block될 요소가 없죠. 쟤넨 내가 필요한 lock 없으니까요.
T4, T5에 의해서 block될 수 있는데, 해봤자 3만큼 block되고 말거구요
T2는 본인보다 ceiling이 높은 T4에 의해서 3,
...



