好文档 - 专业文书写作范文服务资料分享网站

编程序模拟银行家算法1

天下 分享 时间: 加入收藏 我要投稿 点赞

武汉理工大学华夏学院 课程设计报告书

课程名称:

操作系统原理

题 目: 编程序模拟银行家算法

系 名: 信 息 工 程 系

专业班级: 计算机1111班

姓 名:

学 号: 10210411131 指导教师: 苏 永 红

2013 年 6 月 28 日

1

课程设计任务书

指导教师: 苏永红 工作单位: 信息工程系 设计题目:编程序模拟银行家算法 初始条件:

Linux操作系统,GCC编译环境

学生姓名: 专业班级: 计算机1111班

要求完成的主要任务:

主要任务:

银行家算法是避免死锁的一种重要方法,本实验要求用用c/c++语言在Linux操作系统环境下编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。

思想:将一定数量的资金供多个用户周转使用,当用户对资金的最大申请量不超过现存资金时可接纳一个新客户,客户可以分期借款,但借款总数不能超过最大的申请量。银行家对客户的借款可以推迟支付,但是能够使客户在有限的时间内得到借款,客户得到所有的借款后能在有限的时间内归还。用银行家算法分配资源时,测试进程对资源的最大需求量,若现存资源能满足最大需求就满足当前进程的申请,否则推迟分配,这样能够保证至少有一个进程可以得到所需的全部资源而执行到结束,然后归还资源,若OS能保证所有进程在有限的时间内得到所需资源则称系统处于安全状态。

设计报告撰写格式要求:

1设计题目与要求 2 设计思想

3系统结构 4 数据结构的说明和模块的算法流程图

5 使用说明书(即用户手册):内容包含如何登录、退出、读、写等操作说明

6 运行结果和结果分析(其中包括实验的检查结果、程序的运行情况) 7 自我评价与总结 8 附录:程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;

时间安排

6月24日 布置课程设计任务;分配题目后,查阅资料、 准备程序; 6月 25~6月27 日上机调试程序、书写课程设计报告;

6月28 日 提交课程设计报告及相关文档。

指 导 教 师 签 字:

2013年 6月 28日

系 主 任 签 字: 2013年 6月 28日

2

目录

1设计题目与要求 ............................................................. 4 1.1设计题目 ............................................................... 4 1.2要求完成的任务 ......................................................... 4 1.3主要任务 ............................................................... 4 1.4提示 ................................................................... 4 2设计思路 ................................................................... 5 2.1算法思路 ............................................................... 5 2.2银行家算法 ............................................................. 5 3系统结构 ................................................................... 5 3.1主要用到的数据结构 ..................................................... 5 3.2程序模块 ............................................................... 5 3.3各模块间的调用关系 ..................................................... 6 4数据结构的说明和模块的算法流程图 ........................................... 6 4.1数据结构说明 ........................................................... 6 4.1算法流程图 ............................................................. 7 5使用说明 ................................................................... 9 6测试结果截图 .............................................................. 10 6.1开始界面 .............................................................. 10 6.2输出界面 .............................................................. 10 7自我评价与总结 ............................................................ 14 8参考文献 .................................................................. 15 9附录:程序清单 ............................................................ 16

3

1设计题目与要求

1.1设计题目

编程序模拟银行家算法 1.2要求完成的任务

银行家算法是避免死锁的一种重要方法,本实验要求用用c/c++语言在Linux操作系统环境下编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。

1.3主要任务

银行家算法就是对每一个请求进行检查,检查如果满足它是否会导致不安全状态。若是,则不满足该请求;否则便满足。检查状态是否安全的方法是看他是否有足够的资源满足一个距最大需求最近的客户。如果可以,则这笔投资认为是能够收回的,然后接着检查下一个距最大需求最近的客户,如此反复下去。如果所有投资最终都被收回,则该状态是安全的,最初的请求可以批准。 1.4提示

将一定数量的资金供多个用户周转使用,当用户对资金的最大申请量不超过现存资金时可接纳一个新客户,客户可以分期借款,但借款总数不能超过最大的申请量。银行家对客户的借款可以推迟支付,但是能够使客户在有限的时间内得到借款,客户得到所有的借款后能在有限的时间内归还。用银行家算法分配资源时,测试进程对资源的最大需求量,若现存资源能满足最大需求就满足当前进程的申请,否则推迟分配,这样能够保证至少有一个进程可以得到所需的全部资源而执行到结束,然后归还资源,若OS能保证所有进程在有限的时间内得到所需资源则称系统处于安全状态。

4

2 设计思想 2.1算法思路:

先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法进行检查。若安全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。

2.2银行家算法 :

我们可以把操作系统看做是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求资源相当于客户向银行家贷款。

操作系统按银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程尚需求的资源量,若是系统现存的资源可以满足它尚需求的资源量,则按当前的申请量来分配资源,否则就推迟分配。

当进程在执行中继续申请资源时,先测试该进程申请的资源量是否超过了它尚需的资源量。若超过则拒绝分配,若没有超过则再测试系统尚存的资源是否满足该进程尚需的资源量,若满足即可按当前的申请量来分配,若不满足亦推迟分配。

3 系统结构

3.1主要用到的数据结构:

(1) 最大需求矩阵Max[][] (2) 已分配矩阵Allocation[][]

(3) 仍需求矩阵Need[][]=Max[][]-Allocation[][] (4) 可利用资源向量Available[] (5) 申请各类资源向量Request[] (6) 工作向量 work[] , Finish[]

3.2程序模块:

public static void main(String[] args) //系统的主函数

public void printFrame() //初始化 public void print() //打印输出

public void Safty() //利用安全性算法进行安全性检测 public void changdata(int i) //进行资源分配 void judge() //利用银行家算法对申请资源进行判定

5

编程序模拟银行家算法1

武汉理工大学华夏学院课程设计报告书课程名称:操作系统原理题目:编程序模拟银行家算法系名:信息工程系
推荐度:
点击下载文档文档为doc格式
7y13u7nwqt97tl27ll5r
领取福利

微信扫码领取福利

微信扫码分享