没有合适的资源?快使用搜索试试~ 我知道了~
银行家算法课程设计报告.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 79 浏览量
2022-05-30
22:28:42
上传
评论
收藏 191KB DOCX 举报
温馨提示
试读
27页
银行家算法课程设计报告.docx
资源推荐
资源详情
资源评论
银行家算法
一. 需求分析
1. 在多道程序系统中,多个进程的并发执行来改善系统的资源利用
率,提高系统的吞吐量,但可能发生一种危险——死锁。所谓死锁
(Deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵
局(DeadlyEmbrace),当进程处于这种状态时,若无外力作用,他
们都无法在向前推进。UU
要预防死锁,有摒弃“请求和保持”条件,摒弃“不剥夺”条件,摒
弃“环路等待”条件等方法。U
但是,在预防死锁的几种方法之中,都施加了较强的限制条件 ;
而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人
满意的系统性能。在该方法中把系统状态分为安全状态和不安全状
态,便可避免死锁的发生。U
而最具代表性的避免死锁的算法,便是 Dijkstra 的银行家算法。
U
利用银行家算法,我们可以来检测 CPU 为进程分配资源的情况,决
定 CPU 是否响应某进程的的请求并为其分配资源,从而很好避免了
死锁的产生。
2. 银行家算法是一种最有代表性的避免死锁的算法。U
要解释银行家算法,必须先解释操作系统安全状态和不安全状态。
UUU安全状态:如果存在一个由系统中所有进程构成的安全序列 P1,
,„ Pn,则系统处于安全状态。安全状态一定是没有死锁发生。U
不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。
UUU那么什么是安全序列呢?U
安全序列:一个进程序列{P1, ,„ Pn}是安全的,如果对于每一
个进程 Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资
源量与所有进程 Pj(j<i)当前占有资源量之和。UUU
银行家算法:U
我们可以把操作系统看作是银行家,操作系统管理的资源相当于
银行家管理的资金,进程向操作系统请求分配资源相当于用户向银
行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进
程首次申请资源时,要测试该进程对资源的最大需求量,如果系统
现存的资源可以满足它的最大需求量则按当前的申请量分配资源,
否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程
已占用的资源数与本次申请的资源数之和是否超过了该进程对资源
的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统
现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前
的申请量分配资源,否则也要推迟分配。
3.设计要求:
设计一 n 个并发进程共享 m 个系统资源的程序实现银行家算法。
要求包括:U
(1)U简单的初始化界面;U
(2)U系统资源的占用和剩余情况;U
(3)U为进程分配资源,用银行家算法对其进行检测,分为以下
三种情况:UUUUUUUU
A.所申请的资源大于其所需资源,提示分配不合理不予分配并
返回;UUUUUUUUU
B.所申请的资源未大于其所需资源,但大于系统此时的可利用
资源,提示分配不合理不予分配并返回;U
C.所申请的资源未大于其所需资源,亦未大于系统此时的可利用
资源,预分配并进行安全性检查:U
a.预分配后系统是安全的,将该进程所申请的资源予以实际
分配并打印后返回;U
b.与分配后系统进入不安全状态,提示系统不安全并返回;U
(4)U对输入进行检查,即若输入不符合条件,应当报错并返回
重新输入;U
(5)U撤销作业,释放资源。
二.概要设计
(一)算法思路:
先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,
是否大于可利用的。若请求合法,则进行预分配,对分配后的状态
调用安全性算法进行检查。若安全,则分配;若不安全,则拒绝申
请,恢复到原来的状态,拒绝申请。
(二)算法步骤:
(1)如果 Requesti<or=Need,则转向步骤(2);否则,认为出错,因
为它所需要的资源数已超过它所宣布的最大值。U
(2)如果 Request<or=Available,则转向步骤(3);否则,表示系
统中尚无足够的资源,进程必须等待。U
(3)系统试探把要求的资源分配给进程 Pi,并修改下面数据结构中
的值:Available=Available-Request[i];
Allocation=Allocation+Request;
Need=Need-Request;
(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全
状态。
三.详细设计
#define SIZE 11
int available[SIZE];
int claim[SIZE][SIZE];
int allocation[SIZE][SIZE];
剩余26页未读,继续阅读
资源评论
oligaga
- 粉丝: 50
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
- python中matplotlib教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功