欢迎来到天天文库
浏览记录
ID:56783905
大小:216.50 KB
页数:9页
时间:2020-07-11
《实验三死锁地检测和解除.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、南华大学计算机科学与技术学院实验报告课程名称操作系统I姓名学号专业班级任课教师日期一、实验容死锁的检测与解除二、实验目的掌握操作系统的进程管理与资源分配原理,掌握对操作系统安全性检验和死锁的解除的原理和方法。三、实验题目系统中有m个同类资源被n个进程共享,每个进程对资源的最大需求数分别为S1,S2,…,Sn,且Max(Si)<=m,(i=1,2,…n)。进程可以动态地申请资源和释放资源。编写一个程序,实现银行家算法,当系统将资源分配给某一进程而不会死锁时,就分配之。否则,推迟分配,并显示适当的信息。分别使用检测“进程—资源循
2、环等待链”的方法和Coffman的算法来检测进程的死锁状态。对于相同的进程资源分配、占用次序,比较两个算法的结果。四、设计思路和流程图1.输入系统进程数量n和资源类型数量m。2.输入每类资源的数量。3.输入每个进程每类资源的最大需求量和已获资源量。4.检验系统的安全。5.若检测结果为系统不安全,可以对死锁进行解除,直到安全为止再检测。 6.重复5操作,直到所有进程运行完毕。五、主要数据结构及其说明intMax[100][100]={0};//各进程所需各类资源的最大需求;intAvailable[100]={0};//系统可
3、用资源;charName[100]={0};//资源的名称;intAllocation[100][100]={0};//系统已分配资源;intNeed[100][100]={0};//还需要资源intRequest[100]={0};//请求资源向量;intTemp[100]={0};//存放安全序列;intWork[100]={0};//存放系统可提供资源;boolFinish[100]={0};//存放已完成的序列六、源程序并附上注释#include"stdafx.h"#include #define
4、False0#defineTrue1 usingnamespacestd; intMax[100][100]={0};//各进程所需各类资源的最大需求;intAvailable[100]={0};//系统可用资源;charName[100]={0};//资源的名称;intAllocation[100][100]={0};//系统已分配资源;intNeed[100][100]={0};//还需要资源intRequest[100]={0};//请求资源向量;intTemp[100]={0};//存放安全序列;intWork[10
5、0]={0};//存放系统可提供资源;boolFinish[100]={0};intM=100;//作业的最大数intN=100;//资源的最大数intl=0;//记录安全进程的TEMP下标 voidShowData()//初始化资源矩阵 {inti,j;cout<<"系统可用资源[Available]:"<6、;cout<<"MaxAllocationNeed"<7、][j]<<"";//输出已分配cout<<"";for(j=0;j8、;j++)//验证每一个资源的需求量是否小于可用资源量{if(Need[i][j]>Work[j]){break;}}if(j==N)//若Need都小于Work{Finish[i]=true;for(k=0;k
6、;cout<<"MaxAllocationNeed"<7、][j]<<"";//输出已分配cout<<"";for(j=0;j8、;j++)//验证每一个资源的需求量是否小于可用资源量{if(Need[i][j]>Work[j]){break;}}if(j==N)//若Need都小于Work{Finish[i]=true;for(k=0;k
7、][j]<<"";//输出已分配cout<<"";for(j=0;j8、;j++)//验证每一个资源的需求量是否小于可用资源量{if(Need[i][j]>Work[j]){break;}}if(j==N)//若Need都小于Work{Finish[i]=true;for(k=0;k
8、;j++)//验证每一个资源的需求量是否小于可用资源量{if(Need[i][j]>Work[j]){break;}}if(j==N)//若Need都小于Work{Finish[i]=true;for(k=0;k
此文档下载收益归作者所有