【问题标题】:How do I determine whether a deadlock will occur in this system?如何判断这个系统是否会发生死锁?
【发布时间】:2011-02-23 14:28:06
【问题描述】:

N 个进程共享 M 个资源单元,每次只能保留和释放一个。每个进程的最大需求不超过M,所有最大需求之和小于M+N。系统会不会出现死锁?

【问题讨论】:

  • 听起来像是功课。通常的答案适用:42
  • 得到这个:在 SO 中,一个人可以帮助你处理你的家庭作业。但是要求实际为您做这件事是不礼貌的

标签: deadlock bankers-algorithm


【解决方案1】:

希望你能得到答案。为其他访客回答此问题。

答案是系统不会出现死锁

证明如下图所示。

图片取自第 31 页的http://alumni.cs.ucr.edu/~choua/school/cs153/Solution%20Manual.pdf

【讨论】:

    【解决方案2】:

    你描述的系统看起来像semaphores

    关于你的最后一个问题:是的。你“可以”总是陷入僵局;如果你不明白怎么做,请询问年轻/可耻/有动力/离经叛道的开发人员。

    制作好作品的好方法;是有奇怪的锁定/释放资源规则。例如,如果一个进程需要 M 个资源来执行一项任务,他可以立即锁定其中的一半,然后等待另一半可用后再做任何事情。

    我假设他永远不会放弃,直到他拥有 M 个宝贵的资源并在任务完成后将它们全部释放。

    单个进程不会引起太多问题,但有几个会导致问题,因为它们将锁定超过 M 个总资源,并且需要更多资源才能摆脱这种冻结状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      相关资源
      最近更新 更多