logo资料库

银行家算法实例.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
银行家算法例题 假定系统中有五个进程{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;
分享到:
收藏