资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
#icudesti.h#define SE 0#defin RUE defin 10#ene R 2int M ; /*总进程数/i N ; /*资源种类/intAL_REOURC;/多种资源的数目总和*/nt MAXW; *M个进程对N类资源最大资源需求量/intAVILBLER;/*系统可用资源数/in ALLOCAIOR;/个进程已经得到N类资源的资源量*it NEEDR; *个进程还需要N类资源的资源量*int REUEST; /祈求资源个数*/*函数名:output*功能:输出资源分派状况*/oid ouput()t i,j;print(All Rsorce:n);fr(j=0 ; j N;j+)rintf(R%d:%dn, j , AL_REOUR);pritf(Reourc Available:n);or(j =0; ; j+)printf(%d:%dn, j , IABLEj);ptf(rocessesourcNeeded:);prit(|PID|);for(j = 0 ; jN ; j+)prnt(R%d |, j);rint(n);for( = ;i ; +)or( 0 ; i ; +)print(|-5d|, );fo(j = 0 ; j N ; j+)prinf(%-4|, EEDi);pritf();rintf(PrcRsoucellcated:n);print(| PID|);fo( = 0 ; ; j+)printf(R%d |, j);prinf();or(i = ; i M;i+) rnt(|%5|, i);for(j = 0 ; j N;j+)printf(-d, ALOONi); rintf(n);/*otu*/函数名 :dify*功能:变化可用资源和已经拿到资源和还需要的资源的值参数:ntk 修改编号为K的的数据*/voidmodify(nt k)in ;fr( =0 ;j N ; j+)/修改数据* AAILABLE= VLABLEj RQETj;/修改可用资源*/ ALLOCATINkj = ALCATINj + RQUETj;/*修改分派资源/NEEDkj =NEDkj - EQUSTj;/*修改资源需求*/*函数名:udo*功能:还原可用资源和已经拿到资源和还需要的资源的值参数:参数:int 修改编号为的的数据/void undo(i k)intj;fo(j = 0 ; j N;j+)/修改数据/ AVAILBE = AVILABLE + RUESTj; /修改可用数据* ALCATNkj ALLOCTIOk- EUSTj; /*修改分派的资源* NEkj=NEEDkj+ REQTj;/修改资源需求*/ /*函数名:chkrr*功能:检查修改操作与否安全*int chkerr(int s)i WORK , FINIHW;n i ,j;fr(i = 0; i ;+)/清空FIIS*/FIISHi = FALSE;fr(j= 0;j N ; +)/逐个检查*/WORK = AVALABLEj; s;do(FINISHi =FALSE & NEDij = ORK)/*符合条件?*WRK= WO+ ALOCATIOj;FNSHi TR; = 0;esi+;wile(iM);fo(i =;i M;i)/*只要一种不满足,不安全*/if(FIHi = ALSE)rintf(Error: Sfe llocaio!n);return1;printf(OK: llaonK);reurn 0;/*函数名:bnk*功能 :银行家算法的实现*/void ak()nt i , j;int fla=TRUE;pitf(e Ctrl+C beakn);while(TRUE) ;hi(i = M)rintf(Inut Process to Alloc D=);scanf(%, &i);if(i = M)intf(Error:Invlid nput!);rif(nut Resurce een);fo (j = 0 ; NEi)/*祈求的资源数不小于祈求资源/print(Error: Invald ut!);lag LS;elsef(REUESTjAVAILABLEj)/*若祈求的资源数不小于可用资源数*/pintf(Ero: InalidInput!n);flag= FAE;*else* /*for*/ f(flag) fy(); /*修改资源数if(cerr(i)/*安全?*/ud(i); /*恢复资源数/outpu();*输出*lseoutpt();/输出/ eseouut();/*whi*/*bak*/*主函数*/int main()in , j, p;pit(InputProcess Nubers =);/*进程数量*/ca(%, );prntf(nut Rsource Cagory N);/*资源种类scanf(,&N);rintf(InpuNumber of llRoe ech Cteo:);*资源数目*/for(i=0 ; N ;i+)scanf(%, A_EOUCE);pritf(Inpu Max euce Procss Nee:n);/*最大资源需求*/fr (i = 0 ; i AL_SORCEj)/*不小于最大可用?*pinf(nError:nalidnpt!n); whie (MAij ALL_ESOEj);*for*/rntf(Inputesouce ProcssAllocd:n);for (i =0; i ; i)fr (j ; j MAXi);/*fo/o(j 0; j N ; +)p= AL_RESORCEj;fr(i=0 ;i M ; i+)pALOCATIOij;/*减去已经分派资源*/VAIEj= ;i(AVILALEj0)AVAILAE 0;/清理数据*/*for/*for*/for (i=; i M ;+)for(j ; j N ; j+)NEj = MAXij-ALLOCATONij;/*求还需要的资源*/oup();ank();*银行家算法*/etu0;/*ain*
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号