




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)操作系統(tǒng)試驗(yàn)匯報(bào)何美西試驗(yàn)名稱:銀行家算法試驗(yàn)?zāi)康模恒y行家算法是防止死鎖的一種重要措施,通過編寫一種簡(jiǎn)樸的銀行家算法程序,加深理解有關(guān)資源申請(qǐng)、防止死鎖等概念,并體會(huì)和理解死鎖和防止死鎖的詳細(xì)實(shí)行措施。問題分析與設(shè)計(jì):1、算法思緒:先對(duì)顧客提出的祈求進(jìn)行合法性檢查,即檢查祈求與否不小于需要的,與否不小于可運(yùn)用的。若祈求合法,則進(jìn)行預(yù)分派,對(duì)分派後的狀態(tài)調(diào)用安全性算法進(jìn)行檢查。若安全,則分派;若不安全,則拒絕申請(qǐng),恢復(fù)到本來的狀態(tài),拒絕申請(qǐng)。2、銀行家算法環(huán)節(jié):(1)假如Requesti<o(jì)r=Need,則轉(zhuǎn)向環(huán)節(jié)(2);否則,認(rèn)為出錯(cuò),由于它所需要的資源數(shù)已超過它所宣布的最大值。(2)假如Request<o(jì)r=Available,則轉(zhuǎn)向環(huán)節(jié)(3);否則,表達(dá)系統(tǒng)中尚無足夠的資源,進(jìn)程必須等待。(3)系統(tǒng)試探把規(guī)定的資源分派給進(jìn)程Pi,并修改下面數(shù)據(jù)構(gòu)造中的數(shù)值:Available=Available-Request[i];Allocation=Allocation+Request;Need=Need-Request;(4)系統(tǒng)執(zhí)行安全性算法,檢查本次資源分派後,系統(tǒng)與否處在安全狀態(tài)。3、安全性算法環(huán)節(jié):(1)設(shè)置兩個(gè)向量①工作向量Work。它表達(dá)系統(tǒng)可提供進(jìn)程繼續(xù)運(yùn)行所需要的各類資源數(shù)目,執(zhí)行安全算法開始時(shí),Work=Allocation;②布爾向量Finish。它表達(dá)系統(tǒng)與否有足夠的資源分派給進(jìn)程,使之運(yùn)行完畢,開始時(shí)先做Finish[i]=false,當(dāng)有足夠資源分派給進(jìn)程時(shí),令Finish[i]=true。(2)從進(jìn)程集合中找到一種能滿足下述條件的進(jìn)程:①Finish[i]=false②Need<or=Work如找到,執(zhí)行環(huán)節(jié)(3);否則,執(zhí)行環(huán)節(jié)(4)。(3)當(dāng)進(jìn)程P獲得資源後,可順利執(zhí)行,直至完畢,并釋放出分派給它的資源,故應(yīng)執(zhí)行:Work=Work+Allocation;Finish[i]=true;轉(zhuǎn)向環(huán)節(jié)(2)。(4)假如所有進(jìn)程的Finish[i]=true,則表達(dá)系統(tǒng)處在安全狀態(tài);否則,系統(tǒng)處在不安全狀態(tài)。4、流程圖:系統(tǒng)重要過程流程圖銀行家算法流程圖安全性算法流程圖試驗(yàn)代碼:#include<iostream.h>#include<string.h>#include<stdio.h>#defineFalse0#defineTrue1intMax[100][100]={0};//各進(jìn)程所需各類資源的最大需求intAvaliable[100]={0};//系統(tǒng)可用資源charname[100]={0};//資源的名稱intAllocation[100][100]={0};//系統(tǒng)已分派資源intNeed[100][100]={0};//還需要資源intRequest[100]={0};//祈求資源向量inttemp[100]={0};//寄存安全序列intWork[100]={0};//寄存系統(tǒng)可提供資源intp[100]={0};intq[100][100]={0};intz[100][100]={0};intM=100;//作業(yè)的最大數(shù)為100intN=100;//資源的最大數(shù)為100intgg=1;voidshowdata()//顯示資源矩陣{inti,j;cout<<endl<<"此時(shí)刻的資源分派狀況為:"<<endl;cout<<"MaxAllocationNeedAvaliable"<<endl;cout<<"進(jìn)程名";for(j=0;j<4;j++){for(i=0;i<N;i++)cout<<name[i]<<"";cout<<"";}cout<<endl;for(i=0;i<M;i++){cout<<""<<i<<"";for(j=0;j<N;j++)cout<<Max[i][j]<<"";cout<<"";for(j=0;j<N;j++)cout<<Allocation[i][j]<<"";cout<<"";for(j=0;j<N;j++)cout<<Need[i][j]<<"";if(i==0){cout<<"";for(j=0;j<N;j++)cout<<Avaliable[j]<<"";//輸出分派資源}cout<<endl;}}intchangdata(inti)//進(jìn)行資源分派{intj;for(j=0;j<M;j++){//p[j]=Avaliable[j];Avaliable[j]=Avaliable[j]-Request[j];//q[i][j]=Allocation[i][j];Allocation[i][j]=Allocation[i][j]+Request[j];//z[i][j]=Need[i][j];Need[i][j]=Need[i][j]-Request[j];}return1;}intsafe()//安全性算法{inti,d,k=0,m,h,s,apply,Finish[100]={0};intj;intflag=0;for(i=0;i<N;i++)Work[i]=Avaliable[i];cout<<endl<<"安全性檢查"<<endl;cout<<"WorkNeedAllocationWork+AllocationFinish"<<endl;cout<<"進(jìn)程名";for(h=0;h<4;h++){for(s=0;s<N;s++)cout<<name[s]<<"";cout<<"";}cout<<endl;for(i=0;i<M;i++){apply=0;for(j=0;j<N;j++){if(Finish[i]==False&&Need[i][j]<=Work[j]){apply++;if(apply==N){cout<<""<<i<<"";for(d=0;d<N;d++)cout<<Work[d]<<"";cout<<"";for(d=0;d<N;d++)cout<<Need[i][d]<<"";cout<<"";for(d=0;d<N;d++)cout<<Allocation[i][d]<<"";cout<<"";for(m=0;m<N;m++){Work[m]=Work[m]+Allocation[i][m];cout<<Work[m]<<"";}//變分派數(shù)Finish[i]=True;temp[k]=i;cout<<"";cout<<"true"<<"";cout<<endl;i=-1;k++;flag++;}}}}for(i=0;i<M;i++){if(Finish[i]==False){for(j=0;j<N;j++){Avaliable[j]=Avaliable[j]+Request[j];;Allocation[i][j]=Allocation[i][j]-Request[j];;Need[i][j]=Need[i][j]+Request[j];}cout<<endl<<"系統(tǒng)進(jìn)入不安全狀態(tài)!此時(shí)系統(tǒng)不分派資源!"<<endl;//不成功系統(tǒng)不安全return0;}}cout<<endl<<"此時(shí)系統(tǒng)是安全的!"<<endl;//假如安全,輸出成功cout<<"安全序列為:";for(i=0;i<M;i++){//輸出運(yùn)行進(jìn)程數(shù)組cout<<temp[i];if(i<M-1)cout<<"->";}cout<<endl;return0;}voidshare()//運(yùn)用銀行家算法對(duì)申請(qǐng)資源對(duì)進(jìn)行鑒定{charch;inti=0,j=0;ch='y';cout<<endl<<"請(qǐng)輸入規(guī)定分派的資源進(jìn)程號(hào)(0-"<<M-1<<"):";cin>>i;//輸入須申請(qǐng)的資源號(hào)cout<<endl<<"請(qǐng)輸入進(jìn)程"<<i<<"申請(qǐng)的資源:"<<endl;for(j=0;j<N;j++){cout<<name[j]<<":";cin>>Request[j];//輸入需要申請(qǐng)的資源}for(j=0;j<N;j++){if(Request[j]>Need[i][j])//判斷申請(qǐng)與否不小于需求,若不小于則出錯(cuò){cout<<endl<<"進(jìn)程"<<i<<"申請(qǐng)的資源不小于它需要的資源";cout<<"分派不合理,不予分派!"<<endl;ch='n';break;}else{if(Request[j]>Avaliable[j])//判斷申請(qǐng)與否不小于目前資源,若不小于則{//出錯(cuò)cout<<endl<<"進(jìn)程"<<i<<"申請(qǐng)的資源不小于系統(tǒng)目前可運(yùn)用的資源";cout<<"分派出錯(cuò),不予分派!"<<endl;ch='n';break;}}}if(ch=='y'){changdata(i);//根據(jù)進(jìn)程需求量變換資源showdata();//根據(jù)進(jìn)程需求量顯示變換後的資源safe();//根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷}}intmain()//主函數(shù){intt=1,i,j,number,choice,m,n,flag;charming;cout<<"*****************銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)*****************"<<endl;cout<<endl<<"請(qǐng)首先輸入系統(tǒng)可供資源種類的數(shù)量:";cin>>n;N=n;for(i=0;i<n;i++){cout<<"資源"<<i+1<<"的名稱:";cin>>ming;name[i]=ming;cout<<"資源的數(shù)量:";cin>>number;Avaliable[i]=number;}cout<<endl;cout<<"請(qǐng)輸入作業(yè)的數(shù)量:";cin>>m;M=m;cout<<endl<<"請(qǐng)輸入各進(jìn)程的最大需求量("<<m<<"*"<<n<<"矩陣)[Max]:"<<endl;for(i=0;i<m;i++)for(j=0;j<n;j++)cin>>Max[i][j];do{flag=0;cout<<endl<<"請(qǐng)輸入各進(jìn)程已經(jīng)申請(qǐng)的資源量("<<m<<"*"<<n<<"矩陣)[Allocation]:"<<endl;for(i=0;i<m;i++)for(j=0;j<n;j++){cin>>Allocation[i][j];if(Allocation[i][j]>Max[i][j])flag=1;Need[i][j]=Max[i][j]-Allocation[i][j];}if(flag)cout<<endl<<"申請(qǐng)的資源不小于最大需求量,請(qǐng)重新輸入!\n"<<endl;}while(flag);showdata();//顯示多種資源safe();//用銀行家算法鑒定系統(tǒng)與否安全while(1){if(t==1){cout<<endl<<"運(yùn)用銀行家算法預(yù)分派資源"<<endl;share();t=0;}elsebreak;cout<<endl<<"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國(guó)板藍(lán)根顆粒市場(chǎng)行情監(jiān)測(cè)及未來前景趨勢(shì)預(yù)測(cè)研究報(bào)告
- 2025-2030中國(guó)智能疏導(dǎo)系統(tǒng)行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- 文獻(xiàn)版權(quán)保護(hù)與合理使用-洞察闡釋
- 滬粵版八年級(jí)物理下冊(cè)課程創(chuàng)新與改進(jìn)計(jì)劃
- 紅樓夢(mèng)經(jīng)典閱讀計(jì)劃
- 聲音與敘事記憶-洞察闡釋
- 動(dòng)態(tài)優(yōu)化方法與風(fēng)險(xiǎn)管理結(jié)合的創(chuàng)新生態(tài)系統(tǒng)管理-第1篇-洞察闡釋
- 三臺(tái)縣事業(yè)單位招聘工作人員筆試真題2024
- 2024化學(xué)檢驗(yàn)工理論高級(jí)工練習(xí)卷附答案
- 天臺(tái)縣紀(jì)委縣監(jiān)委下屬事業(yè)單位選聘考試真題2024
- 2025年財(cái)務(wù)管理全球經(jīng)濟(jì)試題及答案
- 2025-2030年芳綸纖維行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資研究報(bào)告
- 2024年濱州市沾化區(qū)區(qū)屬國(guó)有企業(yè)招聘考試真題
- 紡織機(jī)械操作知識(shí)掌握策略試題及答案
- 煙臺(tái)科目一試題及答案
- 2025年廣東佛山市三水海江建設(shè)投資有限公司招聘筆試參考題庫含答案解析
- 【高中英語】2025年高考英語作文預(yù)測(cè)(10大主題+55篇范文)下
- (完整)北京版小學(xué)英語1至6年級(jí)詞匯(帶音標(biāo))
- DL∕T 1901-2018 水電站大壩運(yùn)行安全應(yīng)急預(yù)案編制導(dǎo)則
- 檢驗(yàn)員標(biāo)準(zhǔn)培訓(xùn)記錄
- 中國(guó)市場(chǎng)橄欖油與消費(fèi)者健康及使用需求聯(lián)合調(diào)研報(bào)告(共46頁).docx
評(píng)論
0/150
提交評(píng)論