版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、xx 大學(xué) 操作系統(tǒng) 實(shí)驗(yàn)報(bào)告: 學(xué)號(hào): 班級(jí): 實(shí)驗(yàn)日期:實(shí)驗(yàn)名稱:預(yù)防進(jìn)程死鎖的銀行家算法實(shí)驗(yàn)三 預(yù)防進(jìn)程死鎖的銀行家算法理解1實(shí)驗(yàn)?zāi)康?: 通過(guò)編寫和調(diào)試一個(gè)系統(tǒng)動(dòng)態(tài)分配資源的簡(jiǎn)單模擬程序, 觀察死鎖產(chǎn)生的條件,并采用適當(dāng)?shù)乃惴?,有效地防止和避免死鎖地發(fā)生。 銀行家算法的運(yùn)行原理,進(jìn)一步掌握預(yù)防進(jìn)程死鎖的策略及對(duì)系統(tǒng)性能的評(píng)價(jià)方法。 :2. 需求分析(1) 輸入的形式和輸入值的圍;輸入:首先輸入系統(tǒng)可供資源種類的數(shù)量 n 圍: 0n=100 資源 1 的名稱: 資源的數(shù)量:資源 2 的名稱: 資源的數(shù)量:。輸入作業(yè)的數(shù)量 m圍: 0m=100輸入個(gè)進(jìn)程的最大需求量 Max: 輸入個(gè)進(jìn)程已
2、經(jīng)申請(qǐng)的資源量 Allocation:(2) 輸出的形式系統(tǒng)目前可用的資源 Avaliable:(資源名)(資源名)(資源名)進(jìn)程名MaxAllocationNeed(資源名)(資源名)(資源名)(資源名)(資源名)(資源名)(資源名)(資源名)(資源名)(顯示系統(tǒng)是否安全)分配序列:3)程序所能達(dá)到的功能通過(guò)手動(dòng)輸入資源種類數(shù)量和各進(jìn)程的最大需求量、 已經(jīng)申請(qǐng)的資源量, 運(yùn)用銀行家 算法檢測(cè)系統(tǒng)是否安全, 若安全則給出安全序列, 并且當(dāng)用戶繼續(xù)輸入某進(jìn)程的資源請(qǐng)求時(shí), 能夠繼續(xù)判斷系統(tǒng)的安全性。(4) 測(cè)試數(shù)據(jù),包括正確的輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果。正確輸入輸入?yún)?shù)(已申請(qǐng)
3、資源數(shù))錯(cuò)誤3、概要設(shè)計(jì)所有抽象數(shù)據(jù)類型的定義:int Max100100; / 各進(jìn)程所需各類資源的最大需求int Avaliable100; / 系統(tǒng)可用資源char name100 ;/ 資源的名稱int Allocation100100; / 系統(tǒng)已分配資源int Need100100 ; /還需要資源int Request100; / 請(qǐng)求資源向量int temp100; / 存放安全序列int Work100;/ 存放系統(tǒng)可提供資源int M=100; / 作業(yè)的最大數(shù)為 100int N=100; / 資源的最大數(shù)為 100主程序的流程 :* 變量初始化;* 接收用戶輸入 n,m
4、,Maxij ,Allocation ij;* 按照銀行家算法判斷當(dāng)前狀態(tài)安全與否, 安全給出安全序列, 不安全給出提示;如 果 安 全 , 提 示 用 戶 輸 入 下 一 時(shí) 刻 進(jìn) 程 Pk 的 資 源 請(qǐng) 求Request(R1, ,Rm);如果不安全或者無(wú)新請(qǐng)求則退出。各程序模塊之間的層次 (調(diào)用 )關(guān)系使用 Main 函數(shù)對(duì)全局變量進(jìn)行初始化,然后調(diào)用 showdata 函數(shù)對(duì)各資源 和進(jìn)程進(jìn)行整合顯示,最后調(diào)用 safe 函數(shù)即銀行家算法判定系統(tǒng)是否安全。若 安全,并想繼續(xù)對(duì)某進(jìn)程進(jìn)行資源請(qǐng)求,則調(diào)用 request 函數(shù)進(jìn)行操作,其中 request 函數(shù)又調(diào)用 changeda
5、ta 函數(shù)、showdata 函數(shù)和 safe 函數(shù)進(jìn)行請(qǐng)求后的 數(shù)據(jù)修改、顯示以及對(duì)系統(tǒng)安全性的判定。4、詳細(xì)設(shè)計(jì)實(shí)現(xiàn)程序模塊的具體算法。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;mN;m+)Workm=Workm+A
6、llocationim;/ 變分配數(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+)/ 輸出運(yùn)行進(jìn)程數(shù)組couttempi;if(iM-1) cout; coutendl;return 0;5、調(diào)試分析(1)調(diào)試過(guò)程中遇到的問(wèn)題以及解決方法,設(shè)計(jì)與實(shí)現(xiàn)的回顧討論和分析起初,對(duì)于銀行家算法的運(yùn)算步驟有一定的偏差,導(dǎo)致在將算法編碼
7、時(shí)造 成了一些錯(cuò)誤,結(jié)果無(wú)法得到正確答案,之后通過(guò)仔細(xì)查閱銀行家算法的步驟, 問(wèn)題得以及時(shí)解決。(2)算法的性能分析用戶對(duì)可供資源和各進(jìn)程所需要的最大資源量和已分配資源量進(jìn)行賦值,可得到系統(tǒng)的安全性判定, 以及安全時(shí)的安全序列以及對(duì)資源進(jìn)行請(qǐng)求后的系統(tǒng) 安全性判定。(3)經(jīng)驗(yàn)體會(huì)通過(guò)對(duì)銀行家算法的編碼, 讓我對(duì)銀行家算法的原理有了更為深刻的理解, 同時(shí)也讓我意識(shí)到只有通過(guò)親自動(dòng)手實(shí)踐,才能加深對(duì)算法思想的理解與記憶。6、用戶使用說(shuō)明程序的使用說(shuō)明,列出每一步的操作步驟開始進(jìn)行初始化7、測(cè)試結(jié)果列出測(cè)試結(jié)果,包括輸入和輸出進(jìn)程名MaxAllocationNeedababab03212201110
8、1102231112之后對(duì)進(jìn)程一進(jìn)行資源請(qǐng)求:進(jìn)程名MaxAllocationNeedababab0321220111110022311128、附錄帶注釋的源程序,注釋應(yīng)清楚具體#include#include#include#define False 0#define True 1int Max100100=0;/ 各進(jìn)程所需各類資源的最大需求int Avaliable100=0;/ 系統(tǒng)可用資源char name100=0;/ 資源的名稱int Allocation100100=0;/ 系統(tǒng)已分配資源int Need100100=0;/ 還需要資源int Request100=0;/ 請(qǐng)求
9、資源向量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;cout Max Allocation Needendl; cout 進(jìn)程名 ;for(j=0;j3;j+)for(i=
10、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)/進(jìn)行資源分配int j; for (j=0;jM;j+) Avaliablej=Avaliablej-Requestj;Allocationij=Allocationij+Requestj;Needij=Needij-Requestj;re
11、turn 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;mN;m+)變分配數(shù)Workm=Workm+Allocationim;/ Finishi=True;tempk=i;i=-1;k+;flag+;for(i=0;iM;
12、i+)if(Finishi=False)cout 系統(tǒng)不安全 endl;/ 不成功系統(tǒng)不安全 return -1;cout 系統(tǒng)是安全的 !endl;/ 如果安全,輸出成功 cout 安全序列 :;for(i=0;iM;i+)/ 輸出運(yùn)行進(jìn)程數(shù)組 couttempi;if(iM-1) cout;coutendl;return 0;void request()/ 利用銀行家算法對(duì)申請(qǐng)資源對(duì)進(jìn)行判定char ch;int i=0,j=0;ch=y;cout 請(qǐng)輸入要求分配的資源進(jìn)程號(hào) (0-M-1i;/ 輸入須申請(qǐng)的資源號(hào)cout 請(qǐng)輸入進(jìn)程 i 申請(qǐng)的資源 :endl;for(j=0;jN;j+
13、)coutnamejRequestj;/ 輸入需要申請(qǐng)的資源for (j=0;jNeedij)/ 判斷申請(qǐng)是否大于需求,若大于則出錯(cuò)cout 進(jìn)程 i 申請(qǐng)的資源大于它需要的資源 ;cout 分配不合理,不予分配! Avaliablej)/ 判斷申請(qǐng)是否大于當(dāng)前資源, 若 大于則 / 出錯(cuò)cout 進(jìn)程 i 申請(qǐng)的資源大于系統(tǒng)現(xiàn)在可利用的資源 ;cout 分配出錯(cuò),不予分配 !endl;ch=n;break;if(ch=y) changdata(i);/ 根據(jù)進(jìn)程需求量變換資源 showdata();/ 根據(jù)進(jìn)程需求量顯示變換后的資源safe();/ 根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷int m
14、ain()/ 主函數(shù)int i,j,number,m,n,flag,choice; char ming;cout* *endl;單處理機(jī)系統(tǒng)進(jìn)程調(diào)度實(shí)現(xiàn)coutn;N=n;for(i=0;in;i+)cout 資源 i+1ming;namei=ming;coutnumber;Avaliablei=number;coutendl;coutm;M=m;cout 請(qǐng)輸入各進(jìn)程的最大需求量 (m*n 矩陣 )Max:endl; for(i=0;im;i+)for(j=0;jMaxij;doflag=0;cout 請(qǐng) 輸 入 各 進(jìn) 程 已 經(jīng) 申 請(qǐng) 的 資 源 量 (m*n 矩 陣)Allocation:endl;for(i=0;im;i+)for(j=0;jAllocationij;if(AllocationijMaxij)flag=1;Needij=Maxij-Allocationij;if(flag)cout 申請(qǐng)的資源大于最大需求量,請(qǐng)重新輸入 !n
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版牧業(yè)養(yǎng)殖技術(shù)引進(jìn)與推廣合同3篇
- 二零二五年鋼結(jié)構(gòu)工程居間驗(yàn)收服務(wù)合同3篇
- 2025年校園熱泵熱水設(shè)備供應(yīng)合同樣本2篇
- 2025版學(xué)校圖書采購(gòu)與配送服務(wù)承包合同3篇
- 2025版宣傳片制作與宣傳合同3篇
- 2025版塔吊租賃、安裝與安全維護(hù)服務(wù)合同3篇
- 全新二零二五年度廣告制作與發(fā)布合同6篇
- 家用紡織品智能溫控技術(shù)考核試卷
- 個(gè)人職業(yè)規(guī)劃社群考核試卷
- 2025版學(xué)校校園安全防范系統(tǒng)建設(shè)承包合同3篇
- 2024年山東省泰安市高考物理一模試卷(含詳細(xì)答案解析)
- 腫瘤患者管理
- 2025春夏運(yùn)動(dòng)戶外行業(yè)趨勢(shì)白皮書
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動(dòng)合同
- 2024年醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范培訓(xùn)課件
- 高低壓配電柜產(chǎn)品營(yíng)銷計(jì)劃書
- 2024年4月自考02202傳感器與檢測(cè)技術(shù)試題
- 新入職員工培訓(xùn)考試附有答案
- 互聯(lián)網(wǎng)的發(fā)展歷程
- 外觀質(zhì)量評(píng)定報(bào)告
評(píng)論
0/150
提交評(píng)論