Dead Lock 定義
系統中存在一組 Processes 陷入 “互相等待對方所擁有之資源”
的情況 (即: Circular Waiting) ,造成所有 Processes 皆無法往下執行,使得 CPU 利用度及産能大幅降低。
Example:
- 假設一個系統中有兩個資源 \(R_1\) 與 \(R_2\) ,而且該系統產生出兩個行程 \(P_1\) 與 \(P_2\)
- \(R_1\) 已配置給 \(P_2\) , \(R_2\) 已配置給 \(P_1\) ,但這兩個行程在執行過程中又向對方要求對方正在使用中的資源,因此造成系統打結
Dead Lock vs. Starvation
- 相同點:
- 皆為系統資源分配不當所造成
- 相異點:
形成 Dead Lock 的四個必要條件
以下四個條件缺一不可:
- Mutual exclusion (互斥)
- 某些資源在同一個時間點,最多只能被
一個
Process 使用,不能有多個 Processes 同時使用此資源。其它欲使用此資源的 Process 則必須等待,直到該資源被釋放為止。 - e.g.: Printer, CPU
- 反例:Read-only File
- 某些資源在同一個時間點,最多只能被
- Hold and wait (持有並等待)
- Process 持有部份資源,且在等待其它 Process 所持有的資源。
- No preemption (不可搶先)
- Process 不可任意搶奪其它 Process 所持有的資源,必須等待其它 Process 自願釋放這些資源才可以使用。
- Circular waiting (循環式等候)
- 系統中存在一組 Processes {\(P_0, P_1, …, P_n\)} ,其 \(P_0\) 正在等待 \(P_1\) 所持有的資源, \(P_1\) 正在等待 \(P_2\) 所持有的資源,…, \(P_n\) 正在等待 \(P_0\) 所持有的資源, \(P_0\)~\(P_n\) 形成 Circular Waiting。
- 因此,死結不會發生在 Single process 環境中
死結的處理方法
一共有三種
:
- Dead Lock Prevention
- 優點: 保証系統
絕不會
進入死結狀態 - 缺點:資源利用度
低
,系統 Throughput低
- 優點: 保証系統
- Dead Lock Avoidance
- 優點: 保証系統
絕不會
進入死結狀態 - 缺點:資源利用度
低
,系統 Throughput低
- 優點: 保証系統
- Dead Lock Detection & Recovery
- 優點: 資源利用度相對較
高
- 缺點:
- 系統
可能會
發生死結,∴ 必須要 Detection,若死結存在,則要做 Recovery - Cost 極高 (因為要不斷 Detection)
- 系統
- 優點: 資源利用度相對較