死鎖特徵
死鎖發生在作業系統中,當兩個或多個程序需要某些資源來完成其執行,而這些資源被其他程序持有時。
如果四個Coffman條件都成立,則會發生死鎖。但是這些條件不是相互排斥的。它們如下所示:
互斥
應該有一個資源,一次只能被一個程序持有。在下圖中,只有一個例項的資源1,並且它僅由程序1持有。
持有並等待
一個程序可以持有多個資源,並且仍然可以向持有它們的其它程序請求更多資源。在下圖中,程序2持有資源2和資源3,並請求由程序1持有的資源1。
不可搶佔
資源不能被強制從程序中搶佔。程序只能自願釋放資源。在下圖中,程序2不能從程序1搶佔資源1。它只有在程序1在執行完成後自願放棄它時才會被釋放。
迴圈等待
一個程序正在等待第二個程序持有的資源,而第二個程序正在等待第三個程序持有的資源,以此類推,直到最後一個程序正在等待第一個程序持有的資源。這形成了一個迴圈鏈。例如:程序1被分配了資源2,並且它正在請求資源1。同樣,程序2被分配了資源1,並且它正在請求資源2。這形成了一個迴圈等待環。
廣告