- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
江苏师范大学—操作系统实验
一、实验名称:资源分配管理
二、实验目的
模拟实现银行家算法,用银行家算法实现资源分配和安全性检查。通过本次实验,使学生加深对死锁概念的理解和掌握,并培养学生对操作系统开发的兴趣与应用能力。
三、实验内容
设计五个进程{P0,P1,P2,P3,P4}共享三类资源{A,B,C}的系统,{A,B,C}的资源数量分别为10,5,7。进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。在T0时刻的资源分配情况如下图所示:
(1)若进程P1请求资源,发出请求向量Request1(1,0,2),编写程序用银行家算法判断系统能否将资源分配给它; (2)若进程P2提出请求Request2(0,1,0),用银行家算法程序验证系统能否将资源分配给它。
要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列。
//VC 6.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 Nee
文档评论(0)