计算机操作系统课程设计报告(6)

2019-03-16 11:43

printf(\请输入资源种类数:\

scanf(\

printf(\请输入最大需求矩阵:\\n\

for(i=0;i

for(j=0;j

for(i=0;i

printf(\请输入可利用资源矩阵\\n\

for(i=0;i

print(); //输出已知条件

check(); //检测T0时刻已知条件的安全状态 if(r==1) //如果安全则执行以下代码 {

do{ q=0;

p=0;

printf(\请输入请求资源的进程号(0~4):\\n\

for(j=0;j<=10;j++) {

scanf(\

if(i>=no1) { printf(\输入错误,请重新输入:\\n\ continue; }

else break; }

printf(\请输入该进程所请求的资源数request[j]:\\n\for(j=0;j

scanf(\for(j=0;jneed[i][j]) p=1;

26

//判断请求是否超过该进程所需要的资源数

if(p) printf(\请求资源超过该进程资源需求量,请求失败!\\n\ else { for(j=0;j

if(request[j]>available[j]) q=1; //判断请求是否超过可用资源数 if(q) printf(\没有做够的资源分配,请求失败!\\n\ else //请求满足条件 { for(j=0;j

allocation1[i][j]=allocation[i][j];

need1[i][j]=need[i][j];

//保存原已分配的资源数,仍需要的资源数和可用的资源数 available[j]=available[j]-request[j];

allocation[i][j]+=request[j];

need[i][j]=need[i][j]-request[j];

//系统尝试把资源分配给请求的进程 }

print();

check(); //检测分配后的安全性 if(r==0) //如果分配后系统不安全 { for(j=0;j

available[j]=available1[j];

allocation[i][j]=allocation1[i][j];

need[i][j]=need1[i][j];

//还原已分配的资源数,仍需要的资源数和可用的资源数 }

printf(\返回分配前资源数\\n\

print();

} }

}printf(\你还要继续分配吗?Y or N ?\\n\

//判断是否继续进行资源分配

c=getche(); }while(c=='y'||c=='Y');

}

27

}

void check() //安全算法函数 {

int k,f,v=0,i,j; int work[m],a[m]; bool finish[m]; r=1;

for(i=0;i

work[i]=available[i];//work[i]表示可提供进程继续运行的各类资源数 k=no1;

do{ for(i=0;i

{

if(finish[i]==false) {

f=1;

for(j=0;j

if(need[i][j]>work[j]) f=0;

if(f==1) //找到还没有完成且需求数小于可提供进程继续运行{ }

的资源数的进程

}

finish[i]=true;

a[v++]=i; //记录安全序列号

for(j=0;j

}

k--; //每完成一个进程分配,未完成的进程数就减1

}while(k>0); f=1;

for(i=0;i

if(finish[i]==false) { }

f=0; break;

28

if(f==0) //若有进程没完成,则为不安全状态 { printf(\系统处在不安全状态!\ r=0;

} else { printf(\系统当前为安全状态,安全序列为:\\n\ for(i=0;i

}

void print() //输出函数 { int i,j;

printf(\

printf(\此时刻资源分配情况*********************\\n\

printf(\进程名/号 | 最大需求矩阵 | 当前分配矩阵 | 需求矩阵 for (i = 0; i < no1; i++) { printf(\ p%d/%d \

for (j = 0; j < no2; j++)

{printf(\ \

for (j = 0; j < no2; j++)

{printf(\ %d \

for (j = 0; j < no2; j++)

{printf(\ \

printf(\

}

printf(\ printf(\各类资源可利用的资源数为:\ for (j = 0; j < no2; j++)

{printf(\

printf(\

}

|\\n\

29

程序运行结果及分析

30

31


计算机操作系统课程设计报告(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于5S管理工作推进的通知

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: