- 3
- 0
- 约6.71千字
- 约 13页
- 2019-03-17 发布于江苏
- 举报
操作系统实验报告
实验四:银行家算法的实现
计科112 康岩岩 201100814220
2013/4/29
实验四:银行家算法的实现
一.实验目的
加深了解有关资源申请、避免死锁等概念。
体会和了解死锁和避免死锁的具体实施方法。
二.实验属性
该实验为设计性实验。
三.实验仪器设备及器材
普通PC386以上微机
四.实验要求
本实验要求2学时完成。
本实验要求完成如下任务:
(1)设计进程对各类资源最大申请表示及初值的确定。
(2)设定系统提供资源的初始状况。
(3)设定每次某个进程对各类资源的申请表示。
(4)编制程序,依据银行家算法,决定其资源申请是否得到满足。
(5)显示资源申请和分配时的变化情况。
五.实验步骤
(一)任务分析:
实现银行家算法,首先需要构造四张链表表,如下:
进程最大需求数量表:Max[m][n]
进程以获取资源量表 Allocation[m][n]
需求表 Need[m][n]
可用资资源 Available[n]
其中,m表示进程数目。n表示资源数目。 对于银行家算的实现,我们可以先初始化一部分数据,模拟出某一状态下的资源分配情况。并发出资源请求,然后判断请求是否可行,并寻找安全序列。 可以看出,本次试验会设计到大量的数据,所以为了简化步骤,并且能直观的得到算法运行结果,需要用到窗口来呈现数据变化情况。
(二)程序设计:
总体设计:
本次试验语言为java。程序分两大部分,一部分是核心的银行家算法,用来处理资源请求。另一部分是界面,用来发出资源请求并显示处理结果。利用java的swing编程和相关IDE,很容易初始化资源分布情况,下面是其截图:
具体实现:
核心部分,银行家算法:
算法的实现完全按照教材中的步骤来进行,具体实现如下:
/**
*
* @param processID 进程号
* @param ra 请求A类资源数量
* @param rb 请求A类资源数量
* @param rc 请求C类资源数量
*/
public static ListInteger checkEnable(int processID, int ra, int rb, int rc) {
//得等到该进程对各类资源的需求量数组
Integer need[] = Need.get(processID);
//得等到该进程的各类资源的就绪量数组
Integer allocation[] = Allocation.get(processID);
//检测请求数量是否大于需求量
if (ra need[0] || rb need[1] || rc need[2]) {
return null;
}
//检测请求量是否大于可用量
if (ra Available[0] || rb Available[1] || rc Available[2]) {
return null;
}
//先根据需求修改各类数据,如果后来检测到不存在安全序列,这些数据还会复原
Available[0] -= ra;
Available[1] -= rb;
Available[2] -= rc;
need[0] -= ra;
need[1] -= rb;
need[2] -= rc;
allocation[0] += ra;
allocation[1] += rb;
allocation[2] += rc;
//获取安全序列
ListInteger list = findSaftyLine(processID);
//如果安全序列为空,则恢复刚才修改的数据
if (list == null) {
Available[0] += ra;
Available[1] += rb;
Available[2] += rc;
need[0] += ra;
need[1] += rb;
need[2] += rc;
allocation[0] -= ra;
allocation[1] -= rb;
allocation[2] -= rc;
}
return list;
}
/**
* 寻找安全序列
* @param proceeeId
* @return
*/
private static ListInteger findSaftyLine(int proceeeId) {
//得到进程数目
int count = Max.size();
//标示进程是否安全的数组
boolean[] finish = new boolean[count];
for (int i = 0; i count; i++) {
您可能关注的文档
最近下载
- 《王玄览玄珠录的道教思想.doc VIP
- 人教版七年级英语上册完形填空、翻译、阅读理解训练含参考答案-精选5套.docx VIP
- 微信原创文章怎么修改,原创素材怎么利用?20170401.doc VIP
- 双轴搅拌机检修工艺规程.pdf VIP
- 山东省青岛市李沧区2024-2025学年八年级上学期期末考试数学试卷 (原卷版+解析版).docx VIP
- 双轴搅拌机检修规程.doc VIP
- 浙江省2025年1月普通高中学业水平选择性考试地理试题(含答案解析).pdf VIP
- TD_T 1041-2013土地整治工程质量检验与评定规程.pdf
- 中国脑血管疾病分类2015中华医学会神经病学分会、中华医学会神经病学分会脑血管病学组(发布时间:2017-03).pdf VIP
- 工厂节能降耗培训课件.pptx
原创力文档

文档评论(0)