【问题标题】:Test and set lock(TSL) are deadlock free?测试和设置锁(TSL)没有死锁?
【发布时间】:2017-07-09 06:09:27
【问题描述】:

优先级反转的概念是TSL不能无死锁的情况,那么如何说TSL无死锁?

【问题讨论】:

  • 请提供一些背景信息并详细说明。

标签: operating-system synchronization


【解决方案1】:

我们先来看看死锁的定义。

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

现在让我们了解优先级反转。让 process A 是在临界区运行的低优先级进程。 进程 B 是更高优先级的进程。

进程 B 进入 ready 状态时,它被调度(进入 running 状态)并且进程 A 被调度抢占具有低优先级。这里 进程 A 进入 waiting/blocked 状态,但它已经锁定了临界区,并且 进程 B 处于 running 然后进入忙碌等待状态,因为关键部分已被 process A 锁定!!。这会导致无限等待。这种情况基本上称为 SpinLock,因为 process B 处于 running 状态,而 process A 处于 等待/阻塞状态,但根据死锁的定义,所有进程都应该处于等待/阻塞状态。

这就是为什么说 TSL 没有 Deadlock 但它没有摆脱 SpinLock

我希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2010-10-07
    相关资源
    最近更新 更多