




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1/7洛陽理工學(xué)院實(shí)驗(yàn)報(bào)告系別計(jì)算機(jī)系班級學(xué)號姓名課程名稱計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)日期2012/11/21實(shí)驗(yàn)名稱銀行家算法成績實(shí)驗(yàn)?zāi)康模毫私膺M(jìn)程產(chǎn)生死鎖的原因,了解為什么要進(jìn)行死鎖的避免。掌握銀行家算法的數(shù)據(jù)結(jié)構(gòu),了解算法的執(zhí)行過程,加深對銀行家算法的理解。實(shí)驗(yàn)條件:微計(jì)一臺、MicrosoftVisualStudio2008實(shí)驗(yàn)原理:n個(gè)并發(fā)進(jìn)程共享m個(gè)系統(tǒng)資源的系統(tǒng),進(jìn)程可動態(tài)申請資源和釋放資源。系統(tǒng)按各進(jìn)程的申請動態(tài)的分配資源,先對用戶提出的請求進(jìn)行合法性檢查,再進(jìn)行預(yù)分配,利用安全性檢測算法進(jìn)行安全性檢測,如果系統(tǒng)分配資源,系統(tǒng)進(jìn)入安全狀態(tài),則預(yù)分配就是正式分配,如果系統(tǒng)分配資源,系統(tǒng)進(jìn)入不安全狀態(tài),則撤銷預(yù)分配。實(shí)驗(yàn)內(nèi)容:#include<stdio.h>#include<string.h>#include"common.h"voidInint(int*,int*);voidrequestPredistribution(int,int*,int);//請求預(yù)分配voidrollbackPredistribution(int,int*,int);boolsafe(int,int);boolIsValidate(int,int*,int,int);voiddisplayInfo(int,int);voidmain(){ intprocess,resource,total,processNum,resourceNum; charch; boolisSafe=false,valid=false; do{ Inint(&processNum,&resourceNum); printf("T0時(shí)刻安全性:"); if(safe(processNum,resourceNum)) { isSafe=true; printf("存在安全序列故系統(tǒng)是安全的!\n安全序列為:"); for(inti=0;i<processNum;++i) { printf("P%d",safeSequence[i]); } printf("\n"); } if(!isSafe) { printf("T0時(shí)刻系統(tǒng)是不安全的,后續(xù)請求也沒意義!重新輸入數(shù)據(jù):\n"); } }while(!isSafe); printf("T0時(shí)刻的安全序列\(zhòng)n"); displayInfo(processNum,resourceNum); do { do { printf("輸入用戶的多元請求組(i,r0,r1……rn)i為進(jìn)程r0-n為各類資源個(gè)數(shù):\n"); scanf("%d",&process); for(inti=0;i<resourceNum;++i) { scanf("%d",&Request[i]); } valid=IsValidate(process,Request,processNum,resourceNum); if(!valid) { printf("請求進(jìn)程不存在或請求資源大于最大需求\n"); } }while(!valid); requestPredistribution(process,Request,resourceNum); if(safe(processNum,resourceNum)) { printf("P%d進(jìn)程資源申請成功!\n安全序列為:",process); for(inti=0;i<processNum;++i) { printf("P%d",safeSequence[i]); } printf("P%d申請資源時(shí)的安全性檢查¨|\n",processNum); displayInfo(processNum,resourceNum); } else { rollbackPredistribution(process,Request,resourceNum); printf("安全序列不存在系統(tǒng)不予分配!\n"); } printf("是否退出[Y/N]"); fflush(stdin); ch=getchar(); }while(ch!='Y'&&ch!='y'); getchar();}voidInint(int*processNum,int*resourceNum){ intnum,type; printf("輸入進(jìn)程數(shù)量和資源種類:"); scanf("%d%d",&num,&type); *processNum=num; *resourceNum=type; printf("輸入各類資源可用量:"); for(intj=0;j<type;++j) { scanf("%d",&Available[j]); } for(inti=0;i<num;++i) { printf("輸入進(jìn)程P%d已分配及還需各類資源數(shù)量,i); for(intj=0;j<type;++j) { scanf("%d",&Allocation[i][j]); } for(intj=0;j<type;++j) { scanf("%d",&Need[i][j]); } }}boolIsValidate(intprocess,int*requestResource,intprocessNum,intresourceNum){ if(process>processNum) { returnfalse; } for(inti=0;i<resourceNum;++i) { if(requestResource[i]>Need[process][i]||requestResource[i]>Available[process]) returnfalse; } returntrue;}voidrequestPredistribution(intprocess,int*requestResorce,intresourceNum)//請求預(yù)分配{ for(inti=0;i<resourceNum;++i) { Available[i]=Available[i]-Request[i]; Allocation[process][i]=Allocation[process][i]+Request[i]; Need[process][i]=Need[process][i]-Request[i]; }}voidrollbackPredistribution(intprocess,int*requestResorce,intresourceNum){ for(inti=0;i<resourceNum;++i) { Available[i]=Available[i]+Request[i]; Allocation[process][i]=Allocation[process][i]-Request[i]; Need[process][i]=Need[process][i]+Request[i]; }}boolsafe(intprocessNum,intresourceNum){ intnum=0,count=0,item=0; memset(safeSequence,-1,sizeof(safeSequence)); for(inti=0;i<resourceNum;++i) { Work[i]=Available[i]; } for(inti=0;i<processNum;++i) { Finish[i]=false; } for(inti=0;i<processNum;++i) { for(intj=0;j<processNum;++j) { count=0; if(!Finish[j]) { for(intk=0;k<resourceNum;++k) { if(Need[j][k]<=Work[k]) { ++count; } } if(count==resourceNum) { for(intk=0;k<resourceNum;++k) { tempWork[j][k]=Work[k]; Work[k]=Work[k]+Allocation[j][k]; } Finish[j]=true; safeSequence[item++]=j; break; } } } } for(inti=0;i<processNum;++i) { if(!Finish[i]) { returnfalse; } } returntrue;}voiddisplayInfo(intprocessNum,intresourceNum){ printf("|資源情況\tWork\tNeed\tAllocation\tFinish\n進(jìn)程|___________________________________________________________________\n"); for(inti=0;i<processNum;++i) { intprocess=safeSequence[i]; printf("P%d",process); printf("\t\t"); for(intj=0;j<resourceNum;++j) { printf("%d",tempWork[process][j]); } printf("\t"); for(intj=0;j<resourceNum;++j) { printf("%d",Need[process][j]); } printf("\t\t"); for(intj=0;j<resourceNum;++j) { printf("%d",Allocation[process][j]); } printf("\t"); printf(Finish[i]?"true":"false"); printf("\n"); }}//common.h#defineM10#defineN10#definex10#definey10intAvailable[M];//M為資源的類型intAllocation[N][M];intNeed[N][M];int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 火鍋餐飲行業(yè)2025年火鍋餐飲市場競爭力研究報(bào)告
- 智能家居系統(tǒng)集成項(xiàng)目在2025年智能家居租賃市場的應(yīng)用可行性分析
- 老齡化趨勢下2025年老年長期照護(hù)服務(wù)模式與社區(qū)養(yǎng)老機(jī)構(gòu)服務(wù)模式創(chuàng)新報(bào)告
- 食品添加劑在食品色澤改善中的安全性評估與合規(guī)性分析報(bào)告
- 2025年元宇宙社交平臺界面設(shè)計(jì)創(chuàng)新與實(shí)踐案例分析報(bào)告
- 醫(yī)療行業(yè)大數(shù)據(jù)隱私保護(hù)在2025年醫(yī)療數(shù)據(jù)安全風(fēng)險(xiǎn)評估與控制策略中的應(yīng)用報(bào)告
- 有機(jī)食品市場細(xì)分領(lǐng)域投資機(jī)會與風(fēng)險(xiǎn)評估報(bào)告
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)與臨床試驗(yàn)國際化合作報(bào)告001
- 2025年國際教育交流項(xiàng)目學(xué)生跨文化心理調(diào)適與心理健康研究報(bào)告
- 2025年北京市燕山區(qū)七下英語期中達(dá)標(biāo)檢測試題含答案
- 國開(山東)地域文化(本)形成性考核1-3答案
- 厚皮甜瓜設(shè)施栽培技術(shù)規(guī)程
- 駐足思考瞬間整理思路并有力表達(dá)完整版
- 成都市青羊區(qū)2023年數(shù)學(xué)四下期末教學(xué)質(zhì)量檢測試題含解析
- TSGR0003-2023年《簡單壓力容器安全技術(shù)監(jiān)察規(guī)程》
- 2023年山東濟(jì)南市婦幼保健院招考聘用勞務(wù)派遣人員筆試題庫含答案解析
- 2023年考研英語大綱樣題
- 廣州市預(yù)拌混凝土企業(yè)名單及分布圖
- 駕照體檢表通用
- 【企業(yè)薪酬管理研究國內(nèi)外文獻(xiàn)綜述4400字】
- 2023年新改版蘇教版五年級下冊科學(xué)全冊精編知識點(diǎn)(附問答題總結(jié))
評論
0/150
提交評論