操作系統實驗報告(三)_第1頁
操作系統實驗報告(三)_第2頁
操作系統實驗報告(三)_第3頁
操作系統實驗報告(三)_第4頁
操作系統實驗報告(三)_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上 XXXX大學實 驗 報 告|實驗名稱 實驗三 銀行家算法課程名稱 操作系統 | 專業班級: 學生姓名: 學 號: 成 績:指導教師: 實驗日期: 專心-專注-專業一、實驗目的及要求1、實驗目的 熟悉銀行家算法,理解系統產生死鎖的原因及避免死鎖的方法,加深記意。2、實驗要求 用高級語言編寫和調試一個描述銀行家算法的程序。設計五個進程P0,P1,P2,P3,P4共享三類資源A,B,C的系統,A,B,C的資源數量分別為10,5,7。進程可動態地申請資源和釋放資源,系統按各進程的申請動態地分配資源。要求程序具有顯示和打印各進程的某一時刻的資源分配表和安全序列;顯示和打印各進

2、程依次要求申請的資源號以及為某進程分配資源后的有關資源數據。二、所用儀器、設備PC機三、實驗原理利用銀行家算法避免死鎖1、銀行家算法中的數據結構(1)可利用資源向量Available(2)最大需求規陣Max(3)分配矩陣Allocation(4)需求矩陣Need2、銀行家算法(1)如果Requesti或=Need,則轉向步驟2;否則,認為出錯,因為它所需要的資源數已超過它所宣布的最大值。(2)如果Request或=Available,則轉向步驟(3);否則,表示系統中尚無足夠的資源,P1必須等待。(3)系統試探把要求的資源分配給進程Pi,并修改下面數據結構中的數值:Available:=Ava

3、ilable-Requesti;Allocation:=Allocationi+Request;Needi:=Needi-request;(4)系統執行安全性算法,檢查此次資源分配后,系統是否處于安全狀態。3、安全性算法系統所執行的安全性算法可描述如下:(1)設置兩個向量工作向量Work。它表示系統可提供進程繼續運行所需要的各類資源數目,它含有m個元素,執行安全算法開始時,Work:=Allocation;Finish。它表示系統是否有足夠的資源分配給進程,使之運行完成,開始時先做Finishi:=false;當有足夠資源分配給進程時,令Finishi:=true。(2)從進程集合中找到一個能

4、滿足下述條件的進程:Finishi:=falseNeed</=Work如找到,執行步驟(3);否則,執行步驟(4)。(3)當進程P獲得資源后,可順利執行,直至完成,并釋放出分配給它的資源,故應執行:Work:=Work+Allocation;Finishi:=true;Go to step 2;(4)如果所有進程的Finishi=true,則表示系統處于安全狀態;否則,系統處于不安全狀態。4、銀行家算法之例假設有五個進程P0,P1,P2,P3,P4和三種類型的資源A,B,C,每一種資源的數量分別為10、5、7,在T0時刻的資源分配情況如圖1所示。圖1(1)T0時刻的安全性利用安全性算法對

5、T0時刻的資源分配情況進行分析,可得下表所示的T0時刻的安全性分析,從中得知,T0時刻存在著一個安全序列P1,P3,P4,P2,P0,故系統是安全的,如圖2所示。圖2(2) P1請求資源P1發出請求向量Request(1,0,2),系統按銀行家 算法進行檢查:(1)Request1(1,0,2)Need(1,2,2)(2)Request1(1,0,2)Available(3,3,2)(3)系統先假定可為P1分配資源,并修改Aailable,Allocation1和Need1向量,由此形成的資源變化情況如圖1中的圓括號所示。(4)我們再利用安全性檢查此時系統是否安全。由所進行的安全性檢查得知,可

6、以找到一個安全序列P1,P3,P4,P2,P0。因此,系統是安全的,可以立即將P1所申請的資源分配給它。(3)P4請求資源P4發出請求向量Request(3,3,0),系統按銀行家算法進行檢查:(1)Request4(3,3,0)Need4(4,3,1)。(2)Request4(3,3,0)>Available(2,3,0),讓P4等待。(4) P0請求資源P0發出請求向量Request0(0,2,0),系統按銀行家算法進行檢查:(1)Request0(o,2,0)<或=Need0(7,4,3);(5)進行安全性檢查可用資源Available2,1,0已不能滿足任何進程的需要,故系

7、統進入不安全狀態,此時系統不分配資源。如果在銀行家算法中,把P0發出的請求向量改為Request(0,1,0),系統是否能將資源分配給它,請讀者考慮四、實驗方法與步驟先定義好每個進程的MAX,ALLOCTION,NEED,AVAILABLE等:int P_finish5=0,0,0,0,0; /已完成的進程序列 int P_work5; /進程工作序列 int P_max3=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3; /進程最大需求 int P_Alloctioan3=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2; /進程已得到的 int P_need3=7,4

8、,3,1,2,2,6,0,0,0,1,1,4,3,1; /進程還需分配的int Sys_resource3=3,3,2; 定義需要的向量:int test(int avaliablem,int neednm,int allocationnm,int finishn, int num,int requestm)判斷安全性程序:for(i=0;i<5;i+) /(如果五個i都是一,則為安全的,否則不安全) bj=finishi+bj; if(bj=5) cout<<" 本次安全序列:" /(安全的話,就輸出信息) for(i=0;i<5;i+) cout

9、<<"進程"<<tempi<<"->" return 1; else return 0; /(返回一個值,一次來作為分配資源時候系統是否安全)檢查分配以后系統是否處于安全狀態:for(j=0;j<3;j+) available1j=available1j-rq12; allocation1ij=allocation1ij+rqij; need1ij=need1ij-rqij; sf=safe(jcbh1,allocation1,need1,available1); 五、實驗結果與數據處理此程序的1為P0,2 為P1,以此類推。先讓P0申請資

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論