没有合适的资源?快使用搜索试试~ 我知道了~
计算机操作系统课程设计银行家算法的设计与实现
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 75 浏览量
2023-05-16
12:10:48
上传
评论 1
收藏 271KB DOC 举报
温馨提示
试读
22页
计算机操作系统课程设计银行家算法的设计与实现
资源推荐
资源详情
资源评论
操作系统课程设计报告
题目:银行家算法的设计与实现
院 (系): 计算机科学与工程学院
专 业: 信息对抗专业
班 级: 班
学 生:
学 号:
指导教师:
2011 年 X 月
1
基于计算机操作系统银行家算法实现
摘要
此次课程设计的主要内容是模拟实现资源分配。同时要求编写和调试一个系
统动态分配资源的简单模拟程序,观察死锁产生的条件,并使用适当的算法,有
效的防止和避免死锁的发生
具体用银行家算法实现资源分配。要求如下:
(1) 设计一个 3 个并发进程共享 3 类不同资源的系统,进程可动态地申请资源
和释放资源,系统按各进程的申请动态地分配资源。
(2) 设计用银行家算法和随机分配算法,实现资源分配的两个资源分配程序,
应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。
(3) 确定一组各进程依次申请资源数的序列,在相同的情况下分别运行上述两
种资源分配程序,观察运行结果。
银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一
个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和
了解死锁和避免死锁的具体实施方法。死锁的产生,必须同时满足四个条件,即
一个资源每次只能由一个进程占用:第二个为等待条件,即一个进程请求资源不
能满足时,它必须等待,但它仍继续保持已得到的所有其他资源:第四个为循环
等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前
一个进程所持有的资源。防止死锁的机构只能确保上述四个条件之一不出现,则
系统就不会发生死锁。通过这个算法可用解决生活中的实际问题,如银行贷款等.
通过对这个算法的设计,让学生能够对书本知识有更深的理解,在操作和其它
方面有更高的提升.
关键词:死锁 ;安全状态 ;安全序列 ;银行家算法 ;安全性检查
目录
2
1 概述..................................................(3)
1.1 设计目的....................................................(3)
1.2 开发环境....................................................(3)
2 需求分析......................................................(4)
2.1 死锁概念....................................................(4)
2.2 死锁的结论..................................................(4)
2.3 资源分类....................................................(4)
2.4 产生死锁的必要条件..........................................(4)
2.5 死锁的解决方案..............................................(4)
2.5.1 产生死锁的例子........................................(4)
2.5.2 死锁预防..............................................(5)
2.5.3 安全状态与不安全状态..................................(5)
3 数据结构分析设计.............................................(6)
3.1 可利用资源向量矩阵 available[ ] ..............................(6)
3.2 最大需求矩阵 max[ ][ ] ......................................(6)
3.3 分配矩阵 allocation[ ][ ] ...................................(6)
3.4 需求矩阵 need[ ][ ] .........................................(6)
4 算法的实现....................................................(7)
4.1 初始化......................................................(7)
4.2 银行家算法..................................................(7)
4.3 安全性检查算法..............................................(7)
4.4 各算法流程图................................................(8)
5 测试与实例分析..............................................(10)
6 心得体会.....................................................(14)
7.参考文献与源程序清单(附录).................................(15)
3
1 概述
1.1 设计目的
银行家算法是一种最有代表性的避免死锁的算法。把操作系统看作是
银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统
请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则
为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需
求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分
配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进
程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最
大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源
能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,
否则也要推迟分配。
本次课程设计通过用 JAVA 语言编写和调试实现银行家算法的程序,达到进
一步掌握银行家算法,理解系统产生死锁的原因以及系统避免死锁的方法,增强
理论联系实际的能力的目的。
1.2 开发环境
操作系统:Windows XP
编译工具:Myeclipse8.6
生成文件:×××.java 源代码文件和×××.class 编译文件
4
2 需求分析
2.1死锁概念
死锁就是指多个进程在运行中因争夺资源而造成的一种僵局,当进程出于这
种僵持状态时,若无外力作用,它们都将无法再向前推进。
2.2 死锁的结论
产生死锁的原因是:竞争资源和进程间推进顺序不当。
处理死锁的基本方法是:①预防死锁
②避免思索
③检测死锁
④解除死锁
2.3 资源分类
1.可剥夺性资源,某些进程在获得此类资源后,该资源可以再被其他进程或
系统剥夺。CPU 和内存均属于可剥夺性资源。
2.不可剥夺性资源,当系统把这类资源分配给进程后,再不能强行回收,只
能在进程用完后自动释放,如磁带机,打印机。
3.非剥夺性资源,在系统中所配置的非剥夺性资源,由于它们的数量不能满
足诸进程运行的需要,会使进程在运行构成中,因争夺这些资源而陷入僵局。
4.临时性资源,它是指由一个进程产生,被另一个进程使用一短暂时间后便
无用的资源,也称之为消耗性资源。。
2.4 产生死锁的必要条件
1.互斥条件:进程对它所分配到的资源进行排他性使用,即在一段时间内某
资源由一个进程占有。如果此时还有其它进程请求该资源,则请求者只能等待,
直至占有该资源的进程用毕释放。
2.请求和保持条件:进程已经保持了至少一个资源,但又提出新的资源请求,
而该资源又被其他进程占有,此时请求进程阻塞,但又对自己获得的其他资源保
持不放。
3.不剥夺条件:进程已经获得的资源,在未使用完之前,不能被剥夺,只有
在使用完是由自己释放。
4.环路等待条件:发生死锁时,必然存在一个进程--资源的环形链。
2.5 死锁的解决方案
2.5.1 产生死锁的例子
剩余21页未读,继续阅读
资源评论
文档优选
- 粉丝: 90
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功