版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(jì)(大作業(yè))報(bào)告課程名稱: 操作系統(tǒng) 設(shè)計(jì)題目: 銀行家算法實(shí)現(xiàn) 院 系: 信息技術(shù)學(xué)院 班 級: 計(jì)算機(jī)科學(xué)與技術(shù) 3 班 設(shè) 計(jì) 者: 王宏斌 學(xué) 號: 201111010322 指導(dǎo)教師: 張德海 設(shè)計(jì)時(shí)間: 2013.12.31-2014.01.03 2信 息 技 術(shù) 學(xué) 院昆明學(xué)院課程設(shè)計(jì)(大作業(yè))任務(wù)書姓 名:王宏斌 院(系):信息技術(shù)學(xué)院專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)學(xué) 號:201111010322任務(wù)起止日期:2013.12.31-2014.01.03課程設(shè)計(jì)題目:銀行家算法實(shí)現(xiàn)課程設(shè)計(jì)要求:本設(shè)計(jì)的目的是通過編寫和調(diào)試一個(gè)系統(tǒng)動(dòng)態(tài)分配資源的簡單模擬程序,觀察死鎖產(chǎn)生的條件,并
2、采用適當(dāng)?shù)乃惴?,有效地防止和避免死鎖地發(fā)生。要求如下: (1) 模擬一個(gè)銀行家算法;(2) 初始化時(shí)讓系統(tǒng)擁有一定的資源;(3) 用鍵盤輸入的方式申請資源;(4) 如果預(yù)分配后,系統(tǒng)處于安全狀態(tài),則修改系統(tǒng)的資源分配情況;(5) 如果預(yù)分配后,系統(tǒng)處于不安全狀態(tài),則提示不能滿足請求, 設(shè)計(jì)的主要內(nèi)容是模擬實(shí)現(xiàn)動(dòng)態(tài)資源分配。同時(shí)編寫和調(diào)試一個(gè)系統(tǒng)動(dòng)態(tài)資源的簡單模擬程序,觀察死鎖產(chǎn)生的條件,并使用適當(dāng)?shù)乃惴ǎ行У姆乐购捅苊馑梨i的發(fā)生。背景知識:銀行家算法,顧名思義是來源于銀行的借貸業(yè)務(wù),一定數(shù)量的本金要應(yīng)對多個(gè)客戶的借貸周轉(zhuǎn),為了防止銀行家資金無法周轉(zhuǎn)而倒閉,對每一筆貸款,必須考察其是否能限期歸
3、還。在操作系統(tǒng)中研究資源分配策略時(shí)也有類似問題,系統(tǒng)中有限的資源要供多個(gè)進(jìn)程使用,必須保證得到的資源的進(jìn)程能在有限的時(shí)間內(nèi)歸還資源,以供其他進(jìn)程使用資源。如果資源分配不得到就會發(fā)生進(jìn)程循環(huán)等待資源,則進(jìn)程都無法繼續(xù)執(zhí)行下去的死鎖現(xiàn)象。工作計(jì)劃及安排:1、查閱資料。分析比較、選擇設(shè)計(jì)方案;2、總體設(shè)計(jì)。設(shè)計(jì)計(jì)算、元件選取、繪制電路原理圖;3、編寫程序。利用 visual C+軟件編寫;4、調(diào)試。利用 visual C+軟件的調(diào)試工具進(jìn)行分塊調(diào)試;5、故障排除。根據(jù)調(diào)試過程中出現(xiàn)的問題,逐一查找原因,排除故障,使程序達(dá)到設(shè)計(jì)要求;指導(dǎo)教師簽字 2014 年 01 月 02 日 3課程設(shè)計(jì)(大作業(yè))
4、成績課程設(shè)計(jì)(大作業(yè))成績學(xué)號: 201111010322 姓名:王宏斌 指導(dǎo)教師:張德海老師課程設(shè)計(jì)題目:銀行家算法實(shí)現(xiàn) 總結(jié):通過短暫的課程設(shè)計(jì),我深有感觸。一開始構(gòu)想時(shí)只有大體的思路,忽略了一些細(xì)節(jié),因此在我真正做設(shè)計(jì)時(shí)發(fā)現(xiàn)有很多錯(cuò)誤,有的時(shí)候要解決一個(gè)錯(cuò)誤會花上很多時(shí)間,在做的過程中,有很多錯(cuò)誤意想不到,有的錯(cuò)誤卻犯得很幼稚,不過這樣對自身的排錯(cuò)能力能得到很大的提高。編譯的錯(cuò)誤、符號的錯(cuò)誤、數(shù)據(jù)類型的錯(cuò)誤,這些細(xì)小錯(cuò)誤讓我深受感慨,它告訴了我編程細(xì)心重要,養(yǎng)成一個(gè)好的編程習(xí)慣更重要。這次設(shè)計(jì)的完整開發(fā),讓我有設(shè)計(jì)初步的思想,這次設(shè)計(jì)的開發(fā)讓我把軟件生成的流程從信息的收集,再寫算法,再完
5、成后臺設(shè)計(jì)到編寫代碼,到測試,讓我知道還有很多地方的不足。有時(shí)一個(gè)問題總是想不通,這次課程設(shè)計(jì)的時(shí)間很緊迫,再加上各方面的經(jīng)驗(yàn)不足,也遇到很多問題,這個(gè)銀行家算法還有很多地方?jīng)]有完善,但總的來說,這次課程設(shè)計(jì)對我很有幫助,我發(fā)覺老師上課講的很多東西對我們都很有用,讓我們受到不少的啟發(fā)。指導(dǎo)教師評語:成績:4填表時(shí)間:指導(dǎo)教師簽名:5目錄目錄一一 設(shè)計(jì)思想設(shè)計(jì)思想.51.1 算法思路.51.2 流程圖.5二二 數(shù)據(jù)定義數(shù)據(jù)定義.6三三 處理流程處理流程.7四四 源程序源程序.9五五 運(yùn)行結(jié)果運(yùn)行結(jié)果.16六六 總結(jié)體會總結(jié)體會.186一一 設(shè)計(jì)思想設(shè)計(jì)思想1.1 算法思路我們可以把操作系統(tǒng)看作是
6、銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請求分配資源相當(dāng)于用戶向銀行家貸款。為保證資金的安全,銀行家規(guī)定:(1) 當(dāng)一個(gè)顧客對資金的最大需求量不超過銀行家現(xiàn)有的資金時(shí)就可接納該顧客;(2) 顧客可以分期貸款,但貸款的總數(shù)不能超過最大需求量;(3) 當(dāng)銀行家現(xiàn)有的資金不能滿足顧客尚需的貸款數(shù)額時(shí),對顧客的貸款可推遲支付,但總能使顧客在有限的時(shí)間里得到貸款;(4) 當(dāng)顧客得到所需的全部資金后,一定能在有限的時(shí)間里歸還所有的資金.操作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配資源,當(dāng)進(jìn)程首次申請資源時(shí),要測試該進(jìn)程對資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當(dāng)前的
7、申請量分配資源,否則就推遲分配。當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請資源時(shí),先測試該進(jìn)程本次申請的資源數(shù)是否超過了該資源所剩余的總量。若超過則拒絕分配資源,若能滿足則按當(dāng)前的申請量分配資源,否則也要推遲分配。1.2 流程圖7二 數(shù)據(jù)定義#include#include#include#define False 0 /宏定義#define True 1int Max100100=0; /各進(jìn)程所需各類資源的最大需求int Avaliable100=0; /系統(tǒng)可用資源char name100=0; /資源的名稱int temp100=0; /存放安全序列int Need100100=0; /還需要資源int
8、Allocation100100=0; /系統(tǒng)已分配資源int Work100=0; /存放系統(tǒng)可提供資源8int Request100=0; /請求資源向量int M=100; /作業(yè)的最大數(shù)為 100int N=100; /資源的最大數(shù)為 100三 處理流程銀行家算法流程圖9分配算法流程圖10安全性算法流程圖四 源程序#include#include#include#define False 0 /宏定義#define True 1int Max100100=0; /各進(jìn)程所需各類資源的最大需求int Avaliable100=0; /系統(tǒng)可用資源char name100=0; /資源的名
9、稱int temp100=0; /存放安全序列int Need100100=0; /還需要資源int Allocation100100=0; /系統(tǒng)已分配資源int Work100=0; /存放系統(tǒng)可提供資源11int Request100=0; /請求資源向量int M=100; /作業(yè)的最大數(shù)為 100int N=100; /資源的最大數(shù)為 100int changdata(int i) /分配資源 int j;for (j=0;jM;j+) Avaliablej=Avaliablej-Requestj; Allocationij=Allocationij+Requestj; Needij
10、=Needij-Requestj;return 1;void showdata() /顯示資源矩陣 int i,j; cout系統(tǒng)當(dāng)前可用的資源Avaliable:endl; for(i=0;iN;i+) coutnamei ; coutendl; for (j=0;jN;j+) coutAvaliablej ;/輸出分配資源 coutendl; cout Max Allocation Needendl; cout進(jìn)程名 ; for(j=0;j3;j+) for(i=0;iN;i+) coutnamei ; cout ; coutendl; for(i=0;iM;i+) cout i ; fo
11、r(j=0;jN;j+) coutMaxij ; cout ; for(j=0;jN;j+) coutAllocationij ; cout ; for(j=0;jN;j+) coutNeedij ;12 coutendl; int safe() /安全性算法int i,k=0,m,apply,Finish100=0;int j;int flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;for(i=0;iM;i+) apply=0; for(j=0;jN;j+) if (Finishi=False&Needij=Work
12、j) apply+; if(apply=N) for(m=0;mN;m+) Workm=Workm+Allocationim; /變分配數(shù) Finishi=True; tempk=i; i=-1; k+; flag+; for(i=0;iM;i+) if(Finishi=False) cout系統(tǒng)不安全endl; /不成功輸出系統(tǒng)不安全 return -1; cout系統(tǒng)是安全的!endl; /成功輸出安全 cout分配的序列:;for(i=0;iM;i+) /輸出運(yùn)行進(jìn)程數(shù)組 couttempi; if(iM-1) cout; coutendl; return 0;13void addres
13、ources() /添入資源 int n,flag;coutn;flag=N;N=N+n;for(int i=0;in;i+) coutnameflag; coutAvaliableflag+;showdata();safe();void delresources()/刪除資源char ming;int i,flag=1;coutming;for(i=0;iN;i+) if(ming=namei) flag=0; break; if(i=N) cout該資源名不存在,請重輸入:;while(flag);for(int j=i;jN-1;j+) namej=namej+1; Avaliablej
14、=Avaliablej+1; N=N-1;showdata();safe();void changeresources() /修改資源函數(shù)cout系統(tǒng)目前可用資源Avaliable:endl; for(int i=0;iN;i+) coutnamei:Avaliableiendl;14cout輸入系統(tǒng)可用資源Avaliable:Avaliable0Avaliable1Avaliable2;cout經(jīng)修改后的系統(tǒng)可用資源為endl;for (int k=0;kN;k+) coutnamek:Avaliablekendl;showdata();safe();void share()/利用銀行家算法
15、對申請資源進(jìn)行判定char ch;int i=0,j=0;ch=y;cout輸入要求分配的資源進(jìn)程號(0-M-1i; /輸入須申請的資源號cout輸入進(jìn)程 i 申請的資源:endl;for(j=0;jN;j+) coutnamejRequestj; /輸入要申請的資源 for (j=0;jNeedij) /判斷申請是否大于需求,大于則出錯(cuò) cout進(jìn)程 i申請的資源大于它需要的資源; cout 分配不合理,不予分配!Avaliablej)/判斷申請是否大于當(dāng)前資源,大于則出錯(cuò) cout進(jìn)程i申請的資源大于系統(tǒng)現(xiàn)在可利用的資源; cout 分配出錯(cuò),不予分配!endl; ch=n; break;
16、 if(ch=y) changdata(i); /根據(jù)進(jìn)程需求量變換資源 showdata(); /根據(jù)進(jìn)程需求量顯示變換后的資源 safe(); /根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷 15void addprocess() /添加作業(yè) int flag=M;M=M+1;cout請輸入該作業(yè)的最打需求量Maxendl;for(int i=0;iN;i+) coutnameiMaxflagi; Needflagi=Maxflagi-Allocationflagi;showdata();safe();int main()/主函數(shù) int i,j,number,choice,m,n,flag;char
17、 ming;cout-銀行家算法系統(tǒng)進(jìn)程調(diào)度-endl;coutn;N=n;for(i=0;in;i+) cout資源i+1ming; namei=ming; coutnumber; Avaliablei=number;coutendl;coutm;M=m;cout輸入各進(jìn)程的最大需求量(m*n矩陣)Max:endl;for(i=0;im;i+) for(j=0;jMaxij;do flag=0; cout輸入各進(jìn)程已申請的資源量(m*n矩陣)Allocation:endl; for(i=0;im;i+) for(j=0;jAllocationij; if(AllocationijMaxij)
18、 flag=1; Needij=Maxij-Allocationij; if(flag) cout申請資源大于最大需求量,請重新輸入!n;while(flag); showdata();/顯示各種資源 safe();/用銀行家算法判定系統(tǒng)是否安全 while(choice) cout*銀行家算法*endl; cout* 1:增加資源 *endl; cout* 2:刪除資源 *endl; cout* 3:修改資源 *endl; cout* 4:分配資源 *endl; cout* 5:增加作業(yè) *endl; cout* 0:退出! *endl; cout*endl; coutchoice; switch(choice) case 0: choice=0;break; case 1: addresources();break; case 2:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房地產(chǎn)面積測繪與房地產(chǎn)營銷合同3篇
- 二零二五年度宗教場所租賃合同樣本3篇
- Unit 3 Sports and Fitness Listening and Talking 說課稿-2024-2025學(xué)年高一英語人教版(2019)必修第一冊
- 冬季滑雪運(yùn)動(dòng)
- Unit 7 International charities-study skills 說課稿 2024-2025學(xué)年牛津譯林版八年級英語下冊
- 二零二五年度房地產(chǎn)開發(fā)前期合同翻譯與國際化服務(wù)合同3篇
- 貴州商學(xué)院《模具CAD》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州輕工職業(yè)技術(shù)學(xué)院《電子商務(wù)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度企業(yè)年金管理服務(wù)合同規(guī)范文本3篇
- 2024年九年級語文教學(xué)計(jì)劃方案(31篇)
- 幼兒園背景研究分析報(bào)告
- 圍墻維修 施工方案
- 創(chuàng)傷關(guān)節(jié)骨科年度總結(jié)
- 2022-2023學(xué)年江蘇省鹽城第一學(xué)期高一期末考試數(shù)學(xué)試卷及答案解析-普通用卷
- 醫(yī)師病理知識定期考核試題與答案
- 履約情況證明(共6篇)
- 礦井提升容器課件
- 云南省迪慶藏族自治州各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- 《潔凈工程項(xiàng)目定額》(征求意見稿)
- 城鎮(zhèn)燃?xì)庠O(shè)計(jì)規(guī)范
- 年零售藥店操作規(guī)程版
評論
0/150
提交評論