假设系统中有三类互斥资源R1、R2和R3,可用资源数分别是9、8和5,开始时可用资源数为2、1、0。在T0时刻系统中有P1、P2、P3、P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如表1所示。进程按照P1→P2→P4→P5→P3序列执行,系统状态安全吗?如果按P2→P4→P5→P1→P3的序列呢?
(1)首先执行P2,它还差1个R2资源,系统中还有1个未分配的R2,因此满足其要求,能够顺利结束进程,释放出2个R1、2个R2、1个R3。这时,未分配的资源就是:4个R1、2个R2、1个R3。
P2需要资源数=最大需求数-已分配资源数=(2,2,1)-(2,1,1)=(0,1,0)
P2剩余资源数=可用资源数-需要资源数=(2,1,0)-(0,1,0)=(2,0,0)
P2满足后正常运行,运行结束时释放所占用的资源,此时,系统剩余资源数为=(2,0,0)+(2,2,1)=(4,2,1)
(2)然后执行P4,它还差一个R3,而系统中刚好有一个未分配的R3,因此满足其要求,也能够顺利结束,并释放出其资源。此时未分配的资源数为(4,2,1)
P4需要资源数=最大需求数-已分配资源数=(1,2,1)-(1,2,0)=(0,0,1)
P4剩余资源数=可用资源数-需要资源数=(4,2,1)-(0,0,1)=(4,2,0)
P4满足后正常运行,运行结束时释放所占用的资源,此时,系统剩余资源数为=(4,2,0)+(1,2,1)=(5,4,1)
因此,这时系统就有5个R1、4个R2、1个R3。根据这样的方式推下去,会发现按这种序列可以顺利地完成所有的进程,而不会出现死锁现象。
来源:CSDN
作者:项目管理的一些事
链接:https://blog.csdn.net/weixin_37123068/article/details/103892358