【问题标题】:Deadlock prevention :Mutual Exclusion死锁预防:互斥
【发布时间】:2017-04-06 16:53:06
【问题描述】:

死锁预防说:

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

条件

  1. 互斥

  2. 等待

  3. 不抢先

  4. 循环等待

现在

让我们否认第一个

  1. 互斥

有很多例子证明互斥可能会导致像here这样的死锁。

现在让我们防止这种互斥。但问题是

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

问题/疑问

我们无法消除互斥,那么**为什么它是条件之一**??

【问题讨论】:

    标签: operating-system synchronization deadlock


    【解决方案1】:

    我们无法消除互斥,那么为什么它是其中之一 条件??

    在我们处理不可共享资源的情况下,我们无法消除互斥。因此,它只是强调,对于特殊情况,当我们处理像 tap driveprinter 这样本质上不可共享的资源时,我们必须考虑消除其他三个选项之一防止死锁。

    现在关键部分并不总是意味着我们在谈论物理资源。这也可能意味着我们正在谈论piece of code。而variables 是本质上是可共享资源的资源。所以在这种情况下我们可以消除互斥以防止死锁。但请记住,很少这样做,因为如果我们在初始设计中确保了互斥,那么它就可以确保正确实施。因此,只是为了让您意识到可以通过防止互斥来防止死锁,但这并不意味着它实际上很普遍。

    【讨论】:

    • @Summet:还有一个问题,我们必须冒不一致数据的风险,以确保防止死锁。我的意思是,如果我们消除非固有可共享资源的互斥 那么情况 2 进程可能处于临界区,导致数据不正确。!
    猜你喜欢
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多