操作系统课程设计(银行家算法)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统课程设计(银行家算法)

操作系统

课程设计说明书题目: 银行家算法模拟

院系:计算机科学与工程学院

专业班级:计算机10-5班

学号: **********

学生姓名:***

指导教师:***

2013年 1月 9日

安徽理工大学课程设计(论文)任务书

计算机科学与工程学院计算机科学与技术系

学号20103031

57

学生

姓名

张绪磊

专业(班

级)

计算机

10-5班

设计题目

银行家算法模拟

设计技术参数系统平台:Windows 7 开发工具:vc++ 6.0 开发语言:c/c++语言

设计要求1.系统基本实现安全性、添加资源、修改资源、配置资源等算法。

2.要求系统能实现人机交互,界面友好。

3.当输入一组资源和作业的数量时,可以根据其需求量判断系统安全性。

工作量1.设计报告要求不少于4000字。

2.源程序要求不少于300行

工作计划2012.11.21~2012.11.28算法的分析及系统的功能分析

2012.11.29~2012.12.03 系统的总体设计2012.12.04~2012.12.10 系统功能的详细设计

2012.12.11~2012.12.24 系统的编码设计和界面设计

2012.12.25~2013.01.01 系统的调试及测试

2013.01.02~2013.01.09 撰写课程设计报告

参考资料[1]汤小丹,梁红兵,哲凤屏,汤子瀛.计算

机操作系统.第三版.西安:西安电子科技大学出版社,2007

[2] 谭浩强. C程序设计.第三版.北京:清

华大学出版社,2005

[3]张海藩.软件工程导论.第五版.北京:清

华大学出版社,2008

[4] 冯博琴.Visual C++与面向对象程序设计教程.第三版. 高等教育出版社; 2010

指导教

系主任签字

师签字

安徽理工大学课程设计(论文)成绩评定表

学生姓名:张绪磊学号: 2010303157 专业班级:计算机10-5班设计题目:银行家算法模拟

指导教师评语:

成绩:

指导教师:

年月日

摘要

银行家算法是一个用来预防系统进入死锁状态的算法,用它可以判断系统的安全性,如果系统当前处于安全状态,则可以为申请资源的进程分配资源;如果不是安全状态,则不能为申请资源的进程分配资源。银行家算法执行过程中,首先判断申请资源的进程所申请的资源数目是否合法,若是合法的,则可以为其进行试分配,再利用安全性算法求出安全序列,如果存在安全序列,则说明可以给申请资源的进程分配资源,分配成功,继续为其它进程服务。如果找不到安全序列,则说明为该进程分配资源后系统会进入不安全状态,所以不能为该进程分配资源,使该进程进入阻塞状态。若申请资源的进程申请的资源数目不合法,则不需要进行试分配,直接使其进入阻塞状态,处理其他申请资源的进程。

关键词:可用资源,最大需求矩阵,分配矩阵,需求矩阵,

安全性算法,安全序列

目录

1.绪论 (1)

1.1系统分工 (1)

1.2课题背景 (1)

1.3死锁 (2)

1.4安全性 (2)

1.5算法设计思想 (2)

2.需求分析 (3)

2.1基本要求 (3)

2.2模块划分 (3)

3.总体设计 (4)

3.1算法设计 (4)

3.2模块设计 (5)

4.详细设计 (7)

4.1程序流程图 (7)

4.2主要函数的核心代码 (7)

5.程序测试 (13)

5.1界面设计 (13)

5.2数据测试 (14)

5.3操作提示 (15)

6.总结 (17)

参考文献 (18)

1.绪论

1.1系统分工

银行家算

法模拟

设计内容及其说明

本人设计内容主要和组员张鑫设计MFC界面和代码的调试,涉及主要功能代码,包括其他组员设计的主要函数代码嵌入到MFC中,主要编写了银行家算法。对MFC程序遇到的错误修改、功能缺失及算法不健壮等问题作了修改。之后和其他组员一起将其他的功能嵌入到程序里,主要是添加资源,删除资源,修改资源,分配资源和增加作业功能,最终完成了了一个整体的银行家算法。

其他组员

设计内容

添加资源,修改资源,删除资源,分配资源,增加作业。

1.2课题背景

在多道程序系统中,虽可以借助多个进程的并发执行来改善系统的资源利用率,提

高系统吞吐量,但可能发生一种危险——死锁,即多个进程在运行过程中因争夺资源而造成的一种僵局,若无外力作用,将无法再向前推进。如此,寻求一种避免死锁的方法便显得有为重要。死锁的产生一般的原因有两点:竞争资源和进程间推进顺序非法。因此,我们只需在当前的有限资源下,找到一组合法的执行顺序,便能很好的避免死锁,我们称它为安全序列。而银行家算法起源于银行系统的发放贷款,和计算机操作系统的资源分配完全符合,因此可以借鉴该算法的思想,设计出一种有效的算法程序,解决该问题。

1.3死锁

所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象:死锁。

在计算机系统中,涉及软件,硬件资源都可能发生死锁。例如:系统中只有一台CD-ROM驱动器和一台打印机,某一个进程占有了CD-ROM驱动器,又申请打印机;另一进程占有了打印机,还申请CD-ROM。结果,两个进程都被阻塞,永远也不能自行解除。

1.4安全性

全序列的的实际意义在于:系统每次进行资源分配后,如果对于系统中新的资源状况,存在一个安全序列,则至少存在一条确保系统不会进入死锁的路径。按照该序列,银行家可以实施一个有效的分配过程使得所有客户得到满足,行家算法的核心在于安全序列的产生。安全序列正是一种安全的进程推进顺序。

1.5算法设计思想

我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。

相关文档
最新文档