问答题
一个系统中存在某类资源m个,被n(n≤m)个进程共享,即每个进程至少需要一个资源。资源的分配和释放必须一个一个地进行,请证明在以下两个条件下系统是否会发生死锁:
问答题
每个进程需要资源的最大数在1~m之间;
【正确答案】
【答案解析】这里要进行一下特别的说明。题目中没有强调m与n的大小关系及取值范围,而实际上这点很重要,影响到该证明的正确与否。举例如下:假设m=6,根据题意,每个进程的最大需求资源数在1~6之间则不会死锁。但请考虑,如果有3个进程,且每个进程最大需要3个资源,则当每个进程占用2个资源的时候,死锁就已经发生,所以该问无法证明。
问答题
所有进程需要的资源总数小于m+n。
【正确答案】
【答案解析】用反证法。假设发生死锁,此时系统的资源已全部分配,即m个资源被n个进程占用,但所有进程仍处于等待状态,说明每个进程至少还需1个资源,n个进程还需要n个资源,即n个进程所需的资源总数至少是m+n个,这与已知条件相矛盾,假设不成立。