- 9
- 0
- 约6.22千字
- 约 11页
- 2018-12-18 发布于广东
- 举报
实验三 银行家算法
一、实验内容
运用某种高级语言(如C或C++)模拟银行家算法的处理过程。
二、实验目的
银行家算法是避免死锁的代表性算法。本实验旨在加深了解有关资源申请、避免死锁、状态安全性等概念,并体会和运用避免死锁的具体实施方法。然后依照本实验,自行设计模拟程序。
三、实验题目
银行家算法的模拟。
[提示]:
(1) 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。
(2) 安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。
不安全状态:不存在一个安全序列。不安全状态一定导致死锁。
安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j i )当前占有资源量之和。
(3) 设requesti为进程p[i]的请求向量,如果requesti[j]=K,表示进程p[i]需要K个Rj资源。当系统发出请求后,系统按下述步骤开始检查:
1)如果requesti[j]=need[i][j],转向步骤2;否则报告出错,申请的资源已经大于它需要的最大值。
2)如果requesti[j]=available[j],转向步骤3;否则报告出错,尚无足够的资源。
3)系统试探着把资源分配给p[i],并修改下列数据结构中的值:
??????available[j]=available[j]-request[j]
allocation[i][j]=allocation[i][j]+request[j]
? need[i][j]=need[i][j]-request[j]
4)系统进行安全性算法,检查此次分配后,系统是否还处于安全状态,若安全,把资源分配给进程p[i];否则,恢复原来的资源分配状态,让进程p[i]等待。
(4) 安全性算法:
int work[RESOURCE_NUMBER];
bool finish[PROCESS_NUMBER];
1) Work=Available;
Finish=false;
2) 寻找满足条件的i:
A、Finish[i]=false;
B、Need[i]≤Work;
如果不存在,则转4)
3) Work:=Work+Allocation[i]; Finish[i]:=true;转2)
4) 若对所有i,Finish[i]=true,则系统处于安全状态,否则处于不安全状态 ?
(5) 银行家算法程序流程图(如下:)
(6) 按模拟算法设计程序,运行设计的程序,观察得到的结果。
四、思考题
设计本实验时,就尽可能的将设计人性化和考虑全面。如:能不断地进行资源分配;能修改资源的初始状态;提示信息就能充分反映算法过程等。
五、数据结构
1)可利用资源向量Available
是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个。
2)最大需求矩阵Max
这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。
3)分配矩阵Allocation
这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的 数目为K。
4)需求矩阵Need。
这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。
Need[i,j]=Max[i,j]-Allocation[i,j]
5)work和finish。
是用来判断是否存在安全序列使得系统安全。是安全判断算法的内容。
源代码:
#includeSTRING.H
#includestdio.h
#includeiostream
#includestdlib.h
#includeCONIO.H/*用到了getch()*/
using namespace std;
您可能关注的文档
最近下载
- 煤矿采矿学电子教案教程.ppt VIP
- 基于前向预瞄的车辆主动悬架H∞控制方法研究.pdf
- 第五届温州地理学科小课题评比-温州第八高级中学.pdf VIP
- 2025中国分布式数据库发展研究白皮书:释放数据价值助力企业加速发展.pdf VIP
- 中国分布式数据库发展研究白皮书- 释放数据价值 助力企业加速发展 2025.docx
- 台湾旅游业发展现状-特点及走势.doc VIP
- 优秀毕业论文(设计)_年产20万吨乙二醇项目工艺流程模拟.docx VIP
- 中国分布式存储市场研究报告(2024).pdf VIP
- 15J401 钢梯国家标准图集.pdf VIP
- 优秀毕业论文(设计)_年产20万吨乙二醇工艺设计.docx VIP
原创力文档

文档评论(0)