测试和设置锁定(TSL)是否无死锁?

时间:2017-07-09 06:09:28

标签: operating-system synchronization

优先级倒置的概念是TSL不能无死锁的情况,那么人们怎么能说TSL没有死锁?

1 个答案:

答案 0 :(得分:1)

让我们先看看Deadlock的定义。

定义: - 如果一组进程等待由同一组中的其他进程引起的事件发生,则称其处于死锁中。此处集中的进程处于等待/阻止状态。

现在让我们了解优先级倒置。让进程A 是在关键部分运行的优先级较低的进程。和流程B 是更高优先级的流程。

进程B 进入就绪状态时,它将被调度(进入运行状态)并且进程A被调度程序抢占,因为它优先级低。这里流程A 进入等待/阻止状态,但它已经锁定了关键部分,流程B 处于正在运行然后进入Busy等待的状态,因为临界区已被进程A !!锁定。这导致无限的等待。这种情况基本上称为 SpinLock ,因为流程B 处于运行状态,而流程A 位于等待/阻止状态,但根据死锁的定义,所有进程都应处于等待/阻塞状态。

这就是为什么TSL被认为是死锁的原因,但它不是免费的 SpinLock

我希望这会有所帮助:)