Real Time Systems (10)

햄스터·2024년 12월 18일

RealTimeSystem

목록 보기
11/11

PCP (Priority Ceiling Protocol)

각 lock에 대한 Priority Ceiling은,
해당 lock을 쓸 수 있는 Highest Priority Task를 의미합니다.

offline scheduling이죠. 누가 어떤 lock 쓰는지 사전에 다 알아야 하니까요

이걸 online으로 구현할 때에는,
Task의 priority가 현재 lock을 들고 있는 모든 lock의 priority ceiling보다 크다면 lock을 잡을 수 있습니다.

말이 좀 어려운데요.

예시를 보면 이해하기 좋습니다.

다음과 같은 상황에서,
현재 이용되고 있는 resource는 S1S1이고,
S1S1의 ceiling은 P2P2죠?
τ2,τ4\tau_2, \tau_4S1S1을 쓰고 있으니까요.

그러면, τ2\tau_2는 생각합니다.
내가 이 S1의 ceiling보다 priority가 '높지는 않으니까'

내가 잡을 수 없구나

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


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


이게 PIP구요.

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

PCP - Blocking Time

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

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

T2는 본인보다 ceiling이 높은 T4에 의해서 3,
...



profile
햄스터가 세상을 지배한다.

0개의 댓글