【发布时间】:2011-02-23 14:28:06
【问题描述】:
N 个进程共享 M 个资源单元,每次只能保留和释放一个。每个进程的最大需求不超过M,所有最大需求之和小于M+N。系统会不会出现死锁?
【问题讨论】:
-
听起来像是功课。通常的答案适用:42
-
得到这个:在 SO 中,一个人可以帮助你处理你的家庭作业。但是要求实际为您做这件事是不礼貌的
标签: deadlock bankers-algorithm
N 个进程共享 M 个资源单元,每次只能保留和释放一个。每个进程的最大需求不超过M,所有最大需求之和小于M+N。系统会不会出现死锁?
【问题讨论】:
标签: deadlock bankers-algorithm
希望你能得到答案。为其他访客回答此问题。
答案是系统不会出现死锁。
证明如下图所示。
图片取自第 31 页的http://alumni.cs.ucr.edu/~choua/school/cs153/Solution%20Manual.pdf
【讨论】:
你描述的系统看起来像semaphores
关于你的最后一个问题:是的。你“可以”总是陷入僵局;如果你不明白怎么做,请询问年轻/可耻/有动力/离经叛道的开发人员。
制作好作品的好方法;是有奇怪的锁定/释放资源规则。例如,如果一个进程需要 M 个资源来执行一项任务,他可以立即锁定其中的一半,然后等待另一半可用后再做任何事情。
我假设他永远不会放弃,直到他拥有 M 个宝贵的资源并在任务完成后将它们全部释放。
单个进程不会引起太多问题,但有几个会导致问题,因为它们将锁定超过 M 个总资源,并且需要更多资源才能摆脱这种冻结状态。
【讨论】: