版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 信息科學(xué)與工程學(xué)院課程設(shè)計任務(wù)書</p><p><b> 題目:銀行家算法</b></p><p> 課程設(shè)計的任務(wù)和具體要求指導(dǎo)教師簽字: 日期:</p><p> 指導(dǎo)教師評語成績:指導(dǎo)教師簽字: 日期:</p><p> 課程設(shè)計所需軟件、硬件等WIN-TC環(huán)境&
2、lt;/p><p> 課程設(shè)計進(jìn)度計劃</p><p> 起至日期工作內(nèi)容備注</p><p> 2014年6月6日1)從鍵盤輸入當(dāng)前系統(tǒng)的資源信息2)輸入進(jìn)程請求3)各種異常的處理</p><p> 參考文獻(xiàn)、資料索引</p><p> 序號文獻(xiàn)、資料名稱編著者出版單位</p><p> [1]
3、《計算機(jī)操作系統(tǒng)》湯子瀛,西安電子科技大學(xué)出版社,2007.86-132;[2] 《C語言程序設(shè)計》譚浩強,清華大學(xué)出版社,2009,(10):283;</p><p><b> 目錄</b></p><p><b> 一、緒論</b></p><p><b> 二、需求分析</b><
4、/p><p><b> 三、算法分析</b></p><p><b> 四、設(shè)計</b></p><p><b> 五、程序調(diào)試</b></p><p><b> 六、總結(jié)</b></p><p><b>
5、附錄(源代碼)</b></p><p><b> 緒論</b></p><p> Dijkstra (1965)提出了一種能夠避免死鎖的調(diào)度算法,稱為銀行家算法。</p><p> 銀行家算法是一種最有代表性的避免死鎖算法。在避免思死鎖方法中允許進(jìn)程動態(tài)地申請資源,但系統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計算此次分配資源的安全性,若分
6、配不會導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。為實現(xiàn)銀行家算法,系統(tǒng)必須設(shè)置若干數(shù)據(jù)結(jié)構(gòu)。</p><p> 銀行家算法執(zhí)行過程中,首先判斷申請資源的進(jìn)程所申請的資源數(shù)目是否合法,若是合法的,則可以為其進(jìn)行試分配,再利用安全性算法求出安全序列,·如果存在安全序列,則說明可以給申請資源的進(jìn)程分配資源,分配成功,繼續(xù)為其它進(jìn)程服務(wù)。如果找不到安全序列,則說明為該進(jìn)程分配資源后系統(tǒng)會進(jìn)入不安全狀態(tài),所以不
7、能為該進(jìn)程分配資源,使該進(jìn)程進(jìn)入阻塞狀態(tài)。若申請資源的進(jìn)程申請的資源數(shù)目不合法,則不需要進(jìn)行試分配,直接使其進(jìn)入阻塞狀態(tài),處理其他申請資源的進(jìn)程。</p><p> 在多道程序系統(tǒng)中,多個進(jìn)程的并發(fā)執(zhí)行來改善系統(tǒng)的資源利用率,提高系統(tǒng)的吞吐量,但可能發(fā)生一種危險——死鎖。所謂死鎖(Deadlock),是指多個進(jìn)程在運行過程中因爭奪資源而造成的一種僵局(DeadlyEmbrace),當(dāng)進(jìn)程處于這種狀態(tài)時,若無外力
8、作用,他們都無法在向前推進(jìn)。</p><p> 要預(yù)防死鎖,有摒棄“請求和保持”條件,摒棄“不剝奪”條件,摒棄“環(huán)路等待”條件等方法。</p><p> 但是,在預(yù)防死鎖的幾種方法之中,都施加了較強的限制條件;而在避免死鎖的方法中,所施加的限制條件較弱,有可能獲得令人滿意的系統(tǒng)性能。在該方法中把系統(tǒng)狀態(tài)分為安全狀態(tài)和不安全狀態(tài),便可避免死鎖的發(fā)生。</p><p&g
9、t; 而最具代表性的避免死鎖的算法,便是Dijkstra的銀行家算法。</p><p> 利用銀行家算法,我們可以來檢測CPU為進(jìn)程分配資源的情況,決定CPU是否響應(yīng)某進(jìn)程的的請求并為其分配資源,從而很好避免了死鎖的產(chǎn)生。</p><p><b> 需求分析</b></p><p><b> 2.1問題描述</b>
10、</p><p> 當(dāng)系統(tǒng)在進(jìn)行資源管理時,如果對進(jìn)城申請的資源分配不當(dāng),可能會使系統(tǒng)進(jìn)入死鎖狀態(tài),因而后面到來的進(jìn)程也無法順利執(zhí)行。銀行家算法中,要對當(dāng)前申請資源的進(jìn)程申請資源的數(shù)目進(jìn)行判斷,如果可以試分配,則試求出一個安全序列,如果可以求出,則說明給這個進(jìn)程分配資源后系統(tǒng)不會進(jìn)入不安全狀態(tài),將該進(jìn)程申請的資源分配給他,若求不出安全序列,則說明將資源分配給該進(jìn)程后系統(tǒng)會進(jìn)入不安全狀態(tài),所以就使該進(jìn)程進(jìn)入阻塞狀
11、態(tài),等待以后可以分配資源時再執(zhí)行該進(jìn)程,然后系統(tǒng)繼續(xù)服務(wù)其它進(jìn)程。通過這樣一個過程,可以有效避免系統(tǒng)進(jìn)入死鎖狀態(tài)。</p><p><b> .2.2基本要求</b></p><p> ?。?)從鍵盤輸入當(dāng)前系統(tǒng)的資源信息,包括當(dāng)前可用資源,每個進(jìn)程對各類資源的最大需求量,每個進(jìn)程當(dāng)前已分配的各個資源量和每個進(jìn)程尚需要的各個資源量,輸出結(jié)果顯示在DOS界面上;<
12、;/p><p> ?。?)輸入進(jìn)程請求,按照設(shè)計好的安全性算法進(jìn)行檢查,得到結(jié)果并輸出整個執(zhí)行過程的相關(guān)信息和最終結(jié)果(主要包括資源分配表和安全序列)</p><p> ?。?)要求要有各種異常的處理,程序的可控制性和可連續(xù)性執(zhí)行。包括對進(jìn)程的存在有無檢查,請求向量的不合法檢查,試分配失敗后的數(shù)據(jù)恢復(fù)和重新接受進(jìn)程請求等。 </p><p><b> 2.
13、3概要分析</b></p><p> 在避免死鎖的算法中,允許進(jìn)程動態(tài)地申請資源,系統(tǒng)在進(jìn)行資源分配之前,先計算資源分配的安全性。若此次分配不會使系統(tǒng)進(jìn)入不安全狀態(tài),便將資源分配給該進(jìn)程否則進(jìn)程等待。</p><p> 所謂安全狀態(tài)是指系統(tǒng)能按某種順序如<p1,p2,……,pn>(稱<p1,p2,……,pn>為安全序列),就這樣來為每個進(jìn)程分配資源,
14、直至最大需求。使每個進(jìn)程都可以順序地執(zhí)行完畢。若系統(tǒng)不存在這樣一個安全序列,那么系統(tǒng)此時會進(jìn)入不安全狀態(tài)。</p><p> 雖然并非所有的不安全狀態(tài)都會產(chǎn)生死鎖狀態(tài),但當(dāng)系統(tǒng)進(jìn)入不安全狀態(tài)后,便可能進(jìn)而進(jìn)入死鎖狀態(tài);反之,只要系統(tǒng)處于安全狀態(tài),系統(tǒng)便可避免進(jìn)入死鎖狀態(tài)。因此,避免死鎖的實質(zhì)在于,如何使系統(tǒng)不進(jìn)入不安全狀態(tài),銀行家算法就是用來判斷某種情況會不會進(jìn)入不安全狀態(tài)。</p><p&
15、gt;<b> 2.4數(shù)據(jù)流模型</b></p><p><b> 三、算法分析</b></p><p><b> 3.1算法思路</b></p><p> 先對用戶提出的請求進(jìn)行合法性檢查,即檢查請求是否大于需要的,是否大于可利用的。若請求合法,則進(jìn)行預(yù)分配,對分配后的狀態(tài)調(diào)用安全性算法進(jìn)
16、行檢查。若安全,則分配;若不安全,則拒絕申請,恢復(fù)到原來的狀態(tài),拒絕申請。</p><p> 3.2銀行家算法步驟</p><p> ?。?)如果Requesti<o(jì)r =Need,則轉(zhuǎn)向步驟(2);否則,認(rèn)為出錯,因為它所需要的資源數(shù)已超過它所宣布的最大值。</p><p> (2)如果Request<o(jì)r=Available,則轉(zhuǎn)向步驟(3);否則,表示系統(tǒng)
17、中尚無足夠的資源,進(jìn)程必須等待。</p><p> (3)系統(tǒng)試探把要求的資源分配給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:</p><p> Available=Available-Request[i];</p><p> Allocation=Allocation+Request;</p><p> Need=Need-Reques
18、t;</p><p> (4)系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。</p><p> 3.3安全性算法步驟</p><p><b> ?。?)設(shè)置兩個向量</b></p><p> ?、俟ぷ飨蛄縒ork。它表示系統(tǒng)可提供進(jìn)程繼續(xù)運行所需要的各類資源數(shù)目,執(zhí)行安全算法開始時,Work=Allo
19、cation;</p><p> ?、诓紶栂蛄縁inish。它表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使之運行完成,開始時先做Finish[i]=false,當(dāng)有足夠資源分配給進(jìn)程時,令Finish[i]=true。</p><p> ?。?)從進(jìn)程集合中找到一個能滿足下述條件的進(jìn)程:</p><p> ?、貴inish[i]=false</p><
20、p> ②Need<or=Work</p><p> 如找到,執(zhí)行步驟(3);否則,執(zhí)行步驟(4)。</p><p> ?。?)當(dāng)進(jìn)程P獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行:</p><p> Work=Work+Allocation;</p><p> Finish[i]=true;</
21、p><p><b> 轉(zhuǎn)向步驟(2)。</b></p><p> (4)如果所有進(jìn)程的Finish[i]=true,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。</p><p><b> 四、詳細(xì)設(shè)計</b></p><p> 4.1主要用到的數(shù)據(jù)結(jié)構(gòu)</p><p&g
22、t; (1)進(jìn)程名向量 char processnema[N]; //進(jìn)程名</p><p> (2)可利用資源向量int Available[M]; //資源清單——系統(tǒng)中現(xiàn)有各資源空閑個數(shù)。</p><p> (3)最大需求矩陣int Max[N][M]; //最大需求矩陣——每個進(jìn)程對各資源的最大需求數(shù)分配矩陣</p>&l
23、t;p> (4)已分配矩陣int Allocation[N][M];//分配矩陣——系統(tǒng)給每個進(jìn)程已分配的各類資源數(shù)</p><p> (5)需求矩陣int Need[N][M]; //需求矩陣——每個進(jìn)程還需要每種資源的個數(shù)申請各類資源數(shù)量</p><p> (6)申請向量int Request [M] //進(jìn)程申請資源的向量</p><p&g
24、t; (7)工作向量int Work[N][M]; //初始第一個向量為Available[],隨尋找安全序列時為其余每個向量賦值,可以防止安全序列未找到而丟了初始狀態(tài)的值</p><p> (8)安全序列向量int sequence[N]={0};//存放安全序列號</p><p> (9)標(biāo)志向量int Finish[N] //求安全序列時記錄每個進(jìn)程是否可以順利執(zhí)
25、行</p><p><b> 4.2程序的模塊</b></p><p> void main()//系統(tǒng)主函數(shù)</p><p> intcheck_distribution()//安全性檢查函數(shù)</p><p> intcheck_safe()//銀行家算法函數(shù)</p><p
26、> void print()//輸出函數(shù)</p><p><b> 4.3程序流程圖</b></p><p><b> 五、程序調(diào)試</b></p><p> 函數(shù)的書寫分模塊進(jìn)行,每完成一個模塊進(jìn)行調(diào)試、測試直到該函數(shù)運行無誤。</p><p> 1、進(jìn)程信息的輸入與輸出調(diào)試
27、</p><p> (1) 能正確無誤的輸入進(jìn)程名向量processnema[N],輸入系統(tǒng)現(xiàn)有各類資源數(shù)量Available[M]向量,輸入每個進(jìn)程對各類資源的最大需求數(shù)Max[N][M]矩陣,輸入系統(tǒng)給每個進(jìn)程已分配的各類資源數(shù)Allocation[N][M]矩陣。輸出程序過程如下圖所示:</p><p> (2) 在進(jìn)程信息輸入中沒有出現(xiàn)多大問題,在進(jìn)程信息輸出時,按設(shè)計要求輸出
28、的話應(yīng)該是一個表格形式,在輸出函數(shù)設(shè)計最初,由于有些部分分割或空格沒有填充好,導(dǎo)致輸出表格比較亂,沒有達(dá)到設(shè)計要求,經(jīng)過修改后輸出形式才符合了設(shè)計要求,進(jìn)程信息輸入完成后,初始狀態(tài)各進(jìn)程信息輸出如下:</p><p> 2、進(jìn)程請求資源輸入出錯提示信息處理</p><p> 在系統(tǒng)詢問是否有進(jìn)程申請資源時,如果有輸入信息出錯,系統(tǒng)會給與出錯提示,如果輸入信息正確則系統(tǒng)將繼續(xù)執(zhí)行下面操作
29、,執(zhí)行如下:</p><p> 3、判斷是否可以試分配函數(shù)intcheck_distribution(int* p,int k)</p><p> 在這個函數(shù)中主要是對申請資源的進(jìn)程申請的資源數(shù)量是否滿足約束條件Request []<=need[]或Request []<=available[],如果不滿足將打出提示信息,如果滿足,則返回1繼續(xù)執(zhí)行下面程序,執(zhí)行結(jié)果如下:&
30、lt;/p><p> 4、求安全序列函數(shù)intcheck_safe()</p><p> 如果申請資源的進(jìn)程申請的資源數(shù)目滿足試分配條件,則再用這個函數(shù)來求試分配后的安全序列,如果可以求出安全序列,則說明這次分配不會使系統(tǒng)進(jìn)入不安全狀態(tài),正式將資源分配給該進(jìn)程,修改系統(tǒng)資源信息。如果求不出安全序列,說明這次分配后系統(tǒng)會進(jìn)入不安全狀態(tài),不能給該進(jìn)程分配資源,系統(tǒng)恢復(fù)初始狀態(tài),打印出提示信息,
31、執(zhí)行結(jié)果如下:</p><p><b> 六、總結(jié)</b></p><p> 經(jīng)過幾天的操作系統(tǒng)課程設(shè)計,我學(xué)習(xí)到了很多東西。首先,這次課程設(shè)計的內(nèi)容是銀行家算法,我用的編程工具是VC++,語言使用的是C語言,目的是模擬實現(xiàn)處理機(jī)避免死鎖;其次,通過模擬實現(xiàn)算法,我更進(jìn)一步地學(xué)習(xí)了C語言,這使我的編程能力得到了提高。</p><p> 解
32、決死鎖,我們要檢測一個安全狀態(tài),雖然并非所有的不安全狀態(tài)都會產(chǎn)生死鎖狀態(tài),但系統(tǒng)進(jìn)入不安全狀態(tài)時,便可能進(jìn)而進(jìn)入死鎖狀態(tài)后,當(dāng)系統(tǒng)在進(jìn)行資源管理時,如果對進(jìn)城申請的資源分配不當(dāng),可能會使系統(tǒng)進(jìn)入死鎖狀態(tài),因而后面到來的進(jìn)程也無法順利執(zhí)行。</p><p> 銀行家算法中,要對當(dāng)前申請資源的進(jìn)程申請資源的數(shù)目進(jìn)行判斷,如果可以試分配,則試求出一個安全序列,如果可以求出,則說明給這個進(jìn)程分配資源后系統(tǒng)不會進(jìn)入不安全
33、狀態(tài),將該進(jìn)程申請的資源分配給他,若求不出安全序列,則說明將資源分配給該進(jìn)程后系統(tǒng)會進(jìn)入不安全狀態(tài),所以就使該進(jìn)程進(jìn)入阻塞狀態(tài),等待以后可以分配資源時再執(zhí)行該進(jìn)程,然后系統(tǒng)繼續(xù)服務(wù)其它進(jìn)程。通過這樣一個過程,可以有效避免系統(tǒng)進(jìn)入死鎖狀態(tài)。反之,只要系統(tǒng)處于安全狀態(tài),系統(tǒng)便可避免進(jìn)入死鎖狀態(tài)。因此,避免死鎖的實質(zhì)在于——如何使系統(tǒng)不進(jìn)入不安全狀態(tài)。很明顯這些概念在操作系統(tǒng)上是非常重要的東西,我相信這對我以后的學(xué)習(xí)也有很大的幫助。</
34、p><p><b> 附錄(源代碼)</b></p><p> #include<STRING.H></p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<C
35、ONIO.H> /*用到了getch()*/</p><p> #define M 5 /*進(jìn)程數(shù)*/</p><p> #define N 3 /*資源數(shù)*/</p><p> #define FALSE 0</p><p> #define TRUE 1</p><p> /*M個進(jìn)程對N類資源最大
36、資源需求量*/</p><p> int max[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};</p><p> /*系統(tǒng)可用資源數(shù)*/</p><p> int AVAILABLE[N]={10,5,7};</p><p> /*M個進(jìn)程已分配到的N類數(shù)量*/</p>
37、<p> int ALLOCATION[M][N]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};</p><p> /*M個進(jìn)程已經(jīng)得到N類資源的資源量*/</p><p> int NEED[M][N]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};</p><p>
38、 /*M個進(jìn)程還需要N類資源的資源量*/</p><p> int Request[N]={0,0,0};</p><p> void main()</p><p><b> {</b></p><p> int i=0,j=0;</p><p> char flag;</p>
39、;<p> voidshowdata();</p><p> voidchangdata(int);</p><p> voidrstordata(int);</p><p> intchkerr(int);</p><p> showdata();</p><p><b> ent
40、er:</b></p><p><b> {</b></p><p> printf("請輸入需申請資源的進(jìn)程號(從0到");</p><p> printf("%d",M-1);</p><p> printf("):");</p&g
41、t;<p> scanf("%d",&i);</p><p><b> }</b></p><p> if(i<0||i>=M)</p><p><b> {</b></p><p> printf("輸入的進(jìn)程號不存在,重新
42、輸入!\n");</p><p> goto enter;</p><p><b> }</b></p><p><b> err:</b></p><p><b> {</b></p><p> printf("請輸入進(jìn)程
43、");</p><p> printf("%d",i);</p><p> printf("申請的資源數(shù)\n");</p><p> printf("類別:ABC\n");</p><p> printf("");</p><
44、p> for(j=0;j<N;j++)</p><p><b> {</b></p><p> scanf("%d",&Request[j]);</p><p> if(Request[j]>NEED[i][j])</p><p><b> {</b
45、></p><p> printf("%d",i);</p><p> printf("號進(jìn)程");</p><p> printf("申請的資源數(shù)>進(jìn)程");</p><p> printf("%d",i);</p><p
46、> printf("還需要");</p><p> printf("%d",j);</p><p> printf("類資源的資源量!申請不合理,出錯!請重新選擇!\n");</p><p><b> goto err;</b></p><p>&
47、lt;b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(Request[j]>AVAILABLE[j])</p><p><b> {</b></p>&l
48、t;p> printf("進(jìn)程");</p><p> printf("%d",i);</p><p> printf("申請的資源數(shù)大于系統(tǒng)可用");</p><p> printf("%d",j);</p><p> printf("
49、類資源的資源量!申請不合理,出錯!請重新選擇!\n");</p><p><b> goto err;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&
50、gt;<p><b> }</b></p><p> changdata(i);</p><p> if(chkerr(i))</p><p><b> {</b></p><p> rstordata(i);</p><p> showdata()
51、;</p><p><b> }</b></p><p><b> else</b></p><p> showdata();</p><p> printf("\n");</p><p> printf("按'y'或&
52、#39;Y'鍵繼續(xù),否則退出\n");</p><p> flag=getch();</p><p> if(flag=='y'||flag=='Y')</p><p><b> {</b></p><p> goto enter;</p><
53、p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> exit(0);</b></p><p><b> }</b></p>
54、<p><b> }</b></p><p><b> /*顯示數(shù)組*/</b></p><p> voidshowdata()</p><p><b> {</b></p><p><b> inti,j;</b></p>
55、;<p> printf("系統(tǒng)可用資源向量:\n");</p><p> printf("***Available***\n");</p><p> printf("資源類別:ABC\n");</p><p> printf("資源數(shù)目:");</p>
56、<p> for(j=0;j<N;j++)</p><p><b> {</b></p><p> printf("%d",AVAILABLE[j]);</p><p><b> }</b></p><p> printf("\n"
57、;);</p><p> printf("\n");</p><p> printf("各進(jìn)程還需要的資源量:\n");</p><p> printf("******Need******\n");</p><p> printf("資源類別:ABC\n"
58、);</p><p> for(i=0;i<M;i++)</p><p><b> {</b></p><p> printf("");</p><p> printf("%d",i);</p><p> printf("號進(jìn)程:&
59、quot;);</p><p> for(j=0;j<N;j++)</p><p><b> {</b></p><p> printf("%d",NEED[i][j]);</p><p><b> }</b></p><p> print
60、f("\n");</p><p><b> }</b></p><p> printf("\n");</p><p> printf("各進(jìn)程已經(jīng)得到的資源量:\n");</p><p> printf("***Allocation***\n&
61、quot;);</p><p> printf("資源類別:ABC\n");</p><p> for(i=0;i<M;i++)</p><p><b> {</b></p><p> printf("");</p><p> printf(
62、"%d",i);</p><p> printf("號進(jìn)程:");</p><p> /*printf(":\n");*/</p><p> for(j=0;j<N;j++)</p><p><b> {</b></p><p&
63、gt; printf("%d",ALLOCATION[i][j]);</p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p> printf("\n"
64、;);</p><p><b> }</b></p><p> /*系統(tǒng)對進(jìn)程請求響應(yīng),資源向量改變*/</p><p> voidchangdata(int k)</p><p><b> {</b></p><p><b> int j;</b&
65、gt;</p><p> for(j=0;j<N;j++)</p><p><b> {</b></p><p> AVAILABLE[j]=AVAILABLE[j]-Request[j];</p><p> ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j];<
66、/p><p> NEED[k][j]=NEED[k][j]-Request[j];</p><p> AVAILABLE[j]=AVAILABLE[j]+ALLOCATION[k][j];</p><p><b> }</b></p><p><b> }</b></p><
67、p> /*資源向量改變*/</p><p> voidrstordata(int k)</p><p><b> {</b></p><p><b> int j;</b></p><p> for(j=0;j<N;j++)</p><p><b&
68、gt; {</b></p><p> AVAILABLE[j]=AVAILABLE[j]+Request[j];</p><p> ALLOCATION[k][j]=ALLOCATION[k][j]-Request[j];</p><p> NEED[k][j]=NEED[k][j]+Request[j];</p><p>
69、;<b> }</b></p><p><b> }</b></p><p> /*安全性檢查函數(shù)*/</p><p> intchkerr(int s)</p><p><b> {</b></p><p> int WORK,FINISH
70、[M],temp[M];</p><p> inti,j,k=0;</p><p> for(i=0;i<M;i++) FINISH[i]=FALSE;</p><p> for(j=0;j<N;j++)</p><p><b> {</b></p><p> WORK=AV
71、AILABLE[j];</p><p><b> i=s;</b></p><p> while(i<M)</p><p><b> {</b></p><p> if(FINISH[i]==FALSE&&NEED[i][j]<=WORK)</p>
72、<p><b> {</b></p><p> WORK=WORK+ALLOCATION[i][j];</p><p> FINISH[i]=TRUE;</p><p> temp[k]=i;</p><p><b> k++;</b></p><p>&
73、lt;b> i=0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> i++;</b></p><p&
74、gt;<b> }</b></p><p><b> }</b></p><p> for(i=0;i<M;i++)</p><p> if(FINISH[i]==FALSE)</p><p><b> {</b></p><p> p
75、rintf("\n");</p><p> printf("系統(tǒng)不安全!本次資源申請不成功!\n");</p><p> printf("\n");</p><p><b> return 1;</b></p><p><b> }</b
76、></p><p><b> }</b></p><p> printf("\n");</p><p> printf("經(jīng)安全性檢查,系統(tǒng)安全,本次分配成功。\n");</p><p> printf("\n");</p><
77、p> printf("本次安全序列:\n");</p><p> printf("進(jìn)程依次為");</p><p> for(i=0;i<M;i++)</p><p><b> {</b></p><p> printf("%d",temp
78、[i]);</p><p> printf("->");</p><p><b> }</b></p><p> printf("\n");</p><p><b> return 0;</b></p><p><b
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機(jī)操作系統(tǒng)課程設(shè)計---銀行家算法的設(shè)計與實現(xiàn)
- 操作系統(tǒng)課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計---銀行家算法
- 操作系統(tǒng)課程設(shè)計銀行家算法
- 操作系統(tǒng)課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計(銀行家算法)
- 操作系統(tǒng)課程設(shè)計-銀行家算法
- 操作系統(tǒng)課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計(銀行家算法設(shè)計)
- 操作系統(tǒng)課程設(shè)計--銀行家算法 (3)
- 操作系統(tǒng)課程設(shè)計---銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計--銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計---模擬銀行家算法
- 操作系統(tǒng)課程設(shè)計---銀行家算法實現(xiàn)
- 操作系統(tǒng)課程設(shè)計報告—銀行家算法
- 操作系統(tǒng)原理課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計報告—銀行家算法
- 操作系統(tǒng)課程設(shè)計---銀行家算法報告
- 操作系統(tǒng)課程設(shè)計-模擬銀行家算法-課程設(shè)計
評論
0/150
提交評論