【操作系统】避免死锁(银行家算法)

1、考虑某一系统,他有4类资源R1,R2,R3,R4,有5个并发进程P0,P1,P2,P3,P4。各进程的最大资源需求、已分配的资源矩阵和系统当前资源剩余向量如下图所示。请按银行家算法回答下列问题:

⑴ 计算由各进程的剩余请求向量组成的矩阵。

⑵ 系统当前是处于安全状态吗?

⑶ 当进程P4申请的资源分别为(0,2,0,2)时,系统能立即满足吗?

  分配矩阵(Allocation) 最大需求量(Max) 剩余请求向量(Need)
 R1 R2 R3 R4  R1 R2 R3 R4  R1 R2 R3 R4
P0 0 0 1 2 0 0 1 2 0 0 0 0
P1 1 0 0 0 1 7 5 0 0 7 5 0
P2 1 3 5 4 2 3 5 6 1 0 0 2
P3 0 6 3 2 0 6 5 2 0 0 2 0
P4 0 0 1 4 0 6 5 6 0 6 4 2

注:剩余请求向量 = Max - All0cation

 

(2)判断系统是否安全,只要检查系统剩余资源向量(可利用的资源)是否能在各进程的剩余请求向量中能找到一个安全序列,分析如下:

当前剩余资源向量(可利用资源):

R1 R2 R3 R4
1 5 0 2
进程资源情况 Work(剩余资源都给某个进程用) 剩余请求向量(Need) 分配矩阵(Allocation) Work+Allocation Finish
 R1 R2 R3 R4  R1 R2 R3 R4  R1 R2 R3 R4 R1 R2 R3 R4
P0 1 5 0 2 0 0 0 0 0 0 1 2 1 5 1 4 true
P2 1 5 1 4 1 0 0 2 1 3 5 4 2 8 6 8 true
P1 2 8 6 8 0 7 5 0 1 0 0 0 3 8 6 8 true
P3 3 8 6 8 0 0 2 0 0 6 3 2 3 14 9 10 true
P4 3 14 9 10 0 6 4 2 0 0 1 4 3 14 10 14 true

在T0时刻存在着一个安全序列{P0,P2,P1,P3,P4},故系统是安全的。

(3)当P4申请资源Request4(0,2,0,2)时;

  1. Request4(0,2,0,2)<= Need(0,6,4,2)
  2. Request4(0,2,0,2)<= Available(1,5,0,2)
  3. 系统先假定可为P4分配资源,并修改向量值,如图所示
  4. 再利用安全性算法检查此时系统是否安全
  分配矩阵(Allocation) 最大需求量(Max) 剩余请求向量(Need)
 R1 R2 R3 R4  R1 R2 R3 R4  R1 R2 R3 R4
P0 0 0 1 2 0 0 1 2 0 0 0 0
P1 1 0 0 0 1 7 5 0 0 7 5 0
P2 1 3 5 4 2 3 5 6 1 0 0 2
P3 0 6 3 2 0 6 5 2 0 0 2 0
P4 0 2 1 6 0 6 5 6 0 4 4 0

当前剩余资源向量(可利用资源):

R1 R2 R3 R4
1 3 0 0
进程资源情况 Work(剩余资源都给某个进程用) 剩余请求向量(Need) 分配矩阵(Allocation) Work+Allocation Finish
 R1 R2 R3 R4  R1 R2 R3 R4  R1 R2 R3 R4 R1 R2 R3 R4
P0 1 3 0 0 0 0 0 0 0 0 1 2 1 3 1 2 true
P2 1 3 1 2 1 0 0 2 1 3 5 4 2 6 6 6 true
P3 2 6 6 6 0 0 2 0 0 6 3 2 2 12 9 8 true
P1 2 12 9 8 0 7 5 0 1 0 0 0 3 12 9 8 true
P4 3 12 9 8 0 4 4 0 0 2 1 6 3 14 10 14 true

由所进行的安全性算法检查得知,可以找到一个安全序列{P0,P2,P3,P1,P4},因此,系统是安全的,可以立即将P4所申请的资源分配给它。

你可能感兴趣的:(操作系统,操作系统,算法)