死鎖
死鎖定義:死鎖指多個行程因競爭資源而造成的一種互相等待的僵局,若無外力作用,這些執行緒都無法向前推進,就造成了死鎖,
產生原因:1、競爭資源 2、行程請求和釋放資源的順序不當,導致死鎖
死鎖產生的必要條件
1、互斥條件:一個資源同一時間只能被一個執行緒訪問,若其他行程請求該資源,則只能等待

2、不可剝奪條件:行程獲得資源在未使用完之前,不能被其他執行緒強行奪走,只能由獲得該資源的行程來釋放

3、請求與保持條件:行程已經保持了至少一個資源,但是又提出了新的資源請求,如果新資源已被占有,這只能進行等待,但對自己以占有的資源保持不釋放

4、回圈等待條件:若干個行程間形成了收尾相接回圈等待資源的情況

死鎖的預防----破壞死鎖產生的必要條件從而預防死鎖(主要是避免3和4兩個條件的產生)
1、破壞互斥條件:把只能互斥使用的資源改成允許共享使用的資源,例如spooLing技術,將獨占設備在邏輯上改造成共享設備
2、破壞不可剝奪條件:當某個行程請求新資源無法得到滿足時,就立即釋放保持的所有資源,待以后需要再重新申請
3、破壞請求和保持條件:采用靜態分配方法,即行程在運行前一次申請完它所需要的的資源,在它資源未滿足前,不讓他運行,一旦運行,這些資源都歸它所有,此時不會在請求其他資源
4、破壞回圈等待條件:采用順序資源分配法,首先給系統中的資源進行編號,規定行程必須按編號遞增的順序請求資源,例如一個行程只有已占有小編號資源時,才可以申請更大編號的資源
著名銀行家演算法是利用了第四種方法避免死鎖
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/271417.html
標籤:其他
上一篇:android加密引數定位方法
