Operating system 预防僵局:相互排斥

Operating system 预防僵局:相互排斥,operating-system,synchronization,deadlock,Operating System,Synchronization,Deadlock,例如: 所有四个条件都是发生死锁所必需的,因此,可以通过拒绝任何一个条件来防止死锁 条件 互斥 按住并等待 无前提 循环等待 现在 让我们否认第一个 互斥 有很多例子证明互斥可能导致类似死锁的情况 现在让我们防止这种相互排斥,但问题是 互斥条件必须适用于不可共享的资源。也就是说,多个进程不能同时共享单个资源。这种情况很难消除,因为某些资源(如磁带机和打印机)本质上是不可共享的。请检查 问题/疑问 我们不能消除相互排斥**为什么这是一个条件** 我们不能消除相互排斥,那为什么它是一个 条件

例如:

所有四个条件都是发生死锁所必需的,因此,可以通过拒绝任何一个条件来防止死锁

条件
  • 互斥

  • 按住并等待

  • 无前提

  • 循环等待

  • 现在

    让我们否认第一个

  • 互斥
  • 有很多例子证明互斥可能导致类似死锁的情况

    现在让我们防止这种相互排斥,但问题是

    互斥条件必须适用于不可共享的资源。也就是说,多个进程不能同时共享单个资源。这种情况很难消除,因为某些资源(如磁带机和打印机)本质上是不可共享的。请检查

    问题/疑问 我们不能消除相互排斥**为什么这是一个条件**

    我们不能消除相互排斥,那为什么它是一个 条件

    在处理不可共享资源的情况下,我们无法消除相互排斥。因此,它只是强调,在特殊情况下,当我们处理
    点击驱动器
    打印机
    等资源时,它们本质上是不可共享的,那么我们必须考虑消除其他三个选项中的一个以防止死锁


    现在,关键部分并不总是意味着我们谈论的是物质资源。这也可能意味着我们谈论的是一段代码。和
    变量
    是固有的可共享资源。因此,在这种情况下,我们可以消除互斥以防止死锁。但请记住,这是很少做到的,因为如果我们在最初的设计中确保了互斥,那么它就是为了确保正确的实现。所以我想让你知道,僵局可以通过防止相互排斥来防止,但这并不意味着它实际上很普遍。

    @Summet:还有一个问题,我们必须承担数据不一致的风险,以确保防止死锁。我建议,如果我们消除非固有共享资源中的互斥,那么情况2流程可能会处于导致错误数据的关键部分。!