版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)習(xí)目:行家法設(shè)實(shí)現(xiàn)【需求規(guī)格說(shuō)明】對(duì)I/O系統(tǒng)的死鎖資的問(wèn)題的解決主要的方法是銀行家算法,單種資的銀行家算法和多種資源的銀行家算法的解決思路一致,要求設(shè)計(jì)實(shí)現(xiàn)種銀行家算法,并要所涉及的模型最少更夠滿足如下要求:程序能夠根據(jù)進(jìn)程的請(qǐng)求進(jìn)行判斷,給出系統(tǒng)是否安全的的示,如果安全,要求夠顯示一組進(jìn)程執(zhí)行的安全序列;能夠根據(jù)需要,顯示當(dāng)前系統(tǒng)中各種資源的分配情況;【算法設(shè)計(jì)】(1)設(shè)計(jì)思想首先初始化多總資源的總量All[n],多個(gè)進(jìn)程所需的這些源的總量Max[i][j],和當(dāng)前已分配的資源數(shù)Allocation[i][j],得到這些進(jìn)程還需資源量Need[i][j],以及每種資源的剩余量Avaliable[n]等檢查一個(gè)狀態(tài)是否安全:查找每個(gè)進(jìn)程中未被滿足的資源數(shù)是否小于或等于Avaliable[j],若,則apply++當(dāng)該進(jìn)程所有資源都被檢查完后,若apply==源種類,說(shuō)明它可以得所需的所有資源并運(yùn)行結(jié)果,并將該進(jìn)程的finish[i]=true表示改進(jìn)程運(yùn)行完,將該進(jìn)程獲得的資源加到Avaliable上,表示為目前可用資源數(shù)。最后將i=-1,示重新執(zhí)行上訴步驟,直到所有進(jìn)程都被標(biāo)記為結(jié)束。若apply!=資源種類,說(shuō)明它不獲得所需的資源,不能運(yùn)行,則堅(jiān)持下一個(gè)進(jìn)程。并重新執(zhí)行上訴步驟,直到所有進(jìn)程都被標(biāo)記為結(jié)束或發(fā)生死鎖,即找不滿足的進(jìn)程。若所有進(jìn)程都被標(biāo)記為結(jié)束,則表示該狀態(tài)是安全的;若發(fā)死鎖,則說(shuō)明該狀態(tài)不安全。IsSafe()for循環(huán)判斷每個(gè)進(jìn)程是否能分配仍需的每種資源判斷每個(gè)進(jìn)程是否都標(biāo)IsSafe()for循環(huán)判斷每個(gè)進(jìn)程是否能分配仍需的每種資源判斷每個(gè)進(jìn)程是否都標(biāo)記結(jié)束則輸出安全的進(jìn)程執(zhí)行序列該狀態(tài)不安全,發(fā)生死鎖將該進(jìn)程標(biāo)記為運(yùn)行結(jié)束,并將其資源釋放出該進(jìn)程不能得到所需的所有資源,判斷下一個(gè)進(jìn)程(2)設(shè)計(jì)表示下圖為銀行家算法中判斷某一狀態(tài)是否為安全的算法模塊結(jié)圖:否
否
是是該狀態(tài)為安全,去(3)詳細(xì)設(shè)計(jì)表示下圖為IsSave(函數(shù)主要的算法流程:apply++;j++Apply=0;Avaliable[m]=Avaliable[m]+Allocation[i][m];Finish[i]=True;Returnapply++;j++Apply=0;Avaliable[m]=Avaliable[m]+Allocation[i][m];Finish[i]=True;Return-1Return1否否i<M&&Finish[i]==False是j<N&&Need[i][j]<=Avaliable[j]lse是apply==N是I<M&&Finish[i]==Falsee是【調(diào)試報(bào)告】主要算法是判斷該狀態(tài)是否為安全狀態(tài),因此,在查找每個(gè)程中未被滿足的資源是否小于或等于Avaliable[j]時(shí)首先是要判斷Finish[i]==False是為真,當(dāng)該進(jìn)程已經(jīng)運(yùn)行結(jié)束就不需要再執(zhí)行for循環(huán)內(nèi)的判斷。當(dāng)有一個(gè)進(jìn)程能分配所需資源而被運(yùn)行后,需要標(biāo)記該進(jìn)程結(jié)束,即finish[i]=true且需要把該進(jìn)程的資源釋放出來(lái)。當(dāng)這些完成后,需要注意將=-1,因?yàn)榇藭r(shí)要重新查找每一個(gè)進(jìn)程,而不是簡(jiǎn)單的執(zhí)行下一個(gè)循環(huán)(會(huì)出現(xiàn)問(wèn)題整個(gè)代碼都將數(shù)組的大小暫定為100因?yàn)橐话阗Y源及進(jìn)程不會(huì)超過(guò)100,且不能太大和太小?!居脩羰謨?cè)】由于只是簡(jiǎn)單的win32序,加ctrl+F5即可運(yùn)行。其中需要按照提示輸入資源種類、每種資源的最大數(shù)量、進(jìn)數(shù)量、及每個(gè)進(jìn)程需各種資源的總量、和已分配的資源數(shù)量,由這些數(shù)據(jù)進(jìn)行初化變量,繼而調(diào)用showdata()可以顯示資源總量、當(dāng)前每種資源的剩余量、每個(gè)進(jìn)程所需每種資的總量的矩陣、已分配每種資源的數(shù)量的矩陣、和每個(gè)進(jìn)程還需每種資源量的矩陣。后調(diào)用IsSave()來(lái)判斷該狀態(tài)是否處于安全狀態(tài)?!靖戒洝恐饕鷮?shí)現(xiàn):判斷該狀態(tài)是否為安全狀態(tài)IsSave():intIsSafe()//安性算法{inti,j,k=0,m,apply,Finish[100]={0};for(i=0;i<M;i++)//查找每個(gè)進(jìn)程{if(Finish[i]==False)//判斷該進(jìn)程是否已經(jīng)運(yùn)行結(jié)束{apply=0;//能足該進(jìn)程所需的資源的種類for(j=0;j<N;j++)//對(duì)該進(jìn)程的每個(gè)資源進(jìn)行判斷{if(Need[i][j]<=Avaliable[j])//是有可用的資源滿足{apply++;//一種資源可以被滿足}}if(apply==N){//如果每種資源都能被滿足,則該進(jìn)程被執(zhí)行for(m=0;m<N;m++)Avaliable[m]=Avaliable[m]+Allocation[i][m];//將進(jìn)程占用資源釋放,變?yōu)榭捎觅Y源Finish[i]=True;//記該進(jìn)程已經(jīng)運(yùn)行結(jié)束temp[k]=i;//存安全序列i=-1;//從第一個(gè)進(jìn)程開始,重新檢查每一個(gè)進(jìn)程k++;}}}for(i=0;i<M;i++){if(Finish[i]==False){//逐一判斷每個(gè)進(jìn)程最后是否都被執(zhí)行結(jié)束,若有則該狀態(tài)不安全cout<<"系不安全"<<endl;//不功系統(tǒng)不安全return-1;}}//否則系統(tǒng)全cout<<"系是安全的!"<<endl;//如果安全,輸出成功cout<<"分的序列:";for(i=0;i<M;i++){//輸出運(yùn)行進(jìn)程數(shù)組cout<<temp[i];if(i<M-1)cout<<"->";}cout<<endl;return0;}輸出此時(shí)的狀態(tài)showdata(:voidshowdata()//顯示資源矩陣{inti,j;cout<<"系的所有資源的總數(shù)量[All]:"<<endl;for(i=0;i<N;i++)cout<<name[i]<<"";cout<<endl;for(j=0;j<N;j++)cout<<All[j]<<"";//輸出分配資源cout<<endl;cout<<"系目前可用的資源[Avaliable]:"<<endl;for(i=0;i<N;i++)cout<<name[i]<<"";cout<<endl;for(j=0;j<N;j++)cout<<Avaliable[j]<<"";//輸分配資源cout<<endl;cout<<"MaxAllocationNeed"<<endl;cout<<"進(jìn)名for(j=0;j<3;j++){
";for(i=0;i<N;i++)cout<<name[i]<<"";cout<<"";}cout<<endl;for(i=0;i<M;i++){cout<<""<<i<<"";for(j=0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)簡(jiǎn)易版
- 基坑課程設(shè)計(jì)課設(shè)
- 怎樣做化工課程設(shè)計(jì)題呢
- 支撐連接筒課程設(shè)計(jì)
- 學(xué)校音樂(lè)鑒賞課程建設(shè)的現(xiàn)狀與意義
- 幼兒園跑步看清楚安全教案
- 醫(yī)療資源平臺(tái)創(chuàng)業(yè)路演
- 智能供配電課程設(shè)計(jì)
- 成語(yǔ)猜猜猜課程設(shè)計(jì)
- 湖南xx區(qū)域性養(yǎng)老服務(wù)中心項(xiàng)目可行性研究報(bào)告
- 2025屆山東實(shí)驗(yàn)中學(xué)高一上數(shù)學(xué)期末統(tǒng)考試題含解析
- 紀(jì)委履行監(jiān)督職責(zé)情況報(bào)告3篇-各級(jí)紀(jì)委要履行好監(jiān)督專責(zé)
- 創(chuàng)新、發(fā)明與專利實(shí)務(wù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024新人教版道法一年級(jí)上冊(cè)第三單元:養(yǎng)成良好習(xí)慣大單元整體課時(shí)教學(xué)設(shè)計(jì)
- 大學(xué)英語(yǔ)三級(jí)(A級(jí))模擬試卷12(共668題)
- 機(jī)電安裝行業(yè)危險(xiǎn)源因素識(shí)別清單
- 兒牙口腔知識(shí)科普(小牙醫(yī)課堂)
- 2024年政府補(bǔ)貼協(xié)議書
- 《Photoshop CC圖形圖像處理實(shí)例教程》全套教學(xué)課件
- 公共租賃住房運(yùn)行管理標(biāo)準(zhǔn)
- 2024-2030年中國(guó)永磁耦合器行業(yè)經(jīng)營(yíng)優(yōu)勢(shì)及競(jìng)爭(zhēng)對(duì)手現(xiàn)狀調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論