操作系统实验--死锁的避免程序.doc

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

#includestdio.h #include stdlib.h /*#define n 5//进程总数 #define m 3//资源种类数 */ struct claim { int user;//存放申请的进程 int num[3];//存放申请改进程各类资源的数量 }claims; int alloc[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}}; int need[5][3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}}; int avail[3]={3,3,2}; output(int i,int work[],int alloc[],int need[],int finish) { printf(\n****************************************************); printf(\n进程 need alloc work finish ); printf(\n%3d* %3d %3d %3d * %3d %3d %3d * %3d %3d %3d *%3d ,i,need[0],need[1],need[2],alloc[0],alloc[1],alloc[2],work[0],work[1],work[2],finish); printf(\n***********************************************); } void input() { printf(请输入你要请求资源的进程(0~4):\n); scanf(%d,claims.user); printf(请输入请求进程第一项资源的数量:\n); scanf(%d,claims.num[0]); printf(请输入请求进程第一项资源的数量:\n); scanf(%d,claims.num[1]); printf(请输入请求进程第一项资源的数量:\n); scanf(%d,claims.num[2]); } int judge(int finish[5],int need[5][3],int work[3]) //改函数用来判断当前work[]数组中的各类资源数量能否满足系统继续运行 //如果满足则返回0,不满足返回1 {int i; for(i=0;i5;i++) if((finish[i]==0)(need[i][0]=work[0])(need[i][1]=work[1])(need[i][2]=work[2])) {return 0; break; } return 1; } //银行家算法函数 int bank(int alloc[][3],int need[][3],int avail[3]) { int p,i,j,flag,panduan; int work[3],finish[5]; input(); for(i=0;i3;i++) //判断一开始的条件是否能满足 { if(claims.num[i]need[claims.user][i]||claims.num[i]avail[i]) { flag=0; break; } else flag=1; } if(flag==0) return 0;//不满足条件,直接判断不能分配 else//满足条件 { for(i=0;i3;i++)//修改alloc[][3],int need[][3],int avail[3]的值 { avail[i]=avail[i]-claims.num[i]; alloc[claims.user][i]=alloc[claims.user][i]+claims.num[i]; need[claims.user][i]=need[claims.user][i]-claims.num[i]; } //下面将根据安全性算法检查此系统是否安全 for(p=0;p5;p++) { finish[p]=0;//初始化finish[]数组 } for(p=0;p3;p++) { work[p]=avail[p]

文档评论(0)

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

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

1亿VIP精品文档

相关文档