- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用银行家算法实现资源分配
南 通 大 学
杏林学院
操作系统实验(用银行家算法实现资源分配)
班级:计121
小组成员:方筱雯 1213023008
周徐莲 1213023014
指导老师:丁卫平
一:实验目的
为了了解系统的资源分配情况,假定系统的任何一种资源在任一时刻只能被一个进程使用。任何资源已经占用的资源只能由自己释放,而不能由其他进程抢占。当进程申请的资源不能满足时,必须等待。因此,只要资源分配算法能保证进程的资源请求,且不出现循环等待,则系统不会出现死锁。
编写模拟系统进行资源调度的程序,采用银行家算法,有效的避免死锁的产生。模拟进程的分配算法,了解死锁的产生和避免的办法。
二:实验要求
(1):为了观察死锁产生和避免的情况,要求设计3到4个并发进程,共享系统的10个同类不可抢占的资源。各进程是动态进行资源的申请和释放。
(2):用银行家算法设计一个资源分配程序,运行这个程序,观察系统运行情况,并对系统运行的每一步进行显示。
三:实验流程图
四:源程序
#includeiostream.h
#includestring.h
#includeiomanip.h
#includestdlib.h
#define MaxNumber 100
//定义进程控制块
struct Process_struct{
int Available[MaxNumber]; //可利用资源数组
int Max[MaxNumber][MaxNumber]; //最大需求矩陈
int Allocation[MaxNumber][MaxNumber]; //分配矩陈
int Need[MaxNumber][MaxNumber]; //需求矩陈
int Request[MaxNumber][MaxNumber]; //M个进程还需要N类资源的资源量
int Finish[MaxNumber];
int p[MaxNumber];
}Process;
int M,N; //M个进程,N类资源
int i,j,k,l=0;
int Work[MaxNumber]; //可利用资源
int Pinput();
int Safe();
int Peques();
//进程输入
int Pinput()
{
int i,j;
cout输入进程的数目:\n;
cinM;
cout输入资源的种类:\n;
cinN;
cout输入每个进程最多所需的各类资源数,按照MxN矩阵输入\n;
for(i=0;iM;i++)
for(j=0;jN;j++)
cinProcess.Max[i][j];
cout输入每个进程已经分配的各类资源数,按照MxN矩阵输入\n;
for(i=0;iM;i++)
{
for(j=0;jN;j++)
{
cinProcess.Allocation[i][j];
Process.Need[i][j] = Process.Max[i][j] - Process.Allocation[i][j];
if(Process.Need[i][j] 0)
{
cout你输入的第i+1个进程所拥有的第j+1个资源错误,请重新输入:\n;
j--;
continue;
}
}
}
cout请输入各个资源现有的数目:\n;
for(i=0;iN;i++)
cinProcess.Available[i];
return 1;
}
//安全性算法
int Safe()
{
for(i=0;iN;i++)
Work[i]=Process.Available[i];
for(i=0;iM;i++)
Process.Finish[i]=0;
for(i=0;iM;i++)
{
if(Process.Finish[i]==1)
continue;
else
{
for(j=0;jN;j++)
{
if(Process.Need[i][j]Work[j])
break;
}
if(j==N)
{
Process.Finish[i]=1;
for(int k=0;kN;k++)
Work[k]+=Process.Allocation[i][k];
Process.p[l++]=i;
i=-1;
}
您可能关注的文档
- 用PICC编译器语言开发PIC系列单片机的代码.doc
- 用PLC控制飞机.doc
- 用redis实现支持优先级的消息队列.doc
- 用SPSS进行详细的主成分分析步骤.doc
- 用VC++6.0实现PC机与单片机之间.doc
- 用vf做的茶叶管理系统课程设计.doc
- 用三佳编程器改DVD遥控方法.doc
- 用三维算量2014你不能不知道的功能一.doc
- 用代入法解二元一次方程组教案.doc
- 用关系式表示变量间的关系.doc
- 第5课 控制系统的三个环节(教学设计)2023-2024学年五年级下册信息科技浙教版.docx
- 2024-2025学年高中历史必修三北师大版教学设计合集.docx
- 2024-2025学年初中音乐九年级下册苏少版(2024)教学设计合集.docx
- 2024-2025学年初中信息技术(信息科技)七年级上册川教版(2019)教学设计合集.docx
- 2024-2025学年高中地理必修二鲁教版教学设计合集.docx
- 【新课标】Unit 2 What time is it整体单元教学设计.docx
- 2024-2025学年初中信息技术(信息科技)八年级上册滇人版(2016)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)四年级上册西师大版教学设计合集.docx
- 2024-2025学年高中地理选择性必修2中图中华地图版教学设计合集.docx
- 2024-2025学年初中信息技术(信息科技)八年级上册湘电子版(2019)教学设计合集.docx
文档评论(0)