You are on page 1of 3

Deadlock Deadlock Mutual exclusion

系統中存在一組 (to resource)任何時間點,資源只能讓一個 process 持有,不可多個 process 同時


成立的
process 彼此形成互相 共用
必要條件
Hold & wait
循環等待的關係,使得 Process 持有部分資源,仍在等待其他 process 持有的資源

No preemption
這些 process 皆無法繼 Process 不可搶奪其他 process 所持有的資源,必須等其釋放

Circular waiting
續執行下去,導致 一群 process 形成彼此循環等待的關係

throughput 下降的情況

 互斥:1.CPU 2.Memory 3.I/O device 沒有互斥:read only file

Deadlock
一組 process 形成 circular waiting 無法往下執行 No preemptive 成立 導致 throughput 降低 解決法:deadlock

prevention/avoidance
Starvation
長期無法取的完工所需要的資源形成 indefinite blocking 發生在不公平的環境 無關 解決法:aging

preemptive

 No cycle no deadlock;有 cycle 不一定 deadlock;如果每一資源只有單一個有 cycle 一定有 deadlock

Deadlock 的處理方式 名稱 優點 缺點
deadlock prevention
保證不會有 deadlock 1. resources utilization 低;throughput 低

2. 可能有 starvation

deadlock avoidance
保證不會有 deadlock 1. resources utilization 低;throughput 低

2. 可能有 starvation

deadlock detection& recovery


resources utilization 高;throughput 高 1. 可能有 deadlock

2. 成本高

ignored

deadlock
Deadlock 的 原則: 原則 做法 原因 / 缺點
prevention
Mutual exclusion
處理方式 打破四個 做不到 資源本身特性

Hold & wait


必要條件 規定 process 要取得完工所需要的所有資源,才可以持 資源利用度低,可能有 starvation

之一 有 resource

Process 可以先持有 resource,但要申請其他 resource 資源利用度低,可能有 starvation


之前必須要放掉所有 resource

No preemption
改成 preemption

Circular waiting
1. 給每一種 resource 一個唯一的 ID

2. Process 必須依照 resource ID 遞增的方式提出申請

deadlock
當資源提出申請,執行 banker’s algo 判斷若同意申請是否處於 safe 狀態,若是責核准
avoidance

否則為 unsafe 否決,須等一段時間再申請

deadlock Kill process in 1.kill all process


消除 deadlock 成本高
detection& deadlock
recovery
恢復正常 2.kill one process each time:若 deadlock 仍存在 repeat 成本高

Resource
1. 選 victim process 成本高
preemption

2. 搶奪他們的 resource

3. 恢復這些資源原先的狀態

You might also like