2014-01-30 56 views
0

我在明天早上的OS課程中進行了最終測試,並且遇到了問題。假設我們的系統中有4個進程:P1,P2,P3,P4和4個不同的資源:R1,R2,R3,R4。 圖片中顯示的系統當前狀態。針對給定系統狀態的銀行家算法解決方案

enter image description here

的問題是 - 「是系統死鎖或不呢?」我解決了一些類似的問題,所以我認爲系統處於死鎖狀態,因爲沒有足夠的可用資源(例如P4請求2個R3實例,但在可用列表中只存在R3的1個資源)。

我有點困惑,因爲我的醫生的回答是:系統未處於僵局,並在此順序處理運行:P4-> P3-> P1-> P2

哪種解決方案是正確的?

謝謝。

回答

1

你的導師是正確的。特別地,P4已經具有(1 0 1 1),並且因此僅需要(0 0 1 0),這可以容易地被可用資源滿足。 P4服務完資源後,它完成並釋放它正在使用的所有內容(包括其當前分配)。操作系統然後可以將這些資源發送到其餘進程(按正確的順序),因此不會發生死鎖。

+0

TNX。現在,按照你的邏輯,可能是命令P3-> P4-> P1-> P2也是對的?我的意思是,2222-1211 = 1011,我可以從可用的...? –

+0

是的,這是正確的順序! –

0

根據此處的說明,P4-> P3-> P2-> P1不能工作,因爲P2將使R1爲0,並且這可能導致P2的死鎖進入循環或長時間不可用P1所有的時間等於R1爲零。 ?

由於P3和P4完成後,Avail Matrix變爲3334,這足以滿足P2的需求嗎?

0

安全序列P3,P4,P1,P2
P1假
P2假
P3真正的總5555 - 執行1
P4真正的總6566 - 執行第二
環路續
P1真共7678 - 執行3
P2真正的總9788 - 執行第四

安全序列(P3,P4,P1,P2)