资源描述:
《操作系统第七次实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2012东南大学操作系统实验操作系统实验七死锁71110102王华瑾一、实验内容使用Ptheads或Win32threads编写多线程程序实现银行家算法。具体要求见”OperatingSystemConcepts(SeventhEdition)”Chapter7后的练习7.13(p270-271)。二、实验目的通过实验,理解银行家算法的算法思想及其实现方法,加深对线程死锁、系统安全状态等概念的理解三、设计思路和流程图152012东南大学操作系统实验一、主要数据结构及其说明Available[];资源向量Ma
2、x[][]最大需求矩阵Allocation[][]分配矩阵Need[][]需求矩阵控制对以上矩阵访问的信号量HANDLErmutex,wmutex[n]二、源程序152012东南大学操作系统实验#include#include#include#include#includeusingnamespacestd;typedefHANDLESemaphore;#defineP(S)WaitForSingleObject
3、(S,INFINITE)#defineV(S)ReleaseSemaphore(S,1,NULL)#definen5//thread#definem3//resourceintWork[m],running=5;BOOLFinish[n];intMax[n][m]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};152012东南大学操作系统实验intAllocation[n][m]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};int
4、Need[n][m]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};intAvailable[m]={3,3,2};Semaphorermutex,wmutex[n];voidRequest(inti,intr[]);BOOLcheck();DWORDWINAPIProcessor(LPVOIDpParam){inti=(int)pParam,j,res[m],c=0;152012东南大学操作系统实验while(TRUE){srand(time(NULL));P(rmu
5、tex);for(j=0;j0)break;if(j==m)//allneedis0{running--;//onethreadisoverif(running==0)printf("allthreadisover!");V(rmutex);break;}}for(j=0;j6、);Sleep(rand()%10/10*1000);}return1;}voidRequest(inti,intres[]){intj;P(rmutex);for(j=0;j0)break;if(j==m)//allresourcesiszero{V(rmutex);return;}printf("P%drequest:",i);for(j=0;j7、南大学操作系统实验{if(res[j]>Need[i][j])break;}if(jAvailable[j])break;Available[j]-=res[j];Allocation[i][j]+=res[j];Need[i][j]-=res[j];}if(j8、",i);152012东南大学操作系统实验for(j--;j>=0;j--){Available[j]+=res[j];Allocation[i][j]-=res[j];Need[i][j]+=res[j];}//for(j=0;j