死鎖問題
\(\color\)
原因:
例:
系統模型
每一種資源ri有wi種例項
每乙個程序通過如下順序來使用資源
使用資源
釋放資源
必要條件
資源分配圖
申請邊:有向邊pi->rj,表示程序pi申請了資源rj的乙個例項
分配邊:有向邊rj->pi,表示資源rj的乙個例項分配給程序pi
例:
有環但沒有死鎖的資源分配圖
結論:
允許系統進入死鎖狀態,然後檢測它,並加以恢復系統
忽略這個問題,假裝系統中從未出現過死鎖
互斥占有並等待
非搶占迴圈等待
各資源型別的序號確定也是至關重要的,要按照系統內部資源使用的正常順序定義
某些軟體可以用來驗證是否按順序來獲取鎖的,如果不按順序申請且可能出現死鎖,那麼這些軟體會給出適當警告
如果能動態的獲取鎖,那麼制定乙個加鎖的順序並不保證死鎖的預防
死鎖避免演算法動態檢查資源分配狀態以確保迴圈等待條件不可能成立
資源分配狀態是由\(\color\)決定的
安全狀態
如果不存在安全序列,那麼系統狀態就是非安全的
結論:
資源分配圖演算法
銀行家演算法
安全演算法
資源請求演算法死鎖檢測
每一種資源型別只有乙個例項
定期呼叫演算法來檢查是否有環
乙個檢查圖中是否有環的演算法需要n的操作來進行,n為圖中的節點數,即程序數
乙個資源型別的多個例項
檢測演算法:
檢測演算法的用法:
每個請求都呼叫
不太高的頻率
死鎖恢復
發現死鎖後的措施
自動恢復
搶占資源
作業系統概念第七章死鎖筆記
死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序 程序在使用資源之前必須先申請資源,在使用資源之後要釋放資源。程序所申請的資源數量不能超過系統...
作業系統導論第七章
tags categories 作業系統該如何決定切換程序?如何執行程序使得效率最大化?more 1 周轉時間 t 周轉 時間 t 完成時間 t到達 時間t t t t周轉時間 t完成 時間 t到達時 間 2 響應時間 t 響應 時間 t 第一次執 行時間 t到達時 間t t t t響應時間 t第一...
作業系統第七章 儲存器管理
4.多級頁表及反向頁表 現代計算機系統都支援非常大的邏輯位址空間,致使頁表很大,用連續空間存放頁表顯然不現實。如邏輯位址32位,頁面大小4kb,則頁表項為1m,若每個頁表項佔4位元組,則頁表共需要4mb記憶體空間。解決方案 用離散方式儲存 頁表 僅將當前需要的部分頁表項放在記憶體,其餘放在磁碟上,需...