操作系统银行家算法实验报告.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五 银行家算法 一、实验目的和要求 ①理解死锁概念,银行家算法及安全检测算法。 ②在Linux操作系统下用C++进行编程。 ③利用C++设计实现银行家算法的基本过程。 ④验证银行家算法对于避免HYPERLINK /view/121723.htm死锁的作用。 二、实验方法内容 ①算法设计思路 1.设计进程对各类资源最大申请表示及初值确定。 2.设定系统提供资源初始状况。 3.设定每次某个进程对各类资源的申请表示。 4.编制程序,依据银行家算法,决定其申请是否得到满足。 ②算法流程图如下: 开 始输入资源数 开 始 输入资源数m,及各类资源总数,初始化Available向量 输入进程数n,i=1 输入进程i的最大需求向量max。 i≤n Max≤资源总数 提示错误重新输入 i 加1 任选一进程作为当前进程 输入该进程的资源请求量Request 调用银行家算法,及安全性算法,完成分配,或给出提示 该进程的Need向量0 该进程已运行结束 Need矩阵为0 所有进程运行都结束 END N Y Y N N Y 初始化Need矩阵 N Y ③算法中用到的数据结构说明 1. 可利用资源向量Available ,它是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源的数目,其初始值是系统中所配置的该类全部可用资源数目。其数值随该类资源的分配和回收而动态地改变。如果Available[j]=k,标是系统中现有Rj类资源k个。 2. 最大需求矩阵P,这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果P(i,j)=k,表示进程Pi需要Rj类资源的最大数目为k。 3. 分配矩阵Allocation,这是一个n×m的矩阵,它定义了系统中的每类资源当前一分配到每一个进程的资源数。如果Allocation(i,j)=k,表示进程Pi当前已经分到Rj类资源的数目为k。Allocation i表示进程Pi的分配向量,有矩阵Allocation的第i行构成。 4. 需求矩阵Need,这是一个n×m的矩阵,用以表示每个进程还需要的各类资源的数目。如果Need(i,j)=k,表示进程Pi还需要Rj类资源k个,才能完成其任务。Need i表示进程i的需求向量,由矩阵Need的第i行构成。 上述三个矩阵间存在关系:Need(i,j)=P(i,j)- Allocation(i,j); 5. Request i 是进程Pi 的请求向量。Request i (j)=k表示进程Pi请求分配Rj类资源k个。当Pi发出资源请求后,系统按下述步骤进行检查: ①.如果Request i ≤Need,则转向步骤2;否则出错。 ②如果Request i ≤R,则转向步骤3;否则,表示系统中尚无足够的资源满足Pi的申请,Pi必须等待。 ③系统试探性地把资源分配给进程Pi,并修改下面数据结构中的数值: R = R - Request i Allocation I = Allocation I + Request i Need I = Need i - Request i ④系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。如果安全才正式将资源分配给进程Pi,以完成本次分配;否则,将试探分配作废,恢复原来的资源分配状态,让进程Pi等待 6. 主要的常量变量 #define W 10 //最大进程数W=10 #define R 20 //最大资源总数R=20 int AVAILABLE[R]; //可利用资源向量 int MAX[W][R]; //最大需求矩阵 int ALLOCATION[W][R]; //分配矩阵 int NEED[W][R]; //需求矩阵 int Request[R]; //进程请求向量 void changdata(int k); //进程请求资源数据改变 int chksec(int s); //系统安全性的检测 7.主要模块(函数和数据) void inputdata(); //数据输入 void showdata(); //数据显示 void changdata(int k); //进程请求资源数据改变 void restoredata(int k); //数据恢复 int chksec(int s); //系统安全性的检测 in

文档评论(0)

annylsq + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档