在作業系統中,死結(Deadlock)是一種現象,指的是一組進程在等待某些資源,而這些資源正被其他進程佔用,且這些進程彼此之間形成了一個循環等待的關係,導致所有進程都無法繼續執行。
簡單地說,死結是一種資源分配的僵局,涉及多個進程彼此等待而無法前進的情況。
發生死結需要同時滿足以下四個條件,這些條件通常稱為「Coffman條件」:
互斥條件(Mutual Exclusion):
持有並等待條件(Hold and Wait):
不剝奪條件(No Preemption):
循環等待條件(Circular Wait):
考慮兩個進程 P1和 P2,以及兩個資源 R1 和 R2:
在這種情況下:
這樣就形成了一個循環等待,導致死結。
為了避免或預防死結,作業系統可以採取以下幾種策略:
預防策略(Deadlock Prevention):
避免策略(Deadlock Avoidance):
檢測與恢復(Deadlock Detection and Recovery):
資源分配圖(Resource Allocation Graph):
總結來說,死結是一種需要小心管理的資源分配問題,作業系統設計中必須考慮並採取適當的策略來防止或解決死結。