目錄
死鎖的必要條件
死鎖的處理方法
鴕鳥策略
死鎖檢測與死鎖恢復
死鎖預防
破壞互斥條件
破壞占有和等待條件
破壞不可搶占條件
破壞環路等待
死鎖避免
四個必要條件:
例如:執行緒a持有資源1,執行緒b持有資源2。
假裝根本沒發生死鎖問題。
因為解決死鎖問題的代價很高,因此鴕鳥策略這種不採取任務措施的方案會獲得更高的效能。
當發生死鎖時不會對使用者造成多大影響,或發生死鎖的概率很低,可以採用鴕鳥策略。
大多數作業系統,包括 unix,linux 和 windows,處理死鎖問題的辦法僅僅是忽略它。
不試圖阻止死鎖,而是當檢測到死鎖發生時,採取措施進行恢復。
1. 每種型別乙個資源的死鎖檢測
每種型別乙個資源的死鎖檢測演算法是通過檢測有向圖是否存在環來實現,從乙個節點出發進行深度優先搜尋,對訪問過的節點進行標記,如果訪問了已經標記的節點,就表示有向圖存在環,也就是檢測到死鎖的發生。
2. 每種型別多個資源的死鎖檢測
3. 死鎖恢復
在程式執行之前預防發生死鎖。
例如假離線印表機技術允許若干個程序同時輸出,唯一真正請求物理印表機的程序是印表機守護程序。
(資源不互斥,而是共享的方式存在)
一種實現方式是規定所有程序在開始執行前請求所需要的全部資源。
(哲學家拿到左筷子右筷子之後才能占有使用,只拿到乙個而獲取不到另乙個不加鎖)
給資源統一編號,程序只能按編號順序來請求資源。
在程式執行時避免發生死鎖。
演算法判斷對請求的滿足是否會進入不安全狀態,如果是,就拒絕請求;否則予以分配。
計算機作業系統 死鎖
死鎖預防 死鎖避免 主要有以下四種方法 把頭埋在沙子裡,假裝根本沒發生問題。因為解決死鎖問題的代價很高,因此鴕鳥策略這種不採取任務措施的方案會獲得更高的效能。當發生死鎖時不會對使用者造成多大影響,或發生死鎖的概率很低,可以採用鴕鳥策略。大多數作業系統,包括 unix,linux 和 windows,...
計算機作業系統 死鎖
主要有以下四種方法 把頭埋在沙子裡,假裝根本沒發生問題。因為解決死鎖問題的代價很高,因此鴕鳥策略這種不採取任務措施的方案會獲得更高的效能。當發生死鎖時不會對使用者造成多大影響,或發生死鎖的概率很低,可以採用鴕鳥策略。大多數作業系統,包括 unix,linux 和 windows,處理死鎖問題的辦法僅...
計算機作業系統(三)死鎖
死鎖預防 死鎖避免 主要有以下四種方法 把頭埋在沙子裡,假裝根本沒發生問題。因為解決死鎖問題的代價很高,因此鴕鳥策略這種不採取任務措施的方案會獲得更高的效能。當發生死鎖時不會對使用者造成多大影響,或發生死鎖的概率很低,可以採用鴕鳥策略。大多數作業系統,包括 unix,linux 和 windows,...