银行家算法资源分配问题(例子!!!)

Posted Jing Sir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了银行家算法资源分配问题(例子!!!)相关的知识,希望对你有一定的参考价值。

在银行家算法中,若出现表2-4所示的资源分配情况,试问:

  1. 该状态是否安全?
  2. 如果进程P2提出请求Request2(1,2,2,2)后,系统能否将资源分配给它。

 

表2-4  资源分配表

 

Allocation

Need

Available

A   B   C    D

A   B   C    D

A   B   C    D

P0

0   0    3    2

0   0    1    2

1    6   2     2

P1

1   0    0    0

1   7    5    0

P2

1   3    5    4

2   3    5    6

P3

0   3    3    2

0   6    5    2

P4

0   0    1    4

0   6    5    6

解答:

(1)利用银行家算法对此时刻的资源分配情况进行分析,可得表2-5所示的安全性分析情况。

表2-5 安全性检查表

 

Work

Need

Allocation

Work+Allocation

Finish

A  B  C  D

A  B C  D

A  B  C D

A   B    C    D

P0

1  6  2  2

0  0  1  2

0  0  3  2

1   6    5    4

true

 

true

 

true

 

true

 

true

P3

1  6  5  4

0  6  5  2

0  3  3  2

1   9    8    6

P4

1  9  8  6

1  7  5  0

0  0  1  4

1   9    9   10

P1

1  9  9  10

0  6  5  6

1  0  0  0

2   9    9   10

P2

2  9  9  10

2  3  5  6

1  3  5  4

3  12  14  14

从以上情况分析可以看出,此时存在一个安全序列p0,p3,p4,p1,p2,故该状态是安全的。

 

(2)P2提出请求Request2(1,2,2,2)。按银行家算法进行检查:

Request2(1,2,2,2)<=need(2,3,5,6)

Request2(1,2,2,2)<=available(1,6,2,2)

试分配并修改相应数据结构,资源分配情况如表2-6所示。

表2-6  P2申请资源后的资源分配表

 

Allocation

Need

Available

A   B   C    D

A   B   C    D

A   B   C    D

P0

0   0    3    2

0   0    1    2

0    4   0     0

P1

1   0    0    0

1   7    5    0

P2

1   3    5    4

1   1    3    4

P3

0   3    3    2

0   6    5    2

P4

0   0    1    4

0   6    5    6

再利用安全性检查算法检查系统是否安全,可用资源available(0,4,0,0)已不能满足任何进程的需要,此时系统不能将资源分配给P2。

以上是关于银行家算法资源分配问题(例子!!!)的主要内容,如果未能解决你的问题,请参考以下文章

操作系统实验四 银行家算法

操作系统死锁处理--09

第七章 死锁

死锁避免——银行家算法(简述)

死锁避免——银行家算法(简述)

怎么处理JAVA多线程死锁问题?