资源描述
实验二
如有你有帮助,请购买下载,谢谢!
课程名称:操作系统
课程类型:必修
实验项目名称:银行家算法
实验题目:采用银行家算法避免死锁
一、实验目的
通过本次实验,使学生掌握死锁的概念和产生
死锁的原因和必要条件, 预防和避免死锁的方法, 死锁的检测与解除。通过本次实验,使学生加深了 对死锁概念的理解和掌握,深刻领会银行家算法的
实质及实现过程。
二、实验要求及实验环境
设计一个能动态检查n个资源、m个进程的系统 是否安全并且能实施动态分配的程序。(具体个数 可由键盘输入)。每一个进程可动态、随机提出申 请各个资源的数量,如果系统能满足并且分配后系 统仍处于安全状态,那么写出一个安全序列,表明 系统是安全的;若系统不安全,那么不分配资源。
1页
如有你有帮助,请购买下载,谢谢!
三、设计思想
1.程序流程图
开始
对系统进行初
输出"选择 () 始化 init 1--用银行
家算法;选择 0--退出"
输入一个值 i
是i==1
调用银行家算法 allo ) (
结束
图 1-1 主程序的流程图
输入系统的资源
开始
种类的个数 n
输入各个资源类拥有
的最大数量 输入进程个数 m
输入各个进程对各类
资源的最大数量
结束
图 1-2 初始化算法 init()的流程图
开始
输入准备申请资
源的进程序号
输入准备申请资
输入进程 i 提出的
源的进程序号 i
对各个资源的需求
调用银行家2—模拟资源 页
分配算法 require()
如有你有帮助,请购买下载,谢谢!
结束
图 1-3 银行家算法 allo()的流程图
开始
T Request[i]£Need[i]? F
F
Request[i]£Available? T
请求超量,
错误返回
不满足,
等待
Available=Available-Request[i]
Allocation[i]=Allocation[i]+Request[i]
Need[i]=Need[i]-Request[i]
T
调用安全算法
safe( )?
F
确认,
pi继续
Available=Available+Request[i]
Allocation[i]=Allocation[i]-Request[i]
Need[i]=Need[i]+Request[i]
pi等待
结束
图 1-4 模拟资源分配算法 require()的流程图
开始
3页
展开阅读全文