OS 基础教程

进程管理

同步

死锁

内存管理

文件管理

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/os-priority-inversion-in-tsl.html

优先级反转


在TSL机制中,可能存在优先级反转的问题。让我们说有两个合作进程:P1和P2。

P1的优先级为2,而P2的优先级为1,P1较早到达并由CPU调度。由于它是一个协作进程,并且希望在临界区执行,因此它将通过将锁变量设置为1来进入临界区。

现在,P2到达就绪队列。 P2的优先级高于P1,因此根据优先级调度,P2被调度并且P1被抢占。 P2也是一个合作进程,并希望在临界区内执行。

虽然,P1被抢占,但它的锁变量的值将显示为1,因为P1没有完成,它还没有完成其临界区。

P1需要完成临界区,但根据调度算法,CPU使用P2。 P2要在临界区执行,但根据同步机制,临界区是用P1。

这是一种锁,其中每个进程既不执行也不完成。这种类型的锁被称为自旋锁。

这与死锁不同,因为它们不处于阻塞状态。一个处于就绪状态,另一个处于运行状态,但两者都没有执行。