iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 14
0
自我挑戰組

OS作業系統學習系列 第 14

第十四天 Deadlocks(死結)--上

  • 分享至 

  • xImage
  •  

第十四天 Deadlocks(死結)--上

在我們講deadlock前,我們先來說說system model!system內包含了很多資源(resource),而資源也有很多種型態。不管是哪種型態的資源,都有多個instance(像是有5個disk、不只1個I/O devices)。而process用資源時,要經過三個步驟:提出需求(request)、使用資源(use)、釋放資源(release)。

接下來回到deadlock身上!
要形成deadlock,必須同時滿足4個條件:

  1. Mutual exclusion:
    一個resource一次只能被一個process用
  2. Hold and wait:
    process至少取到一個resource,然後等其他process握住的resource
  3. No preemption:
    釋放資源時,是process自願的,沒有被中斷
  4. Circular wait:
    每個process都在等另一個process握住的resource釋放(例如:P1等P2、P2等P3、P3等P1),這也代表single process不會有deadlock

我們可以運用Resource-Allocation Graph(RAG),看system model有沒有deadlock。

Resource-Allocation Graph(RAG)的頂點分兩種,process跟resource ; edge也分兩種,request edge(process指向resource)和assignment edge(resource指向process)。
以下有兩個圖,第一個是有deadlock的RAG,第二個沒有:
https://ithelp.ithome.com.tw/upload/images/20181028/20112132vCNevf9jVk.png
https://ithelp.ithome.com.tw/upload/images/20181028/20112132GgnZERuaaG.png
如果RAG的圖中沒有cycle,那一定沒有deadlock;圖中有cycle,那會有兩種情形:1. 如果resource type中只有一個instance,則一定會有deadlock 2. 如果resource type中不止有一個instance,則不一定會有deadlock。

明天我們來說說處理deadlock的幾個方法!


上一篇
第十三天 Process Synchronization(同步)--下
下一篇
第十五天 Deadlocks(死結)--中
系列文
OS作業系統學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言