版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院學(xué)生實(shí)驗(yàn)報(bào)告(—年第二學(xué)期)課程名稱:操作系統(tǒng)開(kāi)課實(shí)驗(yàn)室:信自樓445年5月9日年級(jí)、專業(yè)、班學(xué)號(hào)姓名成績(jī)實(shí)驗(yàn)項(xiàng)目名稱銀行家算法指導(dǎo)教師舒國(guó)鋒教師評(píng)語(yǔ)教師簽名:年月日規(guī)定:對(duì)給定的一種資源分派矩陣狀態(tài)列表(可參考教材例題或習(xí)題),用安全性算法檢查現(xiàn)在狀態(tài)與否安全,并找出一種安全序列,然后某進(jìn)程提出資源申請(qǐng),用銀行家算法判斷與否能分派一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)編寫(xiě)銀行家算法,規(guī)定學(xué)生進(jìn)一步掌握如何實(shí)現(xiàn)死鎖的避免,進(jìn)一步純熟使用數(shù)組進(jìn)行程序的設(shè)計(jì)及實(shí)現(xiàn)。二、實(shí)驗(yàn)原理及基本技術(shù)路線圖(方框原理圖)用C語(yǔ)言或C++語(yǔ)言開(kāi)發(fā)。實(shí)現(xiàn)銀行家算法、安全性檢測(cè)算法。算法介紹:1.銀行家算法當(dāng)進(jìn)程p申請(qǐng)一種資源時(shí),系統(tǒng)完畢下列工作。 如果Request>Need,表達(dá)出錯(cuò),由于進(jìn)程申請(qǐng)的資源多于它自己申報(bào)的最大量; 如果Request>Allocation,則p必須等待; 否則,系統(tǒng)假設(shè)已經(jīng)分給p所申請(qǐng)的資源(試探性分派),并修改系統(tǒng)狀態(tài);Available:=Available-Request; Allocation:=Allocation+Request; Need:=Need-Request;調(diào)用安全性算法,判斷現(xiàn)在的系統(tǒng)狀態(tài)與否仍處在安全狀態(tài),若是,則真正實(shí)施分派;否則,回絕自此分派,恢復(fù)原來(lái)的系統(tǒng)狀態(tài),進(jìn)程p等待。Available:=Available+Request; Allocation:=Allocation-Request; Need:=Need+Request; 2.安全性算法 安全性算法是銀行家算法的子算法,是由銀行家算法調(diào)用的。判斷一種狀態(tài)與否安全的算法以下: ①令work和Finish分別是長(zhǎng)度為m和n的向量,初始化。 Work:=Available; Finish[i]:=false(i=1,2,…,n) ②尋找符合下列條件的i。 Finish[i]=false并且Need<=Work 如果沒(méi)有這樣的i存在,轉(zhuǎn)到環(huán)節(jié)④; ③Work:=Work+Allocation; Finish[i]=true; 轉(zhuǎn)到環(huán)節(jié)②; ④如果對(duì)全部的i,F(xiàn)inish[i]=true都成立,則系統(tǒng)處在安全狀態(tài):否則,系統(tǒng)是不安全的。3.流程圖 資源分派算法資源分派算法請(qǐng)求超量,帶錯(cuò)返回Request[i]請(qǐng)求超量,帶錯(cuò)返回Request[i]≤Need[i]FTRequest[i]Request[i]≤Available申請(qǐng)無(wú)法滿足,進(jìn)程p等待F申請(qǐng)無(wú)法滿足,進(jìn)程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確認(rèn)分派,p繼續(xù)申請(qǐng)?jiān)斐刹话踩_認(rèn)分派,p繼續(xù)申請(qǐng)?jiān)斐刹话踩M(jìn)程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];//可運(yùn)用資源數(shù)組intMax[50][100];//最大需求矩陣intAllocation[50][100];//分派矩陣intNeed[50][100];//需求矩陣intRequest[50][100];//M個(gè)進(jìn)程還需要N類資源的資源量intp[50];intm,n;//M個(gè)進(jìn)程,N類資源intWork[100];//可運(yùn)用資源數(shù)組intFinish[50];//安全序列數(shù)組5.函數(shù)闡明intSafe()//安全算法函數(shù)bank()//銀行卡算法函數(shù)三、所用儀器、材料(設(shè)備名稱、型號(hào)、規(guī)格等)。計(jì)算機(jī)一臺(tái)四、實(shí)驗(yàn)辦法、環(huán)節(jié)#include<iostream.h>////////////////////////////////////////////////////////////////////////////全局變量定義intAvailable[100];//可運(yùn)用資源數(shù)組intMax[50][100];//最大需求矩陣intAllocation[50][100];//分派矩陣intNeed[50][100];//需求矩陣intRequest[50][100];//M個(gè)進(jìn)程還需要N類資源的資源量intFinish[50];intp[50];intm,n;//M個(gè)進(jìn)程,N類資源intSafe(){ inti,j,k,l=0; intWork[100];//可運(yùn)用資源數(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<<"同意分派請(qǐng)求\n"; else { cout<<"你的請(qǐng)求被回絕\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<<"輸入進(jìn)程的數(shù)目:\n"; cin>>m; cout<<"輸入資源的種類:\n"; cin>>n; cout<<"輸入每個(gè)進(jìn)程最多所需的各類資源數(shù),按照"<<m<<"x"<<n<<"矩陣輸入\n"; for(i=0;i<m;i++) for(j=0;j<n;j++) cin>>Max[i][j]; cout<<"輸入每個(gè)進(jìn)程已經(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<<"個(gè)進(jìn)程所擁有的第"<<j+1<<"個(gè)資源錯(cuò)誤,請(qǐng)重新輸入:\n"; j--; continue; } } } cout<<"請(qǐng)輸入各個(gè)資源現(xiàn)有的數(shù)目:\n"; for(i=0;i<n;i++) cin>>Available[i]; cout<<"輸入你要對(duì)第幾個(gè)進(jìn)程進(jìn)行資源分派:\n"; cin>>n; cout<<"輸入多個(gè)資源的分派狀況:\n"; for(j=0;j<n;j++) { cin>>Request[x][j]; } b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬科版五年級(jí)數(shù)學(xué)下冊(cè)月考試卷含答案
- 2025年外研版七年級(jí)化學(xué)上冊(cè)月考試卷
- 2025年冀教版七年級(jí)歷史上冊(cè)月考試卷
- 2025年人教五四新版七年級(jí)生物下冊(cè)月考試卷含答案
- 2025年滬科版八年級(jí)地理上冊(cè)階段測(cè)試試卷含答案
- 2025年外研版九年級(jí)科學(xué)下冊(cè)月考試卷含答案
- 2025年外研銜接版八年級(jí)科學(xué)下冊(cè)階段測(cè)試試卷
- 2025年人教新課標(biāo)八年級(jí)生物上冊(cè)階段測(cè)試試卷
- 二零二五版摩托車品牌形象設(shè)計(jì)與包裝合同4篇
- 二零二五年度大棚建設(shè)與農(nóng)業(yè)產(chǎn)業(yè)園區(qū)合作合同4篇
- 建設(shè)項(xiàng)目施工現(xiàn)場(chǎng)春節(jié)放假期間的安全管理方案
- TSEESA 010-2022 零碳園區(qū)創(chuàng)建與評(píng)價(jià)技術(shù)規(guī)范
- GB/T 19867.5-2008電阻焊焊接工藝規(guī)程
- 2023年市場(chǎng)部主管年終工作總結(jié)及明年工作計(jì)劃
- 第三章旅游活動(dòng)的基本要素課件
- 國(guó)有資產(chǎn)出租出借審批表(學(xué)校事業(yè)單位臺(tái)賬記錄表)
- 安全生產(chǎn)風(fēng)險(xiǎn)分級(jí)管控實(shí)施細(xì)則
- 30第七章-農(nóng)村社會(huì)治理課件
- 考研考博-英語(yǔ)-東北石油大學(xué)考試押題三合一+答案詳解1
- 出國(guó)學(xué)生英文成績(jī)單模板
- 植物細(xì)胞中氨基酸轉(zhuǎn)運(yùn)蛋白的一些已知或未知的功能
評(píng)論
0/150
提交評(píng)論