- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
江苏师范大学—操作系统实验
一、实验名称:资源分配管理
二、实验目的
模拟实现银行家算法,用银行家算法实现资源分配和安全性检查通过本次实验,使学生加深对死锁概念的理解和掌握并培养学生对操作系统开发的兴趣与应用能力设计五个进程{P0,P1,P2,P3,P4}共享三类资源{A,B,C}的系统,{A,B,C}的资源数量分别为10,5,7。进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。在T0时刻的资源分配情况如下图所示:
(1)若进程P1请求资源,发出请求向量Request1(1,0,2),编写程序用银行家算法判断系统能否将资源分配给它; (2)若进程P2提出请求Request(0,1,0),用银行家算法程序验证系统能否将资源分配给它。
要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列#include iostream
#include string
using namespace std;
//各种资源关系的数组
int MAX[5][3]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};
int Allocation[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 max[5][3];
int allocation[5][3];
int need[5][3];
int a=0,b=0,c=0;
int flag=1;
//记录安全序列
int safe[5]={0,0,0,0,0},temp=0;
//初始化函数。
int Init(){
a=3;b=3;c=2;
for (int i=0;i5;i++)
for(int j=0;j3;j++)
{
need[i][j]=Need[i][j];
max[i][j]=MAX[i][j];
allocation[i][j]=Allocation[i][j];
}
return 0;
}
//试分配资源
int Try_request(int i,int A,int B,int C)
{
if((A=a)(B=b)(C=c)(A=Need[i][0])(B=Need[i][1])(C=Need[i][2]))
{
Allocation[i][0]=Allocation[i][0]+A;
Allocation[i][1]=Allocation[i][1]+B;
Allocation[i][2]=Allocation[i][2]+C;
Need[i][0]=Need[i][0]-A;
Need[i][1]=Need[i][1]-B;
Need[i][2]=Need[i][2]-C;
a=a-A;
b=b-B;
c=c-C;
return 1;
}
else
return 0;
}
//资源分配。
int Request(int i){
if((Need[i][0]=a)(Need[i][1]=b)(Need[i][2]=c))
{
a=Allocation[i][0]+a;
b=Allocation[i][1]+b;
c=Allocation[i][2]+c;
return 1;
}
else
return 0;
}
//显示函数。
void display(int i)
{
if(i=5)
cout Pi MAX[i][0] MAX[i][1] MAX[i][2] Allocation[i][0] Allocation[i][1]
Allocation[i][2] Need[i][0] Need[i][1] Need[i][2] a b cendl;
}
//恢复原来的数据。
void Recovery()
{
for(int i=0;i5;i++)
for(int j=0;j3;j++)
{
Need[i][j]=need[i][j];
MAX[i][j]=max[i][j];
Allocation[i][j]=allocation[i][j];
} a=3;b=3;c=2;flag=1;temp=0;
for( i=0;i5;i++)
safe[i]=0;
}
void runing(){
cout 进 程 Max Allocation Need Availableendl;
cout 进程名
您可能关注的文档
最近下载
- 静脉输液考试试题及答案.docx
- 2024-2025学年小学信息技术(信息科技)四年级上册湘科版(2024)教学设计合集.docx
- Tecsun德生PL368使用说明书.pdf
- 港口城市发展的动态研究——兼论上海国际航运中心建设-产业经济专业论文.docx VIP
- 第一单元起始课课件(34张PPT)2021-2022学年统编版高中语文必修上册.pptx
- 人教版七年级上册历史课件(全册).pptx VIP
- 桥本氏甲状腺炎课件.ppt VIP
- 完整word封条样式.doc VIP
- 老年人体重管理.pptx VIP
- 输变电工程数字化移交技术导则第1部分:变电站(换流站)[附编制说明],Q_GDW11812.1-2018.pdf VIP
文档评论(0)