实验二 死锁的避免.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二 死锁的避免

实验二 死锁的避免 班级: 学号: 姓名: 1. 实验内容 模拟进程的资源分配算法 2.实验目的 为了了解系统的资源分配情况,假定系统的任何一种资源在任一时刻只能被一个进程使用。任何进程已经占用的资源只能由进程自己释放,而不能由其他进程抢占。当进程申请的资源不能满足时,必须等待。因此,只要资源分配算法能保证进程的资源请求,且不出现循环等待,则系统不会出现死锁。 编写模拟系统进行资源调度的程序,采用银行家算法,有效地避免死锁的产生。 模拟进程的资源分配算法,了解死锁的产生和避免的方法。 3.实验设计 3.1 数据结构设计 使用银行家算法过程中,当某个进程提出资源请求时,假定系统先分配给它,之后用系统安全性检查算法对系统进行安全性检查。若系统安全,则假定分配变成真的分配,若系统不安全,假定分配作废,让进程等待。 void judge()//利用银行家算法对申请资源对进行判定 { char ch; int i=0,j=0; ch=y; cout请输入需要资源的进程号(0-N-1):; cini;//输入须申请的进程号 cout请输入进程 i 申请的资源:endl; for(j=0;jM;j++) { coutname[j]:; cinRequest[j];//需要申请的资源 } for (j=0;jM;j++){ if(Request[j]Need[i][j]||Request[j]Avaliable[j])//判断申请是否大于需求和可分配的资源数目 { cout进程 i申请的资源不符合要求; cout 无法分配!endl; ch=n; break; } } if(ch==y) { resource_allocation(i);//根据进程需求量变换资源 show();//根据进程需求量显示变换后的资源 safe();//根据进程需求量进行银行家算法判断 } } 在进行系统安全性检查时,第一步,把各进程的剩余资源量与系统的剩余资源量进行比较,检查系统剩余资源量是否可供分配,若是,进行第二步,若不是,进行第三步。第二步,将资源分配给当前进程,此时,该进程已获得所需的所有资源量,标记该进程为TRUE,并将它占有资源归还系统,继续进行第一步的操作。第三步,检查是否所有资源都标记为TRUE,若是,则系统安全,否则,系统不安全。 int safe()//安全性算法 { int i,j,k=0,m,apply,Finish[100]; int flag=0; still[0]=Avaliable[0]; still[1]=Avaliable[1]; still[2]=Avaliable[2]; for(i=0;iN;i++){ apply=0; for(j=0;jM;j++){ if(Finish[i]==FalseNeed[i][j]=still[j]){ apply++; if(apply==M){ for(m=0;mM;m++) still[m]=still[m]+Allocation[i][m];//变分配数 Finish[i]=True; safequeue[k]=i; i=-1; k++; flag++; } } } } for(i=0;iN;i++){ if(Finish[i]==False){ cout安全序列不存在!endl;//不成功,系统不安全 return -1; } } cout系统安全endl;//如果安全,输出成功 cout分配的序列:; for(i=0;iN;i++){//输出运行进程数组 coutsafequeue[i]; if(iN-1) cout-; } coutendl; return 0; } 3.2 求解方法 在安全状态下系统收到进程资源请求后,先把资源试探性地分配给它。现在,系统将剩余资源和其他进程还需要的资源数进行比较,找出剩余资源量能满足最大需求量的进程,从而保证进程运行完毕并把资源归还系统。这时,将该进程标记为TRUE,在安全序列中添加该进程,归还其占有的所有资源,反复执行以上步骤。最后,检查进程的标记,若都为TRUE,则系统安全,输出安全序列,若有进程标记为FALSE,则系统不安全。 程序结构如下: 4.实验结果 1.系统资源设置界面 2.进程数目、最大需求量、已分配资源数的设置界面 3.主菜单界面 4.输入1,进行资源的分

文档评论(0)

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

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

1亿VIP精品文档

相关文档