阿摩線上測驗 登入

申論題資訊

試卷:95年 - 95 專技高考_電子工程技師:電子計算機原理#49541
科目:計算機概論、大意(資訊科學概論,電腦常識,電子計算機概論)
年份:95年
排序:0

申論題內容

三、請解釋在作業系統行程(process)管理中的死結(deadlock)現象,又發生死結的 條件為何?(10 分)

詳解 (共 2 筆)

詳解 提供者:hchungw

死結(Deadlock)現象的解釋

在作業系統中,死結(Deadlock)是一種現象,指的是一組進程在等待某些資源,而這些資源正被其他進程佔用,且這些進程彼此之間形成了一個循環等待的關係,導致所有進程都無法繼續執行。

簡單地說,死結是一種資源分配的僵局,涉及多個進程彼此等待而無法前進的情況。

死結發生的四個必要條件

發生死結需要同時滿足以下四個條件,這些條件通常稱為「Coffman條件」:

  1. 互斥條件(Mutual Exclusion)

    • 資源一次只能被一個進程使用。如果另一個進程請求資源,則必須等待直至資源被釋放。
  2. 持有並等待條件(Hold and Wait)

    • 一個進程已經持有至少一個資源,並且正在等待獲得另外一個資源,而該資源正被其他進程持有。
  3. 不剝奪條件(No Preemption)

    • 資源不能被強制從進程中剝奪,只能由持有它的進程自己釋放。
  4. 循環等待條件(Circular Wait)

    • 存在一個進程集 {P1,P2,...,Pn},其中 P1 正在等待 P2 持有的資源,P22 正在等待 P3 持有的資源,…,而 Pn 則正在等待 P1持有的資源,形成一個循環等待的環路。

死結的例子

考慮兩個進程 P1P2,以及兩個資源 R1 和 R2

  • 進程 P1 持有資源 R1並請求資源 R2
  • 進程 P2持有資源 R2 並請求資源 R1

在這種情況下:

  • P1 等待 P2 釋放資源 R2
  • P2 等待 P1 釋放資源 R1

這樣就形成了一個循環等待,導致死結。

死結的預防與避免

為了避免或預防死結,作業系統可以採取以下幾種策略:

  1. 預防策略(Deadlock Prevention)

    • 設計系統以避免四個必要條件之一的發生,例如:不允許持有並等待或允許資源剝奪等。
  2. 避免策略(Deadlock Avoidance)

    • 使用某種算法(如銀行家算法)來確保系統永遠不會進入死結狀態。
  3. 檢測與恢復(Deadlock Detection and Recovery)

    • 系統定期檢測死結並在發現死結時進行處理,例如:強制撤銷某些進程以打破死結。
  4. 資源分配圖(Resource Allocation Graph)

    • 使用資源分配圖來動態地檢測和避免死結。

總結來說,死結是一種需要小心管理的資源分配問題,作業系統設計中必須考慮並採取適當的策略來防止或解決死結。

詳解 提供者:黃俊翔
兩個執行緒分別取得了鎖定,互相等待另外一個執行緒解除鎖定的現象,發生死結的時候,哪個執行緒都無法繼續執行下去,這時候程式就會不斷等待。 條件為互斥現象、握有並等待、不可搶先、循環等待