银行家算法模拟 c语言,银行家算法模拟程序设计.doc

银行家算法模拟程序设计

银行家算法模拟程序设计

目录

一、课程设计的目的3

二、课程设计的要求3

三、课程设计题目描述3

四、算法流程图4

1、银行家算法流程图4

2、安全性检查算法流程图5

五、课程设计之银行家算法原理5

1.银行家算法的思路5

2.银行家算法5

3.安全性检查算法(IsSafe()函数)6

六、源程序结构分析及代码实现7

1.程序结构7

2.数据结构7

3.函数声明8

4. 源代码8

6. 运行界面14

七、课程设计的总结16

一、课程设计的目的

操作系统是计算机系统的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效的工作。《操作系统课程设计》是《操作系统》理论课的必要补充,是复习和检验所学课程的重要手段,本课程设计的目的是综合应用学生所学知识,通过实验环节,加深学生对操作系统基本原理和工作过程的理解,提高学生独立分析问题、解决问题的能力,增强学生的动手能力。

二、课程设计的要求

1.分析设计,给出解决方案(要说明设计实现的原理,采用的数据结构)。2.画出程序的基本结构框图和流程图。3.对程序的每一部分要有详细的设计分析说明。4.源代码格式要规范。5.设计合适的测试用例,对得到的运行结果要有分析。6.设计中遇到的问题,设计的心得体会。7.按期提交完整的程序代码、课程设计报告。

不安全

安全

2、安全性检查算法流程图

未找到

是不是

找到

五、课程设计之银行家算法原理

1.银行家算法的思路

先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。最后对试分配后的状态调用安全性检查算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。

2.银行家算法

进程mi发出请求申请k个j资源,Request [mi][j]=k

(1) Request [mi][j]<=need[mi][j],检查申请量是否不大于需求量,若条件不符重新输入,不允许申请大于需求量。

(2) Request [mi][j]<=available[mi][j],检查申请量是否小于系统中的可利用资源数量,若条件不符就申请失败,阻塞该进程,重新申请资源。

(3) 若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值:

Available[i] -= Request[mi][i];

Allocation[mi][i] += Request[mi][i];

Need[mi][i] -= Request[mi][i]

(4) 试分配后,执行安全性检查,调用IsSafe()函数检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程;否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。

(5) 用while 循环语句实现输入字符y/n判断是否继续进行资源申请。

3.安全性检查算法(IsSafe()函数)

(1) 设置两个向量:

工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,在执行安全性算法开始时,Work= Available。

Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]=0;当有足够的资源分配给进程时,再令Finish[i]=1。

(2) 在进程中查找符合以下条件的进程:

条件1:Finish[i]=0;

条件2:need[i][j]<=Work[j]

若找到,则执行步骤(3)否则,执行步骤(4)

(3) 当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:

Work[j]= Work[j]+ Allocation[i][j];

Finish[i]=1;

(4) 如果所有的Finish[i]=1都满足,则表示系统处于安全状态,否则,处于不安全状态

六、源程序结构分析及代码实现

1.程序结构

程序共有以下七个部分:

安全性检查IsSafe():用于判断当前状态安全性,根据不同地方的调用提示处理不同。

初始化算法1Read():用于程序开始进行初始化数据,从文件中读入数据:进程数量、资源种类、各种资源可利用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值