![操作系統(tǒng)——實驗2銀行家算法_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/29c17504-17f3-449a-8785-44cb90924e0b/29c17504-17f3-449a-8785-44cb90924e0b1.gif)
![操作系統(tǒng)——實驗2銀行家算法_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/29c17504-17f3-449a-8785-44cb90924e0b/29c17504-17f3-449a-8785-44cb90924e0b2.gif)
![操作系統(tǒng)——實驗2銀行家算法_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/29c17504-17f3-449a-8785-44cb90924e0b/29c17504-17f3-449a-8785-44cb90924e0b3.gif)
![操作系統(tǒng)——實驗2銀行家算法_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/29c17504-17f3-449a-8785-44cb90924e0b/29c17504-17f3-449a-8785-44cb90924e0b4.gif)
![操作系統(tǒng)——實驗2銀行家算法_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/29c17504-17f3-449a-8785-44cb90924e0b/29c17504-17f3-449a-8785-44cb90924e0b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上淮海工學(xué)院計算機(jī)科學(xué)系實驗報告書課程名: 操作系統(tǒng)原理 題 目: 實驗二 銀行家算法 班 級: Z軟件161 學(xué) 號: 姓 名: 陳真杰 評語:成績: 指導(dǎo)教師: 批閱時間: 年 月 日專心-專注-專業(yè)1、實驗?zāi)康呐c要求銀行家算法是操作系統(tǒng)中避免死鎖的典型算法,用C/C+語言編寫一個銀行家算法的模擬程序。通過本實驗可以加深對銀行家算法的步驟和相關(guān)數(shù)據(jù)結(jié)構(gòu)用法的更好理解。2、 實驗內(nèi)容或題目用C/C+語言編寫一個簡單的銀行家算法模擬程序,用銀行家算法實現(xiàn)資源分配。程序能模擬多個進(jìn)程共享多種資源的情形。進(jìn)程可動態(tài)地申請資源,系統(tǒng)按各進(jìn)程的申請動態(tài)地分配資源。要求程序具有顯
2、示和打印各進(jìn)程的某一時刻的資源分配表和安全序列;顯示和打印各進(jìn)程依次要求申請的資源數(shù)量以及為某進(jìn)程分配資源后的有關(guān)資源數(shù)據(jù)的情況。實驗說明:初始時每個進(jìn)程運(yùn)行過程中的最大資源需求量Maxi,j和系統(tǒng)已分配給該進(jìn)程的資源量Allocationi,j,可利用資源數(shù)量Availablej均為已知(這些數(shù)值可以在程序運(yùn)行時動態(tài)輸入),而算法中其他數(shù)據(jù)結(jié)構(gòu)的值(Needi,j)則需要由程序根據(jù)已知量的值計算產(chǎn)生。3、 實驗步驟(1) 認(rèn)真理解好課本中銀行家算法的實例。(2) 根據(jù)課本中銀行家算法的描述,畫出程序流程圖。(3) 按照程序流程圖,用C/C+語言編程并實現(xiàn)。4、流程圖5、源代碼與測試數(shù)據(jù)與實驗
3、結(jié)果(可以抓圖粘貼) 源代碼如下所示:#include "string.h"#include "iostream"using namespace std;#define FALSE 0#define TRUE 1#define W 10#define R 20int M=4 ; /總進(jìn)程數(shù)int N=3 ; /資源種類int ALL_RESOURCE3=9,3,6;/各種資源的數(shù)目總和int MAX43=3,2,2,6,1,3,3,1,4,4,2,2; /M個進(jìn)程對N類資源最大資源需求量int AVAILABLER; /系統(tǒng)可用資源數(shù)int ALLOCA
4、TION43=1,0,0,6,1,2,2,1,1,0,0,2; /M個進(jìn)程已經(jīng)得到N類資源的資源量int NEEDWR; /M個進(jìn)程還需要N類資源的資源量int RequestR; /請求資源個數(shù)void showdata() /函數(shù)showdata,輸出資源分配情況int i,j;cout<<"各種資源的總數(shù)量(all):"cout<<" "for (j=0;j<N;j+)cout<<" "<<ALL_RESOURCEj;cout<<" "cout
5、<<endl<<endl;cout<<"系統(tǒng)目前各種資源可用的數(shù)為(available):"cout<<" "for (j=0;j<N;j+)cout<<" "<<AVAILABLEj;cout<<" "cout<<endl<<endl;cout<<" 各進(jìn)程已經(jīng)得到的資源量(allocation): "<<endl<<endl;cout<&
6、lt;" 資源0"<<" 資源1"<<" 資源2"<<endl;for (i=0;i<M;i+)cout<<"進(jìn)程p"<<i<<": "for (j=0;j<N;j+)cout<<ALLOCATIONij<<" "cout<<endl;cout<<endl;cout<<" 各進(jìn)程還需要的資源量(need):"<
7、;<endl<<endl;cout<<" 資源0"<<" 資源1"<<" 資源2"<<endl;for (i=0;i<M;i+)for (i=0;i<M;i+)cout<<"進(jìn)程p"<<i<<": "for (j=0;j<N;j+)cout<<NEEDij<<" "cout<<endl; cout<<endl;
8、void changdata(int k) /分配資源int j;for (j=0;j<N;j+)AVAILABLEj=AVAILABLEj-Requestj; ALLOCATIONkj=ALLOCATIONkj+Requestj; NEEDkj=NEEDkj-Requestj;void rstordata(int k) /恢復(fù)現(xiàn)場int j;for (j=0;j<N;j+) AVAILABLEj=AVAILABLEj+Requestj; ALLOCATIONkj=ALLOCATIONkj-Requestj; NEEDkj=NEEDkj+Requestj;int chkerr(in
9、t s) /函數(shù)chkerr,檢查是否安全 int WORK,FINISHW; int i,j,k=0; for(i=0;i<M;i+)FINISHi=FALSE; for(j=0;j<N;j+) WORK=AVAILABLEj; i=s; do if(FINISHi=FALSE&&NEEDij<=WORK) WORK=WORK+ALLOCATIONij; FINISHi=TRUE; i=0; else i+; while(i<M); for(i=0;i<M;i+) if(FINISHi=FALSE) cout<<endl; cout&
10、lt;<" 系統(tǒng)不安全! 本次資源申請不成功!"<<endl; cout<<endl; return 1; cout<<endl; cout<<" 經(jīng)安全性檢查,系統(tǒng)安全,本次分配成功。"<<endl; cout<<endl; return 0;void bank() /銀行家算法主體 int i=0,j=0; char flag='Y' while(flag='Y'|flag='y') i=-1; while(i<0|i&
11、gt;=M) cout<<" 請輸入需申請資源的進(jìn)程號(從P0到P"<<M-1<<",否則重輸入!):" cout<<"P"cin>>i; if(i<0|i>=M)cout<<" 輸入的進(jìn)程號不存在,重新輸入!"<<endl; cout<<" 請輸入進(jìn)程P"<<i<<"申請的資源數(shù):"<<endl; for (j=0;j<N;j
12、+) cout<<" 資源"<<j<<": " cin>>Requestj; if(Requestj>NEEDij) /若請求的資源數(shù)大于進(jìn)程還需要i類資源的資源量j cout<<" 進(jìn)程P"<<i<<"申請的資源數(shù)大于進(jìn)程P"<<i<<"還需要"<<j<<"類資源的資源量!" cout<<"申請不合理,出錯!請重新選
13、擇!"<<endl<<endl; flag='N' break; else if(Requestj>AVAILABLEj) /若請求的資源數(shù)大于可用資源數(shù) cout<<" 進(jìn)程P"<<i<<"申請的資源數(shù)大于系統(tǒng)可用"<<j<<"類資源的資源量!" cout<<"申請不合理,出錯!請重新選擇!"<<endl<<endl; flag='N' break
14、; if(flag='Y'|flag='y') changdata(i); /調(diào)用changdata(i)函數(shù),改變資源數(shù) if(chkerr(i) /若系統(tǒng)安全 rstordata(i); /調(diào)用rstordata(i)函數(shù),恢復(fù)資源數(shù) showdata(); /輸出資源分配情況 else /若系統(tǒng)不安全 showdata(); /輸出資源分配情況 else /若flag=N|flag=n showdata(); cout<<endl; cout<<" 是否繼續(xù)銀行家算法演示,按'Y'或'y'鍵繼續(xù),按'N'或'n'鍵退出演示: " cin>>flag;/主函數(shù)int main() int i=0,j=0,p; /初始化資源數(shù)量for (j=0;j<N;j+) p=ALL_RESOURCEj; for (i=0;i<M;i+) p=p-ALLOCATIONij;/減去已經(jīng)被占據(jù)的資源 AVAILABLEj=p; if(AVAILABLEj<0) AVAILABLEj=0; for (i=0;i<M;i+) for(j=0;j<N;j+) NEEDij=MAXij-ALLOCAT
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能倉儲卷簾門系統(tǒng)采購及集成合同
- 2025年度區(qū)塊鏈技術(shù)應(yīng)用項目開發(fā)與許可合同
- 2025年休假村租賃協(xié)議模板
- 2025年建筑工程模板工程承包合同書
- 2025年信用卡債務(wù)履行協(xié)議
- 2025年金剛石膜工具項目立項申請報告模范
- 2025年血液系統(tǒng)用藥項目規(guī)劃申請報告模范
- 2025年街頭籃球項目規(guī)劃申請報告
- 2025年放射性藥品項目提案報告模式
- 2025年生活用橡膠制品:塑膠盒項目規(guī)劃申請報告范文
- 2024年云南省公務(wù)員考試【申論縣鄉(xiāng)卷、行測、事業(yè)單位招聘】3套 真題及答案
- 300畝文冠果樹栽培基地建設(shè)項目可行性研究報告
- 數(shù)字媒體藝術(shù)專業(yè)行業(yè)分析報告
- 2025年度企業(yè)安全生產(chǎn)與環(huán)保管理服務(wù)協(xié)議范本3篇
- 全國職業(yè)院校技能大賽高職組(市政管線(道)數(shù)字化施工賽項)考試題庫(含答案)
- 湖南省長沙市長郡教育集團(tuán)2024-2025學(xué)年七年級上學(xué)期期末考試英語試題(含答案)
- 公司員工升職加薪制度模板
- 2024上海市招聘社區(qū)工作者考試題及參考答案
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院服務(wù)能力建設(shè)醫(yī)療質(zhì)控部分課件
- 春季開學(xué)教職工安全培訓(xùn)
- (正式版)JTT 1497-2024 公路橋梁塔柱施工平臺及通道安全技術(shù)要求
評論
0/150
提交評論