


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统实验二报告一实验名称:死锁的检测与解除二实验目的:观察死锁产生的条件,并使用适当的算法,有效的防止和避免死锁的发生。三实验内容:死锁的检测算法:1找出不再申请资源的进程,将它们所占的资源与系统中还剩余的资源加在一起作为“可分配的资源”,同时对这些进程置标志;2检测所有无标志的进程,找出一个所需资源量不超过“可分配的资源”量的进程,将其所占用的资源添加到“可分配的资源”中,同时为该进程置标志;重复2)直到所有进程均有标志或无标志的进程的所需资源量均超过“可分配的资源”量;3若进程均有标志,说明系统当前不存在死锁;若存在无标志的进程,则表示系统当前已有死锁形成,这些无标志的进程就是一组处于死锁状态的进程。死锁的解除:当死锁检测程序检测到有死锁存在时,一般采用两种方式来解除死锁:1终止进程:终止一个或多个涉及死锁的进程的执行,收回它们所占的资源再分配。2抢夺资源:从涉及死锁的一个或几个进程中抢夺资源,把夺来的资源再分配给卷入死锁的其他进程,直到死锁解除。四实验代码:欢迎下载#include using namespace std;#define mp 50/最大进程数#define mr 100/最大资源数int keyongmr;/可用资源数组int MAXmpmr;/最大需求矩阵int fenpeimpmr;/分配矩阵int needmpmr;/剩余需求矩阵bool FINISHmp;/系统是否有足够资源分配int pmp; /记录序列int Workmr; /工作数组int m,n; /m个进程,n个资源int l=0; void Init();/初始化bool Safe();void jc();void main() Init(); Safe();if(l!=m) jc();void Init()/初始化算法 int i,j; coutm; coutn; cout请输入每个进程最多所需的各资源数,按照mxn矩阵输入endl; for(i=0;im;i+) for(j=0;jMAXij; cout请输入每个进程已分配的各资源数,也按照mxn矩阵输入endl; for(i=0;im;i+) for(j=0;jfenpeiij; needij=MAXij-fenpeiij; if(needij0) cout您输入的第i+1个进程所拥有的第j+1个资源数错误,请重新输入:endl; j-; continue; cout请输入各个资源现有的数目:endl; for(i=0;ikeyongi; cout剩余需求矩阵:endl;for(i=0;im;i+) for(j=0;jn;j+) coutneedij ; if(j=n-1)coutendl; cout各资源现有数量:endl; for(i=0;in;i+) coutkeyongi ; coutendl; bool Safe() /*安全性算法*/ int i,j,k; for(i=0;in;i+) Worki=keyongi; for(i=0;im;i+) FINISHi=false; /判断进程i是否已执行 for(i=0;im;i+) if(FINISHi=true) continue; else for(j=0;jWorkj) break; if(j=n) FINISHi=true; for(k=0;kn;k+) Workk+=fenpeiik; /进程i执行完后回收资源 pl+=i; i=-1; else continue; if(l=m) cout系统是安全的endl; cout安全序列:endl; for(i=0;il;i+) coutpi; if(i!=l-1) cout; coutendl; return true; cout会发生死锁,发生死锁的进程是:endl; for(i=0;im;i+)if(FINISHi=false)couti ;coutendl; return false;void jc() int i,j,k,q;i=0;while(im&FINISHi=false) /寻找没执行的for(j=0;jn;j+) keyongj+=fenpeiij; /回收 fenpeiij=0;if(Safe()cout死锁已解除endl;elsei+;Safe();五实验结果输入进程已拥有资源数总需求资源数1(0.0.1.2)(0.0.1.2.)2(2.0.0.0)(2.7.5.0)3(0.0.3.4)(6.6.5.6)4(2.3.5.4)(4.3.5.6)5(0.3.3.2)(0.6.5.2)其中系统可用资源数 为 2 1 0 0给进程3 分配资源数 0 1 0 0六实验心得:加深理解了有关资源申请分配、检测以及避免死锁等概念,了解死锁和避免死锁的具体实施方法。死锁的解除实质上就是如何让释放资源的进程能够继续运行.为了解除死锁就要剥夺资源,此时,需要考虑一下几个问题 : 选择一个牺牲进程,即要剥夺哪个进程的哪些资源?剥夺的进程如何再次运行?.怎样保证不发生”饿死”现象 ?“最小代价”,即最经济合算的算法,使得进程回退带来的开销最小.但是,”最小开销”是很不精确的,进程重新运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大数据技术专业教学标准(高等职业教育专科)2025修订
- 老年保健与管理专业教学标准(高等职业教育专科)2025修订
- 2025年中国林业经济行业发展前景预测及投资战略研究报告
- 中国燃气空调行业市场深度评估及投资战略规划报告
- 中国中药保健品行业发展监测及投资战略规划研究报告
- 2024年中国铜蓝矿行业市场调查建议报告
- 中国碳化硅陶瓷异型梁行业发展监测及投资前景展望报告
- 2020-2025年中国蜂胶行业市场前景预测及投资战略研究报告
- 汽车后板簧托板总成项目投资可行性研究分析报告(2024-2030版)
- 2025年中国阻垢器行业市场运行现状及投资战略研究报告
- 2025年陕西、山西、青海、宁夏高考政治试卷真题(含答案解析)
- 期末试卷(五)(含答案含听力原文无听力音频)-2024-2025学年人教PEP版英语(新教材)三年级下册
- 3.21 明清时期的科技与文化 课件 2024-2025学年统编版七年级历史下册
- 养老护理员四级考试题库及答案
- 办公室内控管理制度
- 2024-2025 学年八年级英语下学期期末模拟卷 (苏州专用)原卷
- 2025年大学生创业培训考试试卷及答案
- 安徽省宿州市砀山县2023-2024学年八年级下学期期末数学试题
- 湖南2024生地会考试卷及答案
- 广东省深圳市2024年中考英语真题(含答案)
- 奇瑞入职在线测评题库
评论
0/150
提交评论