图1
图3
图2
由图2可知p1A项目总共要贷3万块钱,B项目要贷2万块钱,C项目要贷2万块钱,项目才能够启动。银行可分配给贷款方的钱只有(9,3,6)。银行已经分配给贷款方每个项目的钱,分配完之后只剩(0,1,1)。这个剩余的钱可以分配给p2,因为p2还需要(0,0,1),把这个Available(0,1,1)也就是银行还剩的钱分给p2,分完之后银行还剩:
( 0 1 1)-(0 0 1)=(0,1,0)
此时p2可以启动项目,项目完成后,p2的资源释放掉,还给银行,此时银行还剩:
(0,1,0)+(6,1,3)=(6,2,3)
p2项目完成了可以拜拜了,此时还有p1,p3,p4在等待
p1需要(2,2,2),p3(1,0,3),p4(4,2,0)而银行还剩下(6,2,3)贷给谁呢?p1,p3,p4都可以贷。那按顺序贷吧,贷给p1,贷给p1后银行还剩
(6,2,3)-(2,2,2)=(4,0,1)
p1可以完成项目了,项目完成后,把钱还回去可以还(3,2,2)
还给银行后银行剩余的钱为:
(4,0,1)+(3,2,2)=(7,2,3)
p1完成后剩下p3和p4,银行剩余(7,2,3)贷给p3
(7,2,3)-(1,0,3)=(6,2,0)
p3项目完成,返回给银行的钱
(6,2,0)+(3,1,4)=(9,3,4)
最后贷给p4
(9,3,4)-(4,2,0)+(4,2,2)=(9,3,6)刚好等于银行最开始有的钱
贷款顺序为p2,p1,p3,p4,这个顺序就是安全序列
发出向量Request1(0,0,1)是否分配问题
此时应该修改表中的Allocation,Need,以及Available
Allocation=Allocation+(0,0,1)
Need=Max-Allocation
Available=Available-(0,0,1)
然后求安全序列,顺利求出即可同意分配