以下のシナリオでは、Sem_Take() および Sem_Give() がロックおよび解放メソッドであると仮定して、ロックが解放されたときにタスク t1 の優先度がどのように変化するかを示します。
優先度上限プロトコルを使用すると、リソースがロックされるとすぐにタスクの優先度が上がることは理解していますが、ロックが解放されるとどうなりますか。
void t1()//Initial priority 2
{
int a;
Sem_take(S1); //priority ceiling for S1 is 4
.
.
Sem_take(S2);//priority ceiling for S2 is 6
.
.
Sem_Give(S1);
.//What is the priority at this line?
.
Sem_Give(s2);
.//What is the priority at this line?
.
}
また、上記のシナリオでは、セマフォのロックと解放が一致していません。これは誤りですが、プログラムが誤ってそれを行う可能性があります。この場合、PCP はどのように機能しますか。