优先级反转

2024年8月28日 | 1分钟阅读

在 TSL 机制中,可能会出现优先级反转问题。假设有两个协作进程 P1 和 P2。

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

现在,P2 进入就绪队列。P2 的优先级高于 P1,因此根据优先级调度,P2 被调度,P1 被抢占。P2 也是一个协作进程,需要在临界区内执行。

尽管 P1 被抢占了,但锁定变量的值仍将显示为 1,因为 P1 未完成,仍在完成其临界区。

P1 需要完成临界区,但根据调度算法,CPU 掌握在 P2 手中。P2 想要在临界区执行,但根据同步机制,临界区在 P1 手中。

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

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