![銀行家算法實(shí)驗(yàn)報(bào)告_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/724e2d36-68a9-4938-8aa9-963835a26128/724e2d36-68a9-4938-8aa9-963835a261281.gif)
![銀行家算法實(shí)驗(yàn)報(bào)告_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/724e2d36-68a9-4938-8aa9-963835a26128/724e2d36-68a9-4938-8aa9-963835a261282.gif)
![銀行家算法實(shí)驗(yàn)報(bào)告_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/724e2d36-68a9-4938-8aa9-963835a26128/724e2d36-68a9-4938-8aa9-963835a261283.gif)
![銀行家算法實(shí)驗(yàn)報(bào)告_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/724e2d36-68a9-4938-8aa9-963835a26128/724e2d36-68a9-4938-8aa9-963835a261284.gif)
![銀行家算法實(shí)驗(yàn)報(bào)告_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/724e2d36-68a9-4938-8aa9-963835a26128/724e2d36-68a9-4938-8aa9-963835a261285.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上南華大學(xué)計(jì)算機(jī)學(xué)院實(shí)驗(yàn)報(bào)告 ( 2018學(xué)年春季學(xué)期 )課程名稱 操作系統(tǒng)實(shí)驗(yàn)名稱 銀行家算法姓名學(xué)號(hào)專業(yè)網(wǎng)絡(luò)工程班級(jí)1班地點(diǎn)教師曹軍一、實(shí)驗(yàn)題目: 系統(tǒng)中有 m 個(gè)同類資源被 n 個(gè)進(jìn)程共享,每個(gè)進(jìn)程對(duì)資源的最大需求數(shù)分別為 S1, S2,Sn,且 Max(Si)<=m, (i=1,2,n)。進(jìn)程可以動(dòng)態(tài)地申請(qǐng)資源和釋放資源。編寫一個(gè)程序, 實(shí)現(xiàn)銀行家算法,當(dāng)系統(tǒng)將資源分配給某一進(jìn)程而不會(huì)死鎖時(shí),就分配之。否則,推遲分配,并顯示適當(dāng)?shù)男畔?。二、?shí)驗(yàn)?zāi)康模?當(dāng)系統(tǒng)的總資源數(shù) m 小于或等于所有進(jìn)程對(duì)資源的最大需求 S n n i i =1 時(shí),就可能產(chǎn)生 死鎖。
2、死鎖會(huì)引起計(jì)算機(jī)系統(tǒng)的癱瘓。銀行家算法是在實(shí)現(xiàn)資源分配時(shí)避免死鎖的一個(gè)著名 算法,該算法是在能確保系統(tǒng)處于安全狀態(tài)時(shí)才把資源分配給申請(qǐng)者。通過本實(shí)驗(yàn)進(jìn)一步理解死鎖的概念,并選擇一個(gè)算法來避免死鎖。 進(jìn)一步理解利用銀行家算法避免死鎖的問題; 在了解和掌握銀行家算法。理解和掌握安全序列、安全性算法。三、實(shí)驗(yàn)內(nèi)容及要求:1、設(shè)計(jì)進(jìn)程對(duì)各類資源最大申請(qǐng)表示及初值的確定。2、設(shè)定系統(tǒng)提供資源的初始狀況。3、設(shè)定每次某個(gè)進(jìn)程對(duì)各類資源的申請(qǐng)表示。4、編制程序,依據(jù)銀行家算法,決定其資源申請(qǐng)是否得到滿足。5、顯示資源申請(qǐng)和分配時(shí)的變化情況。四、實(shí)驗(yàn)過程:程序要求:1. 判斷當(dāng)前狀態(tài)是否安全,如果安全,給出安
3、全序列;如果不安全給出理由。2. 對(duì)于下一個(gè)時(shí)刻T1,某個(gè)進(jìn)程Pk會(huì)提出請(qǐng)求Request(R1, ,Rm),判斷分配給P k進(jìn)程請(qǐng)求的資源之后是否安全。如果安全,給出安全序列;如果不安全給出理由。3. 輸入:進(jìn)程個(gè)數(shù)n,資源種類m,T0時(shí)刻各個(gè)進(jìn)程的資源分配情況(可以運(yùn)行輸入,也可以在程序中設(shè)置)。4. 輸出:如果安全輸出安全的進(jìn)程序列,不安全提示信息。進(jìn)程調(diào)度的實(shí)現(xiàn)過程:1. 變量初始化;2. 接收用戶輸入n,m,(輸入或者默認(rèn)的)Allocationij,Need ij;3. 按照銀行家算法判斷當(dāng)前狀態(tài)安全與否,安全給出安全序列,不安全給出提示;4. 如果安全,提示用戶輸入下一時(shí)刻進(jìn)程P
4、k的資源請(qǐng)求Request(R1, ,Rm);5. 如果不安全或者無新請(qǐng)求則退出。源代碼:#include <stdio.h>#include <iostream>#include <iomanip>#include <fstream>#include <windows.h>using namespace std;#define MaxNumber 20static int n;static int m;static int AvailableMaxNumber;static int MaxMaxNumberMaxNumber;sta
5、tic int AllocationMaxNumberMaxNumber;static int NeedMaxNumberMaxNumber;static int RequestMaxNumber;static int SafeOrderMaxNumber;static bool FinishMaxNumber;static bool isDisplayAvaliable = true;static char sourceName = 'A','B','C','D','E','F','G
6、39;,'H','I','J','K' /資源名稱void input();bool isSystemSafe();void bankerAlgorithm();void display();int main() input(); bankerAlgorithm(); system("pause"); return 0;void input() /int n=6; /int m=3; ifstream inData; inData.open("C:/476.txt"); /讀取數(shù)據(jù) inDa
7、ta>>n; inData>>m; for (int i=0;i<m;i+) inData>>Availablei; for (int i=0;i<n;i+) for (int j=0;j<m;j+) inData>>Allocationij; for (int i=0;i<n;i+) for (int j=0;j<m;j+) inData>>Needij; for (int i=0;i<n;i+) for (int j=0;j<m;j+) Maxij = Needij + Allocatio
8、nij; cout<<"*程序開始*"<<endl; display();bool isSystemSafe() int workMaxNumber; for (int i=0;i<m;i+) /m是資源個(gè)數(shù)A,B,C worki = Availablei; for (int i=0;i<n;i+) /n是進(jìn)程個(gè)數(shù) Finishi = false; SafeOrderi = -1; /初始化安全序列 int FinishNumebr = 0; int isSafe; int i =0,j; while(i<n) isSafe = 0
9、; for(j = 0;j<m;j+) if (Finishi=false && Needij<=workj) isSafe+; else break; if (isSafe = m) /當(dāng)且僅當(dāng)進(jìn)程對(duì)應(yīng)的所有資源的數(shù)量都滿足的時(shí)候才成立 Finishi = true; SafeOrderFinishNumebr = i; FinishNumebr+; for (j = 0;j<m;j+) workj += Allocationij; i=0; /找到滿足條件的進(jìn)程后,從頭開始再進(jìn)行尋找 else i+; if (FinishNumebr=n) cout<
10、;<"*Safe!*"<<endl; cout<<"對(duì)應(yīng)的安全序列為:"<<endl; cout<<"P"<<SafeOrder0; for (int i=1;i<n;i+) cout<<"->"<<"P"<<SafeOrderi ; cout<<endl; return true; cout<<"*unSafe!*"<<end
11、l; return false;void bankerAlgorithm() int chooseProcess; char isContinue; while(true) /設(shè)置兩個(gè)布爾變量:判別請(qǐng)求向量是等待還是系統(tǒng)已經(jīng)不再分配新的資源 bool isRequestNeedOK = true; bool isRequestAvailableOK = true; cout<<"請(qǐng)輸入要申請(qǐng)資源的進(jìn)程號(hào)(注意:第一個(gè)進(jìn)程為0號(hào),第二個(gè)進(jìn)程為1號(hào),以此類推?。?quot;<<endl<<"chooseProcess=" cin&g
12、t;>chooseProcess; cout<<"請(qǐng)輸入進(jìn)程所請(qǐng)求的各類資源的數(shù)量:(A B C)"<<endl; for (int i=0;i<m;i+) cin>>Requesti; /輸入錯(cuò)誤判斷 for (int i=0;i<m;i+) if (Requesti>NeedchooseProcessi) cout<<"*當(dāng)前運(yùn)行結(jié)果*"<<endl; cout<<"您輸入的請(qǐng)求進(jìn)程所對(duì)應(yīng)的資源數(shù)量超過最大需求量,請(qǐng)重新輸入!"<
13、<endl; / cout<<"*"<<endl; isRequestNeedOK = false; continue; if (Requesti>Availablei) cout<<"*當(dāng)前運(yùn)行結(jié)果*"<<endl; cout<<"您輸入的請(qǐng)求進(jìn)程的資源數(shù)量超過系統(tǒng)所供給的最大資源數(shù)量pi必須等待,請(qǐng)重新輸入!"<<endl; / cout<<"*"<<endl; isRequestAvailableOK
14、= false; continue; for (int j = 0;j<m;j+) Availablej -=Requestj; AllocationchooseProcessj += Requestj; NeedchooseProcessj -= Requestj; cout<<"*"<<endl; if (!isSystemSafe() /如何不滿足系統(tǒng)安全性算法,將本次試探作廢,恢復(fù)到原來的值 for (int j = 0;j<m;j+) Availablej +=Requestj; AllocationchooseProcessj
15、 -= Requestj; NeedchooseProcessj += Requestj; /當(dāng)請(qǐng)求向量Request滿足和Need、Available的關(guān)系時(shí),證明系統(tǒng)已不能再分配資源 if (isRequestAvailableOK&&isRequestNeedOK) cout<<"*當(dāng)前運(yùn)行結(jié)果*"<<endl; cout<<"當(dāng)前可利用資源已經(jīng)不能滿足任何進(jìn)程的需求,故系統(tǒng)進(jìn)入不安全狀態(tài),系統(tǒng)不分配資源!"<<endl; cout<<"*"<&l
16、t;endl; cout<<"嘗試根據(jù)p(i)發(fā)出的請(qǐng)求向量后的資源情況:"<<endl; display(); cout<<"*"<<endl; cout<<"是否繼續(xù)輸入請(qǐng)求變量request進(jìn)行測(cè)試,是(Y),否(N)"<<endl; cout<<"isContinue = " cin>>isContinue; if (isContinue='Y'|isContinue='y') /
17、input();/實(shí)現(xiàn)多次請(qǐng)求(保留上一次請(qǐng)求的狀態(tài)) continue; else if (isContinue='N'|isContinue='n') cout<<"*程序結(jié)束*"<<endl; break; void display() char processName = '1','2','3','4','5','6' cout<<"-"<<endl; cout<&l
18、t;"當(dāng)前進(jìn)程個(gè)數(shù)為 n = "<<n<<endl; cout<<"當(dāng)前資源個(gè)數(shù)為 m = "<<m<<endl; cout<<"系統(tǒng)可利用資源數(shù)情況如下:"<<endl; for (int i=0;i<m;i+) cout<<setw(5)<<sourceNamei<<" " cout<<endl; cout<<setw(5)<<Available0&l
19、t;<" " cout<<setw(5)<<Available1<<" " cout<<setw(5)<<Available2<<" "<<endl; cout<<"-"<<endl; cout<<"processName" cout<<setw(10)<<"Max"<<" " cout<&
20、lt;setw(15)<<"Allocation"<<" " cout<<setw(10)<<"Need"<<" " if (isDisplayAvaliable) cout<<setw(15)<<"available" cout<<endl; cout<<setw(15); for (int i=0;i<m;i+) cout<<sourceNamei<<setw(3); cout<<setw(5); for (int i=0;i<m;i+) cout<<sourceNamei<<setw(3); cout<<setw(10); for (int i=0;i<m;i+) cout<<sourceNamei<<setw(3); if (isDisplayAvaliable) cout<<setw(5); for (int i=0;i<m;i+) cout<<sourceNamei<<setw(3); cout<<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文學(xué)社組社方案及招生簡(jiǎn)章范文
- 現(xiàn)代企業(yè)財(cái)務(wù)管理的全球化視角
- 全鋼爬架施工方案
- 汽車行業(yè)的品牌競(jìng)爭(zhēng)戰(zhàn)略分析
- 國慶節(jié)小吃店鋪活動(dòng)方案
- 國慶節(jié)手工干貨活動(dòng)方案
- 12《富起來到強(qiáng)起來》第一課時(shí)說課稿-2023-2024學(xué)年道德與法治五年級(jí)下冊(cè)統(tǒng)編版001
- 2023六年級(jí)英語上冊(cè) Unit 3 Winter in canada Lesson 14 Snow!It's Winter說課稿 冀教版(三起)
- 2024-2025學(xué)年新教材高中物理 第三章 恒定電流 第3節(jié) 測(cè)量金屬絲的電阻率說課稿 粵教版必修3
- 2024秋七年級(jí)數(shù)學(xué)上冊(cè) 第3章 一次方程與方程組3.4 二元一次方程組的應(yīng)用 2列二元一次方程組解實(shí)際應(yīng)用(一)說課稿(新版)滬科版
- 2022版義務(wù)教育(勞動(dòng))課程標(biāo)準(zhǔn)(含2022年修訂部分)
- 過松源晨炊漆公店(其五)課件
- 最新交管12123學(xué)法減分題庫含答案(通用版)
- 安全事故案例圖片(76張)課件
- 預(yù)應(yīng)力錨索施工方案
- 豇豆生產(chǎn)技術(shù)規(guī)程
- 奢侈品管理概論完整版教學(xué)課件全書電子講義(最新)
- 文藝美學(xué)課件
- 中藥炮制學(xué)教材
- 常見腫瘤AJCC分期手冊(cè)第八版(中文版)
- 電氣第一種第二種工作票講解pptx課件
評(píng)論
0/150
提交評(píng)論