#61.死锁
概念:
死鎖是指兩個或兩個以上的進程在執(zhí)行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象,若無外力作用,它們都將無法推進下去。此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
通俗的說:死鎖是一種兩個或者兩個以上進程阻塞的現(xiàn)象,而且這種現(xiàn)象如果沒有外力作用,進程就永遠無法推進下去。
導致死鎖的原因:
競爭的資源有限+進程推進順序不當
死鎖的4個必要條件:
1.互斥條件
資源的排他性
一個碗只能讓一個人擁有
2.請求和持續(xù)條件
進程保持著資源的同時,又申請新的資源,而且申請的資源被占用時,它在等待的時候不放棄自己的其他資源。
典型的**吃著碗里的看著鍋(別人碗里)**里的。
3.不剝奪條件
進程已經(jīng)獲得的資源,只能自己釋放,不能被剝奪。
碗里的只能我自己不吃給你們,不然你們不能搶。
4.環(huán)路等待條件
進程-資源環(huán)形鏈。
我自己碗里有,但是我申請你的碗,你申請第三個人的碗,第三個人申請第四個……最后一個人要申請我碗里的。
1.一個碗只能讓一個人用。
2.我申請吃你碗里的,我自己碗里的不能給別人,然后等著吃你碗里的。
3.你不給我吃我不能搶。
4.人碗鏈。
處理死鎖的四種基本辦法:
1.預防死鎖
通過設(shè)置某些限制條件,去破壞死鎖的必要條件的一個或者多個條件,來預防。
優(yōu)點:容易實現(xiàn)
缺點:但是限制條件嚴格,會降低系統(tǒng)的資源利用率和吞吐量。
2**.避免**死鎖
不采取事前的限制條件,而是在資源的動態(tài)分配中,用某種方法去阻止系統(tǒng)進入不安全狀態(tài)
優(yōu)點:較弱的限制,較高資源利用率
缺點:較難實現(xiàn),難度在于計算資源分配的安全性
打個比方:預防和避免死鎖 預防就像是說 最近股市不太好,我直接賣了,沒啥風險。好處就是容易實現(xiàn),壞處就是我最近可能賺不到錢。
避免就高級了,我知道股市不好,但是我覺得還不到時間,所以我采取了邊走邊看。 這個方法好處就是:我可能還能賺到錢,壞處就是難度太大了。
3.檢測死鎖
允許發(fā)生死鎖,檢測出死鎖,然后確定相關(guān)進程和資源。
4.解除死鎖
把進程從死鎖狀態(tài)解脫出來。
撤銷或掛起進程。
總結(jié)
- 上一篇: 59.进程的三种状态,以及之间转换的过程
- 下一篇: 60.进程调度算法