欢迎来到天天文库
浏览记录
ID:57212255
大小:150.00 KB
页数:9页
时间:2020-08-06
《操作系统——实验2银行家算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、淮海工学院计算机科学系实验报告书课程名:《操作系统原理》题目:实验二银行家算法班级:Z软件161学号:姓名:陈真杰评语:成绩:指导教师:批阅时间:年月日1、实验目的与要求银行家算法是操作系统中避免死锁的典型算法,用C/C++语言编写一个银行家算法的模拟程序。通过本实验可以加深对银行家算法的步骤和相关数据结构用法的更好理解。2、实验内容或题目用C/C++语言编写一个简单的银行家算法模拟程序,用银行家算法实现资源分配。程序能模拟多个进程共享多种资源的情形。进程可动态地申请资源,系统按各进程的申请动态地分配资源。要求程序具有显示
2、和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源数量以及为某进程分配资源后的有关资源数据的情况。实验说明:初始时每个进程运行过程中的最大资源需求量Max[i,j]和系统已分配给该进程的资源量Allocation[i,j],可利用资源数量Available[j]均为已知(这些数值可以在程序运行时动态输入),而算法中其他数据结构的值(Need[i,j])则需要由程序根据已知量的值计算产生。3、实验步骤(1)认真理解好课本中银行家算法的实例。(2)根据课本中银行家算法的描述,画出程序流程图。(3)
3、按照程序流程图,用C/C++语言编程并实现。4、流程图5、源代码与测试数据与实验结果(可以抓图粘贴)⑴源代码如下所示:#include"string.h"#include"iostream"usingnamespacestd;#defineFALSE0#defineTRUE1#defineW10#defineR20intM=4;//总进程数intN=3;//资源种类intALL_RESOURCE[3]={9,3,6};//各种资源的数目总和intMAX[4][3]={{3,2,2},{6,1,3},{3,1,4},{4,2
4、,2}};//M个进程对N类资源最大资源需求量intAVAILABLE[R];//系统可用资源数intALLOCATION[4][3]={{1,0,0},{6,1,2},{2,1,1},{0,0,2}};//M个进程已经得到N类资源的资源量intNEED[W][R];//M个进程还需要N类资源的资源量intRequest[R];//请求资源个数voidshowdata()//函数showdata,输出资源分配情况{inti,j;cout<<"各种资源的总数量(all):";cout<<"[";for(j=0;j5、)cout<<""<6、"进程p"<7、}voidchangdata(intk)//分配资源{intj;for(j=0;j8、[j]=ALLOCATION[k][j]-Request[j];NEED[k][j]=NEED[k][j]+Request[j];}}intchkerr(ints)//函数chkerr,检查是否安全{intWORK,FINISH[W];inti,j,k=0;for(i=0;i
5、)cout<<""<6、"进程p"<7、}voidchangdata(intk)//分配资源{intj;for(j=0;j8、[j]=ALLOCATION[k][j]-Request[j];NEED[k][j]=NEED[k][j]+Request[j];}}intchkerr(ints)//函数chkerr,检查是否安全{intWORK,FINISH[W];inti,j,k=0;for(i=0;i
6、"进程p"<
7、}voidchangdata(intk)//分配资源{intj;for(j=0;j8、[j]=ALLOCATION[k][j]-Request[j];NEED[k][j]=NEED[k][j]+Request[j];}}intchkerr(ints)//函数chkerr,检查是否安全{intWORK,FINISH[W];inti,j,k=0;for(i=0;i
8、[j]=ALLOCATION[k][j]-Request[j];NEED[k][j]=NEED[k][j]+Request[j];}}intchkerr(ints)//函数chkerr,检查是否安全{intWORK,FINISH[W];inti,j,k=0;for(i=0;i
此文档下载收益归作者所有