deadlock example
sempohere A and B =1,
P0 P1
wait(A) wait(B)
wait(B) wait(A)
7.1 System Model
每一種看都有一定的instances,像是可能有五個disk,不止一個的I/O devices,
每一個 process 要利用資源都有以下三種階段
7.2 Deadlock Character
要死結必須要滿足以下四個條件,缺一不可
- Mutual exclusion: 一個資源一次只能被一個process所使用
- Hold and Wait: process取得一個資源之後等待其他的資源
- No preemption: 資源只能由process自己釋放,不能由其他方式釋放
- Circular wait: 每個process都握有另一個process請求的資源,導致每一個process都在等待另一個process釋放資源
Resource-Allocation Graph
- 沒有 cycle -> 沒有deadlock
- 如果有cycle
- 每個resource裡 只有一個instance的話,則有cycle -> 有 deadlock
- 每個resource裡 有好幾個instance的話 -> 可能有deadlock
Graph with a cycle but no deadlock
- 可以把p4佔據的資源free掉,但p4可能starvation
Method for Handling Deadlocks
- ensure never enter deadlock
- allow enter deadlock, but can recovery
- ignore