學(xué)生實驗報告_第1頁
學(xué)生實驗報告_第2頁
學(xué)生實驗報告_第3頁
學(xué)生實驗報告_第4頁
學(xué)生實驗報告_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、學(xué)生實驗報告實 驗 課 名 稱:操作系統(tǒng)實驗項目名稱:銀行家算法專 業(yè) 名 稱:計算機科學(xué)與技術(shù)班 級:2011240202學(xué) 號:23學(xué) 生 姓 名:黨蕊姣教 師 姓 名:安毅生2013 年 11 月 21 日一實驗名稱:銀行家算法二實驗?zāi)康呐c要求:銀行家算法是避免死鎖的一種重要方法。 通過編寫一個模擬動態(tài)資源分配的銀 行家算法程序,進(jìn)一步深入理解死鎖、 產(chǎn)生死鎖的必要條件、安全狀態(tài)等重要概念, 并掌握避免死鎖的具體實施方法。三實驗內(nèi)容:根據(jù)銀行家算法的基本思想,編寫和調(diào)試一個實現(xiàn)動態(tài)資源分配的模擬程序, 并能夠有效地防止和避免死鎖的發(fā)生。四算法描述:1. 算法數(shù)據(jù)結(jié)構(gòu)1)可利用資源向量 A

2、vailable ,它是一個最多含有 3 個元素的數(shù)組,其中的每一個元素代表 一類可利用的資源的數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源數(shù)目。其數(shù)值隨 該類資源的分配和回收而動態(tài)地改變。2)最大需求矩陣 Max,這是一個 nm 的矩陣,它定義了系統(tǒng)中 n 個進(jìn)程中的每一個進(jìn)程對 m類資源的最大需求。如果 Max(i,j)=k,表示進(jìn)程 i需要 j 類資源的最大數(shù)目為 k。3)分配矩陣 Allocation ,這也是一個 n m 的矩陣, 它定義了系統(tǒng)中的每類資源當(dāng)前一分配到 每一個進(jìn)程的資源數(shù)。如果 Allocation ( i,j) =k,表示進(jìn)程 i當(dāng)前已經(jīng)分到 j 類資源的數(shù)目 為

3、 k。Allocation i 表示進(jìn)程 i 的分配向量,有矩陣 Allocation 的第 i 行構(gòu)成。4)需求矩陣 Need,這還是一個 nm 的矩陣,用以表示每個進(jìn)程還需要的各類資源的數(shù)目。如果 Need(i,j)=k,表示進(jìn)程 i 還需要 j 類資源 k 個,才能完成其任務(wù)。 Need i 表示進(jìn)程i 的需求向量,由矩陣 Need 的第 i 行構(gòu)成。5)上述三個矩陣間存在關(guān)系: Need(i,j)=Max(i,j)-Allocation (i,j);2. 銀行家算法設(shè) Requesti 是進(jìn)程 i 的請求向量,如果 Requesti, j=K, 表示進(jìn)程 i 需要 K 個 j 類型的資

4、 源。當(dāng) i 發(fā)出資源請求后,系統(tǒng)按下述步驟進(jìn)行檢查:1)如果 Request i Need,則轉(zhuǎn)向步驟 2;否則,認(rèn)為出錯,因為它所請求的資源數(shù)已超過它 當(dāng)前的最大需求量。2)如果 Request i Available,則轉(zhuǎn)向步驟 3;否則,表示系統(tǒng)中尚無足夠的資源滿足i 的申請,i 必須等待。3)系統(tǒng)試探性地把資源分配給進(jìn)程 i ,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Available = Available - Request iAllocation i= Allocation i+ Request iNeed i= Need i- Request i4)系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后

5、,系統(tǒng)是否處于安全狀態(tài)。如果安全才正式將資源分配給進(jìn)程 i ,以完成本次分配;否則,將試探分配作廢,恢復(fù)原來的資源分配狀態(tài), 讓進(jìn)程 i 等待。五源程序:1. 初始量設(shè)置 const int n=5; /進(jìn)程數(shù) const int m=3; / 資源種類 int Availablem = 3,3,2;int Allocationnm = 0,1,0,2,0,0,3,0,2,2,1,1,0,0,2;int Maxnm=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3; char Namem=a,b,c;int Neednm = 0;int Requestm = 0;int Workm

6、= 0; / 工作向量bool Finishn = false;/ 判斷資源是否充足 bool flag = true;const int max=10;int tempn=0;/ 存放安全序列2. 銀行家算法核心程序: bool Banker(int p ,int requestm) for(int j=0; j Needpj | requestj Availablej) cout 分配失敗,請求資源超出可用資源 endl; return false; /分配失敗,請求資源超出可用資源Availablej = Availablej - requestj; Allocationpj =Allo

7、cationpj + requestj;Needpj = Needpj - requestj;if(!Safety()/ 執(zhí)行安全性算法,如果不安全則撤銷操作,返回失敗for( j=0; jm; j+) Availablej = Availablej + requestj; Allocationpj = Allocationpj - requestj; Needpj = Needpj + requestj;cout 分配失敗,不安全 endl; return false; return true;4.安全性算法 bool Safety() int i=0;bool stop =false;in

8、t flag3;for(int k=0; k=m; k+)Workk = Availablek; while(!stop) for(int l=0; ln; l+)flag3=0;for(int j=0; jm; j+) if( !Finishl & Needlj = Workj) flag3+;if( flag3 =m ) for(j=0; jm; j+) Workj = Workj + Allocationlj; Finishl = true; tempi=l; i+;int count =0;for(int k=0; kn; k+) if(!Finishk) count+;stop =

9、false;/ cout 系統(tǒng)不安全 endl;/ 不成功系統(tǒng)不安全 int count =0;for(int k=0; kn; k+) if(!Finishk) count+;stop = false; if(count = 0)stop = true; cout 系統(tǒng)是安全的 !endl;/ 如果安全,輸出成功 cout 分配的序列 :;for(int a=0;an;a+)/ 輸出運行進(jìn)程數(shù)組couttempa;coutendl; return true; if(i=0)stop=true;return false;六運行結(jié)果與分析:七實驗中遇到的問題、解決方法及體會:本程序的設(shè)計實現(xiàn)主要是用 C+語言。程序設(shè)計過程中開始遇到的最大的問題是算 法的結(jié)構(gòu)設(shè)計問題,課本上只給了設(shè)計要求及簡單的算法,要真正實現(xiàn)還需要考慮很多 方面。首先,安全算

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論