【发布时间】:2017-07-09 06:09:27
【问题描述】:
优先级反转的概念是TSL不能无死锁的情况,那么如何说TSL无死锁?
【问题讨论】:
-
请提供一些背景信息并详细说明。
标签: operating-system synchronization
优先级反转的概念是TSL不能无死锁的情况,那么如何说TSL无死锁?
【问题讨论】:
标签: operating-system synchronization
我们先来看看死锁的定义。
定义 :- 如果一组进程等待由同一组中的其他进程引起的事件发生,则称它们处于死锁。这里集合中的进程处于等待/阻塞状态。
现在让我们了解优先级反转。让 process A 是在临界区运行的低优先级进程。 进程 B 是更高优先级的进程。
当 进程 B 进入 ready 状态时,它被调度(进入 running 状态)并且进程 A 被调度抢占具有低优先级。这里 进程 A 进入 waiting/blocked 状态,但它已经锁定了临界区,并且 进程 B 处于 running 然后进入忙碌等待状态,因为关键部分已被 process A 锁定!!。这会导致无限等待。这种情况基本上称为 SpinLock,因为 process B 处于 running 状态,而 process A 处于 等待/阻塞状态,但根据死锁的定义,所有进程都应该处于等待/阻塞状态。
这就是为什么说 TSL 没有 Deadlock 但它没有摆脱 SpinLock。
我希望这会有所帮助:)
【讨论】: