银行家算法的模拟实现实验报告(共17页).doc
《银行家算法的模拟实现实验报告(共17页).doc》由会员分享,可在线阅读,更多相关《银行家算法的模拟实现实验报告(共17页).doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上银行家算法的模拟实现一、 实验题目:模拟实现银行家算法的处理过程二、 实验目的:银行家算法是避免死锁的代表性算法。本实习旨在加深了解有关资源申请、避免死锁、状态安全性等概念,并体会和运用避免死锁的具体实施方法。然后依照本实习,自行设计模拟程序。三、 实验原理:1. 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源。当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进
2、程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。2. 安全状态:如果存在一个由系统中所有进程构成的安全序列P1,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。 不安全状态:不存在一个安全序列。不安全状态一定导致死锁。安全序列:一个进程序列P1,Pn是安全的,如果对于每一个进程Pi(1in),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j i )当前占有资源量之和。3. 设
3、requesti为进程pi的请求向量,如果requestij=K,表示进程pi需要K个Rj资源。当系统发出请求后,系统按下述步骤开始检查: 1)如果requestij=needij,转向步骤2;否则报告出错,申请的资源已经大于它需要的最大值。 2)如果requestij=availablej,转向步骤3;否则报告出错,尚无足够的资源。 3)系统试探着把资源分配给pi,并修改下列数据结构中的值: availablej=availablej-requestj allocationij=allocationij+requestj needij=needij-requestj 4)系统进行安全性算法,
4、检查此次分配后,系统是否还处于安全状态,若安全,把资源分配给进程pi;否则,恢复原来的资源分配状态,让进程pi等待。4. 安全性算法: int workRESOURCE_NUMBER; bool finishPROCESS_NUMBER; 1) Work=Available; Finish=false; 2) 寻找满足条件的i: A、Finishi=false; B、NeediWork; 如果不存在,则转4) 3) Work:=Work+Allocationi; Finishi:=true;转2) 4) 若对所有i,Finishi=true,则系统处于安全状态,否则处于不安全状态 四、 数据结
5、构: 数组五、 程序代码:#include#include#include#includeusing namespace std;#define N 3 /进程数#define M 3 /资源数int AvailableM; /可用的资源数int NeedNM=0; /还需要的资源数int MaxNM; /最大需求量int AllocationNM = 0; /当前分配到的资源数int RequestNM=0; /请求的资源数int n;time_t t;int isFinishN =0; /判断进程是否已经请求资源结束int test1 = 0;void Requester(); /进程随机
6、请求资源数目void Handle(); /处理该请求bool Check(); /安全性算法检查void show(); /打印出当前的进程资源状态int Finish(int); /进程是否已经完成,若完成返回1,否则为0void main()int i;int j;cout 请输入各个资源的可用数目:;for(i=0; i Availablei; cout 请依次输入各个进程对各个资源的最大需求数目: endl;for(i=0; iN; i+)for(j=0; j Maxij;Needij = Maxij - Allocationij;cout -原始状态- endl;show();in
7、t test = 0;int testP = 0;int testR = 0;doRequester ();test+;while(test != 10);int Finish(int i)int test = 0;int w = i; for(int j=0; jM; j+)if(Needwj = 0) /对j资源的需求量已经为0test+;if(test = M) /如果对每个资源的需求量都已经为0isFinishw = 1; /则将其设为1,代表已经完成return isFinishw;void Requester ()time_t t;int test = 0;srand(unsign
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行家 算法 模拟 实现 实验 报告 17
限制150内