银行家算法+LRU+SSTF+成组链接法+生产者消费者.docx
- 文档编号:2464371
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:16
- 大小:17.39KB
银行家算法+LRU+SSTF+成组链接法+生产者消费者.docx
《银行家算法+LRU+SSTF+成组链接法+生产者消费者.docx》由会员分享,可在线阅读,更多相关《银行家算法+LRU+SSTF+成组链接法+生产者消费者.docx(16页珍藏版)》请在冰豆网上搜索。
银行家算法+LRU+SSTF+成组链接法+生产者消费者
银行家算法:
#include
#include
usingnamespacestd;
voidinput();//实现数据的输入
voidfindmax();//计算每个进程当前的需求
voidbanker();//银行家算法
voidjudge();//最后的判断
intavailabel[4];//系统可利用资源向量
intMax[6][6];//最大需求矩阵
intAllocation[6][6];//系统已经分配给进程的资源统计
intNeed[6][6];//进程总共需求的资源
boolflag[4];//该进程时候已经执行完成,如果执行完成,释放内存资源
intmain()
{
input();
findmax();
banker();
judge();
return0;
}
voidinit()
{
memset(flag,0,sizeof(flag));
}
voidinput()
{
cout<<"请依次输入系统中A,B,C,的数量:
"< cin>>availabel[1]>>availabel[2]>>availabel[3]; cout<<"请输入五个进程对系统中三类资源的需求量: "< for(inti=1;i<=5;i++) { for(intj=1;j<=3;j++) { cin>>Need[i][j]; } } cout<<"请输入系统资源的分配情况(系统已经分配给这五个进程的资源统计)"< for(inti=1;i<=5;i++) { for(intj=1;j<=3;j++) { cin>>Allocation[i][j]; } } } voidfindmax() { for(inti=1;i<=5;i++) { for(intj=1;j<=3;j++) { Max[i][j]=Need[i][j]-Allocation[i][j]; } } for(inti=1;i<=3;i++) { for(intj=1;j<=5;j++) { availabel[i]-=Allocation[j][i];//表示资源第一次分配之后系统剩下的资源 } } } voidbanker() { for(inti=1;i<=5;i++) { if(availabel[1]>=Max[i][1]&&availabel[2]>=Max[i][2]&&availabel[3]>Max[i][3]&&! flag[i]) { availabel[1]+=Need[i][1]; availabel[2]+=Need[i][2]; availabel[3]+=Need[i][3]; flag[i]=1; cout<<"进程"< i=0;//目的是为了使如果有一个进程执行完成,然后再从第一个没有被执行的进程开始执行 } } } voidjudge() { if(flag[1]==1&&flag[2]==1&&flag[3]==1&&flag[4]==1) { cout<<"系统安全,以上顺序为进程的执行顺序"< } else { cout<<"系统不安全,形成死锁"< } } LRU算法: #include #include usingnamespacestd; intcheak(intp); voidshow(); intnum[6]; intcount=0; intmain() { inta; memset(num,-1,sizeof(num)); cout<<"*********************************************"< cout<<"*********LRL算法实现***************"< cout<<"*********输入-1结束输入************"< cout<<"*********copyright@liuhui*********"< cout<<"*********************************************"< while(cin>>a&&a! =-1) { intindex=cheak(a); if(index! =0) { for(inti=index+1;i<=count;i++) { num[i-1]=num[i]; } num[count]=a; cout< "< cout<<"现在的顺序是: "< show(); } else { if(count<5) { num[++count]=a; cout<<"把"< cout<<"现在的顺序是:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行家 算法 LRU SSTF 成组 链接 生产者 消费者