系統(tǒng)避免死鎖的銀行家算法課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論