當前位置:首頁 » 操作系統 » 死鎖銀行家演算法

死鎖銀行家演算法

發布時間: 2023-05-12 03:24:31

① 避免死鎖的一個著名演算法

避免死鎖的著名演算法是銀行家演算法。

演算法有四個條件:

1、分批向銀行貸款時,申請的總額不能超過一開始申請的額度;

2、申請貸款時不能超過銀行現有資金數目;

3、當銀行資金不能滿足顧客貸款需求時,可以推遲支付,但是肯定會讓顧客在需求時間內得到貸款;

4、顧客拿到貸款後必須在規定時間內歸還。

② 銀行家演算法

Dijkstra(1965)提出了一種能夠避免死鎖的調度演算法,稱為銀行家演算法(banker's algorithm),這是6.4.1節中給出的死鎖檢測演算法的擴展。該模型基於一個小城鎮的銀行家,他向一群客戶分別承諾了一定的貸款額度。演算法要做的是判斷對請求的滿足是否會導致進入不安全狀態。如果是,就拒絕請求;如果滿足請求後系統仍然是安全的,就予以分配。在圖6-11a中我們看到4個客戶A、B、C、D,每個客戶都被授予一定數量的貸款單位(比如1單位是1千美元),銀行家知道不可能所有客戶同時都需要最大貸款額,所以他只保留10個單位而不是22個單位的資金來為客戶服務。這里將客戶比作進程,貸款單位比作資源,銀行家比作操作系統。

③ 什麼是銀行家演算法

銀行家演算法是最有代表性的避免死鎖演算法,是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;

④ 銀行家演算法

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

例子 :某系統有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

⑤ 淺析銀行家演算法

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

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

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

(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個才能完成。

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

熱點內容
哈夫曼樹構造演算法 發布:2025-09-15 17:18:48 瀏覽:133
c語言函數要素 發布:2025-09-15 16:39:10 瀏覽:443
java讀ftp文件 發布:2025-09-15 16:15:45 瀏覽:438
sql隨機函數 發布:2025-09-15 15:20:19 瀏覽:107
校園伺服器禁止設置ip 發布:2025-09-15 15:11:06 瀏覽:783
android刷回 發布:2025-09-15 14:54:24 瀏覽:591
n後問題演算法 發布:2025-09-15 14:38:17 瀏覽:401
壓縮機絕緣 發布:2025-09-15 14:31:10 瀏覽:550
python大數據與量化 發布:2025-09-15 13:51:49 瀏覽:111
築業資料軟體加密鎖 發布:2025-09-15 13:28:41 瀏覽:530