




已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
淮海工學(xué)院計(jì)算機(jī)工程學(xué)院實(shí)驗(yàn)報(bào)告書(shū)課程名: 計(jì)算機(jī)操作系統(tǒng) 題 目: 實(shí)驗(yàn)二 銀行家算法 班 級(jí): 姓 名: 評(píng)語(yǔ):成績(jī): 指導(dǎo)教師: 批閱時(shí)間: 年 月 日實(shí)驗(yàn)二 銀行家算法實(shí)驗(yàn)?zāi)康暮鸵髴?yīng)用銀行家算法驗(yàn)證進(jìn)程安全性檢查及分配資源編制模擬銀行家算法的程序,并以以下例子驗(yàn)證程序的正確性。實(shí)驗(yàn)環(huán)境1PC微機(jī)。2Windows 操作系統(tǒng)。3C/C+/VB開(kāi)發(fā)集成環(huán)境。實(shí)驗(yàn)學(xué)時(shí) 2學(xué)時(shí),必做實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容和步驟1)根據(jù)算法流程圖編制可執(zhí)行程序2)用以下兩個(gè)例子驗(yàn)證程序的正確性。3)按照上述兩個(gè)例子,輸出執(zhí)行的結(jié)果。算法流程圖銀行家算法:安全性算法:【例1】某系統(tǒng)有A、B、C、D這4類(lèi)資源供5個(gè)進(jìn)程共享,進(jìn)程對(duì)資源的需求和分配情況如下表所示?,F(xiàn)在系統(tǒng)中A、B、C、D類(lèi)資源分別還剩1、5、2、0個(gè),請(qǐng)按銀行家算法回答下列問(wèn)題:進(jìn)程已占資源最大需求數(shù)ABCDABCDP100120012P210001750P313542356P406320652P500140656(1) 現(xiàn)在系統(tǒng)是否處于安全狀態(tài)?(2) 如果現(xiàn)在進(jìn)程P2提出需要(0,4,2,0)個(gè)資源的請(qǐng)求,系統(tǒng)能否滿足它的請(qǐng)求?【例2】用銀行家算法考慮下列系統(tǒng)狀態(tài) :進(jìn)程 分配矩陣 最大需求矩陣 資源總數(shù)矩陣A 3 0 1 1 4 1 1 1 6 3 4 2B 0 1 0 0 0 2 1 2C 1 1 1 0 4 2 1 0D 1 1 0 1 1 1 1 1E 0 0 0 0 2 1 1 0問(wèn)系統(tǒng)是否安全?若進(jìn)程B請(qǐng)求(0,0,1,0),可否立即分配?此后進(jìn)程E也請(qǐng)求(0,0,1,0),可否分配給它?通過(guò)運(yùn)行程序發(fā)現(xiàn),例1當(dāng)中的系統(tǒng)處于不安全狀態(tài),進(jìn)程P2提出的請(qǐng)求無(wú)法實(shí)現(xiàn);例2當(dāng)中的系統(tǒng)處于安全狀態(tài),進(jìn)程B提出的請(qǐng)求能實(shí)現(xiàn),此后進(jìn)程E的請(qǐng)求也能實(shí)現(xiàn)。源代碼#include#define N 20#define M 20using namespace std;int f(int aNM,int bNM,int m,int k) int j; for(j=0;jbk-1j)return 0; return 1;int g(int aNM,int b,int m,int k) int j; for(j=0;jbj)return 0; return 1;int h(int a,int n) for(int i=0;in;i+) if(!ai)return 0; return 1;int p(int a,int bNM,int m,int k) int j; for(j=0;jbk-1j)return 0; return 1;int q(int a,int b,int m) int j; for(j=0;jbj)return 0; return 1;int safe(int FinishN,int WorkM,int NeedNM,int AllocationNM,int n,int m) int i,j,k; int tN; for(i=0;in;i+) ti=1; cout安全性檢查!endl; for(i=0;in;)/ 首先找到一個(gè)滿足條件的進(jìn)程 if(Finishi=0)&g(Need,Work,m,i) k=i; ti=0; coutp(k+1):endl; coutWorkm:; for(j=0;jm;j+) coutWorkj ; Workj=Workj+Allocationij; Finishi=1; coutendl; coutNeedm:; for(j=0;jm;j+) coutNeedij ; coutendl; coutAllocationm:; for(j=0;jm;j+) coutAllocationij ; coutendl; cout(Work+Allocation)m:; for(j=0;jm;j+) coutWorkj ; coutendl; coutFinishk+1:; coutFinishi ; coutendl; break; else i+; if(g(Need,Work,m,k)/依次找到滿足條件的后面幾個(gè)進(jìn)程 for(i=0;in;i+) if(ti) if(g(Need,Work,m,i) coutp(i+1):endl; coutWorkm:; for(j=0;jm;j+) coutWorkj ; Workj=Workj+Allocationij; Finishi=1; coutendl; coutNeedm:; for(j=0;jm;j+) coutNeedij ; coutendl; coutAllocationm:; for(j=0;jm;j+) coutAllocationij ; coutendl; cout(Work+Allocation)m:; for(j=0;jm;j+) coutWorkj ; coutendl; coutFinishi+1:; coutFinishi ; coutendl; ti=0; else return 0; if(h(Finish,n)return 1;/系統(tǒng)處于安全狀態(tài) else return 0;/系統(tǒng)處于不安全狀態(tài) void r(int FinishN,int WorkM,int AvailableM,int NeedNM,int AllocationNM,int MaxNM,int n,int m) int RequestM; char b; int i,j,k; coutn要申請(qǐng)資源,請(qǐng)按y或Y,否則按n或Nb; if(b!=y&b!=Y) if(safe(Finish,Work,Need,Allocation,n,m) cout此時(shí)刻系統(tǒng)安全!n; else cout此時(shí)刻系統(tǒng)不安全!n; else coutn請(qǐng)輸入申請(qǐng)資源的進(jìn)程編號(hào)(1,2,n):k; while(kn) cout您輸入了錯(cuò)誤的進(jìn)程號(hào),請(qǐng)核查后重新輸入:k; coutn請(qǐng)輸入進(jìn)程p(k)申請(qǐng)各類(lèi)資源的數(shù)量:endl; for (j=0; jRequestj; if(p(Request,Need,m,k) if(q(Request,Available,m) for(j=0;jm;j+) Availablej=Availablej-Requestj; Allocationk-1j=Allocationk-1j+Requestj; Needk-1j=Needk-1j-Requestj; Workj=Availablej; cout試分配!endl; cout各種資源可利用的數(shù)量Availablem: endl; for (j=0; jm; j+) coutAvailablej ; coutendl; coutn已分配資源Allocationm: endl; for (i=0; in; i+) for (j=0; jm; j+) coutAllocationij ; coutendl; coutn最大需求矩陣Maxnm: endl; for (i=0; in; i+) for (j=0; jm; j+) coutMaxij ; coutendl; coutn需求矩陣Neednm: endl; for (i=0; in; i+) for (j=0; jm; j+) coutNeedij ; coutendl; if (safe(Finish,Work,Need,Allocation,n,m) /判斷當(dāng)前狀態(tài)的安全性 cout系統(tǒng)處于安全狀態(tài)!; coutn申請(qǐng)資源成功!endl; else coutn當(dāng)前狀態(tài)不安全!; /恢復(fù)數(shù)據(jù) for (j=0; jm; j+) Availablej=Availablej+Requestj; Allocationk-1j=Allocationk-1j-Requestj; Needk-1j=Needk-1j+Requestj; Workj=Availablej; for(i=0; in; i+) Finishi=0; coutn恢復(fù)數(shù)據(jù):endl;/顯示輸入各數(shù)組的值 cout各種資源可利用的數(shù)量Availablem: endl; for (j=0; jm; j+) coutAvailablej ; coutendl; coutn已分配資源Allocationm: endl; for (i=0; in; i+) for (j=0; jm; j+) coutAllocationij ; coutendl; coutn最大需求矩陣Maxnm: endl; for (i=0; in; i+) for (j=0; jm; j+) coutMaxij ; coutendl; coutn需求矩陣Neednm: endl; for (i=0; in; i+) for (j=0; jm; j+) coutNeedij ; coutendl; cout系統(tǒng)中尚無(wú)足夠的資源滿足進(jìn)程pk的申請(qǐng),pk必須等待!endl; else cout系統(tǒng)中尚無(wú)足夠的資源滿足進(jìn)程pk的申請(qǐng),pk必須等待!endl; else cout出錯(cuò),進(jìn)程所需要的資源數(shù)目已超過(guò)它所宣布的最大值!endl; void main() cout-endl; cout-模擬銀行家算法-endl; cout-endl; cout-江之風(fēng)海之韻-endl; cout-QuQu-endl; cout-endl; int AvailableM; int MaxNM; int AllocationNM; int NeedNM; int WorkM; int FinishN; int i,j,n,m; /定義全局變量 coutn; coutm; cout輸入各種資源可利用的數(shù)量Availablem: endl; for (j=0; jAvailablej; Workj=Availablej;/初始化Workj coutn輸入各進(jìn)程對(duì)各類(lèi)資源的最大需求數(shù)Maxnm: endl; coutn請(qǐng)嚴(yán)格按照(nm)的距陣輸入:endl; for (i=0; in; i+) for (j=0; jMaxij; coutn請(qǐng)輸入各進(jìn)程當(dāng)前已分配的資源數(shù)量Allocationnm: endl; coutn請(qǐng)嚴(yán)格按照(nm)的距陣輸入:endl; for (i=0; in; i+) Finishi=0; for (j=0; jAllocationij; Needij = Maxij-Allocationij; r(Finish,Work,Available,Need,Allocation,Max,n,m); for(i=0;in;i+) Finishi=0; r(Finish,Work,Available,Need,Allocation,Max,n,m);for(i=0;in;i+) Finishi=0;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 華律勞務(wù)合同范本
- 2025年人造纖維(纖維素纖維)項(xiàng)目合作計(jì)劃書(shū)
- 合同范例三級(jí)
- 吊裝機(jī)租賃合同范本
- 2025年急救室設(shè)備器具合作協(xié)議書(shū)
- 2025年成品漿板包裝輸送系統(tǒng)項(xiàng)目發(fā)展計(jì)劃
- 2025年制漿和造紙專(zhuān)用設(shè)備項(xiàng)目建議書(shū)
- 變更房產(chǎn)合同范本
- 出售取向硅鋼合同范本
- 幻彩美甲店入股合同范本
- 自身免疫性腦炎護(hù)理常規(guī)
- 《信息技術(shù)基礎(chǔ)》高職全套教學(xué)課件
- GB/T 19077-2024粒度分析激光衍射法
- 露天礦山開(kāi)采施工組織方案
- 北京市西城區(qū)2022-2023學(xué)年高三上學(xué)期1月期末考試歷史試題 附答案
- 2024關(guān)于進(jìn)一步提升基層應(yīng)急管理能力的意見(jiàn)學(xué)習(xí)解讀課件
- 幼兒園小班健康公開(kāi)課《笑一笑》課件
- 《PLC應(yīng)用技術(shù)(西門(mén)子S7-1200)第二版》全套教學(xué)課件
- 單詞連連看答題闖關(guān)游戲課堂互動(dòng)課件1
- 加強(qiáng)文物古籍保護(hù)利用(2022年廣東廣州中考語(yǔ)文試卷非連續(xù)性文本閱讀試題及答案)
- 2024小學(xué)數(shù)學(xué)義務(wù)教育新課程標(biāo)準(zhǔn)(2022版)必考題庫(kù)附含答案
評(píng)論
0/150
提交評(píng)論