实验二银行家算法实验报告

实验二银行家算法实验报告

ID:25806486

大小:115.51 KB

页数:10页

时间:2018-11-22

实验二银行家算法实验报告_第1页
实验二银行家算法实验报告_第2页
实验二银行家算法实验报告_第3页
实验二银行家算法实验报告_第4页
实验二银行家算法实验报告_第5页
资源描述:

《实验二银行家算法实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、《操作系统原理》实验报告实验二银行家算法实验专业:计算机科学与技术学号:030840204姓名:简郸实验日期:2010-5-22一、实验目的通过银行家算法理解操作系统安全状态和不安全状态。二、实验要求根据课本第204页在T0时刻系统分配的资源,用银行家算法判断系统是否处于安全序列,它的安全序列怎样。三、实验方法内容1.算法设计思路我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以

2、满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。2.算法流程图3.主要的常量变量n:系统中进程的总数m:资源类总数Available:ARRAY[1..m]ofinteger;Max:ARRAY[1..n,1..m]ofinteger;Allocation:ARRAY[1..n,1..m]ofinteger;N

3、eed:ARRAY[1..n,1..m]ofinteger;Request:ARRAY[1..n,1..m]ofinteger;符号说明:Available可用剩余资源Max最大需求Allocation已分配资源Need需求资源Request请求资源4.主要模块当进程pi提出资源申请时,系统执行下列步骤:(“=”为赋值符号,“==”为等号)step(1)若Request<=Need,gotostep(2);否则错误返回step(2)若Request<=Available,gotostep(3);否则进程等待step(3)假设系统分配了资源,则有:Available=Av

4、ailable-Request;Allocation=Allocation+Request;Need=Need-Request若系统新状态是安全的,则分配完成若系统新状态是不安全的,则恢复原状态,进程等待为进行安全性检查,定义数据结构:Work:ARRAY[1..m]ofinteger;Finish:ARRAY[1..n]ofBoolean;安全性检查的步骤:step(1):Work=Available;Finish=false;step(2)寻找满足条件的i:a.Finish==false;b.Need<=Work;如果不存在,gotostep(4)step(3)Wo

5、rk=Work+Allocation;Finish=true;gotostep(2)step(4)若对所有i,Finish=true,则系统处于安全状态,否则处于不安全状态/*银行家算法,操作系统概念(OSconceptsSixEdition)reeditbyJohnnyhagen,SCAU,runatvc6.0*/四、实验代码#include"malloc.h"#include"stdio.h"#include"stdlib.h"#definealloclensizeof(structallocation)#definemaxlensizeof(structmax)#

6、defineavalensizeof(structavailable)#defineneedlensizeof(structneed)#definefinilensizeof(structfinish)#definepathlensizeof(structpath)structallocation{intvalue;structallocation*next;};structmax{intvalue;structmax*next;};structavailable/*可用资源数*/{intvalue;structavailable*next;};structneed/*

7、需求资源数*/{intvalue;structneed*next;};structpath{intvalue;structpath*next;};structfinish{intstat;structfinish*next;};intmain(){introw,colum,status=0,i,j,t,temp,processtest;structallocation*allochead,*alloc1,*alloc2,*alloctemp;structmax*maxhead,*maxium1,*maxium2,*maxtemp;stru

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。