操作系統(tǒng)課程設(shè)計(銀行家算法)_第1頁
操作系統(tǒng)課程設(shè)計(銀行家算法)_第2頁
操作系統(tǒng)課程設(shè)計(銀行家算法)_第3頁
操作系統(tǒng)課程設(shè)計(銀行家算法)_第4頁
操作系統(tǒng)課程設(shè)計(銀行家算法)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、操作系統(tǒng)課程設(shè)計(銀行家算 法)發(fā)鼠理工大專操作系統(tǒng)課程設(shè)計說明書題目:銀行家算法模擬院 系:計算機科學與工程學院專業(yè)班級:計算機10-5班學 號:2010303157學生姓名:張緒磊指導(dǎo)教師:劉惠臨2013年1月9日安徽理工大學課程設(shè)計(論文)任務(wù)書計算機科學與工程學院計算機科學與技術(shù)系學號20103031學生專業(yè)(班計算機57姓名張緒磊級)10-5班設(shè)計 題目銀行家算法 模擬設(shè) 計 技 術(shù) 參 數(shù)系統(tǒng)平臺:Windows 7開發(fā)工具:vc+ 6. 0開發(fā)語言:C/C+語言設(shè)計要求1 .系統(tǒng)基本實現(xiàn)安全性、添加資源、修改資 源、配置資源等算法。2 .要求系統(tǒng)能實現(xiàn)人機交互,界面友好。3 .當

2、輸入一組資源和作業(yè)的數(shù)量時,可以根 據(jù)其需求量判斷系統(tǒng)安全性。工 作 量1 .設(shè)計報告要求不少于4000字。2 .源程序要求不少于300行2012.11. 2P2012. 11. 28算法的分析及系統(tǒng) 的功能分析工 作 計 劃2012. 11. 292012. 12. 032012.12. 042012.12.10 設(shè)計2012.13. 1P2012. 12. 24 和界面設(shè)計2012. 12. 252013. 01. 01試2013. 01. 022013. 01. 09告系統(tǒng)的總體設(shè)計系統(tǒng)功能的詳細系統(tǒng)的編碼設(shè)計系統(tǒng)的調(diào)試及測撰寫課程設(shè)計報參 考 資 料2譚浩強.C程序設(shè)計.第三版,北京:

3、清華大學出版社,20051湯小丹,梁紅兵,哲鳳屏,湯子瀛.計算機操作系統(tǒng).第三版,西安:西安電子科技 大學出版社,20073張海藩.軟件工程導(dǎo)論.第五版,北京:清 華大學出版社,20084馮博琴.Visual C+與面向?qū)ο蟪绦蛟O(shè)計教程,第三版.高等教育出版社;2010指導(dǎo)教 師簽字系主任簽字2013年1月9日安徽理工大學課程設(shè)計(論文)成績評定表學生姓名:張緒磊 學號:2010303157 專業(yè)班級:計算機10-5班設(shè)計題目:銀行家算法模擬指導(dǎo)教師評語:成績:指導(dǎo)教師:摘要銀行家算法是一個用來預(yù)防系統(tǒng)進入死鎖狀態(tài)的算法,用它可以判斷系統(tǒng)的安全 性,如果系統(tǒng)當前處于安全狀態(tài),則可以為申請資源的

4、進程分配資源;如果不是安全狀 態(tài),則不能為申請資源的進程分配資源。銀行家算法執(zhí)行過程中,首先判斷申請資源 的進程所申請的資源數(shù)目是否合法,若是合法的,則可以為其進行試分配,再利用安全 性算法求出安全序列,如果存在安全序列,則說明可以給申請資源的進程分配資源,分 配成功,繼續(xù)為其它進程服務(wù)。如果找不到安全序列,則說明為該進程分配資源后系統(tǒng) 會進入不安全狀態(tài),所以不能為該進程分配資源,使該進程進入阻塞狀態(tài)。若申請資源 的進程申請的資源數(shù)目不合法,則不需要進行試分配,直接使其進入阻塞狀態(tài),處理其他申請資源的進程。關(guān)健諒可用資源,最大需求矩陣,分配矩陣,需求矩陣,安全性算法,安全序列24.2主要函數(shù)的

5、核心代;1 .緒論11.1 系統(tǒng)分工11.2 課題背景11.3 死鎖21.4 安全性21.5 算法設(shè)計思想22 .需求分析2.1 基本要求2.2 模塊劃分3 .總體設(shè)計43.1 算法設(shè)計43.2 模塊設(shè)計54詳細設(shè)計1程序流程4.15 .程序測試135.1 界面設(shè)計135.2 2數(shù)據(jù)測試145.3 操作提示156 .總結(jié)17參考文獻181.1系統(tǒng)分工銀行家算法模擬1.緒論設(shè)計內(nèi)容及其說明主要和組員張鑫設(shè)計MFC界面和代碼 的調(diào)試,涉及主要功能代碼,包括其 他組員設(shè)計的主要函數(shù)代碼嵌入到本人設(shè)計MFC中,主要編寫了銀行家算法。對內(nèi)容MFC程序遇到的錯誤修改、功能缺失及算法不健壯等問題作了修改。之

6、后 和其他組員一起將其他的功能嵌入 到程序里,主要是添加資源,刪除資 源,修改資源,分配資源和增加作業(yè) 功能,最終完成了了一個整體的銀行 家算法。添加資源,修改資源,刪除資源,分配資源,增加作業(yè)。其他組員 設(shè)計內(nèi)容1.2 課題背景在多道程序系統(tǒng)中,雖可以借助多個進程的并發(fā)執(zhí)行來改善系統(tǒng)的資源利用率,提 高系統(tǒng)吞吐量,但可能發(fā)生一種危險一一死鎖,即多個進程在運行過程中因爭奪資源而 造成的一種僵局,若無外力作用,將無法再向前推進。如此,尋求一種避免死鎖的方法 便顯得有為重要。死鎖的產(chǎn)生一般的原因有兩點:競爭資源和進程間推進順序非法。因 此,我們只需在當前的有限資源下,找到一組合法的執(zhí)行順序,便能很

7、好的避免死鎖, 我們稱它為安全序列。而銀行家算法起源于銀行系統(tǒng)的發(fā)放貸款,和計算機操作系統(tǒng)的 資源分配完全符合,因此可以借鑒該算法的思想,設(shè)計出一種有效的算法程序,解決該 問題。1.3 死鎖所謂死鎖:是指兩個或兩個以上的進程在執(zhí)行過程中,因爭奪資源而造成的一種 互相等待的現(xiàn)象,若無外力作用,它們都將無法推進下去。此時稱系統(tǒng)處于死鎖狀態(tài)或 系統(tǒng)產(chǎn)生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。由于資源占用是互斥的, 當某個進程提出申請資源后,使得有關(guān)進程在無外力協(xié)助下,永遠分配不到必需的資源 而無法繼續(xù)運行,這就產(chǎn)生了一種特殊現(xiàn)象:死鎖。在計算機系統(tǒng)中,涉及軟件,硬件資源都可能發(fā)生死鎖。例如:系

8、統(tǒng)中只有一臺 CD-ROM驅(qū)動器和一臺打印機,某一個進程占有了 CD-ROM驅(qū)動器,又申請打印機;另一 進程占有了打印機,還申請CD-ROM。結(jié)果,兩個進程都被阻塞,永遠也不能自行解除。1.4 安全性全序列的的實際意義在于:系統(tǒng)每次進行資源分配后,如果對于系統(tǒng)中新的資源狀 況,存在一個安全序列,則至少存在一條確保系統(tǒng)不會進入死鎖的路徑。按照該序列, 銀行家可以實施一個有效的分配過程使得所有客戶得到滿足,行家算法的核心在于安全 序列的產(chǎn)生。安全序列正是一種安全的進程推進順序。1.5 算法設(shè)計思想我們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當于銀行家管理的資 金,進程向操作系統(tǒng)請求分配資源

9、相當于用戶向銀行家貸款。操作系統(tǒng)按照銀行家制定 的規(guī)則為進程分配資源,當進程首次申請資源時,要測試該進程對資源的最大需求量, 如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當前的申請量分配資源,否則就推遲 分配。當進程在執(zhí)行中繼續(xù)申請資源時,先測試該進程已占用的資源數(shù)與本次申請的資 源數(shù)之和是否超過了該進程對資源的最大需求量。若超過則拒絕分配資源,若沒有超過 則再測試系統(tǒng)現(xiàn)存的資源能否滿足該進程尚需的最大資源量,若能滿足則按當前的申請 量分配資源,否則也要推遲分配。2 .需求分析3 .1基本要求(1)從鍵盤輸入當前系統(tǒng)的資源信息,包括當前可用資源,每個進程對各類資源的最 大需求量,每個進程當前已

10、分配的各個資源量和每個進程尚需要的各個資源量,輸出結(jié) 果顯示在界面上。(2)輸入進程請求,按照設(shè)計好的安全性算法進行檢查,得到結(jié)果并輸出整個執(zhí)行過 程的相關(guān)信息和最終結(jié)果(主要包括資源分配表和安全序列)。(3)要求要有各種異常的處理,程序的可控制性和可連續(xù)性執(zhí)行。包括對進程的存在 有無檢查,請求向量的不合法檢查,試分配失敗后的數(shù)據(jù)恢復(fù)和重新接受進程請求等。2. 2模塊劃分(1)分配模塊輸入一組資源及作業(yè)的數(shù)量,分配資源及作業(yè)的各項屬性。再配置作業(yè)的資源最大 需求量及已申請的資源屬性。以及資源的添加、修改、刪除和分配功能,此外,還有對 作業(yè)的添加。(2)判定模塊通過銀行家算法對已經(jīng)分配完畢的資源

11、及作業(yè)的屬性進行判斷,判斷申請是否大于 需求,若大于則出錯,則提示出錯信息;判斷申請是否大于當前資源,若大于則出錯, 則提示出錯信息。(3)檢查模塊根據(jù)銀行家算法進行資源分配后,檢查資源分配后的系統(tǒng)狀態(tài)是否處于安全狀態(tài)之 中,以避免死鎖的發(fā)生。當資源分配可行時,則分配;若安全性算法不能通過,則不予 分配,以保證系統(tǒng)的安全和死鎖的不發(fā)生。93.總體設(shè)計2.1 算法設(shè)計(1)銀行家算法的實現(xiàn),需要用到以下主要數(shù)據(jù):intMax100100=0;各進程所需各類資源的最大需求int Avallable100=0;系統(tǒng)可用資源CString name100=”; 資源的名稱intAllocation10

12、0100=0;系統(tǒng)已分配資源int Need100100=0;還需要資源int Request100=0;請求資源向量Int temp100=0;存放安全序列hit Work100=0;存放系統(tǒng)可提供資源int M=100;作業(yè)的最大數(shù)為100int N=1OO;資源的最大數(shù)為100int dqzysl=3,zysl=0,worksl=0;int sign;a)資源及作業(yè)屬性配置:這是對資源和作業(yè)的分配過程,在實現(xiàn)銀行家算法之前,需有 資源和作業(yè)的屬性信息,才可以驗證銀行家算法及安全性算法,最終實現(xiàn)銀行家算法。 b)銀行家算法:銀行家算法是對資源分配進行判斷,判斷資源分配的可行性,以免導(dǎo)致 死

13、鎖的發(fā)生,是避免死鎖的重要一步。c)安全性算法:安全性算法是對于安全性檢查算法主要是根據(jù)銀行家算法進行資源分 配后,檢查資源分配后的系統(tǒng)狀態(tài)是否處于安全狀態(tài)之中。(2)銀行家算法中用到的主要數(shù)據(jù)結(jié)構(gòu):可利用資源向量int最大需求矩陣int分配矩陣int需求矩陣int申請各類資源數(shù)量int 工作向量intAvailablejj為資源的種類。Maxiji為進程的數(shù)量。AllocationEijneedij= Maxij- AllocationEijRequest iji進程申請j資源的數(shù)量Workx int Finishy3. 2模塊設(shè)計(1)主要模塊如圖3-1。銀行家資源 銀行圖3-1主要模塊(

14、2)子模塊如圖3-2o圖3-2子???.詳細設(shè)計3.1 程序流程圖圖4-1系統(tǒng)流程圖4. 2主要函數(shù)的核心代碼(1)添加資源此處代碼的實現(xiàn)的功能是添加資源名稱,資源數(shù)量和作業(yè)數(shù)量,并且在下一步操作 后提示資源是否成功添加。由于輸入的資源數(shù)不止一個,輸入的數(shù)據(jù)可能會出錯,因此 這里用到了 if條件語句和for循環(huán)語句。當輸入的數(shù)據(jù)不合法時,彈出對話框提示出 錯。void CBankl23Dlg:Onaddzy()/ TODO: Add your control notification handler code hereUpdateData(TRUE);CString str=,M,;if(dq

15、zysl>0)sign=l;for(int i=0;i<3;i+)if(namei=m_zymc && m_zymc!=,M,) sign=O;str= "該資源己存在! ”;)if(m_zymc!=,ftt && m_zysl!=O && si即=1)Avaliable3-dqzysl=m_zysl;name3-dqzysl=m_zymc;zysl+;MessageBox("數(shù)據(jù)輸入成功!若不配置資源,請配置作業(yè)數(shù)量! n系統(tǒng)現(xiàn)在共有 ”+conver(4.dqzysl)+”個資源。ii當前輸入資源名稱為:”+n

16、aine3-dqzysl+”t數(shù)量為: "+conver(Avaliable3dqzysl),”提示”,MB_OK );dqzjsl-;else MessageBox("輸入數(shù)據(jù)不合法! ”+str,"提示“,MB_OK ); else MessageBox("錯誤!當前系統(tǒng)支持資源數(shù)目為3個1您已經(jīng)分配3個了!請 配置作業(yè)數(shù)量! ” J提示”,MB_ICONEXCLAMATION );UpdateData(FALSE);(2)銀行家算法a.如果Request j<Need or Request j=Need,則轉(zhuǎn)向步驟b;否則,認為出錯,因為 它

17、所需要的資源數(shù)已超過它所宣布的最大值。b 如果 RequestVAvailable or Request:Available,則轉(zhuǎn)向步驟 c;否則,表示系 統(tǒng)中尚無足夠的資源,進程必須等待。c.系統(tǒng)試探把要求的資源分配給進程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值: Available二Available-Requesti;Allocation=Allocation+Request;Need=Need-Request;d.系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。for (j=O;J<zysl;J+)if(RequestJ>NeediU) 判斷申請是否大于需求,若大于則

18、出錯 msg=”進程"+conver+”申請的資源大于它需要的資源n”;msg+=n分配不合理,不予分配! nn;MessageBox(msg/, 提示” ,MB_OK);ch=tn,; break; else if(Requestj>AvaHablej)判斷申請是否大于當前資源,若大于則出錯 ms即“進程"+conver+”申請的資源大于系統(tǒng)現(xiàn)在可利用的資源n”; msg+=,'分配出錯,不予分配!n”;MessageBox(insg,f,提示 ” ,MB_OK);ch='nf; break;(3)安全性算法a.設(shè)置兩個向量 工作向量Worko它表示

19、系統(tǒng)可提供進程繼續(xù)運行所需要的各類 資源數(shù)目,執(zhí)行安全算法開始時,Work=Allocation;布爾向量Finish。它表示系統(tǒng) 是否有足夠的資源分配給進程,使之運行完成,開始時先做Finishi:false,當有足 夠資源分配給進程時,令Finishi=true。b.從進程集合中找到一個能滿足下述條件的進程:Finished:falseNeed<or=Work如找到,執(zhí)行步驟c;否則,執(zhí)行步驟d。c.當進程P獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng) 執(zhí)行:Work=Work+Allocation; Finishi=true;轉(zhuǎn)向步驟 b。d如果所有進程的Fini

20、shi=true,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不 安全狀態(tài)。CString safe()安全性算法int i,k=0,m,apply,Finish100=0;int j;int flag=O;CString str3;Work0=Avaliable0;Workl=Avallablel;Work2=Avaliable2;for(i=0;i<worksl;i+) apply=0;for(j=0;J<zysl;j+)if (Finishi=False&&Needij<=WorkJ) apply+;if(apply=zysl)for(m=0;m<zys

21、l;m+)Workm=Workm+Allocationiin;/$5yFinishi=True;tempk=i;i=-l; k+;flag+;for(i=0;i<worksl;l+)if(Finishi=False) CString str2="系統(tǒng)不安全”;return str2;str3="系統(tǒng)是安全的!分配的序列:n”;for(i=0;kworksl;i+)描出運行進程數(shù)組str3=str3+conver(tempi)+,ttl;lf(i<worksl-l) str3=str3+M->M;str3+=,ii,t;return str3;(4)修改資源

22、輸入的資源可能不符合自己的需要,或者需要用到其他的資源,這時可以不必重新 輸入資源數(shù)量,在原有的基礎(chǔ)進行修改即可,此段代碼的作用就是修改資源的名稱和數(shù) 量。void CBankl23Dlg:Onxgzy() / TODO: Add your control notification handler code hereUpdateData(TRUE);int sign=0;if(m_zymc!=tftt && m_zysl!=0)for(int i=0;i<zysl;i+)if(namel=m_zymc)Avaliablei=m_zysl;MessageBox("

23、資源修改成功!提示“,MB_OK);sign=l;CBankl23Dlg:Onflnish();)If(slgn=0) MessageBox(" 資源不存在 1 "J提示”,MB_OK);else MessageBox(”請在資源的名稱和資源數(shù)量輸入合法數(shù)據(jù)! “ J提示UpdateData(FALSE);(5)刪除資源資源不需要的時候應(yīng)該刪除,當資源名稱不存在和輸入的資源名稱為空時,提示重 新進行操作。void CBankl23Dlg:Onsczy() / TODO: Add your control notification handler code here Upda

24、teData(TRUE);CString ming;ming=in_zymc;int i5flag=l,sign=O;if(ining!=t,t)for(l=0;i<zysl;i+)if(ming=namei)flag=O;else slgn+; if(sign=zysl) MssageBox("該資源名稱不存在,請重新輸入!V提示”,MB_OK);lf(flag=O)for(int j=i;j<zysl-l;J+)nameJ=namej+l;AvaliableJ=AvaliableJ+l; zvszvsl-l;CBankl23Dlg:Onflnish();CBank 1

25、23Dlg:Onshow();else MessageBox資源名稱不能為空,請重新輸入!” J提示”,MB_OK);UpdateData(FALSE);(6)增加資源和輸出矩陣資源的數(shù)量不夠時,需要再次輸入,增加成功后提示下一步操作。在輸入框里輸入 矩陣數(shù)據(jù),然后配置資源最大需求量,可以在系統(tǒng)狀態(tài)顯示區(qū)看到系統(tǒng)狀態(tài)信息。void CBankl23Dlg:OnzJwork() UpdateData(TRUE);worksl+;int flag=2;if(m_data!=t,M) CString str=m_data;char *cslnput; csInput=str.GetBuffer(st

26、r.GetLength();提取字符串,把單詞存放在數(shù)組cslnput中char seps=字符串以空格分隔符char *token;token = strtok( cslnput, seps );char *csEditInput100;int index=0;全局變量while( token != NULL)把提取到的單詞存放到數(shù)組csEditlput中csEditInputindex=token; /* 把單詞存放在數(shù)組 csEdltlnput 中”*/ index+; token = strtok( NULL, seps );/* Get next token: */int count

27、=0;for(intj=0;J<zysl;J+)Maxworksl-lJ=atoi(csEditInputcount);Needworksl-lj=Maxworksl-lU-Allocationworksl-l|;count+; flag=O;)else MessageBox("請按配置說明在數(shù)據(jù)輸入?yún)^(qū)輸入相關(guān)矩陣數(shù)據(jù)!”J提示 ,MB_OK);if(flag=0) (MessageBox(n增加作業(yè)成功!請點擊【配置信息完成】按鈕。1”提示 n,MB_OK);UpdateData(FALSE);125.程序測試4.1 界面設(shè)計(1)主界面如圖5-1。圖5-1系統(tǒng)主界面(2)系

28、統(tǒng)使用說明如圖5-2。使用說明【攜作I防】二空宣資源一A空置作業(yè)數(shù)墾-A添加作業(yè)資源最大需求量交置已 由請資源一 查看系統(tǒng)資源信息【增加資源】:在資源名林如資潮娼輸入框中檢入所需增加的婁據(jù),點擊增加資源按鈕° (本實 例只支持最大3個資源!)【修汶資源】:在食源名稱和賀源數(shù)且輸入框中輸入所要修改的數(shù)據(jù),點擊修改貨源按出8【蒯除虎源】:在貨源名稱和貨源數(shù)墾勘入植中掠人所要刪除的蓼疆,點擊刪除登源按鈕a【分更資源】:在作業(yè)數(shù)星揄入框中的入所要分配的作業(yè)媼號和在數(shù)去鑿入框中揄入各資源的數(shù) 自,點擊分配資源拄鈕。【增加作業(yè)】:在數(shù)據(jù)輸入框中鈉入該作業(yè)所需各資源的數(shù)目,點擊增加作業(yè)按鈕?!狙蠹o空置情況請參考配置說明進行輸入!】確定5. 2數(shù)據(jù)測試(1)配置資源及作業(yè)屬性如圖5-3。輸入數(shù)據(jù)為:資源名稱n,資源數(shù)量4,作業(yè)數(shù) 量2。圖5-3資源配置(2)配置資源最大需求量及配置已申請資源如圖5-4和圖5-5o使用前語詳細閱讀資源名稱資源數(shù)量作業(yè)數(shù)量系統(tǒng)信息顯示區(qū):數(shù)據(jù)輸入?yún)^(qū)2/W配置資源最大需求量:配置說W配置

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論