实验一
更新时间:2024-04-19 17:29:01 阅读量: 综合文库 文档下载
实验一、进程管理与进程同步
实验目的:
了解进程管理的实现方法,理解和掌握处理进程同步问题的方法。
实验内容:
实现银行家算法、进程调度过程的模拟、读者-写者问题的写者优先算
法。
实验步骤:
? 理解安全性算法和银行家算法的核心机制:
针对3类资源、5个进程的情况,设计相应的数据结构,分别表示
每个进程占用各类资源的情况;
编程实现安全性算法函数,编制主函数,动态输入资源的占用情况,
进程的资源申请,调用安全性函数,实现银行家算法;
测试:输入可分配和不可分配的请求,测试系统的正确性。
代码:
#include
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;//作业的最大数为100 int N=100;//资源的最大数为100 void showdata()//显示资源矩阵 {
int i,j;
cout<<\系统目前可用的资源[Avaliable]:\ for(i=0;i cout< cout<<\ Max Allocation cout<<\进程名 \ for(j=0;j<3;j++){ for(i=0;i cout< cout<<\ \ for(j=0;j cout< int changdata(int i)//进行资源分配 { int j; for (j=0;j Avaliable[j]=Avaliable[j]-Request[j]; Need\ 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 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 cout<<\系统不安全\不成功系统不安全 return -1; } } cout<<\系统是安全的!\如果安全,输出成功 cout<<\分配的序列:\ for(i=0;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();//根据进程需求量进行银行家算法判断 } } int main()//主函数 { int i,j,number,m,n,flag; char ming; cout<<\银行家算法的实现*****************\cout<<\请首先输入系统可供资源种类的数量:\cin>>n; N=n; for(i=0;i cout<<\资源\的名称:\ cin>>ming; name[i]=ming; cout<<\资源的数量:\ cin>>number; Avaliable[i]=number; } cout< cout<<\请输入作业的数量:\ cin>>m; M=m; cout<<\请输入各进程的最大需求量(\矩阵)[Max]:\for(i=0;i cout<<\请输入各进程已经申请的资源量(\矩阵)[Allocation]:\ for(i=0;i Need[i][j]=Max[i][j]-Allocation[i][j]; } if(flag) cout<<\申请的资源大于最大需求量,请重新输入!\\n\} while(flag); showdata();//显示各种资源 safe();//用银行家算法判定系统是否安全 cout<<\银行家算法演示***************\ return 1; } 实验结果: 银行家算法程序提供一个用户界面,可以在上边发出资源申请命令,系 统应能给出是否可以接受申请,并且有结论输出; 进程调度模拟程序根据一个进程调度文件,模拟进程的各种调度过程, 用适合的表达方式表示出来。 写者优先同步控制程序根据一个读写进程模拟信息文件,按照写者优先 同步控制过程,用适合的表达方式表示出各读写进程的执行次序。
正在阅读:
实验一04-19
C7000服务器维护文档 - 图文04-25
02神经肌肉组织(2)07-23
2018年上海市初三九年级语文数学英语物理化学一模试题及答案05-01
随班就读文件01-20
广西各自来水公司通讯录11-22
一种涡桨类飞机单发停车飘降性能分析方法03-22
汉明码译码的快速性及纠错特点与应用10-04
击鼓传球作文500字07-04
感谢书籍作文450字07-14
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 高职思想政治教育工作创新(8篇)
- 2018小学数学教师职称考试八套复习试卷
- 电能计量段考试卷
- 思想政治教育学原理知识点
- 旅游综合开发项目投资意向合同协议书范本
- 凌洁冰:品牌建设与管理培训
- 毕业论文开题报告:乡村旅游发展现状 - 以广西巴马县为例
- 朱淑真诗词中的女性形象
- 日常工作成果标准化和周报、月报收集探讨
- 2016尔雅通识课中国古代史期末考试答案
- 地下空间规划与设计 - 图文
- 新闻采写习题
- 事业单位会计重点考点
- 安徽省行政执法人员资格认证培训学习参考题答案
- 计算机组成原理实验书
- 《四则运算整理复习》教学设计
- 2009年河南省专升本高等数学真题(及答案)
- 陈春花管理论述读后感
- 浙江省衢州市江山实验中学2014-2015学年高一上学期11月月考数学
- 苏州市房屋重置价格结构等级评定标准 - 图文