[操作系统] 进程管理(2)

银行家算法-避免死锁的算法之一

设系统中有三种类型的资源(A,B,C)和五个进程(P1,P2,P3,P4,P5),A资源的数量是17,B资源的数量是6,C资源的数量为19。在T0时刻系统的状态如下表:

  最大资源需求量 已经分配资源量
  A,B,C A,B,C
P1 4,0,11 4,0,5
P2 5,3,6 4,0,2
P3 4,2,5 2,1,4
P4 5,5,9 2,1,2
P5 4,2,4 3,1,3

系统采用银行家算法实施死锁避免策略,下列哪一个序列是安全序列?

A.P3,P1,P4,P2,P5

B.P1,P3,P5,P2,P4

C.P4,P2,P3,P5,P1

D.P2,P3,P1,P4,P5

 

A总数是17个,已经分配出去了4+4+2+2+3=15个,还剩2个,同理B还剩下6-(1+1+1)=3个,C还剩下19-(5+2+4+2+3)=3个,所以在T0时刻,A,B,C三个资源能够自由分配的只有(2,3,3)个了,再看五个进程还差多少,P1还差0个A,0个B,6个C,其他进程还需要分配的资源看下表

  P1 P2 P3 P4 P5
A,B,C 0,0,6 1,3,4 2,1,1 3,4,7 1,1,1

再看,我只有(2,3,3)个资源,可以分配给P3或者P6,都分配给他们之后,他们执行完之后还会主动释放资源。看选项A,先分配给P3,P3得到这些资源后能完全执行下去,执行完毕后释放自己的资源,P3释放后总共资源个数为(4,4,7)这些资源分配给哪个进程都能执行完毕,所以A是安全序列,不会出现死锁。其他选项在第一步就不行,因为资源给他们,那些进程也执行不下去。

 

资源分配图怎么看

先看资源还剩多少个,R1、R2、R3是资源,分别有2,3,2个。从R1开始的箭头有俩,分别指向P1和P3,说明给了P1和P3一人一个(所以还剩下0个);同理,R2给了P1一个,P3一个,P2一个(还剩下0个),R3给了P2一个(还剩下1个)。

再看进程还需要多少资源,有个从P1到R2的线,说明P1还需要一个R2,同理,P2还需要一个R1,P3还需要一个R3.

因为只有R3还剩一个,所以只能分配给P3,所以P3是非堵塞结点。

化简的问题,就把非堵塞结点周围所有的边(因为非阻塞结点执行完之后就释放资源了,所以线没用了),看看剩下资源按照上述步骤是否能够分配,若最后只能下孤立的点,说明这个图可以化简的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章