- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机科学与工程学院
课程设计报告
题目全称: 死锁解除中银行家算法的实现
课程名称:计算机操作系统
指导老师:XXX 职称: 讲师
序号 学生姓名 学号 班号 成绩 1 2 3 4 5 6 7 8 9 10 (注:学生姓名填写按学生对该课程设计的贡献及工作量由高到底排列,分数按排名依次递减。序号排位为“1”的学生成绩最高,排位为“10”的学生成绩最低。)
指导老师评语:
签字:
目录
1背景介绍 1
1.1对银行家算法的介绍 2
1.2死锁 3
2需求分析 4
2.1问题分析 5
2.2设计要求 6
3概要设计 4
3.1银行家算法中的课程设计 5
3.2银行家算法 6
3.3安全性检查 6
4详细设计 4
4.1程序的结构 5
4.2程序的数据结构 6
4.3本程序所定义的函数及声明 6
4.4本程序的主函数main()及功能 6
4.5程序流程图 6
4.6程序源代码 6
5测试数据 4
5.1测试数据 6
5.2对各种请求的检测及安全性分析 6
6课程设计小结与心得体会 4
1背景介绍
1.1对银行家算法的介绍
我们可以看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。
为保证资金的安全,银行家规定:
(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;
(2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量;
(3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;
(4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金.
1.2 死锁
所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。PriReso();用于打印当前资源分配状态。
(5)main ();调用各个模块,使程序有机的运行。
4.2 程序的数据结构
const int m = 3; //可利用资源的数目
const int n = 5; // 进程的数目
int Available [m]; //可利用资源向量
int Allocation [n][m]; //分配矩阵
int Need [n][m]; //需求矩阵
int Request [n][m]; //进程的请求向量
int Work [m]; //可提供给进程继续运行所需各类资源数目
bool Finish [n]; //表示系统是否有足够的资源分配给进程
int Seq [n] = {0}; //用于存放安全序列
int b; //用于计数
int T = 0; //用于记录状态数
4.3 本程序所自定义的函数及声明
void Initial (); //对在T0时刻各进程矩阵进行初始化
bool CompareRN (int i); //比较Request[i,j]和Need[i,j]
bool CompareRA (int i); //比较Request[i,j]和Available[i,j]
bool CompareNW (int i); //比较Need[i,j]和Work[j]
void Allocate (int i); //分配资源
void Recover (int i); //回收资源
bool SecChecking (int s); //安全性检查
void Print (); //打印安全序列
void PriReso (); //打印当前资源分配情况
4.4本程序的主函数main ()及功能
int main(int argc, char *argv[])
{
/////////////对T0时刻的资源分配情况进行初始化/////////////////
Initial ();//初始化函数
//////////////对T0时刻的状态进行安全性检查
if (SecChecking
文档评论(0)