银行家算法

一、数据结构

  • 可利用资源向量Availiable
  • 最大需求矩阵Max
  • 分配矩阵Allocation
  • 需求矩阵Need

注:Need [i,j] = Max [i,j] - Allocation [i,j]

二、算法介绍

1. 银行家算法

(1)如果Request(i) [j] <= Need [i,j],下一步

(2)如果Rquest(i) [i,j] <= Available [j],下一步

(3)尝试分配,修改数据结构

Available [j] = Available [j] - Request(i)[j]

Allocation [i,j] = Allocation [i,j] + Request(i)[j]

Need [i,j] = Need [i,j] - Request(i)[j]

(4)安全性算法

2. 安全性算法

(1)设置变量工作变量Work = Available,Finish:false

(2)寻找满足下列规则的进程

Finish [i] = false

Need [i,j] <= Work [j]

找到进行步骤三,否则步骤四

(3)进程获得资源,可顺利执行,执行下列步骤

Work [i,j] = Work [i,j] + Allocation [i,j]

Finish [i] = true

(4)如果所有进程Finish [i] = true,安全,否则不安全

三、例子

五个进程{P0,P1,P2,P3,P4},三类资源{A,B,C},资源数量10,5,7,T0时刻资源分配情况如图所示

 

 

Max

Allocation

Need

Available

A

B

C

A

B

C

A

B

C

A

B

C

P0

7

5

3

0

1

0

7

4

3

3(2)

2(3)

3(0)

P1

3

2

2

2(3)

0(0)

0(2)

1(0)

2(2)

2(0)

 

 

 

P2

9

0

2

3

0

2

6

0

0

 

 

 

P3

2

2

2

2

1

1

0

1

1

 

 

 

P4

4

3

3

0

0

2

4

3

1

 

 

 

1. 安全监测

 

 

Max

Allocation

Need

Available

Finish

A

B

C

A

B

C

A

B

C

A

B

C

P1

3

3

2

1

2

2

2

0

0

5

3

2

true

P3

5

3

2

0

1

1

2

1

1

7

4

3

true

P4

7

4

3

4

3

1

0

0

2

7

4

5

true

P2

7

4

5

6

0

0

3

0

2

10

4

7

true

P0

10

4

7

7

4

3

0

1

0

10

5

7

true

由上图可知,存在{P1,P3,P4,P2,P0}安全

2. Request(1) (1,0,2),银行家算法

 

 

Work

Need

Allocation

Work+Allocation

Finish

A

B

C

A

B

C

A

B

C

A

B

C

P1

2

3

0

0

2

0

3

0

2

5

3

2

true

P3

5

3

2

0

1

1

2

1

1

7

4

3

true

P4

7

4

3

4

3

1

0

0

2

7

4

5

true

P0

7

4

5

7

4

3

0

1

0

7

5

5

true

P2

7

5

5

6

0

0

3

0

2

10

5

7

true

3. P4请求资源,Request [4] = {3,3,0}

Request [4] <= Need [4]

Request [4] > Available

P4 等待

4. P0请求资源,Request [0] = {2,3,0}

Request [0] <= Need [0]

Request [0] <= Available

假设可为P0分配资源,修改数据

 

 

Allocation

Need

Available

 

A

B

C

A

B

C

A

B

C

P0

0

3

0

7

2

3

2

1

0

P1

3

0

2

0

2

0

 

 

 

P2

3

0

2

6

0

0

 

 

 

P3

2

1

1

0

1

1

 

 

 

P4

0

0

2

4

3

1

 

 

 

5. 进行安全检查,Available(2,1,0)不满足,系统不分配

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值