77范文网 - 专业文章范例文档资料分享平台

操作系统实验报告之银行家算法和随机算法实现资源分配

来源:网络收集 时间:2020-06-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

操作系统实验三:银行家算法

时间:2013-12-13

地点:计算机实验机房2

实验人:朱蓉蓉 学号:E01114336

本次实验主要针对银行家算法的实现和安全序列的检测。

银行家算法实验代码: #include #include #include #define False 0 #define True 1

using namespace std;

int Max[100][100]={0};//各进程所需各类资源的最大需求 int Avaliable[100]={0};//系统可用资源 char name[100]={0};//资源的名称

int Allocation[100][100]={0};//系统已分配资源 int Need[100][100]={0};//还需要资源 int Request[100]={0};//请求资源向量 int temp[100]={0};//存放安全序列

int Work[100]={0};//存放系统可提供资源 int M=100;//进程的最大数为 int N=100;//资源的最大数为 void showdata()//显示资源矩阵 {

int i,j;

cout<<\系统目前可用的资源[Avaliable]:\ for(i=0;i

for (j=0;j

cout<

cout<<\

cout<<\进程名 \for(j=0;j<3;j++){ for(i=0;i

cout<

}

cout<

for(i=0;i

cout<<\ for(j=0;j

cout<

cout<

cout<

int changdata(int i)//进行资源分配 {

int j;

for (j=0;j

Avaliable[j]=Avaliable[j]-Request[j];

Allocation[i][j]=Allocation[i][j]+Request[j]; Need[i][j]=Need[i][j]-Request[j]; }

return 1; }

int safe()//安全性算法 {

int i,k=0,m,apply,Finish[100]={0}; int j;

int flag=0;

Work[0]=Avaliable[0]; Work[1]=Avaliable[1]; Work[2]=Avaliable[2]; for(i=0;i

for(j=0;j

if (Finish[i]==False&&Need[i][j]<=Work[j]){ apply++;

if(apply==N){

for(m=0;m

Work[m]=Work[m]+Allocation[i][m];//变分配数 Finish[i]=True; temp[k]=i; i=-1;

k++; flag++; } } } }

for(i=0;i

if(Finish[i]==False){

cout<<\系统不安全\不成功系统不安全 return -1; } }

cout<<\系统是安全的!\如果安全,输出成功 cout<<\分配的序列:\

for(i=0;i

if(i

cout<

void share()//利用银行家算法对申请资源对进行判定 {

char ch;

int i=0,j=0; ch='y';

cout<<\请输入要求分配的资源进程号(0-\ cin>>i;//输入须申请的资源号

cout<<\请输入进程\申请的资源:\ for(j=0;j

cout<

cin>>Request[j];//输入需要申请的资源 }

for (j=0;j

if(Request[j]>Need[i][j])//判断申请是否大于需求,若大于则出错 {

cout<<\进程\申请的资源大于它需要的资源\ cout<<\分配不合理,不予分配!\ ch='n'; break; }

else {

if(Request[j]>Avaliable[j])//判断申请是否大于当前资源,若大于则

{ //出错

cout<<\进程\申请的资源大于系统现在可利用的资源\ cout<<\分配出错,不予分配!\ ch='n'; break; } } }

if(ch=='y') {

changdata(i);//根据进程需求量变换资源

showdata();//根据进程需求量显示变换后的资源 safe();//根据进程需求量进行银行家算法判断 } }

void addresources(){//添加资源 int n,flag; }

cout<<\请输入需要添加资源种类的数量:\cin>>n; flag=N; N=N+n;

for(int i=0;i

cout<<\名称:\cin>>name[flag];

cout<<\数量:\

cin>>Avaliable[flag++]; }

showdata(); safe();

void delresources(){//删除资源 char ming; int i,flag=1;

cout<<\请输入需要删除的资源名称:\do{

cin>>ming;

for(i=0;i

if(ming==name[i]){ flag=0; break; } if(i==N)

cout<<\该资源名称不存在,请重新输入:\}

while(flag);

}

for(int j=i;j

name[j]=name[j+1];

Avaliable[j]=Avaliable[j+1]; }

N=N-1;

showdata(); safe();

void changeresources(){//修改资源函数

cout<<\系统目前可用的资源[Avaliable]:\ for(int i=0;i

cout<

cout<<\输入系统可用资源[Avaliable]:\

cin>>Avaliable[0]>>Avaliable[1]>>Avaliable[2]; cout<<\经修改后的系统可用资源为\for (int k=0;k

cout<

void addprocess(){//添加作业 int flag=M; M=M+1; }

cout<<\请输入该作业的最大需求量[Max]\for(int i=0;i>Max[flag][i];

Need[flag][i]=Max[flag][i]-Allocation[flag][i]; }

showdata(); safe();

int main()//主函数 {

int i,j,number,choice,m,n,flag; char ming;

cout<<\ cout<<\

cout<<\银行家算法的实现 ||\cout<<\cout<<\朱蓉蓉 ||\cout<<\cout<<\

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统实验报告之银行家算法和随机算法实现资源分配在线全文阅读。

操作系统实验报告之银行家算法和随机算法实现资源分配.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1103510.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: