2009-11-14 85 views
2

請問有人請提供一個使用銀行家算法解決以下問題的逐步方法?我如何確定是否存在「安全狀態」?當一個流程可以「運行到完成」時,意味着什麼?Dijkstra的銀行家算法

在這個例子中,我有四個進程和10個相同資源的實例。

  Resources Allocated | Resources Needed 
Process A     1     6 
Process B     1     5 
Process C     2     4 
Process D     4     7 
+0

這個功課?如果是這樣,請添加作業標籤 –

回答

2

Wikipedia每,

甲狀態(如在上面的例子中)被認爲是安全的,如果可能的是所有過程完成執行(終止)。由於系統無法知道進程何時終止,或者到那時它將請求多少資源,因此係統假定所有進程最終將嘗試獲取其規定的最大資源並在不久之後終止。在大多數情況下這是一個合理的假設,因爲系統並不特別關心每個進程運行多長時間(至少不是從避免死鎖的角度來看)。另外,如果一個進程在沒有獲取最大資源的情況下終止,它只會使系統更容易。

當它需要的每種資源的數量都可用時,進程可以運行到完成,在它自己和系統之間。如果一個進程需要8個單位的給定資源,並且已經分配了5個單元,那麼如果至少有3個單元可用,它可以運行到完成。

以您的示例爲例,系統正在管理單個資源,其中有10個單元可用。正在運行的進程已經分配了8個(1 + 1 + 2 + 4)個單元,所以剩下2個單元。任何過程需要完成的數量是其已經分配的最大數量,所以在開始時,A需要5個(6-1),B需要4個(5-1),C需要2個(4- 2),而D需要3個(7-4)。有2個可用,因此進程C允許運行完成,從而釋放2個單元(剩下4個可用)。此時,B或D可以運行(我們將假設D)。一旦D完成,將有8個單位可供使用,之後可以運行A或B(我們將假設A)。一旦A完成,將會有9個單元可用,然後B可以運行,這將剩下所有10個單元用於進一步的工作。由於我們可以選擇一個允許所有進程運行的進程順序,因此該狀態被認爲是「安全的」。

+0

Thanks Craig。當你這樣分解時,這是非常簡單的!我責備我對時間的理解不夠:) – Blair

1
Resources Allocated | Resources Needed claim 
    Process A  1     6   5 
    Process B  1     5   4 
    Process C  2     4   2 
    Process D  4     7   3 

分配資源共計爲8個 因此2資源尚未整理浮雕之後的精加工救治4個資源可以給處理B,方法B之後被分配,因此被分配給處理C.和處理c 5資源分配給PROCESS A第n個進程A完成後分配2個資源進行處理D