logo资料库

操作系统 模拟实现死锁避免实验报告.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
实 验 报 告 学院:计算机科学学院 专业:软件工程 日期:2011 年 10 月 26 日 姓 名 班 级 课程名称 实验名称 1.实验目的 尚云飞 学 号 20090402101030 软工一班 指导老师 黄干平 计算机操作系统 模拟实现死锁避免的实验 成 绩 通过本实验,使学生进一步了解死锁、系统安全与不安全和资源动态分配的概念,学会 编程实现银行家算法检验系统状态是否安全的方法,从而为将来在实际系统中使用该方法打 下基础。 2.实验内容 1.输入并显示资源类型数,进程数,每类资源的个体数; 2.输入每个进程对每类资源的最大需求量,已分量,算出其剩余需求量。算出系统每类资源 的当前剩余量;显示输入和计算出的数据; 3.按银行家算法检测系统当前是否处于安全状态,若是,往下;若否,转 1,重新设置数据; 4.给出某个进程的资源分配请求,按死锁避免方法检测可否将资源分配给它?若可,输出一 个进程安全序列、资源分配成功的说明和新的系统资源分配状态表;若否,输出“资源分配 失败”和失败的原因:①,申请量大于系统的当前剩余量,②,申请量大于自己的剩余需求 量,③,若分配系统将处于不安全状态。 3.实验环境 Windows 7 + VS2010 1
4.实验方法和步骤(含设计) 初始化算法流程图: 银行家算法流程图: 2
安全性算法流程图: 源代码: //最大进 //最大资源数 MAXPROCESS 50 using namespace std; #define int AVAILABLE[MAXRESOURCE]; //可用资源数组 #include 程数 #define MAXRESOURCE 100 int MAX[MAXPROCESS][MAXRESOURCE]; //最大需求矩阵 int ALLOCATION[MAXPROCESS][MAXRESOURCE]; // 分配矩阵 int NEED[MAXPROCESS][MAXRESOURCE]; //需求矩阵 int REQUEST[MAXPROCESS][MAXRESOURCE]; //进程 需要资源数 bool FINISH[MAXPROCESS]; //系统是否有足够的资源分配 int m,n; //m个进程,n个资源 void Init(); int main() { Init();//初始化函数 Safe();//安全性检测函数 Bank();//银行家算法 } void Init() { int p[MAXPROCESS]; //记录序列 cout<<"请输入资源的种类:"; bool Safe(); void Bank(); cout<<"请输入每个进程最多所需的各资源数,按照"<>m; cout<<"请输入进程的数目:"; int i,j; cin>>n; for(i=0;i>ALLOCATION[i][j]; for(j=0;j>MAX[i][j]; NEED[i][j]=MAX[i][j]-ALLOCATION[i][j]; if(NEED[i][j]<0){ cout<<"您输入的第"<>AVAILABLE[i]; } } void Bank(){ int i,cusneed; char again; 3
while(1){ cout<<"请输入要申请资源的进程号(注:第1个进程号为0,依次类推)"<>cusneed; cout<<"请输入进程所请求的各资源的数量"<>REQUEST[cusneed][i];} for(i=0;iNEED[cusneed][i]) { cout<<"您输入的请求数超过进程的需求量!请重新输入!"<AVAILABLE[i]){ cout<<"您输入的请求数超过系统有的资源数!请重新输 入!"<>again; bool Safe(){ int i,j,k,l=0; int Work[MAXRESOURCE]; /*工作数组*/ Work[i]=AVAILABLE[i]; for(i=0;iWork[j]){ break;} } if(j==n){ FINISH[i]=true; for(k=0;k"; } } cout<<""<
5
6
5.实验分析、感想 通过本实验,使学生进一步了解死锁、系统安全与不安全和资源动态 分配的概念,学会编程实现银行家算法检验系统状态是否安全的方法,从 而为将来在实际系统中使用该方法打下基础。读课本中的理论知识有了更 加深刻的学习和理解。 教师评语 实验日期 :2011 年 12 月 26 日 签名: 年 月 日 7
8
分享到:
收藏