实验三死锁地检测和解除.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南华高校运算机科学与技术学院 |精. |品. |可. |编. |辑. |学. |习. |资. |料. * | * | * | * | |欢. |迎. |下. |载. 试验报告 课程名称 操作系统 I 姓 名 学 号 专业班级任课老师日 期 一、 试验容 死锁的检测与解除 二、 试验目的 把握操作系统的进程治理与资源安排原理, 把握对操作系统安 |精. |品. |可. |编. |辑. |学. |习. |资. |料. * | * | * | * | |欢. |迎. |下. |载. 全性检验和死锁的解除的原理和方法; 三、 试验题目 系统中有 m 个同类资源被 n 个进程共享, 每个进程对资源的最大需求数分别为 S1,S2, ?,Sn,且 Max(Si)=m, (i=1,2, ? n) ;进程可以动态地申请资源和释放资源;编写一个程序,实现银行家算法, 当系统将资源安排给某一进程而不会死锁时,就安排之;否如此,推 迟安排,并显示适当的信息; 分别使用检测“进程—资源循环等待链〞的方法和 Coffman 的算法来检测进程的死锁状态;对于一样的进程资源安排、占用次序, 比拟两个算法的结果; 四、设计思路和流程图 输入系统进程数量 n 和资源类型数量 m; 输入每类资源的数量; 输入每个进程每类资源的最大需求量和已获资源量; 检验系统的安全; 假如检测结果为系统担心全, 可以对死锁进展解除, 直到安全为止再检测; 6.重复 5 操作,直到全部进程运行完毕; |精. |品. |可. |编. |辑. |学. |习. |资. |料. * | * | * | * | |欢. |迎. |下. |载. |精. |品. |可. |编. |辑. |学. |习. |资. |料. * | * | * | * | |欢. |迎. |下. |载. 五、 主要数据结构与其说明 int Max[100][100]={0}; // 各进程所需各类资源的最大需求 ; int Available[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}; // 存放系统可供应资源 ; bool Finish[100]={0};// 存放已完成的序列 六、 源程序并附上注释 #include stdafx.h #includeiostream #define False 0 #define True 1 using namespace std; int Max[100][100]={0}; // 各进程所需各类资源的最大需求 ; int Available[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}; // 存放系统可供应资源 ; bool Finish[100]={0}; int M=100; // 作业的最大数 int N=100; // 资源的最大数 int l=0;// 记录安全进程的 TEMP下标void ShowData()// 初始化资源矩阵 { int i,j; cout 系统可用资源 [Available]:endl; for(i=0;iN;i++) coutName[i] ; coutendl; for(j=0;jN;j++) coutAvailable[j] ;// 显示可安排的资源 coutendl; cout Max Allocation Needendl; cout 进程名 ; for (j=0;j3;j++)//MAX ALLOCATION NEED 共列 { for (i=0;iN;i++) { coutName[i] ; } |精. |品. |可. |编. |辑. |学. |习. |资. |料. * | * | * | * | |欢. |迎. |下. |载. cout ; } coutendl; for(i=0;iM;i++){ cout i ;// 输出进程名 for(j=0;jN;

文档评论(0)

小橙学习资料 + 关注
实名认证
内容提供者

学习资料 欢迎下载

1亿VIP精品文档

相关文档