前一章提到死結,今天來聊聊最常用的死結避免的方法:銀行家演算法,確保系統的安全執行
銀行家演算法
其實這個演算法是參考銀行放貸款的風險計算方法,假設胖虎、小夫、大雄今年陸續都有跟銀行借錢100塊,但他們不是一次借是分次借,每個月都各跟銀行拿一點,銀行要確保2件事
系統就像是銀行,胖虎、小夫、大雄就是process,系統在分配這些資源給process時會確保至少有一組process執行順序是可以讓process輪到時都有拿到他需要的資源,只要有一條路線是成功的(意思就是銀行可以決定胖虎、小夫、大雄誰先開始借錢,只要其中有一個順序可以讓輪到時都有錢拿),那就給過,否則就會是不安全的狀態(可能會有deadlock)
實際的計算題型可以參考作業系統之銀行家演算法解析(帶例題)
強烈建議先看操作系統原理這部影片
死結偵測
OS會偵測是否發生deadlock,偵測方式:藉由將資源分配圖簡化,有cycle就有deadlock風險
簡化方式:將resource忽略讓process指向下一個process(紅線)
死結恢復
如果OS偵測到deadlock就要進行recovery,有兩種方式:
1.由user自己處理 : 像是我們如果發現網頁或app卡住當當的就會手動關閉重開,或開啟工作管理員將一些程式關掉
2. 由系統處理 : 系統會有彈窗問你說應用程式目前沒有回應要等待還是結束,又叫Application Not Responding,deadlock是ANR的一種表現方式
分類會依照第一篇介紹的分類架構來進行
由於是將學習過程記錄下來,如果有任何錯誤歡迎糾正