1. 程式人生 > >11.避免死鎖之銀行家算法

11.避免死鎖之銀行家算法

貸款 com 就是 資金 得到 利潤 log 完成 style

銀行家算法,顧名思義,是仿照銀行發放貸款采取的控制方式而設計的一種死鎖避免算法.

技術分享圖片

該算法的策略是實現動態避免死鎖.要明白此算法,就要明白銀行的貸款策略.

  銀行的目的是讓利潤最大化,風險最低,為了控制風險,在放貸之前,要先審核客戶的信用額度.客戶對資金的使用是按階段的,並不是一定第一次就得到全部貸款,以後隨著需要再次申請.為了簡單起見:只要客戶的信用額度不超過銀行的全部流動財產,即予以批準.

  在客戶均守信的情況下,銀行唯一的風險就是無法滿足所有客戶的信用額度,從而無法收回貸款,這裏無法收回貸款是因為客戶資金不夠,無法完成任務並返還貸款造成的.

第一種策略:

技術分享圖片

但是這樣真的沒有風險嗎?萬一出現這種情況怎麽辦?

技術分享圖片

  總結來說,銀行家算法是一個動態避免死鎖算法,通過對資源的仔細分配以避免死鎖.其特點是可以超額批準客戶的信用額度,即所有客戶的信用額度之和可以超過銀行的全部資本,這就是杠桿.

  動態避免的缺陷就是需要知道你將來需要什麽,而由於我們沒有什麽有效的辦法計算出一個線程所需要的資源額度,因此在實際的操作中沒有采用這種動態避免方法.但是銀行家卻有這種能力解決這個問題.他們通過一種復雜的公式計算出你的信用額度.大部分時候這種計算比較保守,可以避免進入死鎖狀態.當然,他們也有算錯的時候,比如美國2007-2008美國的次貸危機就是這種錯誤計算的一個實例.因為他們錯算了客戶的信用額度,使得很多人還不起款,從而導致美國的金融危機

技術分享圖片

11.避免死鎖之銀行家算法