在下面的场景中,假设 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 将如何工作。