1、產(chǎn)生死鎖的必要條件:
缺一不可
- 互斥條件:進(jìn)程要求對所分配的資源進(jìn)行排它性控制,即在一段時間內(nèi)某資源僅為一進(jìn)程所占用。
- 請求和保持條件:當(dāng)進(jìn)程因請求資源而阻塞時,對已獲得的資源保持不放。
- 不剝奪條件:進(jìn)程已獲得的資源在未使用完之前,不能剝奪,只能在使用完時由自己釋放。
- 環(huán)路等待條件:在發(fā)生死鎖時,必然存在一個進(jìn)程--資源的環(huán)形鏈。
2、如何避免死鎖?
打破其中某一條件
- 資源一次性分配:一次性分配所有資源,這樣就不會再有請求了:(破壞請求條件)
- 只要有一個資源得不到分配,也不給這個進(jìn)程分配其他的資源:(破壞請保持條件)
- 可剝奪資源:即當(dāng)某進(jìn)程獲得了部分資源,但得不到其它資源,則釋放已占有的資源(破壞不可剝奪條件)
- 資源有序分配法:系統(tǒng)給每類資源賦予一個編號,每一個進(jìn)程按編號遞增的順序請求資源,釋放則相反(破壞環(huán)路等待條件)