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

Operating system 测试和设置锁(TSL)是否无死锁?,operating-system,synchronization,Operating System,Synchronization,优先级反转的概念是当TSL不能无死锁时,那么如何才能说TSL是无死锁的呢?让我们先看看死锁的定义 定义:-如果一组进程等待同一组中其他进程引起的事件发生,则称其处于死锁状态。此处,集合中的进程处于等待/阻止状态 现在让我们了解优先级反转。Lets进程A是在关键部分运行的优先级较低的进程。流程B是优先级更高的流程。 当进程B进入就绪状态时,它将被调度(进入运行状态),进程A将被schedular抢占,因为它的优先级较低。此处,进程A进入等待/阻止状态,但它已锁定关键部分,进程B处于运行状态,

优先级反转的概念是当TSL不能无死锁时,那么如何才能说TSL是无死锁的呢?

让我们先看看死锁的定义

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

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

当进程B进入就绪状态时,它将被调度(进入运行状态),进程A将被schedular抢占,因为它的优先级较低。此处,进程A进入等待/阻止状态,但它已锁定关键部分,进程B处于运行状态,然后进入忙等待状态,因为关键部分已被进程A锁定!!。这会导致无限的等待。这种情况基本上称为自旋锁,因为进程B处于运行状态,而进程A处于等待/阻止状态,但根据死锁的定义,所有进程都应该处于等待/阻止状态。

这就是为什么TSL被认为是无死锁的,但它不是无自旋锁的。


我希望这会有所帮助:)

让我们先看看死锁的定义

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

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

当进程B进入就绪状态时,它将被调度(进入运行状态),进程A将被schedular抢占,因为它的优先级较低。此处,进程A进入等待/阻止状态,但它已锁定关键部分,进程B处于运行状态,然后进入忙等待状态,因为关键部分已被进程A锁定!!。这会导致无限的等待。这种情况基本上称为自旋锁,因为进程B处于运行状态,而进程A处于等待/阻止状态,但根据死锁的定义,所有进程都应该处于等待/阻止状态。

这就是为什么TSL被认为是无死锁的,但它不是无自旋锁的。


我希望这会有帮助:)

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