版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实 验 报 告实验课程:操作系统学生姓名:学 号:专业班级:20 级计算机科学与技术专业 班2015年 月 日实验一 银行家算法的模拟一、实验目的(1) 加深了解有关资源申请、避免死锁等概念。(2) 体会和了解死锁和避免死锁的具体实施方法。二、实验知识点1死锁的相关知识。 2银行家算法。3系统安全性检查。三、实验内容1设定系统提供资源的初始状况。 2设定每次某个进程对各类资源的申请表示。3编制程序,依据银行家算法,决定其资源申请是否得到满足。4显示资源申请和分配时的变化情况。四、设计理论描述本设计的目的是通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有
2、效地防止和避免死锁地发生。要求如下:(1) 模拟一个银行家算法;(2) 初始化时让系统拥有一定的资源;(3) 用键盘输入的方式申请资源;(4) 如果预分配后,系统处于安全状态,则修改系统的资源分配情况;(5) 如果预分配后,系统处于不安全状态,则提示不能满足请求,设计的主要内容是模拟实现动态资源分配。同时编写和调试一个系统动态资源的简单模拟程序,观察死锁产生的条件,并使用适当的算法,有效的防止和避免死锁的发生。银行家算法. 顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略
3、时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,则进程都无法继续执行下去的死锁现象。把一个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。显然,每个进程的资源需求总量不能超过系统拥有的资源总数, 银行算法进行资源分配可以避免死锁。五、算法描述1.银行家算法: 设进程i提出请求Requestn,则银行家算法按
4、如下规则进行判断。 (1)如果Requestn>Needi,n,则报错返回。 (2)如果Requestn>Available,则进程i进入等待资源状态,返回。 (3)假设进程i的申请已获批准,于是修改系统状态: Available=Available-Request Allocation=Allocation+Request Need=Need-Request(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 2.安全性检查 (1)设置两个工作向量Work=Available;FinishM=False(2)从进程集合中找到一个满足下述条件
5、的进程, Finish i=False Need<=Work 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work=Work+Allocation Finish=True GO TO 2 (4)如所有的进程FinishM=true,则表示安全;否则系统不安全。六、算法运行界面七、程序代码#include<iostream>#include<string.h>#include<stdio.h>#define False 0#define True 1using namespace std;int Ma
6、x100100=0;/各进程所需各类资源的最大需求int Avaliable100=0;/系统可用资源char name100=0;/资源的名称int Allocation100100=0;/系统已分配资源int Need100100=0;/还需要资源int Request100=0;/请求资源向量int temp100=0;/存放安全序列int Work100=0;/存放系统可提供资源int M=100;/进程的最大数为int N=100;/资源的最大数为void showdata()/显示资源矩阵int i,j;cout<<"系统目前可用的资源Avaliable:&q
7、uot;<<endl;for(i=0;i<N;i+) cout<<namei<<" "cout<<endl;for (j=0;j<N;j+) cout<<Avaliablej<<" "/输出分配资源cout<<endl;cout<<" Max Allocation Need"<<endl;cout<<"进程名 "for(j=0;j<3;j+)for(i=0;i<N;i+)c
8、out<<namei<<" "cout<<" "cout<<endl;for(i=0;i<M;i+)cout<<" "<<i<<" "for(j=0;j<N;j+)cout<<Maxij<<" "cout<<" "for(j=0;j<N;j+)cout<<Allocationij<<" "cout
9、<<" "for(j=0;j<N;j+)cout<<Needij<<" "cout<<endl;int changdata(int i)/进行资源分配 int j;for (j=0;j<M;j+) Avaliablej=Avaliablej-Requestj;Allocationij=Allocationij+Requestj;Needij=Needij-Requestj;return 1;int safe()/安全性算法int i,k=0,m,apply,Finish100=0;int j;i
10、nt flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;for(i=0;i<M;i+) apply=0;for(j=0;j<N;j+)if (Finishi=False&&Needij<=Workj) apply+;if(apply=N)for(m=0;m<N;m+)Workm=Workm+Allocationim;/变分配数Finishi=True;tempk=i;i=-1; k+;flag+;for(i=0;i<M;i+)if(Finishi=False)cout<<
11、"系统不安全"<<endl;/不成功系统不安全return -1; cout<<"系统是安全的!"<<endl;/如果安全,输出成功 cout<<"分配的序列:"for(i=0;i<M;i+)/输出运行进程数组cout<<tempi;if(i<M-1) cout<<"->"cout<<endl;return 0;void share()/利用银行家算法对申请资源对进行判定char ch;int i=0,j=0;ch
12、='y'cout<<"请输入要求分配的资源进程号(0-"<<M-1<<"):" cin>>i;/输入须申请的资源号cout<<"请输入进程"<<i<<" 申请的资源:"<<endl;for(j=0;j<N;j+)cout<<namej<<":"cin>>Requestj;/输入需要申请的资源 for (j=0;j<N;j+)if(Requ
13、estj>Needij)/判断申请是否大于需求,若大于则出错 cout<<"进程"<<i<<"申请的资源大于它需要的资源"cout<<" 分配不合理,不予分配!"<<endl;ch='n'break;else if(Requestj>Avaliablej)/判断申请是否大于当前资源,若大于则 /出错cout<<"进程"<<i<<"申请的资源大于系统现在可利用的资源"cout
14、<<" 分配出错,不予分配!"<<endl;ch='n'break; if(ch='y') changdata(i);/根据进程需求量变换资源showdata();/根据进程需求量显示变换后的资源safe();/根据进程需求量进行银行家算法判断 int main()/主函数 int i,j,number,choice,m,n,flag; char ming;cout<<"*单处理机系统进程调度实现*"<<endl;cout<<endl;cout<<&q
15、uot;请输入系统可供资源种类的数量:"cin>>n;N=n;for(i=0;i<n;i+)cout<<"资源"<<i+1<<"的名称:"cin>>ming;namei=ming;cout<<"资源的数量:"cin>>number;Avaliablei=number;cout<<endl;cout<<"请输入作业的数量:"cin>>m;M=m;cout<<"请输入各进程的最大需求量("<<m<<"*"<<n<<"矩阵)Max:"<<endl;for(i=0;i<m;i+)for(j=0;j<n;j+)cin>>Maxij;doflag=0;cout<<"请输入各进程已经申请的资源量("<<m<<"*"<<n<<"矩阵)Allocation:"<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度文化创意产业投资合作协议2篇
- 2025年产权车位买卖及车位增值服务与物业管理合同4篇
- 个人居间服务合同模板:房产交易中介合同版
- 2024年环保型废纸买卖合同
- 2024版医疗设备采购合同
- 2025年度环保材料销售代理合同模板4篇
- 中英双语2024年土地租赁协议模板版B版
- 2025年度现代服务业场承包经营合同样本3篇
- 个人借款担保责任合同范本2024版B版
- 2025年度征收拆迁安置房买卖合同范本(含安置补偿与产权过户)4篇
- 2023年湖北省武汉市高考数学一模试卷及答案解析
- 城市轨道交通的网络安全与数据保护
- 英国足球文化课件
- 《行政职业能力测验》2023年公务员考试新疆维吾尔新疆生产建设兵团可克达拉市预测试题含解析
- 医院投诉案例分析及处理要点
- 烫伤的安全知识讲座
- 工程变更、工程量签证、结算以及零星项目预算程序实施细则(试行)
- 练习20连加连减
- 五四制青岛版数学五年级上册期末测试题及答案(共3套)
- 员工内部岗位调换申请表
- 商法题库(含答案)
评论
0/150
提交评论