背景
有很多文章都會介紹銀行家算法。在百度和CSDN上搜一搜能搜出很多來。很多同學會覺得這個算法很深奧,有些文章寫的又很復雜,其實真的很簡單。這里簡單記錄一下基本原理,然后大家再配合其他文章看,就能加深理解。
算法原理
銀行家算法主要是為了解決死鎖問題。CPU有資源相當于銀行家有錢,很多進程爭奪資源相當于很多客戶爭著貸款。銀行家為了能滿足所有客戶的貸款需求,采取的辦法是分批次循環放貸。先給需求小的客戶放貸,等客戶用完了收回貸款,這樣資金就變多了,然后再給第二個客戶放貸,然后再收回貸款再放貸。
為什么放貸要從小需求客戶開始,因為銀行家資源有限,上來就給大客戶放貸,資源可能不夠。
先給小客戶放貸,收回貸款的時候能收回更多,資源就更多了。
這樣放一批貸款,收一批貸款,把所有客戶過一遍,都能滿足需求,就是符合了安全性要求
這就是銀行家算法中最重要的安全性算法。
按照這個順序,有些客戶的需求還是無法滿足,達不到安全性需求,系統就需要掛起一部分進程,否則就會崩潰。
這個原理其實很好理解,上面的比喻可能不夠精確,但是卻是最好的理解途徑了。
希望能幫到大家。