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