个人学习笔记-操作系统银行家算法题目

银行家算法的详细描述,请自行查阅资料。

笔者只以一道简单的题目做描述。

题目:

5个进程从p0p4

3个资源类型A(10个实例),B5个实例),C7个实例)

具体输入如下表:

在T0时刻有:

 

Allocation

Max

Available

 

A  B  C

A  B   C

A  B   C

P0

0   1  0

7  5    3

3  3    2

P1

2   0  0

3  2    2

P2

3   0  2

9  0    2

P3

2   1  1

2   2   2

P4

0   0  2

4   3   3

Available表示每类资源可用的数量。
Allocation表示当前分给每个进程的资源数目。

Max表示每个进程对资源的最大需求

答案分析如下表:

  初始时:

   Work:= Available 

   Need:=Max-Allocation

即:(只看黑字)

 

Work

Need

Allcation

Work=Work+Allcation

finish(Work+Allcation<(10,5,7))

 

A   B  C

A   B  C

A   B  C

A   B  C

 

P0

     

7   4   5

0    1   1 

P1

 3 3   2

1  2   2

2  0   05   3   2

true

P2

  

6  0   03   0   2 

P3

5   3   2

0  1   1

2  1   1

7   4    3

true

P4

4   3   1

0   0  2

开始时Work=Available=(3,3,2)我们可以看到Need P1 P3 资源可以满足 Work>=Need,从算法遍历运行的顺序可知,先P1行求得(红字),work=(5,3,2)

然后看P2不满足Work>=Need,P3满足条件Work>=Need,P1行求得(蓝色)。以此类推,P4也可以求出。之后又从头开始遍历,依次完成P0,P2。

当完成后,finish都为true表示,系统处于安全状态。输出顺序就可以了,如下图:

 

Work

Need

Allcation

Work+Allcation

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

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

如表银行家算法的结果为 <P1,P3,P4,P0,P2>

笔者是个初学者,如有问题请联系。

    原文作者:银行家问题
    原文地址: https://blog.csdn.net/qq_34669785/article/details/78699082
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞