银行家算法(解题详细步骤)

某系统有A、B、C、D四类资源可供五个进程P1、P2、P3、P4、P5共享。系统对这四类资源的拥有量为:A类3个、B类14个、C类12个、D类12个进程对资源的需求和分配情况如下:

(1) 现在系统的各类资源还剩余多少?

根据下表:MAX表示最大需求数,ALL表示已分配的资源,NEED表示还需要的资源(最大需求量-已占有资源)

  MAX ALL NEED
  A B C D A B C D A B C D
p1 0 0 1 2 0 0 1 2 0 0 0 0
p2 1 7 5 0 1 0 0 0 0 7 5 0
p3 2 3 5 6 1 3 5 4 1 0 0 2
p4 0 6 5 2 0 6 3 2 0 0 2 0
p5 0 6 5 6 0 0 1 4 0 6 4 2

系统各类资源的剩余量:系统对各类资源的拥有量 - 各类资源已分配的量

得到Avail=A:1       B:5        C:2        D:0

① work表示剩余资源,从上表中NEED中各类资源选小于1,5,2,0的数,P4,P1都满足,下面选择P1

② 运行完P1后,work+all都释放了,则作为下一个资源的剩余资源,再在各类资源的NEED中找小于(1,5,3,2)的资源,以此类推:

  work all need work+all T&F
  A B C D A B C D A B C D A B C D  
P1 1 5 2 0 0 0 1 2 0 0 0 0 1 5 3 2 T
P4 1 5 3 2 0 6 3 2 0 0 2 0 1 11 6 4 T
P2 1 11 6 4 1 0 0 0 0 7 5 0 2 11 6 4 T
P3 2 11 6 4 1 3 5 4 1 0 0 2 3 14 11 8 T
P5 3 14 11 8 0 0 1 4 0 6 4 2 3 14 12 12 T

(2) 现在系统是否处于安全状态?为什么? 

因为可以找到如P1->P4->P2->P3->P5这样的安全序列,所以该系统处于安全状态。

(3) 如果现在进程P2提出需要A类资源0个、B类资源4个、C类资源2个和D类资源0个,系统能否去满足它的请求? 请说明原因。 

P2:request(A:0,B:4,C:2,D:0)

①以下条件都满足才能继续下一步:

request\leqslantNEED(0,7,5,0)

request\leqslantAvail(1,5,2,0)

Avail=Avail-request=(1, 5,2,0) - (0,4,2,0) =(1,1,0,0)

NEED=NEED-request=(0,7,5,0) - (0,4,2,0) =(0,3,3,0)

ALL=ALL+request=(1,0,0,0)+(0,4,2,0) = (1,4,2,0)

再将新的数据换到以上表格的P2中,继续以上步骤,如果能得出一个安全序列,则能满足请求,如果不能得到一个安全序列,则表示不能满足请求。

猜你喜欢

转载自blog.csdn.net/weixin_69884785/article/details/134778393