银行家算法例题
假定系统中有五个进程{P0,P1,P2,P3,P4} 和三类资源{A ,B,C},各种资源的数量分别
为 10、5、7,在 T0 时刻的资源分配情况
资源情况
Max
Allocation
Need
Available
A B C
3 3 2
进程
A B C
A B C
A B C
P0
P1
P2
P3
P4
7 5 3
3 2 2
9 0 2
2 2 2
4 3 3
0 1 0
2 0 0
3 0 2
2 1 1
0 0 2
7 4 3
1 2 2
6 0 0
0 1 1
4 3 1
(1)T0 时刻的安全性
利用安全性算法对 T0 时刻的资源分配情况进行分析
资源情况
进程
Work
A B C
Need
A B C
Allocation
A B C
P1
P3
P4
P2
P0
3
5
7
7
3 2
3 2
4 3
4 5
1 2 2
0 1 1
4 3 1
6 0 0
10 4 7
7 4 3
2 0 0
2 1 1
0 0 2
3 0 2
0 1 0
Work+Allocatio
n
A B C
5 3 2
7 4 3
7 4 5
10
10
4
5
7
7
Finish
TRUE
TRUE
TRUE
TRUE
TRUE
(2)P1 请求资源:P1 发出请求向量 Request1(1,0,2),系统按银行家算法进行检查
①Request1(1,0,2)≤Need1(1,2,2)
②Request1(1,0,2)≤Available1(3,3,2)
③系统先假定可为 P1 分配资源,并修改 Available,Allocation1 和 Need1 向量,由此形成
的资源变化情况如下图所示。
资源情况
进程
P0
P1
P2
P3
P4
Max
A B C
7 5 3
3 2 2
9 0 2
2 2 2
4 3 3
Allocation
Need
Available
A B C
2 3 0
A B C
A B C
0 1 0
3 0 2
3 0 2
2 1 1
0 0 2
7 4 3
0 2 0
1 2 2
0 1 1
4 3 1
④再利用安全性算法检查此时系统是否安全。
P1 申请资源时的安全性检查
资源情况
进程
Work
A B C
Need
A B C
Allocation
A B C
P1
P3
P4
P0
P2
2
5
7
7
3 0
3 2
4 3
4 5
0 2 0
0 1 1
4 3 1
7 4 3
10 5 5
6 0 0
3 0 2
2 1 1
0 0 2
0 1 0
3 0 2
Work+
Allocation
A B C
5 3 2
7 4 3
7 4 5
7 5 5
10 5 7
Finish
TRUE
TRUE
TRUE
TRUE
TRUE
(3)P4 请求资源:P4 发出请求向量 Request4(3,3,0),系统按银行家算法进行检查:
①Request4(3,3,0)≤Need4(4,3,1);
②Request4(3,3, 0)≮Available(2,3,0),让 P4 等待。
(4)P0 请求资源:P0 发出请求向量 Requst0(0,2,0),系统按银行家算法进行检查:
①Request0(0, 2,0)≤Need0(7,4,3);
②Request0(0,2,0)≤Available(2,3,0);
③系统暂时先假定可为 P0 分配资源,并修改有关数据。
为 P0 分配资源后的有关资源数据
资源情况
进程
P0
P1
P2
P3
P4
Allocation
A B C
0 1 0
3 0 2
3 0 2
2 1 1
0 0 2
Need
A B C
7 2 3
0 2 0
6 0 0
0 1 1
4 3 1
Available
A B C
2 1 0
④进行安全性检查:可用资源 Available(2,1,0)已不能满足任何进程的需要,故系统进
入不安全状态,此时系统不分配资源。
Begin
Empty1=1; empty2=1;
Full1=0; full2=0;
Cobegin
Input:
Begin
Repeat
Wait(empty1);
将数据输入到缓冲区 1 中;
Signal(full1);
Until false
Copy:
End;
Begin
Repeat
Wait(full1);
从缓冲区 1 中提取数据;
Signal(empty1);
Wait(empty2);
将数据复制到缓冲区 2;
Signal(full2);
Until false
End;
Output:
Begin
Repeat
Wait(full2);
将数据从缓冲区 2 中取出打印;
Signal(empty2);
Until false
End;
Coend
End;