公式
死锁资源计算:系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n*(R-1)。其不发生死锁的最小资源数为n*(R-1)+1。
例题
例如系统有3个进程A,B,C,三个进程都需要5个资源,则系统如果有13个资源即不会发生死锁。
这是因为假设3个进程都分配到了4个资源(共12个),那么最后一个资源无论分配给哪个进程都能保证该进程执行完成并释放资源,从而满足其他两个进程的需要。当然,如果是其他的分配方式,则总能有一个进程先获取所有需要的资源而先得到执行,从而不会发生死锁。所以这里有个公式,假设系统有k个进程,每个进程需要n个资源,那么系统至少有k*(n-1)+1个资源,能保证不发生死锁。
- 假设现在有P个进程,每个进程最多需要m个资源,并且有r个资源可用。什么样的条件可以保证死锁不会发生?
解:
如果一个进程有m个资源它就能够结束,不会使自己陷入死锁。因此最差的情况就是每个进程都只有m-1个资源并且需要另外一个资源。如果有一个资源可用,那么其中某个进程就能够结束并释放它的所有资源,使其他进程也能够结束。所以避免死锁发生的条件就是:
r>=p(m-1)+1
例:某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是多少?
根据上面的式子,最少资源数>=并发进程数*(单个进程最多需要资源数-1)+1,所以该题目答案是
3∗(4−1)+1=10