第十四天 Deadlocks(死結)--上
在我們講deadlock前,我們先來說說system model!system內包含了很多資源(resource),而資源也有很多種型態。不管是哪種型態的資源,都有多個instance(像是有5個disk、不只1個I/O devices)。而process用資源時,要經過三個步驟:提出需求(request)、使用資源(use)、釋放資源(release)。
接下來回到deadlock身上!
要形成deadlock,必須同時滿足4個條件:
我們可以運用Resource-Allocation Graph(RAG),看system model有沒有deadlock。
Resource-Allocation Graph(RAG)的頂點分兩種,process跟resource ; edge也分兩種,request edge(process指向resource)和assignment edge(resource指向process)。
以下有兩個圖,第一個是有deadlock的RAG,第二個沒有:
如果RAG的圖中沒有cycle,那一定沒有deadlock;圖中有cycle,那會有兩種情形:1. 如果resource type中只有一個instance,則一定會有deadlock 2. 如果resource type中不止有一個instance,則不一定會有deadlock。
明天我們來說說處理deadlock的幾個方法!