實(shí)驗(yàn)三死鎖的檢測(cè)和解除參考模板_第1頁(yè)
實(shí)驗(yàn)三死鎖的檢測(cè)和解除參考模板_第2頁(yè)
實(shí)驗(yàn)三死鎖的檢測(cè)和解除參考模板_第3頁(yè)
實(shí)驗(yàn)三死鎖的檢測(cè)和解除參考模板_第4頁(yè)
實(shí)驗(yàn)三死鎖的檢測(cè)和解除參考模板_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí) 驗(yàn) 報(bào) 告課程名稱 操作系統(tǒng)I 姓 名 學(xué) 號(hào) 專業(yè)班級(jí) 任課教師 日 期 0 / 10一、 實(shí)驗(yàn)內(nèi)容死鎖的檢測(cè)與解除二、 實(shí)驗(yàn)?zāi)康恼莆詹僮飨到y(tǒng)的進(jìn)程管理與資源分配原理,掌握對(duì)操作系統(tǒng)安全性檢驗(yàn)和死鎖的解除的原理和方法。三、 實(shí)驗(yàn)題目系統(tǒng)中有 m 個(gè)同類資源被 n 個(gè)進(jìn)程共享,每個(gè)進(jìn)程對(duì)資源的最大需求數(shù)分別為 S1,S2,Sn,且 Max(Si)=m, (i=1,2,n)。進(jìn)程可以動(dòng)態(tài)地申請(qǐng)資源和釋放資源。編寫一個(gè)程序,實(shí)現(xiàn)銀行家算法,當(dāng)系統(tǒng)將資源分配給某一進(jìn)程而不會(huì)死鎖時(shí),就分配之。否則,推遲分配,并顯示適當(dāng)?shù)男畔ⅰ7謩e使用檢測(cè)“進(jìn)程資源循環(huán)等待鏈”的方法和

2、Coffman 的算法來檢測(cè)進(jìn)程的死鎖狀態(tài)。對(duì)于相同的進(jìn)程資源分配、占用次序,比較兩個(gè)算法的結(jié)果。四、設(shè)計(jì)思路和流程圖1.輸入系統(tǒng)進(jìn)程數(shù)量n和資源類型數(shù)量m。 2.輸入每類資源的數(shù)量。 3.輸入每個(gè)進(jìn)程每類資源的最大需求量和已獲資源量。 4.檢驗(yàn)系統(tǒng)的安全。 5.若檢測(cè)結(jié)果為系統(tǒng)不安全,可以對(duì)死鎖進(jìn)行解除,直到安全為止再檢測(cè)。 6.重復(fù)5操作,直到所有進(jìn)程運(yùn)行完畢。五、 主要數(shù)據(jù)結(jié)構(gòu)及其說明int Max100100=0; /各進(jìn)程所需各類資源的最大需求; int Available100=0; /系統(tǒng)可用資源; char Name100=0; /資源的名稱; int Allocation10

3、0100=0; /系統(tǒng)已分配資源; int Need100100=0; /還需要資源 int Request100=0; /請(qǐng)求資源向量; int Temp100=0; /存放安全序列; int Work100=0; /存放系統(tǒng)可提供資源; bool Finish100=0;/存放已完成的序列六、 源程序并附上注釋#include stdafx.h #include #define False 0 #define True 1 using namespace std; int Max100100=0; /各進(jìn)程所需各類資源的最大需求; int Available100=0; /系統(tǒng)可用資源;

4、char Name100=0; /資源的名稱; int Allocation100100=0; /系統(tǒng)已分配資源; int Need100100=0; /還需要資源 int Request100=0; /請(qǐng)求資源向量; int Temp100=0; /存放安全序列; int Work100=0; /存放系統(tǒng)可提供資源; bool Finish100=0; int M=100; /作業(yè)的最大數(shù) int N=100; /資源的最大數(shù) int l=0;/記錄安全進(jìn)程的TEMP下標(biāo) void ShowData()/初始化資源矩陣 int i,j; cout系統(tǒng)可用資源Available:endl; f

5、or(i=0;iN;i+) coutNamei ; coutendl; for(j=0;jN;j+) coutAvailablej ;/顯示可分配的資源 coutendl; cout Max Allocation Needendl; cout進(jìn)程名 ; for (j=0;j3;j+)/MAX ALLOCATION NEED 共列 for (i=0;iN;i+) coutNamei ; cout ; coutendl; for(i=0;iM;i+) cout i ;/輸出進(jìn)程名 for(j=0;jN;j+) coutMaxij ;/輸出最大 cout ; for(j=0;jN;j+) coutA

6、llocationij ;/輸出已分配 cout ; for(j=0;jN;j+) coutNeedij ;/輸出需求 coutendl; bool Safe() /安全性算法 int i,j,k; for(i=0;iN;i+) Worki=Availablei; /初始化工作向量 for(i=0;iM;i+) Finishi=false; /判斷進(jìn)程i是否已執(zhí)行 for(i=0;iM;i+) if(Finishi=true) continue; else for(j=0;jWorkj) break; if(j=N)/若Need都小于Work Finishi=true; for(k=0;kN;

7、k+) Workk+=Allocationik; /進(jìn)程i執(zhí)行完后回收資源 Templ+=i; i=-1; else continue; if(l=M) cout系統(tǒng)是安全的endl; cout安全序 列:endl; for(i=0;il;i+) coutTempi; if(i!=l-1) cout; coutendl; return true; for(i=0;iM;i+) if(Finishi=false) cout會(huì)發(fā)生死鎖,發(fā)生死鎖的進(jìn)程是:i endl; coutendl; return false; void unlock() int i,j; i=0; cout死鎖解除開始; c

8、outendl; while(iM&Finishi=false) /查找未完成的進(jìn)程 for(j=0;jN;j+) Availablej+=Allocationij; /回收該進(jìn)程所有資源 Allocationij=0; if(Safe() cout死鎖已解除endl; else i+;/到下一個(gè)進(jìn)程 Safe(); int main() int i,j,number,m,n,flag; int over; char mc; cout-死鎖的檢測(cè)與解除-; coutendl; coutendl; coutn; N=n; for (i=0;in;i+) cout資源i+1mc; Namei=mc

9、; cout資源i+1number; Availablei=number; coutendl; coutendl; coutm; M=m; cout請(qǐng)輸入各進(jìn)程的最大需求量(m*n矩陣)Max:endl; for (int i=0;im;i+) for (int j=0;jMaxij; do flag=0; cout請(qǐng)輸入各進(jìn)程已經(jīng)分配資源量(m*n矩陣)Allocation:endl; for (int i=0;im;i+) for (j=0;jAllocationij; if(AllocationijMaxij) flag=1; Needij=Maxij-Allocationij; if(

10、flag) cout首次輸入的已分配資源已經(jīng)大于最大需求量請(qǐng)重新輸入!n; while(flag);/ 當(dāng)申請(qǐng)資源符合要求時(shí)end do ShowData();/顯示 Safe();/安全檢測(cè) if(l!=m)/當(dāng)安全進(jìn)程數(shù)不等于所有進(jìn)程數(shù) unlock(); cout運(yùn)行結(jié)束over; 七、 程序運(yùn)行時(shí)的初值和運(yùn)行結(jié)果八、 實(shí)驗(yàn)體會(huì)通過本次實(shí)驗(yàn),比較完整的掌握了操作系統(tǒng)的進(jìn)程管理與資源分配原理,以及對(duì)操作系統(tǒng)安全性檢驗(yàn)和死鎖的解除的原理和方法。一開始,對(duì)于死鎖的解除,我只是從第一個(gè)進(jìn)程開始剝奪其資源,也不管它是不是發(fā)生了死鎖,一直剝奪到死鎖解除為止。然后,通過對(duì)程序進(jìn)行改進(jìn),讓其可以判斷死鎖進(jìn)程與非死鎖進(jìn)程,然后從第一個(gè)死鎖進(jìn)程開始剝奪已分配資源

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論