版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、淮海工學(xué)院計算機工程學(xué)院實驗報告書課程名: 操作系統(tǒng)原理 題 目: 銀行家算法 班 級: D軟件101 學(xué) 號: 姓 名: 陳衍 評語:成績: 指導(dǎo)教師: 批閱時間: 年 月 日一、實驗?zāi)康你y行家算法是操作系統(tǒng)中避免死鎖的典型算法,本實驗可以加深對銀行家算法的步驟和相關(guān)數(shù)據(jù)結(jié)構(gòu)用法的更好理解。實驗環(huán)境Turbo C 2.0/3.0或VC+6.0實驗學(xué)時4學(xué)時,必做實驗。二、實驗內(nèi)容用C語言編寫一個簡單的銀行家算法模擬程序,用銀行家算法實現(xiàn)資源分配。程序能模擬多個進程共享多種資源的情形。進程可動態(tài)地申請資源,系統(tǒng)按各進程的申請動態(tài)地分配資源。要求程序具有顯示和打印各進程的某一時刻的資源分配表和安
2、全序列;顯示和打印各進程依次要求申請的資源數(shù)量以及為某進程分配資源后的有關(guān)資源數(shù)據(jù)的情況。3、 實驗說明實驗中進程的數(shù)量、資源的種類以及每種資源的總量Totalj最好允許動態(tài)指定。初始時每個進程運行過程中的最大資源需求量Maxi,j和系統(tǒng)已分配給該進程的資源量Allocationi,j均為已知(這些數(shù)值可以在程序運行時動態(tài)輸入),而算法中其他數(shù)據(jù)結(jié)構(gòu)的值(包括Needi,j、Availablej)則需要由程序根據(jù)已知量的值計算產(chǎn)生。4、 實驗步驟1、 理解本實驗中關(guān)于兩種調(diào)度算法的說明。2、 根據(jù)調(diào)度算法的說明,畫出相應(yīng)的程序流程圖。3、 按照程序流程圖,用C語言編程并實現(xiàn)。五、分析與思考1
3、要找出某一狀態(tài)下所有可能的安全序列,程序該如何實現(xiàn)?答:要找出這個狀態(tài)下的所有可能的安全序列,前提是要是使這個系統(tǒng)先處于安全狀態(tài),而系統(tǒng)的狀態(tài)可通過以下來描述:進程剩余申請數(shù)=最大申請數(shù)-占有數(shù);可分配資源數(shù)=總數(shù)-占有數(shù)之和;通過這個描述來算出系統(tǒng)是否安全,從而找出所有的安全序列。2 銀行家算法的局限性有哪些?答:銀行家算法是一種最有代表性的避免死鎖的算法。銀行家算法即把操作系統(tǒng)看作是銀行 家,操作系統(tǒng)管理的資源相當于銀行家管理的資金,進程向操作系統(tǒng)請求分配資源相當于用戶向銀行家貸款。當進程在執(zhí)行中繼續(xù)申請資源時,先測試該進程已占用的資源數(shù)與本次申請的資源數(shù)之和是否超過了該進程對資源的最大需
4、求量。若超過則拒絕分配資源,若沒有超過則再測試系統(tǒng)現(xiàn)存的資源能否滿足該進程尚需的最大資源量,若能滿足則按當前的申請量分配資源,否則也要推遲分配。但任何一種算法都存在其缺點,對各進程的資源分配要求嚴格,經(jīng)常使其處于不安全狀態(tài),銀行家算法的主要局限是過于謹慎和檢查各申請者對各類資源的最大需求量開銷較大。六、測試數(shù)據(jù)與實驗結(jié)果銀行家算法流程圖(1)所示:開始輸入?yún)?shù)RequestilNeedll出錯返回YRequestilAvailablel出錯返回假定分配NYN假定分配后,系統(tǒng)安全嗎?申請成功,輸出各數(shù)據(jù)變化。申請失敗,以上分配作廢,恢復(fù)原來分配結(jié)束是否運行結(jié)果如圖所示:圖(1)圖(2)七、實驗心
5、得與體會通過本次實驗,我知道了可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當于銀行家管理的資金,進程向操作系統(tǒng)請求分配資源相當于用戶向銀行家貸款。 為保證資金的安全,銀行家規(guī)定: (1) 當一個顧客對資金的最大需求量不超過銀行家現(xiàn)有的資金時就可接納該顧客; (2) 顧客可以分期貸款,但貸款的總數(shù)不能超過最大需求量; (3) 當銀行家現(xiàn)有的資金不能滿足顧客尚需的貸款數(shù)額時,對顧客的貸款可推遲支付,但總能使顧客在有限的時間里得到貸款; (4) 當顧客得到所需的全部資金后,一定能在有限的時間里歸還所有的資金. 操作系統(tǒng)按照銀行家制定的規(guī)則為進程分配資源,當進程首次申請資源時,要測試該進程對資源的
6、最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當前的申請量分配資源,否則就推遲分配。當進程在執(zhí)行中繼續(xù)申請資源時,先測試該進程本次申請的資源數(shù)是否超過了該資源所剩余的總量。若超過則拒絕分配資源,若能滿足則按當前的申請量分配資源,否則也要推遲分配。這次的實驗中還遇到一些問題,在同學(xué)的幫助下一一解決了。附錄#include#include#include#define False 0#define True 1int Max100100=0;/各進程所需各類資源的最大需求int Avaliable100=0;/系統(tǒng)可用資源char name100=0;/資源的名稱int Allocati
7、on100100=0;/系統(tǒng)已分配資源int Need100100=0;/還需要資源int Request100=0;/請求資源向量int temp100=0;/存放安全序列int Work100=0;/存放系統(tǒng)可提供資源int M=100;/作業(yè)的最大數(shù)為100int N=100;/資源的最大數(shù)為100void showdata()/顯示資源矩陣 int i,j; cout系統(tǒng)目前可用的資源Avaliable:endl; for(i=0;iN;i+) coutnamei ; coutendl; for (j=0;jN;j+) coutAvaliablej ;/輸出分配資源 coutendl;
8、 cout Max Allocation Needendl; cout進程名 ; for(j=0;j3;j+) for(i=0;iN;i+) coutnamei ; cout ; coutendl; for(i=0;iM;i+) cout i ; for(j=0;jN;j+) coutMaxij ; cout ; for(j=0;jN;j+) coutAllocationij ; cout ; for(j=0;jN;j+) coutNeedij ; coutendl; int changdata(int i)/進行資源分配 int j;for (j=0;jM;j+) Avaliablej=Av
9、aliablej-Requestj; Allocationij=Allocationij+Requestj; Needij=Needij-Requestj;return 1;int safe()/安全性算法int i,k=0,m,apply,Finish100=0;int j;int flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;for(i=0;iM;i+) apply=0; for(j=0;jN;j+) if (Finishi=False&Needij=Workj) apply+; if(apply=N) for(m=0;
10、mN;m+) Workm=Workm+Allocationim;/變分配數(shù) Finishi=True; tempk=i; i=-1; k+; flag+; for(i=0;iM;i+) if(Finishi=False) cout系統(tǒng)不安全endl;/不成功系統(tǒng)不安全 return -1; cout系統(tǒng)是安全的!endl;/如果安全,輸出成功 cout分配的序列:;for(i=0;iM;i+)/輸出運行進程數(shù)組 couttempi; if(iM-1) cout; coutendl; return 0;void share()/利用銀行家算法對申請資源對進行判定char ch;int i=0,j
11、=0;ch=y;cout請輸入要求分配的資源進程號(0-M-1i;/輸入須申請的資源號cout請輸入進程 i 申請的資源:endl;for(j=0;jN;j+) coutnamejRequestj;/輸入需要申請的資源 for (j=0;jNeedij)/判斷申請是否大于需求,若大于則出錯 cout進程 i申請的資源大于它需要的資源; cout 分配不合理,不予分配!Avaliablej)/判斷申請是否大于當前資源,若大于則 /出錯 cout進程i申請的資源大于系統(tǒng)現(xiàn)在可利用的資源; cout 分配出錯,不予分配!endl; ch=n; break; if(ch=y) changdata(i)
12、;/根據(jù)進程需求量變換資源 showdata();/根據(jù)進程需求量顯示變換后的資源 safe();/根據(jù)進程需求量進行銀行家算法判斷 void addresources()/添加資源 int n,flag;coutn;flag=N;N=N+n;for(int i=0;in;i+) coutnameflag; coutAvaliableflag+;showdata();safe();void delresources()/刪除資源char ming;int i,flag=1;coutming;for(i=0;iN;i+) if(ming=namei) flag=0; break; if(i=N)
13、 cout該資源名稱不存在,請重新輸入:;while(flag);for(int j=i;jN-1;j+) namej=namej+1; Avaliablej=Avaliablej+1; N=N-1;showdata();safe();void changeresources()/修改資源函數(shù)cout系統(tǒng)目前可用的資源Avaliable:endl; for(int i=0;iN;i+) coutnamei:Avaliableiendl;cout輸入系統(tǒng)可用資源Avaliable:Avaliable0Avaliable1Avaliable2;cout經(jīng)修改后的系統(tǒng)可用資源為endl;for (i
14、nt k=0;kN;k+) coutnamek:Avaliablekendl;showdata();safe();void addprocess()/添加作業(yè) int flag=M;M=M+1;cout請輸入該作業(yè)的最打需求量Maxendl;for(int i=0;iN;i+) coutnameiMaxflagi; Needflagi=Maxflagi-Allocationflagi;showdata();safe();int main()/主函數(shù) int i,j,number,choice,m,n,flag;char ming;cout*單處理機系統(tǒng)進程調(diào)度實現(xiàn)*endl;coutn;N=n
15、;for(i=0;in;i+) cout資源i+1ming; namei=ming; coutnumber; Avaliablei=number;coutendl;coutm;M=m;cout請輸入各進程的最大需求量(m*n矩陣)Max:endl;for(i=0;im;i+) for(j=0;jMaxij;do flag=0; cout請輸入各進程已經(jīng)申請的資源量(m*n矩陣)Allocation:endl; for(i=0;im;i+) for(j=0;jAllocationij; if(AllocationijMaxij) flag=1; Needij=Maxij-Allocationij; if(flag) cout申請的資源大于最大需求量,請重新輸入!n;while(flag); showdata();/顯示各種資源 safe();/用銀行家算法判定系統(tǒng)是否安全 while(choice) cout*銀行家算法演示*endl; cout 1:增加資源 endl; cout 2:刪除資源 endl; cout 3:修改資源 endl; cout 4:分配資源 endl; cout 5:增加作業(yè) endl; cout 0:離開 endl; cout*
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防安全員理論考試卷含答案
- 環(huán)磷酰胺沖擊治療術(shù)后難治性MG方案優(yōu)化
- 深度解析(2026)《GBT 19310-2025小艇 永久性安裝的燃油系統(tǒng)》
- 客服主管面試題及服務(wù)技能考核含答案
- 通信行業(yè)網(wǎng)絡(luò)工程師面試題
- 年產(chǎn)xxx二極管 項目可行性分析報告
- 布輪建設(shè)項目可行性分析報告(總投資5000萬元)
- 美容師崗位面試題及答案
- 大數(shù)據(jù)公司數(shù)據(jù)分析師日常工作及問題解決技巧
- 深度解析(2026)《GBT 18874.1-2002起重機 供需雙方應(yīng)提供的資料 第1部分總則》
- DB21∕T 3165-2025 鋼纖維混凝土預(yù)制管片技術(shù)規(guī)程
- 廣西崇左市江州區(qū)2025-2026學(xué)年七年級上學(xué)期第三階段素質(zhì)評價歷史試題 (含答案)
- 2025ACR指南:系統(tǒng)性紅斑狼瘡的治療課件
- 國開2025年秋《數(shù)學(xué)思想與方法》大作業(yè)答案
- 消防安全培訓(xùn)課件
- 2025及未來5年印染布料項目投資價值分析報告
- (2025年)醫(yī)學(xué)裝備管理試題(帶答案)
- 車間后備人才現(xiàn)狀匯報
- 2025四川產(chǎn)業(yè)振興基金投資集團有限公司應(yīng)屆畢業(yè)生招聘9人筆試歷年難易錯考點試卷帶答案解析2套試卷
- 《建筑設(shè)計》課程教案(2025-2026學(xué)年)
- 軟裝工程質(zhì)量管理方案有哪些
評論
0/150
提交評論