计算机操作系统——死锁的概念与处理
生活随笔
收集整理的這篇文章主要介紹了
计算机操作系统——死锁的概念与处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
死鎖的條件?
死鎖的處理方式
1、死鎖預防
2、死鎖避免
3、死鎖檢測與恢復?
4、死鎖忽略
死鎖的條件?
死鎖的四個條件,缺一不可
- 互斥條件:對必須互斥使用的資源的爭搶才會導致死鎖。
- 不剝奪條件:進程所獲得的資源未使用完之前,不能被其他進程強行奪走,只能主動釋放。
- 請求和保持條件:進程已經保持了至少一個資源,但又提出了新的資源請求,而該資源又被其他進程占有,此時請求進程被阻塞,但又對自己有的資源保持不放。就像很窄的橋,兩個人都要去對面,但誰又都無法讓出位置來。
- 循環等待條件:存在一種進程資源的循環等待,鏈中的每一個進程已獲得的資源同時被下一個進程所請求。想象有一個閉環,閉環上每個人都需要下一個人手上的某個資源,那么所有人都沒辦法滿足。
下圖就像我們的一個死鎖
死鎖的處理方式
1、死鎖預防
- 破壞互斥條件(創建一個隊列,所有的請求都會被快速響應,然后隊列逐漸將請求發送到處理器進行整理)
- 破壞不剝奪條件(進程的某個資源得不到滿足時,就必須立刻釋放所持有的資源)
- 破壞請求和保持條件(靜態分配,進程在運行前就一次性申請全部的資源,不滿足就不讓允許,就像過橋時保證橋上沒人才讓通行,否則禁止通行)
- 破壞循環等待條件(資源編號,進程必須按照編號遞增的順序請求資源,這樣就不會出現持有大資源請求小資源的情況,也就不會有循環的等待)
2、死鎖避免
?銀行家算法:進程提出資源申請時,先判斷這次分配會不會導致系統進入不安全狀態,如果會則不答應請求,讓該進程阻塞。簡而言之,請求不能大于手中的資源。這種算法也叫銀行家算法。
3、死鎖檢測與恢復?
檢測方法通過死鎖檢測算法,下面以圖的方式說明?
?
能夠消除所有邊,就不會發生死鎖如下圖?
?
?不能消除所有邊就會發生死鎖。
*死鎖恢復:**資源剝奪將死鎖的進程掛起,釋放資源;撤銷進程,直接將部分或者全部死鎖進程撤銷;進程回退,讓進程回退的足以避免死鎖的地方。
4、死鎖忽略
顧名思義,忽略這個死鎖,死鎖概率本不高,就算出現了也只是局部的死鎖,直接不管反而能提高資源利用率與整體運行的速度,也有個好聽的名字叫鴕鳥算法,這樣性能會提升不少,大部分操作系統也采用死鎖忽略的策略。
總結
以上是生活随笔為你收集整理的计算机操作系统——死锁的概念与处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界奇葩种子java_我的世界:10
- 下一篇: 如何在连不上wifi的情况下连上wifi