编程模拟银行家算法0

上传人:大米 文档编号:431482462 上传时间:2023-03-05 格式:DOCX 页数:15 大小:284.07KB
返回 下载 相关 举报
编程模拟银行家算法0_第1页
第1页 / 共15页
编程模拟银行家算法0_第2页
第2页 / 共15页
编程模拟银行家算法0_第3页
第3页 / 共15页
编程模拟银行家算法0_第4页
第4页 / 共15页
编程模拟银行家算法0_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《编程模拟银行家算法0》由会员分享,可在线阅读,更多相关《编程模拟银行家算法0(15页珍藏版)》请在金锄头文库上搜索。

1、 湖南工业大学课 程 设 计资 料 袋 计算机与通信学院 学院(系、部) 2014 2015 学年第 1 学期 课程名称 计算机操作系统 指导教师 职称 讲师 学生姓名 专业班级 学号 题 目 编程模拟银行家算法 成 绩 起止日期 2014 年 12 月 15 日 2014 年 12 月 21 日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书2课程设计说明书3456课程设计任务书2014 2015学年第 1 学期学院(系、部) 计算机与通信学院 专业 班级 1202班 课程名称: 计算机操作系统 学生姓名: 设计题目: 编程模拟银行家算法 指导教师: 完成期限:自 2014 年

2、 12 月 15 日至 2014 年 12 月 21 日 共 1 周内容及任务一、 设计内容编制银行家算法程序,即实现初始化系统中的资源类别及数量以及系统中各进程对资源的已分配量及最大需求量;能够检测所给状态的系统安全性。 某个进程提出对各资源的申请,能够判断是否给予满足。二、设计任务课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。三、设计要求1. 按功能要求开发系统,能正确运行。

3、程序代码书写规范,有充足的注释。2. 课程设计所使用的编程语言任选,但建议使用C或C+;3. 绿色软件:程序运行不需安装,避免写系统和注册表;进度安排起止日期工作内容课程设计前一周召开动员大会,学生选题;2014-12-152014-12-16系统分析和设计;2014-12-172014-12-19熟悉软件开发工具、编码系统、系统测试以及中期答辩;2014-12-202014-12-21撰写并提交课程设计说明书 (含电子文档)、源程序等。主要参考资料1罗宇、邹鹏、邓胜兰等著操作系统M北京:电子工业出版社,20112 Andrew S.Tanenbaum 著陈向群等译现代操作系统M北京:机械工业

4、出版社,20073 邓胜兰编著操作系统基础M北京:机械工业出版社,20094 Dave Probert著,陈向群等译Windows操作系统原理M北京:机械工业出版 ,20065 罗宇 褚瑞等等著操作系统课程设计M北京:机械工业出版,2004指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日2课程设计说明书 课程名称: 计算机操作系统 设计题目: 编程模拟银行家算法 专 业: 软件工程 班 级: 1202班 学生姓名: 学 号: 指导教师: 2014年 12 月 21 日目录1 课程设计简介51.1 课程设计的目的51.2 课程设计内容52 课程设计实现过程62.1数据结构62

5、.2程序流程图7 1、系统主要过程流程图7 2、银行家算法流程图8 3、安全性算法流程图92.3测试与评价103设计总结11参考文献12.8.1 课程设计简介1.1 课程设计的目的 操作系统课程设计是操作系统课程的后续实践课程,根本用意是通过实践训练,加深学生对理论的理解。进一步提高学生分析问题和解决问题的能力。通过银行家算法设计与实现,可以加深学生对死锁的理解,掌握死锁的预防,避免,检测和解除的基本原理,重点掌握死锁的避免方法银行家算法。使学生初步具有研究和设计操作系统模块的能力。1.2 课程设计内容 在多道程序系统中,多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐量,但可能会发生

6、一种危险死锁。死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种状态时,若无外力作用,他们都无法再向前进行。因此要预防,避免死锁。 在避免死锁的算法中,以1965年Dijkstra根据“银行家为顾客贷款”的思想提出的“银行家算法”最具代表性。银行家算法把系统状态分为安全状态和不安全状态。安全状态是指系统能按某种顺序为每个进程分配所需资源,直到最大需求,使每一个进程都可以顺利完成,即可找到一个安全资源分配序列。 我们可以把操作系统看成银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,

7、当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源足以满足最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能则按当前的申请量分配资源,否则也要推迟分配。 2课程设计实现过程2.1数据结构 2.1.1主要用到的数据结构 (1)最大需求矩阵Max (2)已分配矩阵Allocation (3)仍需求矩阵Need=Max-Allocation (4)可利用资源向量Availab

8、le (5)申请各类资源向量Request (6)工作向量work ,Finish 2.1.2程序模块 public static void main(String args) /系统的主函数 public void printFrame() /初始化 public void print() /打印输出 public void Safty() /利用安全性算法进行安全性检测 public void changedata(int i) /进行资源分配 void judge() /利用银行家算法对申请资源进行判定 2.1.3各模块间的调用关系 主函数 void main() 要调用:printFr

9、ame(),print(),Safty(),judge() 安全性检测函数 Safty() 要调用:print() 银行家算法函数 judge() 要调用:print(),Safty(),judge() 2.2程序流程图 进入系统 1、系统主要过程流程图 进行初始化 打印输出此时刻资源分配情况 提出申请资源请求 RequestiNeedi?输入:1. 继续分配2. 退出 Y NRequestiAvailablei?Y N 预分配系统是否安全? N 实际分配并打印输出 N 退出系统 2、银行家算法流程图 调用void judge()函数 输入欲申请资源的进程号输入是否合法? N 输入该进程申请的

10、资源量RequestY RequestiNeedi?输入:1. 继续分配2. 退出 YRequestiAvailablei? N YN 预分配 调用Safty()函数进行安全性检查 调用结束 3、安全性算法流程图 调用Safty()函数 Work=Available Finsh=FalseNeed=Work&Finish=False?Work=Work+Allocation,Finish=True Y所有进程的Finish=True?Y N实际分配,输出安全序列并打印当前资源分配情况输出提示:系统不安全! 调用结束2.3测试与评价 T0时刻的资源分布表: 资源情况进程 MaxA B C DAllocationA B C DNeedA B C DAvailableA B C DP00 0 1 20 0 1 20 0 0 01 5 2 0P11 7 5 01 0 0 00 7 5 0P22 3 5 61 3 5 41 0 0 2P30 6 5 20 6 3 20 0 2 0P4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号