版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
昆明理工大學(xué)信息工程與自動化學(xué)院學(xué)生實驗報告(—年第二學(xué)期)課程名稱:操作系統(tǒng)開課實驗室:信自樓445年5月9日年級、專業(yè)、班學(xué)號姓名成績實驗項目名稱銀行家算法指導(dǎo)教師舒國鋒教師評語教師簽名:年月日規(guī)定:對給定的一種資源分派矩陣狀態(tài)列表(可參考教材例題或習(xí)題),用安全性算法檢查現(xiàn)在狀態(tài)與否安全,并找出一種安全序列,然后某進程提出資源申請,用銀行家算法判斷與否能分派一、實驗?zāi)康耐ㄟ^編寫銀行家算法,規(guī)定學(xué)生進一步掌握如何實現(xiàn)死鎖的避免,進一步純熟使用數(shù)組進行程序的設(shè)計及實現(xiàn)。二、實驗原理及基本技術(shù)路線圖(方框原理圖)用C語言或C++語言開發(fā)。實現(xiàn)銀行家算法、安全性檢測算法。算法介紹:1.銀行家算法當進程p申請一種資源時,系統(tǒng)完畢下列工作。 如果Request>Need,表達出錯,由于進程申請的資源多于它自己申報的最大量; 如果Request>Allocation,則p必須等待; 否則,系統(tǒng)假設(shè)已經(jīng)分給p所申請的資源(試探性分派),并修改系統(tǒng)狀態(tài);Available:=Available-Request; Allocation:=Allocation+Request; Need:=Need-Request;調(diào)用安全性算法,判斷現(xiàn)在的系統(tǒng)狀態(tài)與否仍處在安全狀態(tài),若是,則真正實施分派;否則,回絕自此分派,恢復(fù)原來的系統(tǒng)狀態(tài),進程p等待。Available:=Available+Request; Allocation:=Allocation-Request; Need:=Need+Request; 2.安全性算法 安全性算法是銀行家算法的子算法,是由銀行家算法調(diào)用的。判斷一種狀態(tài)與否安全的算法以下: ①令work和Finish分別是長度為m和n的向量,初始化。 Work:=Available; Finish[i]:=false(i=1,2,…,n) ②尋找符合下列條件的i。 Finish[i]=false并且Need<=Work 如果沒有這樣的i存在,轉(zhuǎn)到環(huán)節(jié)④; ③Work:=Work+Allocation; Finish[i]=true; 轉(zhuǎn)到環(huán)節(jié)②; ④如果對全部的i,F(xiàn)inish[i]=true都成立,則系統(tǒng)處在安全狀態(tài):否則,系統(tǒng)是不安全的。3.流程圖 資源分派算法資源分派算法請求超量,帶錯返回Request[i]請求超量,帶錯返回Request[i]≤Need[i]FTRequest[i]Request[i]≤Available申請無法滿足,進程p等待F申請無法滿足,進程p等待TAvailable-=Request[i];Available-=Request[i];Allocation[i]+=Request[i];Need[i]-=Request[i];Available+=Request[i];Available+=Request[i];Allocation[i]-=Request[i];Need[i]+=Request[i];安全檢查安全檢查FT確認分派,p繼續(xù)申請造成不安全確認分派,p繼續(xù)申請造成不安全進程p等待算法結(jié)束算法結(jié)束安全檢查算法安全檢查算法Work=Available;Work=Available;Finish=0;有滿足條件的有滿足條件的j:Finish[j]==0Need[j]≤WorkF"j,finish[j]==1"j,finish[j]==1TFFinish[j]=1;Work+=Allocation[j]Finish[j]=1;Work+=Allocation[j]T返回不安全結(jié)束返回安全返回不安全結(jié)束返回安全結(jié)束 4.數(shù)據(jù)構(gòu)造intAvailable[100];//可運用資源數(shù)組intMax[50][100];//最大需求矩陣intAllocation[50][100];//分派矩陣intNeed[50][100];//需求矩陣intRequest[50][100];//M個進程還需要N類資源的資源量intp[50];intm,n;//M個進程,N類資源intWork[100];//可運用資源數(shù)組intFinish[50];//安全序列數(shù)組5.函數(shù)闡明intSafe()//安全算法函數(shù)bank()//銀行卡算法函數(shù)三、所用儀器、材料(設(shè)備名稱、型號、規(guī)格等)。計算機一臺四、實驗辦法、環(huán)節(jié)#include<iostream.h>////////////////////////////////////////////////////////////////////////////全局變量定義intAvailable[100];//可運用資源數(shù)組intMax[50][100];//最大需求矩陣intAllocation[50][100];//分派矩陣intNeed[50][100];//需求矩陣intRequest[50][100];//M個進程還需要N類資源的資源量intFinish[50];intp[50];intm,n;//M個進程,N類資源intSafe(){ inti,j,k,l=0; intWork[100];//可運用資源數(shù)組 for(j=0;j<n;j++) Work[j]=Available[j]; for(i=0;i<m;i++) Finish[i]=0; for(i=0;i<m;i++) { if(Finish[i]==0) { for(j=0;j<n;j++) { if(Need[i][j]>Work[j]) break; } if(j==n) { Finish[i]=1; for(k=0;k<n;k++) Work[k]+=Allocation[i][k]; p[l++]=i; i=-1; } } if(l==m) { cout<<"系統(tǒng)是安全的!"<<'\n'; cout<<"系統(tǒng)安全序列是:\n"; for(i=0;i<l;i++) { cout<<p[i]; if(i!=l-1) cout<<"-->"; } cout<<'\n'; return1; } }}bank(){ intj; for(j=0;j<n;j++) { Available[j]-=Request[m][j]; Allocation[m][j]+=Request[m][j]; Need[m][j]-=Request[m][j]; } if(Safe()) cout<<"同意分派請求\n"; else { cout<<"你的請求被回絕\n"; for(j=0;j<n;j++) { Available[j]+=Request[m][j]; Allocation[m][j]-=Request[m][j]; Need[m][j]+=Request[m][j]; } }}intmain(){ inti,j,x; cout<<"輸入進程的數(shù)目:\n"; cin>>m; cout<<"輸入資源的種類:\n"; cin>>n; cout<<"輸入每個進程最多所需的各類資源數(shù),按照"<<m<<"x"<<n<<"矩陣輸入\n"; for(i=0;i<m;i++) for(j=0;j<n;j++) cin>>Max[i][j]; cout<<"輸入每個進程已經(jīng)分派的各類資源數(shù),按照"<<m<<"x"<<n<<"矩陣輸入\n"; for(i=0;i<m;i++) { for(j=0;j<n;j++) { cin>>Allocation[i][j]; Need[i][j]=Max[i][j]-Allocation[i][j]; if(Need[i][j]<0) { cout<<"你輸入的第"<<i+1<<"個進程所擁有的第"<<j+1<<"個資源錯誤,請重新輸入:\n"; j--; continue; } } } cout<<"請輸入各個資源現(xiàn)有的數(shù)目:\n"; for(i=0;i<n;i++) cin>>Available[i]; cout<<"輸入你要對第幾個進程進行資源分派:\n"; cin>>n; cout<<"輸入多個資源的分派狀況:\n"; for(j=0;j<n;j++) { cin>>Request[x][j]; } b
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版大型商業(yè)綜合體消防報警系統(tǒng)安裝合同
- 2025年度木材銷售代理合同范本4篇
- 2025版牧業(yè)冷鏈物流配送與承包服務(wù)合同4篇
- 2025版小區(qū)消防應(yīng)急照明與疏散指示系統(tǒng)維護合同3篇
- 《婚姻制度篇案例》課件
- 二零二五年度食品原料采購合同規(guī)范2篇
- 2025版塔吊租賃合同樣板(智能監(jiān)控)3篇
- 乳品市場分析與營銷策略考核試卷
- 《經(jīng)皮腎鏡碎石》課件
- 二零二五年高速公路交通協(xié)管員職責(zé)規(guī)范合同范本3篇
- 慈溪高一期末數(shù)學(xué)試卷
- 天津市武清區(qū)2024-2025學(xué)年八年級(上)期末物理試卷(含解析)
- 《徐霞客傳正版》課件
- 江西硅博化工有限公司年產(chǎn)5000噸硅樹脂項目環(huán)境影響評價
- 高端民用航空復(fù)材智能制造交付中心項目環(huán)評資料環(huán)境影響
- 量子醫(yī)學(xué)成像學(xué)行業(yè)研究報告
- DB22T 3268-2021 糧食收儲企業(yè)安全生產(chǎn)標準化評定規(guī)范
- 辦事居間協(xié)議合同范例
- 正念減壓療法詳解課件
- GB 30254-2024高壓三相籠型異步電動機能效限定值及能效等級
- 重大事故隱患判定標準與相關(guān)事故案例培訓(xùn)課件
評論
0/150
提交評論