gpt4 book ai didi

real-time - 优先级上限协议(protocol)如何工作

转载 作者:行者123 更新时间:2023-12-03 06:50:03 25 4
gpt4 key购买 nike

在下面的场景中,假设 Sem_Take() 和 Sem_Give() 是锁定和释放方法,任务 t1 的优先级将如何在释放锁定时发生变化。

我知道,一旦资源被锁定,使用优先级上限协议(protocol)就会提高任务的优先级,但是释放锁时会发生什么。

    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 将如何工作。

最佳答案

创建优先级上限是为了避免优先级反转。一个良好实现的算法将始终为每个进程提供与该进程持有的每个资源(在本例中为信号量)相关联的最高优先级。因此,特别是关于您的代码示例:在获取 S1 后,进程优先级将提升至 4,然后在获取 S2 后,进程优先级将再次提升至 6。释放 S1 后,优先级仍为 6(S2 仍被保留)。释放 S2 后,它应该恢复到优先级 == 2。

关于real-time - 优先级上限协议(protocol)如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com