如何判断这个系统是否会发生死锁?

问题描述:

N个进程共享可以保留的M个资源单元,并且一次只能释放一个。每个过程的最大需求不超过M,所有最大需求的总和小于M + N。系统中会发生死锁吗?如何判断这个系统是否会发生死锁?

+2

听起来像家庭作业。通常的答案适用于:42 – 2011-02-23 14:29:35

+1

得到这个:在SO中,人们可以帮助你处理你的功课。但要求真正为你做到这一点是无礼的 – 2011-02-23 14:31:59

你所描述的一样semaphores

关于你的最后一个问题看起来系统:YES。你“可能”总是会陷入僵局;如果你看不到如何,问一个年轻/可耻的/有动力/偏差的开发者。

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

我认为,只有在完成任务后,他才会放弃,直到拥有了宝贵的M资源并释放它们。

单个进程不会引起太多问题,但会有多个问题,因为它们将锁定超过M个总资源,并且需要更多的资源才能解决此冻结状态。

我希望你能得到答案。为其他访问者回答这个问题。

答案是死锁在系统中不会发生

该证明在下图中给出。

该图像来自于http://alumni.cs.ucr.edu/~choua/school/cs153/Solution%20Manual.pdf第31页