文档介绍:2021年操作系统实验报告C语言实现银行家算法
2021年操作系统实验报告C语言实现银行家算法
2 / 19
2021年操作系统实验报告C语言实现银行家算法
实 验 报 告
题 目
名 称
C语言实现银行家算法
院 系
信息科学与工程学院
班 级
完成时间
指导老师
此次试验
成绩
组长
联络电话
邮件地址
***@qq/com
组员(姓名,
学号)
关键任务
程序算法编写、 实现、 运行调试
组员(姓名,
学号)
关键任务
试验汇报完成
组员(姓名,
学号)
关键任务
试验汇报完成
组员(姓名,
学号)
主
要
原
理
及
所
参
考
资
料
(
包
银行家算法原理:
我们能够把操作系统看作是银行家, 操作系统管理资源相当于银行家管理资金, 进程向操作系统请求分配资源相当于用户向银行家贷款。
为确保资金安全,银行家要求:
(1) 当一个用户对资金最大需求量不超出银行家现有资金时就可接纳该用户;
(2) 用户能够分期贷款,但贷款总数不能超出最大需求量;
(3) 当银行家现有资金不能满足用户尚需贷款数额时,对用户贷款可推迟支付,但总能使用户在有限时间里得到贷款;
(4) 当用户得到所需全部资金后,一定能在有限时间里归还全部资金.
2021年操作系统实验报告C语言实现银行家算法
2021年操作系统实验报告C语言实现银行家算法
3 / 19
2021年操作系统实验报告C语言实现银行家算法
括
实
验
内
容
及
条
件
)
操作系统根据银行家制订规则为进程分配资源, 当进程首次申请资源时, 要测试该进程对资源最大需求量, 假如系统现存资源能够满足它最大需求量则按目前申请量分配资源, 不然就推迟分配。当进程在实施中继续申请资源时, 先测试该进程此次申请资源数是否超出了该资源所剩下总量。若超出则拒绝分配资源, 若能满足则按目前申请量分配资源, 不然也要推迟分配。
关键参考书:
计算机操作系统第三版 西安电子科技大学出版社 汤子瀛主编
主
要
算
法
流
程
图
和
具
体
实
验
步
骤
算法步骤图:
附录1 -- 银行家算法步骤图
附录2 -- 安全性算法步骤图
试验步骤:
一.银行家算法
进程i发出请求资源申请,
(1)假如Request [j]<=need[i,j],转向步骤(2),不然认为犯错, 因为她所需要资源数已经超出它所宣告最大值。
(2)假如: Request i[j]<=available[i,j], 转向步骤(3), 不然表示尚无足够资源, 进程i需等候。
(3)若以上两个条件都满足, 则系统试探着将资源分配给申请进程, 并修改下面数据结构中数值:
Available[i,j]= Available[i,j]- Request [j];
Allocation[i][j]= Allocation[i][j]+ Request [j];
need[i][j]= need[i][j]- Request [j];
(4)试分配后, 实施安全性检验, 调用check()函数检验此次资源分配后系统是否处于安全状态。若安全, 才正式将资源分配给进程; 不然此次试探分配作废, 恢复原来资源分配状态, 让该进程等候。
2021年操作系统实验报告C语言实现银行家算法
2021年操作系统实验报告C语言实现银行家算法
3 / 19
2021年操作系统实验报告C语言实现银行家算法
主
要
算
法
流
程
图
和
具
体
实
验
步
骤
(5)用do{…}while 循环语句实现输入字符y/n判定是否继续进行资源申请。
二.安全性检验算法(check()函数)
(1)设置两个向量:
工作向量Work, 它表示系统可提供给进程继续运行所需各类资源数目, 在实施安全性算法开始时, Work= Available。
工作向量Finish, 它表示系统是否有足够资源分配给进程, 使之运行完成。开始时先做Finish[i]=false; 当有足够资源分配给进程时, 再令Finis