假设有3个进程竞争同类资源,如果每个进程需要两个该类资源,则至少需要提供()个资源,才能保证不会发生死锁。
假设有3个进程竞争同类资源,如果每个进程需要两个该类资源,则至少需要提供()个资源,才能保证不会发生死锁。

A、3
B、4
C、5
D、6
【正确答案】:B
【题目解析】:首先可以使用逆向思维进行思考:三个进程,每个进程需要2个同类资源,那么总共需要多少个资源呢有以下几种情况。
(1)资源总数为1,则不管哪个进程占用该资源,都会导致无条件死锁。
(2)资源总数为2,可分为两种情况:一个资源占用2个该资源,知道它执行完毕后释放,由另一个进程同时占用2个资源,最后由第三个进程使用,这样不会导致死锁;另一种情况是两个资源不为某一进程独占,则也会导致死锁,我们称这种状态是不安全的。
(3)资源总数为3,与(2)中的情况一样,也是不安全的。
(4)资源总数为4,无论资源如何分配,都不会导致死锁。
用公式可以总结如下:
资源总数(安全的)=进程数×(每个进程所需资源数-1)+1
因此,正确答案应该是4个,答案为B。

Top