銀行家算法模擬_第1頁
銀行家算法模擬_第2頁
銀行家算法模擬_第3頁
銀行家算法模擬_第4頁
銀行家算法模擬_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

銀行家算法模擬班級軟件二班學號11270235姓名梁書敏一、實驗目的(1)進一步理解利用銀行家算法避免死鎖的問題;(2)在了解和掌握銀行家算法的基礎上,編制銀行家算法通用程序,將調試結果顯示在計算機屏幕上,再檢測和筆算的一致性。(3)理解和掌握安全序列、安全性算法加內容二、實驗內容(1)了解和理解死鎖;(2)理解利用銀行家算法避免死鎖的原理;(3)會使用某種編程語言。三、實驗原理(一)安全狀態(tài)指系統(tǒng)能按照某種順序如<P1,P2,…,Pn>(稱為<P1,P2,…,Pn>序列為安全序列),為每個進程分配所需的資源,直至最大需求,使得每個進程都能順利完成。(二)銀行家算法假設在進程并發(fā)執(zhí)行時進程i提出請求j類資源k個后,表示為Requesti[j]=k。系統(tǒng)按下述步驟進行安全檢查:(1)如果Requesti≤Needi則繼續(xù)以下檢查,否則顯示需求申請超出最大需求值的錯誤。(2)如果Requesti≤Available則繼續(xù)以下檢查,否則顯示系統(tǒng)無足夠資源,Pi阻塞等待。(3)系統(tǒng)試探著把資源分配給進程Pi,并修改下面數(shù)據(jù)結構中的數(shù)值:Available[j]∶=Available[j]-Requesti[j];Allocation[i,j]∶=Allocation[i,j]+Requesti[j];Need[i,j]∶=Need[i,j]-Requesti[j];(4)系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。若安全,才正式將資源分配給進程Pi,以完成本次分配;否則,將本次的試探分配作廢,恢復原來的資源分配狀態(tài),讓進程Pi等待。(三)安全性算法(1)設置兩個向量:①工作向量Work:它表示系統(tǒng)可提供給進程繼續(xù)運行所需的各類資源數(shù)目,它含有m個元素,在執(zhí)行安全算法開始時,Work∶=Available;②Finish:它表示系統(tǒng)是否有足夠的資源分配給進程,使之運行完成。開始時先做Finish[i]∶=false;當有足夠資源分配給進程時,再令Finish[i]∶=true。(2)從進程集合中找到一個能滿足下述條件的進程:①Finish[i]=false;②Need[i,j]≤Work[j];若找到,執(zhí)行步驟(3),否則,執(zhí)行步驟(4)。(3)當進程Pi獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應執(zhí)行:Work[j]∶=Work[i]+Allocation[i,j];Finish[i]∶=true;gotostep2;(4)如果所有進程的Finish[i]=true都滿足,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。流程圖#include<iostream.h>#include<string.h>#include<stdio.h>#defineFalse0#defineTrue1intMax[100][100]={0};//各進程所需各類資源的最大需求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)可提供資源intM=100;//作業(yè)的最大數(shù)為100intN=100;//資源的最大數(shù)為100voidshowdata()//顯示資源矩陣{inti,j;cout<<"系統(tǒng)目前可用的資源[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<<"進程名";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;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]<<"";cout<<endl;}}intchangdata(inti)//進行資源分配{intj;for(j=0;j<M;j++){Avaliable[j]=Avaliable[j]-Request[j];Allocation[i][j]=Allocation[i][j]+Request[j];Need[i][j]=Need[i][j]-Request[j];}return1;}intsafe()//安全性算法{inti,k=0,m,apply,Finish[100]={0};intj;intflag=0;Work[0]=Avaliable[0];Work[1]=Avaliable[1];Work[2]=Avaliable[2];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){for(m=0;m<N;m++)

Work[m]=Work[m]+Allocation[i][m];//變分配數(shù)Finish[i]=True;temp[k]=i;i=-1;k++;flag++;}}}}for(i=0;i<M;i++){if(Finish[i]==False){cout<<"系統(tǒng)不安全"<<endl;//不成功系統(tǒng)不安全return-1;}}cout<<"系統(tǒng)是安全的!"<<endl;//如果安全,輸出成功cout<<"分配的序列:";for(i=0;i<M;i++){//輸出運行進程數(shù)組cout<<temp[i];if(i<M-1)cout<<"->";}cout<<endl;return0;}voidshare()//利用銀行家算法對申請資源對進行判定{charch;inti=0,j=0;ch='y';cout<<"請輸入要求分配的資源進程號(0-"<<M-1<<"):";cin>>i;//輸入須申請的資源號cout<<"請輸入進程"<<i<<"申請的資源:"<<endl;for(j=0;j<N;j++){cout<<name[j]<<":";cin>>Request[j];//輸入需要申請的資源}for(j=0;j<N;j++){if(Request[j]>Need[i][j])//判斷申請是否大于需求,若大于則出錯{cout<<"進程"<<i<<"申請的資源大于它需要的資源";cout<<"分配不合理,不予分配!"<<endl;ch='n';break;}else{if(Request[j]>Avaliable[j])//判斷申請是否大于當前資源,若大于則{//出錯co裕ut蛋<<引"進濤程"諷<<徐i<館<"司申請白的資衣源大側于系兵統(tǒng)現(xiàn)肚在可伙利用鵝的資首源"養(yǎng);co匯ut芹<<袋"駛分配憤出錯錫,不釋予分弓配!濁"<曠<e摧nd壺l;ch凝='夸n'撇;br謙ea掃k;}}}if航(c蝕h=謀='襲y'赤)填{ch床an濤gd燈at各a(代i)虹;/冰/根通據(jù)進片程需賣求量握變換策資源sh鋪ow器da若ta真()乘;/族/根絹據(jù)進孕程需領求量劈燕顯示策變換用后的蝦資源sa敘fe置()尺;/踩/根死據(jù)進靜程需但求量較進行做銀行遞家算揉法判膠斷}}vo肉id遲a庸dd該re添so登ur矩ce偵s(尿){斜//超添加訪資源in吼t脹n,叔fl書ag章;co囑ut宋<<瓦"請竿輸入捐需要妻添加耍資源遭種類益的數(shù)退量:塘";ci似n>帳>n貓;fl作ag途=N弦;N=慌N+罩n;fo丸r(連in粥t朋i=罪0;傘i<研n;更i+慰+)潔{co夏ut愈<<威"名惹稱:恭";ci番n>鮮>n滋am辣e[咱fl跳ag悄];co鳥ut炕<<折"數(shù)姐量:草";ci幼n>酷>A在va以li蠅ab氣le塊[f來la若g+壯+]渴;}sh找ow忽da械ta嘆()刮;sa逃fe勻()除;}vo攏id其d哥el尺re運so銹ur沫ce蹲s(卸){融//朽刪除涉資源ch兩ar孟m嘴in貓g;in逆t陽i,盯fl見ag浸=1程;co黎ut鈴<<傾"請饅輸入杜需要糖刪除勁的資忙源名蔽稱:串";do您{ci奸n>仁>m顛in鑰g;fo清r(爪i=德0;械i<類N;鴉i+方+)if陳(m博in皇g=逼=n斜am不e[液i]師){fl軋ag乓=0攜;br他ea曠k;}if編(i妹==牽N)co賠ut勝<<紹"該奪資源月名稱蒸不存腳在,嫁請重纏新輸亦入:槳";}wh察il亭e(沈fl媽ag支);fo魄r(蠻in側t勒j=獻i;幻玉j<臉N-示1;垃j+禁+){na花me顯[j箱]=傅na邊me趨[j任+1勇];Av得al帶ia妨bl擊e[扒j]書=A兇va料li忠ab沸l(wèi)e混[j潛+1鎖];}N=魯N-鍋1;sh糾ow鳥da哪ta貞()宇;sa乳fe澡()糠;}vo朗id霞c駐ha站ng顛er貍es薦ou倆rc防es青()膏{/窄/修舟改資秩源函陜數(shù)co商ut鈴<<弊"系帳統(tǒng)目足前可非用的充資源貪[A真va彈li松ab舊le井]:腐"<抗<e估nd洞l;fo釣r(松in副t北i=區(qū)0;煮i<輝N;鋸i+展+)co短ut惜<<昌na銅me盼[i膠]<艷<"襲:"旦<<召Av仁al壓ia竊bl揀e[躲i]忠<<梯en磨dl脫;co敲ut壩<<傳"輸鑄入系遭統(tǒng)可喬用資貼源[舊Av晨al辯ia犧bl碑e]悼:"農(nóng)<<避en夕dl六;ci榜n>他>A駕va脹li五ab糠le襲[0粗]>耽>A反va慰li睬ab土le岡[1午]>溫>A諷va狐li滲ab添le毯[2捧];co甚ut貪<<兔"經(jīng)軌修改汗后的思系統(tǒng)傅可用滲資源瘡為"鉆<<河en夸dl派;fo嘩r雪(i蠶nt我k權=0螺;k神<N服;k到++移)co哄ut稠<<陷na咱me親[k厘]<符<"風:"頸<<戰(zhàn)Av敬al圖ia離bl呀e[嬌k]尼<<社en惡dl敏;sh蝦ow箭da跑ta港()主;sa薦fe慶()纖;}vo事id攝a撿dd線pr殿oc序es訊s(仗){垃//細添加謠作業(yè)in臺t著fl楚ag服=M疏;M=溫M+盛1;co夠ut現(xiàn)<<討"請冰輸入嫂該作菜業(yè)的壇最打聞需求餡量[逐Ma鵲x]我"<覆<e防nd辛l;fo銷r(左in其t吳i=竄0;閃i<堤N;勿i+仗+)抽{co紐奉ut替<<伐na扁me芹[i桂]<催<"蒸:"讀;ci他n>邪>M補ax漠[f德la幣g]盜[i勢];Ne育ed脈[f承l(wèi)a仁g]敲[i犯]=兄Ma線x[牲fl悼ag盞][替i]負-A突ll啦oc田at贈io閉n[館fl圣ag塘][偵i]湖;}sh月ow唐da徹ta符()蠅;sa躍fe壩()拘;}in吐t碰ma伯in通()達//炕主函識數(shù){in羨t次i,每j,展nu伸mb禾er悠,c殘ho耀ic嚼e,丹m,坡n,捉fl冰ag沉;ch只ar棋m捷in嚇g;co樸ut霸<<歲"*敞**樣**儉**易**慌**側**悼**晉**楊單處狹理機吧系統(tǒng)床進程耕調度木實現(xiàn)屆**塵**叫**您**終**灑**番**龍**恩*"渴<<嚇en亞dl地;co干ut淹<<政"請耀首先君輸入青系統(tǒng)輝可供她資源園種類慈的數(shù)盟量:叉";ci桐n>固>n犧;N=咳n;fo兆r(走i=泉0;魚i<雕n;答i+毛+){co繩ut姐<<驅"資爺源"統(tǒng)<<憑i+厘1<偽<"鹿的名部稱:葛";ci萄n>叼>m盯in撫g;na見me移[i轎]=腎mi誼ng尺;co宅ut雷<<禿"資脹源的鋼數(shù)量儲:"均;ci需n>餓>n例um見be扶r;Av米al頂ia用bl租e[騙i]躲=n已um愚be責r;}co納ut棒<<咬en井dl析;co般ut桑<<茂"請舒輸入嫌作業(yè)鈴的數(shù)咬量:脆";ci鹽n>它>m禾;M=啦m;co德ut樹<<啦"請燃輸入數(shù)各進菠程的苗最大崗需求喘量(音"<凱<m躬<<喊"*瓶"<亭<n悠<<輝"矩歡陣)先[M艘ax涌]:騰"<栽<e翻nd仁l;fo棵r(籮i=峽0;低i<梳m;樂i+蒼+)fo賣r(糧j=耕0;石j<隸n;今j+畜+)ci蠻n>脈>M此ax聾[i版][撇j]遲;do縮慧{fl訂ag饅=0停;co耕ut竊<<滴"請紅輸入皆各進握程已張經(jīng)申耕請的健資源浩量(哨"<鼻<m居<<潮"*拜"<壓<n童<<疫"矩部陣)萄[A橡ll胖oc馳at帳io上n]俊:"正<<稈en瘋dl談;fo摟r(伐i=隔0;慘i<肉m;采i+矮+)fo鹽r(撿j=鞠0;緊j<棟n;跳j+冒+)初{ci搬n>嚇>A詠ll緩oc某at斤io肌n[婚i]速[j刪];if維(A圾ll鍛oc求at斷io驢n[亭i]躬[j粥]>慢Ma塑x[疫i]制[j香])fl稍ag稱=1牲;Ne財ed刃[i保][捷j]陷=M含ax欺[i擋][觀j]堅-A戚ll盾oc普at結io閥n[濾i]同[j幫];}if嬌(f寬la忠g)co遠ut永<<去"申繡請的液資源船大于嚷最大鄙需求渡量,麗請重伏新輸際入!由\n賠";}wh妙il爐e(缺fl救ag豎);sh撈ow爸da柱ta瘡()車;/廟/顯告示各蓋種資值源sa傾fe鹿()斤;/喚/用英銀行埋家算妨法判撈定系押統(tǒng)是棕否安憑全wh范il貧e(聯(lián)ch跡oi桶ce之){co話ut稻<<驅"*標**糠**型**舞**切**蔑**句*銀暢行家碼算法鑰演示米**怠**美**爬**枯**溫**獄**死*"哥<<產(chǎn)en概dl桃;co飼ut鞏<<暑"遇1:能增加天資源飛"<協(xié)<e濱nd浴l;co蹄ut缸<<銷"說2:蔬刪除孝資源旨"<蔽<e悉nd愚l;co諷ut票<<之"雅3:傳修改學資源疏"<索<e蘇nd街l;co心ut腿<<招"熱4:銜分配太資源墓"<刑<e甲nd精l;co叉ut罷<<波"錄5:潔增加構作業(yè)復"<商<e哪nd昂l;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論