版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 操作系統(tǒng)課程設(shè)計(jì)</b></p><p> 題目: 銀行家算法 </p><p><b> 1、概述</b></p><p><b> 一、設(shè)計(jì)目的</b></p><p> 1、了解多道程序系統(tǒng)中,
2、多個(gè)進(jìn)程并發(fā)執(zhí)行的資源分配。 </p><p> 2、掌握死鎖的產(chǎn)生的原因、產(chǎn)生死鎖的必要條件和處理死鎖的基本方法。 </p><p> 3、掌握預(yù)防死鎖的方法,系統(tǒng)安全狀態(tài)的基本概念。 </p><p> 4、掌握銀行家算法,了解資源在進(jìn)程并發(fā)執(zhí)行中的資源分配策略。 </p><p> 5、理解死鎖避免在當(dāng)前計(jì)算機(jī)系統(tǒng)不常使用的原因
3、</p><p><b> 二、開(kāi)發(fā)環(huán)境</b></p><p><b> 2、需求分析</b></p><p> 避免多道程序系統(tǒng)中程序的死鎖。</p><p><b> 一、死鎖概念:</b></p><p> 在多道程序系統(tǒng)中,雖可借助于
4、多個(gè)進(jìn)程的并發(fā)執(zhí)行,來(lái)改善系統(tǒng)的資源利用率,提高系統(tǒng)的吞吐量,但可能發(fā)生一種危險(xiǎn)━━死鎖。所謂死鎖(Deadlock),是指多個(gè)進(jìn)程在運(yùn)行中因爭(zhēng)奪資源而造成的一種僵局(Deadly_Embrace),當(dāng)進(jìn)程處于這種僵持狀態(tài)時(shí),若無(wú)外力作用,它們都將無(wú)法再向前推進(jìn)。一組進(jìn)程中,每個(gè)進(jìn)程都無(wú)限等待被該組進(jìn)程中另一進(jìn)程所占有的資源,因而永遠(yuǎn)無(wú)法得到的資源,這種現(xiàn)象稱為進(jìn)程死鎖,這一組進(jìn)程就稱為死鎖進(jìn)程。</p><p>
5、; 二、關(guān)于死鎖的一些結(jié)論: </p><p> Ø 參與死鎖的進(jìn)程最少是兩個(gè)(兩個(gè)以上進(jìn)程才會(huì)出現(xiàn)死鎖) </p><p> Ø 參與死鎖的進(jìn)程至少有兩個(gè)已經(jīng)占有資源 </p><p>
6、16; 參與死鎖的所有進(jìn)程都在等待資源 </p><p> Ø 參與死鎖的進(jìn)程是當(dāng)前系統(tǒng)中所有進(jìn)程的子集 </p><p> 注:如果死鎖發(fā)生,會(huì)浪費(fèi)大量系統(tǒng)資源,甚至導(dǎo)致系統(tǒng)崩潰。 </p><p><
7、b> 三、資源分類: </b></p><p><b> 永久性資源: </b></p><p> 可以被多個(gè)進(jìn)程多次使用(可再用資源) </p><p> l 可搶占資源 </p><p> l&
8、#160; 不可搶占資源 </p><p> 臨時(shí)性資源:只可使用一次的資源;如信號(hào)量,中斷信號(hào),同步信號(hào)等(可消耗性資源) </p><p> “申請(qǐng)--分配--使用--釋放”模式 </p><p> 四、產(chǎn)生死鎖的四個(gè)必要條件:</p><p>
9、1、互斥使用(資源獨(dú)占) </p><p> 一個(gè)資源每次只能給一個(gè)進(jìn)程使用 </p><p> 2、不可強(qiáng)占(不可剝奪) </p><p> 資源申請(qǐng)者不能強(qiáng)行的從資源占有者手中奪取資源,資源只能由占有者自愿釋放 </p><p> 3、請(qǐng)求和保持(部分分配,占有申請(qǐng)) </p><p> 一個(gè)進(jìn)程在申請(qǐng)新
10、的資源的同時(shí)保持對(duì)原有資源的占有(只有這樣才是動(dòng)態(tài)申請(qǐng),動(dòng)態(tài)分配) </p><p><b> 4、循環(huán)等待 </b></p><p> 存在一個(gè)進(jìn)程等待隊(duì)列 </p><p> {P1 , P2 , … , Pn}, </p><p> 其中P1等待P2占有的資源,P2等待P3占有的資源,…,Pn等待P1占有的
11、資源,形成一個(gè)進(jìn)程等待環(huán)路 </p><p> 5、 死鎖的解決方案 </p><p> 5.1 產(chǎn)生死鎖的例子 </p><p> 申請(qǐng)不同類型資源產(chǎn)生死鎖 </p><p><b> P1: </b></p><p><b> … </b></p>
12、<p><b> 申請(qǐng)打印機(jī) </b></p><p><b> 申請(qǐng)掃描儀 </b></p><p><b> 使用 </b></p><p><b> 釋放打印機(jī) </b></p><p><b> 釋放掃描儀 <
13、/b></p><p><b> … </b></p><p><b> P2: </b></p><p><b> … </b></p><p><b> 申請(qǐng)掃描儀 </b></p><p><b>
14、申請(qǐng)打印機(jī) </b></p><p><b> 使用 </b></p><p><b> 釋放打印機(jī) </b></p><p><b> 釋放掃描儀 </b></p><p><b> … </b></p><p&g
15、t; 申請(qǐng)同類資源產(chǎn)生死鎖(如內(nèi)存) </p><p> 設(shè)有資源R,R有m個(gè)分配單位,由n個(gè)進(jìn)程P1,P2,…,Pn(n > m)共享。假設(shè)每個(gè)進(jìn)程對(duì)R的申請(qǐng)和釋放符合下列原則: </p><p> * 一次只能申請(qǐng)一個(gè)單位 </p><p> * 滿足總申請(qǐng)后才能使用 </p><p> * 使用完后一次性釋放 </
16、p><p><b> m=2,n=3 </b></p><p> 資源分配不當(dāng)導(dǎo)致死鎖產(chǎn)生</p><p><b> 5.2死鎖預(yù)防: </b></p><p> 定義:在系統(tǒng)設(shè)計(jì)時(shí)確定資源分配算法,保證不發(fā)生死鎖。具體的做法是破壞產(chǎn)生死鎖的四個(gè)必要條件之一 </p><p&
17、gt; ?、倨茐摹安豢蓜儕Z”條件 </p><p> 在允許進(jìn)程動(dòng)態(tài)申請(qǐng)資源前提下規(guī)定,一個(gè)進(jìn)程在申請(qǐng)新的資源不能立即得到滿足而變?yōu)榈却隣顟B(tài)之前,必須釋放已占有的全部資源,若需要再重新申請(qǐng) </p><p> ?、谄茐摹罢?qǐng)求和保持”條件 </p><p> 要求每個(gè)進(jìn)程在運(yùn)行前必須一次性申請(qǐng)它所要求的所有資源,且僅當(dāng)該進(jìn)程所要資源均可滿足時(shí)才給予一次性分配 &l
18、t;/p><p> ?、燮茐摹把h(huán)等待”條件 </p><p> 采用資源有序分配法: </p><p> 把系統(tǒng)中所有資源編號(hào),進(jìn)程在申請(qǐng)資源時(shí)必須嚴(yán)格按資源編號(hào)的遞增次序進(jìn)行,否則操作系統(tǒng)不予分配。</p><p> 6.安全狀態(tài)與不安全狀態(tài) </p><p><b> 安全狀態(tài): </b>
19、;</p><p> 如果存在一個(gè)由系統(tǒng)中所有進(jìn)程構(gòu)成的安全序列P1,…Pn,則系統(tǒng)處于安全狀態(tài)。一個(gè)進(jìn)程序列{P1,…,Pn}是安全的,如果對(duì)于每一個(gè)進(jìn)程Pi(1≤i≤n),它以后尚需要的資源量不超過(guò)系統(tǒng)當(dāng)前剩余資源量與所有進(jìn)程Pj (j < i )當(dāng)前占有資源量之和,系統(tǒng)處于安全狀態(tài) (安全狀態(tài)一定是沒(méi)有死鎖發(fā)生的) </p><p> 不安全狀態(tài):不存在一個(gè)安全序列,不安全
20、狀態(tài)一定導(dǎo)致死鎖。</p><p><b> 3、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p> 一、可利用資源向量矩陣AVAILABLE。這是一個(gè)含有m個(gè)元素的數(shù)組,其中的每一個(gè)元素代表一類可利用的資源數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源的數(shù)目,其數(shù)值隨該類資源的分配和回收而動(dòng)態(tài)地改變。如果AVAILABLE [j]= K,則表示系統(tǒng)中現(xiàn)有R類資源K個(gè)<
21、/p><p> 二、最大需求矩陣MAX。這是一個(gè)n*m的矩陣,用以表示每一個(gè)進(jìn)程對(duì)m類資源的最大需求。如果MAX [i,j]=K,則表示進(jìn)程i需要R類資源的數(shù)目為K。</p><p> 三、分配矩陣ALLOCATION。這也是一個(gè)n*m的矩陣,它定義了系統(tǒng)中每一類資源當(dāng)前已分配給每一進(jìn)程的資源數(shù)。如果ALLOCATION [i,j]=K,則表示進(jìn)程i當(dāng)前已分得R類資源的數(shù)目為K。</
22、p><p> 四、需求矩陣NEED。這也是一個(gè)n*m的矩陣,用以表示每一個(gè)進(jìn)程尚需的各類資源數(shù)。如果NEED [i,j]=K,則表示進(jìn)程i還需要R類資源K個(gè),才能完成其任務(wù)。</p><p> 上述矩陣存在下述關(guān)系:</p><p> NEED [i,j]= MAX[i,j]﹣ ALLOCATION[i,j]</p><p><b&g
23、t; 4、算法的實(shí)現(xiàn)</b></p><p><b> 一、初始化</b></p><p> 由用戶輸入數(shù)據(jù),分別對(duì)可利用資源向量矩陣AVAILABLE、最大需求矩陣MAX、分配矩陣ALLOCATION、需求矩陣NEED賦值。</p><p><b> 二、銀行家算法</b></p>&l
24、t;p> 在避免死鎖的方法中,所施加的限制條件較弱,有可能獲得令人滿意的系統(tǒng)性能。在該方法中把系統(tǒng)的狀態(tài)分為安全狀態(tài)和不安全狀態(tài),只要能使系統(tǒng)始終都處于安全狀態(tài),便可以避免發(fā)生死鎖。</p><p> 銀行家算法的基本思想是分配資源之前,判斷系統(tǒng)是否是安全的;若是,才分配。它是最具有代表性的避免死鎖的算法。</p><p> 設(shè)進(jìn)程cusneed提出請(qǐng)求REQUEST [i],
25、則銀行家算法按如下規(guī)則進(jìn)行判斷。</p><p> (1)如果REQUEST [cusneed] [i]<= NEED[cusneed][i],則轉(zhuǎn)(2);否則,出錯(cuò)。</p><p> (2)如果REQUEST [cusneed] [i]<= AVAILABLE[cusneed][i],則轉(zhuǎn)(3);否則,出錯(cuò)。</p><p> (3)系統(tǒng)試探分
26、配資源,修改相關(guān)數(shù)據(jù):</p><p> AVAILABLE[i]-=REQUEST[cusneed][i];</p><p> ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];</p><p> NEED[cusneed][i]-=REQUEST[cusneed][i];</p><p> (
27、4)系統(tǒng)執(zhí)行安全性檢查,如安全,則分配成立;否則試探險(xiǎn)性分配作廢,系統(tǒng)恢復(fù)原狀,進(jìn)程等待。</p><p><b> 三、安全性檢查算法</b></p><p> (1)設(shè)置兩個(gè)工作向量Work=AVAILABLE;FINISH</p><p> (2)從進(jìn)程集合中找到一個(gè)滿足下述條件的進(jìn)程,</p><p>
28、FINISH==false;</p><p> NEED<=Work;</p><p> 如找到,執(zhí)行(3);否則,執(zhí)行(4)</p><p> (3)設(shè)進(jìn)程獲得資源,可順利執(zhí)行,直至完成,從而釋放資源。</p><p> Work+=ALLOCATION;</p><p> Finish=true;&
29、lt;/p><p><b> GOTO 2</b></p><p> (4)如所有的進(jìn)程Finish= true,則表示安全;否則系統(tǒng)不安全。</p><p><b> 四、各算法流程圖 </b></p><p><b> 初始化算法流程圖:</b></p>
30、<p><b> 銀行家算法流程圖:</b></p><p><b> 安全性算法流程圖:</b></p><p><b> 四、源程序清單</b></p><p> Option Explicit</p><p> Dim i, j, x As Integ
31、er</p><p> Dim flag As Integer</p><p> Dim Max(5, 3) As Integer</p><p> Dim Allocation(5, 3) As Integer</p><p> Dim Need(5, 3) As Integer</p><p> Dim
32、Available(3) As Integer</p><p> Dim buttonpress As Integer</p><p> Sub cmdclick()</p><p> Dim rqz(3) As Integer</p><p> Dim bb(3) As Boolean</p><p> D
33、im cc(3) As Boolean</p><p> Dim ok1, ok2 As Boolean</p><p> Call duchu</p><p> For i = 0 To 2</p><p> rqz(i) = Val(InputBox("請(qǐng)輸入P" & buttonpress &
34、 "的請(qǐng)求資源:"))</p><p><b> Next</b></p><p> For i = 0 To 2</p><p> If rqz(i) <= Need(buttonpress, i) Then</p><p> bb(i) = True</p><p
35、><b> Else</b></p><p> bb(i) = False</p><p><b> End If</b></p><p> If bb(0) And bb(1) And bb(2) = True Then</p><p> ok1 = True</p>
36、<p> GoTo step1</p><p><b> GoTo quit</b></p><p><b> Else</b></p><p> ok1 = False</p><p><b> End If</b></p><p&g
37、t;<b> Next</b></p><p> If ok1 = False Then</p><p> MsgBox ("請(qǐng)求資源數(shù)超過(guò)需求最大值!"), , "提示信息"</p><p><b> GoTo quit</b></p><p>&l
38、t;b> End If</b></p><p><b> step1:</b></p><p> For i = 0 To 2</p><p> If rqz(i) <= Available(i) Then</p><p> cc(i) = True</p><p&g
39、t;<b> Else</b></p><p> cc(i) = False</p><p><b> End If</b></p><p> If cc(0) And cc(1) And cc(2) = True Then</p><p> ok2 = True</p>&
40、lt;p> GoTo step2</p><p><b> GoTo quit</b></p><p><b> Else</b></p><p> ok2 = False</p><p><b> End If</b></p><p>
41、<b> Next</b></p><p> If ok2 = False Then</p><p> MsgBox ("尚無(wú)足夠資源,P0須等待!"), , "提示信息"</p><p><b> GoTo quit</b></p><p><
42、b> End If</b></p><p><b> step2:</b></p><p> For i = 0 To 2</p><p> Available(i) = Available(i) - rqz(i)</p><p> Allocation(buttonpress, i) = A
43、llocation(buttonpress, i) + rqz(i)</p><p> Need(buttonpress, i) = Need(buttonpress, i) - rqz(i)</p><p><b> Next</b></p><p> Call xieru</p><p> Call Comm
44、and6_Click</p><p> If flag = 0 Then</p><p> For i = 0 To 2</p><p> Available(i) = Available(i) + rqz(i)</p><p> Allocation(buttonpress, i) = Allocation(buttonpress,
45、 i) - rqz(i)</p><p> Need(buttonpress, i) = Need(buttonpress, i) + rqz(i)</p><p><b> Next</b></p><p> Call xieru</p><p><b> GoTo quit</b><
46、;/p><p><b> Else</b></p><p> MsgBox ("資源表分配更改成功!"), , "提示信息"</p><p><b> GoTo quit</b></p><p><b> End If</b><
47、/p><p><b> quit:</b></p><p> Form1.Show</p><p><b> End Sub</b></p><p> Private Sub Command1_Click()</p><p> buttonpress = 0</p
48、><p> Call cmdclick</p><p><b> End Sub</b></p><p> Private Sub Command2_Click()</p><p> buttonpress = 1</p><p> Call cmdclick</p><
49、p><b> End Sub</b></p><p> Private Sub Command3_Click()</p><p> buttonpress = 2</p><p> Call cmdclick</p><p><b> End Sub</b></p>&
50、lt;p> Private Sub Command4_Click()</p><p> buttonpress = 3</p><p> Call cmdclick</p><p><b> End Sub</b></p><p> Private Sub Command5_Click()</p&g
51、t;<p> buttonpress = 4</p><p> Call cmdclick</p><p><b> End Sub</b></p><p> Private Sub Command6_Click()</p><p> Dim a, b, c, d As Variant</p
52、><p> Dim Max(5, 3) As Integer</p><p> Dim m, n, e As Integer</p><p> Dim work(3) As Integer</p><p> Dim aa(5) As Integer</p><p> Dim Finish(5) As Boolea
53、n</p><p> Dim pd(5, 3) As Boolean</p><p> Dim canbefound As Boolean</p><p><b> e = -1</b></p><p> For i = 0 To 2</p><p> Available(i) = Te
54、xt16(i).Text</p><p> work(i) = Available(i)</p><p><b> Next</b></p><p> For i = 0 To 4</p><p> For j = 0 To 2</p><p> Max(0, j) = Text1(j)
55、.Text</p><p> Max(1, j) = Text2(j).Text</p><p> Max(2, j) = Text3(j).Text</p><p> Max(3, j) = Text4(j).Text</p><p> Max(4, j) = Text5(j).Text</p><p>
56、Allocation(0, j) = Text6(j).Text</p><p> Allocation(1, j) = Text7(j).Text</p><p> Allocation(2, j) = Text8(j).Text</p><p> Allocation(3, j) = Text9(j).Text</p><p>
57、Allocation(4, j) = Text10(j).Text</p><p> Need(0, j) = Text11(j).Text</p><p> Need(1, j) = Text12(j).Text</p><p> Need(2, j) = Text13(j).Text</p><p> Need(3, j) = T
58、ext14(j).Text</p><p> Need(4, j) = Text15(j).Text</p><p><b> Next</b></p><p><b> Next</b></p><p> '判斷是否處于安全狀態(tài)</p><p><b&
59、gt; step1:</b></p><p><b> m = m + 1</b></p><p> For i = 0 To 4</p><p> For j = 0 To 2</p><p> If Need(i, j) <= work(j) And Finish(i) = False T
60、hen</p><p> pd(i, j) = True</p><p><b> Else</b></p><p> pd(i, j) = False</p><p><b> End If</b></p><p> If pd(i, 0) And pd(i, 1
61、) And pd(i, 2) = True Then</p><p> canbefound = True</p><p><b> n = i</b></p><p><b> e = e + 1</b></p><p><b> aa(e) = n</b></
62、p><p> GoTo step2</p><p><b> End If</b></p><p><b> Next</b></p><p><b> Next</b></p><p> If canbefound = False Then<
63、;/p><p> MsgBox ("系統(tǒng)處于不安全狀態(tài)!"), , "提示信息"</p><p><b> flag = 0</b></p><p><b> GoTo quit</b></p><p><b> Else</b>&l
64、t;/p><p> GoTo step3</p><p><b> End If</b></p><p><b> step2:</b></p><p> For i = 0 To 2</p><p> work(i) = work(i) + Allocation(n,
65、 i)</p><p> Finish(n) = True</p><p><b> Next</b></p><p> If m <= 4 Then</p><p> GoTo step1</p><p><b> Else</b></p>&
66、lt;p> GoTo step3</p><p><b> End If</b></p><p><b> step3:</b></p><p> MsgBox ("系統(tǒng)安全,安全序列為:" & "P" & aa(0) & " &quo
67、t; & "P" & aa(1) & " " & "P" & aa(2) & " " & "P" & aa(3) & " " & "P" & aa(4)), , "提示信息"</p>
68、;<p><b> flag = 1</b></p><p><b> GoTo quit</b></p><p><b> quit:</b></p><p> Form1.Show</p><p><b> End Sub</b>
69、;</p><p> Private Sub duchu()</p><p> For i = 0 To 2</p><p> Available(i) = Text16(i).Text</p><p><b> Next</b></p><p> For i = 0 To 4</
70、p><p> For j = 0 To 2</p><p> Allocation(0, j) = Text6(j).Text</p><p> Allocation(1, j) = Text7(j).Text</p><p> Allocation(2, j) = Text8(j).Text</p><p>
71、Allocation(3, j) = Text9(j).Text</p><p> Allocation(4, j) = Text10(j).Text</p><p> Need(0, j) = Text11(j).Text</p><p> Need(1, j) = Text12(j).Text</p><p> Need(2, j
72、) = Text13(j).Text</p><p> Need(3, j) = Text14(j).Text</p><p> Need(4, j) = Text15(j).Text</p><p><b> Next</b></p><p><b> Next</b></p>
73、<p><b> End Sub</b></p><p> Private Sub xieru()</p><p> For i = 0 To 2</p><p> Text16(i).Text = Available(i)</p><p><b> Next</b><
74、/p><p> For i = 0 To 4</p><p> For j = 0 To 2</p><p> Text6(j).Text = Allocation(0, j)</p><p> Text7(j).Text = Allocation(1, j)</p><p> Text8(j).Text = A
75、llocation(2, j)</p><p> Text9(j).Text = Allocation(3, j)</p><p> Text10(j).Text = Allocation(4, j)</p><p> Text11(j).Text = Need(0, j)</p><p> Text12(j).Text = Need
76、(1, j)</p><p> Text13(j).Text = Need(2, j)</p><p> Text14(j).Text = Need(3, j)</p><p> Text15(j).Text = Need(4, j)</p><p><b> Next</b></p><p&
77、gt;<b> Print</b></p><p><b> x = x + 2</b></p><p><b> Next</b></p><p><b> End Sub</b></p><p> Private Sub Command7_C
78、lick()</p><p><b> End</b></p><p><b> End Sub</b></p><p><b> '初始化資源分配表</b></p><p> Private Sub Form_Load()</p><p&g
79、t; Dim a, b, c, d As Variant</p><p> a = Array(7, 5, 3, 3, 2, 2, 9, 0, 2, 2, 2, 2, 4, 3, 3)</p><p> b = Array(0, 1, 0, 2, 0, 0, 3, 0, 2, 2, 1, 1, 0, 0, 2)</p><p> c = Array(7, 4
80、, 3, 1, 2, 2, 6, 0, 0, 0, 1, 1, 4, 3, 1)</p><p> d = Array(3, 3, 2)</p><p><b> x = 0</b></p><p> For i = 0 To 2</p><p> Available(i) = d(i)</p>&
81、lt;p> Text16(i).Text = Available(i)</p><p><b> Next</b></p><p> For i = 0 To 4</p><p> For j = 0 To 2</p><p> Max(i, j) = a(i + j + x)</p>&l
82、t;p> Text1(j).Text = Max(0, j)</p><p> Text2(j).Text = Max(1, j)</p><p> Text3(j).Text = Max(2, j)</p><p> Text4(j).Text = Max(3, j)</p><p> Text5(j).Text = Max
83、(4, j)</p><p> Allocation(i, j) = b(i + j + x)</p><p> Text6(j).Text = Allocation(0, j)</p><p> Text7(j).Text = Allocation(1, j)</p><p> Text8(j).Text = Allocation(
84、2, j)</p><p> Text9(j).Text = Allocation(3, j)</p><p> Text10(j).Text = Allocation(4, j)</p><p> Need(i, j) = c(i + j + x)</p><p> Text11(j).Text = Need(0, j)</p
85、><p> Text12(j).Text = Need(1, j)</p><p> Text13(j).Text = Need(2, j)</p><p> Text14(j).Text = Need(3, j)</p><p> Text15(j).Text = Need(4, j)</p><p><b
86、> Next</b></p><p><b> Print</b></p><p><b> x = x + 2</b></p><p><b> Next</b></p><p><b> End Sub</b></p&
87、gt;<p><b> 5、結(jié)束語(yǔ)</b></p><p> 心得與體會(huì): 操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)中必不可少的系統(tǒng)軟件。它是計(jì)算機(jī)系統(tǒng)中各種資源的管理者和各種活動(dòng)的組織者、指揮者。銀行家算法是為了使系統(tǒng)保持安全狀態(tài)。我們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請(qǐng)求分配資源相當(dāng)于用戶向銀行家貸款。操作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配
88、資源,當(dāng)進(jìn)程首次申請(qǐng)資源時(shí),要測(cè)試該進(jìn)程對(duì)資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當(dāng)前的申請(qǐng)量分配資源,否則就推遲分配。當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請(qǐng)資源時(shí),先測(cè)試該進(jìn)程已占用的資源數(shù)與本次申請(qǐng)的資源數(shù)之和是否超過(guò)了該進(jìn)程對(duì)資源的最大需求量。若超過(guò)則拒絕分配資源,若沒(méi)有超過(guò)則再測(cè)試系統(tǒng)現(xiàn)存的資源能否滿足該進(jìn)程尚需的最大資源量,若能滿足則按當(dāng)前的申請(qǐng)量分配資源,否則也要推遲分配。 </p><p>
89、 銀行家算法能保證系統(tǒng)時(shí)時(shí)刻刻都處于安全狀態(tài),但它要不斷檢測(cè)每個(gè)進(jìn)程對(duì)各類資源的占用和申請(qǐng)情況,需花費(fèi)較多的時(shí)間。</p><p> 經(jīng)過(guò)這次設(shè)計(jì),讓我基明白了銀行家算法的基本原理,加深了對(duì)課堂上知識(shí)的理解,也懂得了如何讓銀行家算法實(shí)現(xiàn)。</p><p><b> 實(shí)例:</b></p><p> (1)下列狀態(tài)是否安全?(三個(gè)進(jìn)程共享1
90、2個(gè)同類資源)</p><p> 進(jìn)程已分配資源數(shù)最大需求數(shù)</p><p> 114 (狀態(tài)a)</p><p><b> 244</b></p><p><b> 358</b></p><p> 114 (狀
91、態(tài)b)</p><p><b> 246</b></p><p><b> 368</b></p><p> 狀態(tài)a安全,序列為:2-->1--> 3</p><p> 狀態(tài)b不安全,只剩1個(gè)可用資源,收不回已分配資源。</p><p> ?。?)
92、考慮下列系統(tǒng)狀態(tài)</p><p> 分配矩陣最大需求矩陣可用資源矩陣</p><p> 0 0 1 2 0 0 1 21 5 2 0</p><p> 1 0 0 01 7 5 0</p><p> 1 3 5 42 3 5 6</p><p> 0
93、6 3 20 6 5 2</p><p> 0 0 1 40 6 5 6</p><p> 問(wèn)系統(tǒng)是否安全?若安全就給出所有的安全序列。若進(jìn)程2請(qǐng)求(0420),可否立即分配?</p><p> 答:安全。安全序列為:1-->3-->2-->5-->4。</p><p> 若進(jìn)程2請(qǐng)求
94、(0420),可立即分配。分配后可用資源為1 1 0 0,回收1進(jìn)程資源,</p><p> 可用資源數(shù)為:1 1 1 2,然后執(zhí)行3-->2-->5-->4序列。</p><p><b> 6、參考文獻(xiàn)</b></p><p> 1、湯子嬴 編:《計(jì)算機(jī)操作系統(tǒng)》,西安電子科技大學(xué)出版社</p><
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)----模擬銀行家算法避免死鎖
- 課程設(shè)計(jì)--銀行家算法
- 課程設(shè)計(jì)--銀行家算法
- 銀行家算法—課程設(shè)計(jì)
- 銀行家算法-課程設(shè)計(jì)
- 銀行家算法課程設(shè)計(jì)
- 銀行家算法課程設(shè)計(jì)
- 畢業(yè)論文--銀行家算法避免死鎖的研究與實(shí)現(xiàn)
- 銀行家算法課程設(shè)計(jì)報(bào)告
- 銀行家算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法
- 銀行家算法課程設(shè)計(jì)2
- 操作系統(tǒng)課程設(shè)計(jì)銀行家算法
- 操作系統(tǒng)之銀行家算法檢測(cè)死鎖
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)(銀行家算法)
- 操作系統(tǒng)課程設(shè)計(jì)-銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
評(píng)論
0/150
提交評(píng)論