導航:首頁 > 源碼編譯 > 銀行家演算法怎麼可視化

銀行家演算法怎麼可視化

發布時間:2023-05-21 21:32:48

1. 銀行家演算法安全序列怎麼判斷

先說一下銀行家的演算法:
設進程cusneed提出請求REQUEST [i],則銀行家演算法按如下規則進行判斷。
(1)如果REQUEST [cusneed] [i]<= NEED[cusneed][i],則轉(2);否則,出錯。
(2)如果REQUEST [cusneed] [i]<= AVAILABLE[i],則轉(3);否則,等待。
(3)系統試探分配資源,修改相關數據:
AVAILABLE[i]-=REQUEST[cusneed][i];
ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];
NEED[cusneed][i]-=REQUEST[cusneed][i];
(4)系統執行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統恢復原狀,進程等待。
=================================================
題目中的計算過程:
先算出每個進程還需要多少進程才能滿足,即Request的值 = Need - Allocation
進程名 Allocation Need Request Available
ABC ABC ABC ABC
P1 4 0 5 4 0 11 0 0 6 2 3 3
P2 4 0 2 5 3 6 1 2 4
P3 2 1 4 4 2 5 2 1 1
P4 2 1 2 5 5 9 3 4 7
P5 3 1 3 4 2 4 1 1 1
第一題A項p3 p1 p4 p2 p5
先分配給P3,其Request(2,1,1) < available(2,2,3) 滿足,分配資源等待P3完成,P3進程完成之後,Available = (2,1,4) + (2,3,3) = (4,4,7)
然後分配給p1,其Request(0,0,6) < available(4,4,7),可以滿足資源,分配資源給P1,P1完成任務釋放資源Available = (4,0,5) +(4,4,7) = (8,4,12)
接著P4,request(3 4 7) < available(8,4,12),可以滿足資源,分配資源給P4,P4完成任務釋放資源Available = (2,1,2) +(8,4,12) = (10,5,14)
接著p2,request(1 2 4) < available(10,5,14)可以滿足資源,分配資源給P4,P4完成任務釋放資源Available = (4,0,2)+ (10,5,14) = (14,5,16)
最後P5,request(1 1 1) < available(14,5,16)可以滿足資源,分配資源給P4,P4完成任務,資源全部釋放,變為(3 1 3 )+ (14,5,16) = (17,6,19)
所以A是安全序列。
同理分析B p1 p3 p5 p2 p4,先分配給P1的話Request(0,0,6) > available(2,3,3),C資源不滿足,所以該序列不安全。
分析C項p4 p2 p3 p5 p1,先分配給p4, Request(3,4,7) > available(2,3,3),ABC資源都不滿足,該序列不安全。
分析D項p2 p3 p1 p4 p5,先分配給P2,Request(1,2,4) > available(2,3,3),C資源不滿足,所以該序列不安全。

第二題,分析方法跟上面的一樣,只是比較費時。如果單選的話,看一下答案,D項,先分配給P4,顯然完成P4還需( 3 4 7) ,其大於 available,所D項不安全。

2. 淺析銀行家演算法

作為避免死鎖的一種演算法,銀行家演算法可以說是最為出名的了。這個名字的來源是因為該演算法起初是為銀行系統設計的,以確保銀行在發放現金貸款時,不會發生不能滿足所有客戶需要的情況。在操作系統中也可以用它來實現避免死鎖。

首先我們要了解銀行家演算法的本質也即避免死鎖的原理。避免死鎖作為一種事先預防死鎖的策略,原理是在為各個進程分配資源的過程中不允許系統進去不安全狀態,以此來避免死鎖的發生。所謂安全狀態,是指系統能按某種進程推進順序為每個進程分配其所需資源,直至滿足每個進程對資源的最大需求,使每個進程都可以順利地完成。此時稱該進程推進序列為安全序列,如果無法找到這樣一個安全序列,則稱系統處於不安全狀態。

銀行家演算法中的數據結構。為了實現銀行家演算法,在系統中必須設置這樣四個數據結構,分別用來描述系統中可利用的資源,所有進程對資源的最大需求,系統中的資源分配以及所有進程還需要多少資源的情況。

(1)可利用資源向量Available。這是一個含有m個元表的數組,其中的每一個元素代表一類可利用的資源數目。其數值隨該類資源的分配和回收而動態地改變。如果 Available=K,則表示系統中現有Rj類資源K個。

    (2)最大需求矩陣Max。這是一個nxm的矩陣,它定義了系統中n個進程中的每個進程對m類資源的最大需求。如果Max[i,j]=K,則表示進程i需要Rj類資源的最大數目為K。

    (3)分配矩陣 Allocation。這也是一個nxm的矩陣,它定義了系統中每一類資源當前已分配給每一進程的資源數。如果Allocation[i,j]=K,表示進程i當前已分得Rj類資源的數目為K。

    (4)需求矩陣Need。這也是一個nxm的矩陣,用以表示每一個進程尚需的各類資源數。如果Need[i,j]=K,則表示進程i還需要Rj類資源K個才能完成。

當一個進程發出請求資源的請求後,如果它所請求的資源大於目前系統可利用資源則不予分配。如果小於可利用資源,則系統試探著把資源分配給該進程,並修改分配之後的資源數值。接著系統執行安全演算法,檢查此次資源分配後系統是否處於安全狀態。若安全,才正式將資源分配給該進程,以完成本次分配。否則,將本次的試探分配作廢,恢復原來的資源分配狀態,讓該進程等待。

3. 「銀行家演算法」是怎樣的一個演算法

銀行家演算法=-- -

1. 安全狀態: 在某時刻系統中所有進程可以排列一個安全序列:{P1,P2,`````Pn},剛稱此時,系統是安全的.
所謂安全序列{P1,P2,`````Pn}是指對於P2,都有它所需要剩餘資源數量不大於系統掌握的剩餘的空間資源與所有Pi(j<i)所佔的資源之和.
2.不安全狀態可能產生死鎖.
目前狀態 最大需求 尚需
P1 3 9 6
P2 5 10 5
P3 2 4 2

在每一次進程中申請的資源,判定一下,若實際分配的話,之後系統是否安全.
3.銀行家演算法的思路:
1),進程一開始向系統提出最大需求量.
2),進程每次提出新的需求(分期貸款)都統計是否超出它事先提出的最大需求量.
3),若正常,則判斷該進程所需剩餘剩餘量(包括本次申請)是否超出系統所掌握的
剩餘資源量,若不超出,則分配,否則等待.
4.銀行家演算法的數據結構.
1),系統剩餘資源量A[n],其中A[n]表示第I類資源剩餘量.
2),各進程最大需求量,B[m][n],其中B[j][i]表示進程j對i
類資源最大需求.
3),已分配資源量C[m][n],其中C[j][i]表示系統j程已得到的第i資源的數量.
4),剩餘需求量.D[m][n],其中D[j][i]對第i資源尚需的數目.
5.銀行家演算法流程:當某時刻,某進程時,提出新的資源申請,系統作以下操作:
1),判定E[n]是否大於D[j][n],若大於,表示出錯.
2),判定E[n]是否大於系統剩餘量A[n],若大於,則該進程等待.
3),若以上兩步沒有問題,嘗試分配,即各變數作調整.
4),按照安全性推測演算法,判斷,分配過後,系統是否安全,若安全,則實際分配,否則,撤消分配,讓進程等待.
6."安全性檢測"演算法
1),先定義兩個變數,用來表示推算過程的數據.
F[n]=A[n],表示推算過程中,系統中剩餘資源量的變化.
J[n]=False表示推算過程中各進程是否假設"已完成"
2),流程:
在"剩餘"的進程中(在推算)過程中,一些進程假設已完成,查找D[j][n]<=F[n]的進程,找到後令J[j]=True
(假設該進程完成),F[n]+D[j][n](該進程所佔資源釋放),如此循環執行.
若最後,所有的F[n]=True(在推算過程中,所有進程均可以完成),則表示(分配過後)系統是安全的,否則系統是不安全的.
參考資料:http://huangqiyu.blogchina.com/419807.html

4. 什麼是銀行家演算法

銀行家演算法是最有代表性的避免死鎖演算法,是Dijkstra提出的銀行家演算法。這是由於該演算法能用於銀行系統現金貸款的發放而得名。
銀行家可以把一定數量的資金供多個用戶周轉使用,為保證資金的安全,銀行家規定:
(1)當一個用戶對資金的最大需求量不超過很行家現有的資金時可接納該用戶.
(2)用戶可以分期貸款,但貸款的總數不能超過最大需求量;
(3)當銀行家現有的資金不能滿足用戶的尚需總數時,對用戶的貸款可推遲支付,但總能使用戶在有限的時間里得到貸款;
(4)當用戶得到所需的全部資金後,一定能在有限的時間里歸還所有資金

銀行家演算法是通過動態地檢測系統中資源分配情況和進程對資源的需求情況來決定如何分配資源的,在能確保系統處於安全狀態時才能把資源分配給申請者,從而避免系統發生死鎖。
要記住的一些變數的名稱
1 Available(可利用資源總數)
某類可利用的資源數目,其初值是系統中所配置的該類全部可用資源數目。
2 Max:某個進程對某類資源的最大需求數
3 Allocation: 某類資源已分配給某進程的資源數。
4 Need:某個進程還需要的各類資源數。
Need= Max-Allocation

系統把進程請求的資源(Request)分配給它以後要修改的變數
Available:=Available-Request;
Allocation:=Allocation+Request;
Need:= Need- Request;

5. 銀行家演算法

銀行家演算法是一種預防死鎖的演算法。具體演算法步驟可以參考網路: 銀行家演算法

例子 :某系統有A、B、C、D , 4類資源共5個進程(P0、P1、P2、P3、P4)共享,各進程對資源的需求和分配情況如下表所示。

輸入進程的數目:5
輸入資源的種類:4
輸入每個進程最多所需的各類資源數:
P0 : 0 0 1 2
P1 : 1 7 5 0
P2 : 2 3 5 6
P3 : 0 6 5 2
P4 : 0 6 5 6
輸入每個進程已經分配的各類資源數:
P0 : 0 0 1 2
P1 : 1 0 0 0
P2 : 1 3 5 4
P3 : 0 6 3 2
P4 : 0 0 1 4
請輸入各個資源現有的數目:
1 5 2 0
當前系統安全!
系統安全序列是:
P0->P2->P1->P3->P4
輸入要申請資源的進程號(0-4):1
輸入進程所請求的各資源的數量:0 4 2 0
系統安全!
系統安全序列是:
P0->P2->P1->P3->P4
同意分配請求!

系統可用的資源數為 : 1 1 0 0
各進程還需要的資源量:
進程 P0 : 0 0 0 0
進程 P1 : 0 3 3 0
進程 P2 : 1 0 0 2
進程 P3 : 0 0 2 0
進程 P4 : 0 6 4 2

各進程已經得到的資源量:
進程 P0 : 0 0 1 2
進程 P1 : 1 4 2 0
進程 P2 : 1 3 5 4
進程 P3 : 0 6 3 2
進程 P4 : 0 0 1 4

是否再次請求分配?是請按Y/y,否請按N/n:
N

閱讀全文

與銀行家演算法怎麼可視化相關的資料

熱點內容
水冷空調有壓縮機嗎 瀏覽:478
訪問日本伺服器可以做什麼 瀏覽:430
bytejava詳解 瀏覽:446
androidjava7 瀏覽:384
伺服器在山洞裡為什麼還有油 瀏覽:885
天天基金app在哪裡下載 瀏覽:972
伺服器軟路由怎麼做 瀏覽:289
冰箱壓縮機出口 瀏覽:225
OPT最佳頁面置換演算法 瀏覽:642
網盤忘記解壓碼怎麼辦 瀏覽:852
文件加密看不到裡面的內容 瀏覽:651
程序員腦子里都想什麼 瀏覽:431
oppp手機信任app在哪裡設置 瀏覽:185
java地址重定向 瀏覽:270
一年級下冊摘蘋果的演算法是怎樣的 瀏覽:448
程序員出軌電視劇 瀏覽:90
伺服器系統地址怎麼查 瀏覽:56
解壓游戲發行官 瀏覽:603
國外小伙解壓實驗 瀏覽:338
頂級大學開設加密貨幣 瀏覽:439