死鎖的定義及解決方法

死鎖的定義:
在多道程序環境中,多個進程可以競爭有限數量的資源。當一個進程申請資源時,如果這時沒有可用資源,那麼這個進程進入等待狀態。有時,如果所申請的資源被其他等待進程佔有,那麼該等待進程有可能再也無法改變狀態。這種情況稱爲死鎖。

死鎖的特徵:
1.互斥:至少有一個資源必須處於非共享模式,即一次只有一個進程可使用。如果另一進程申請該資源,那麼申請進程應等到該資源釋放爲止。
2.佔有並等待:—個進程應占有至少一個資源,並等待另一個資源,而該資源爲其他進程所佔有。
3.非搶佔:資源不能被搶佔,即資源只能被進程在完成任務後自願釋放。
4.循環等待:有一組等待進程 {P0,P1,…,Pn},P0 等待的資源爲 P1 佔有,P1 等待的資源爲 P2 佔有,……,Pn-1 等待的資源爲 Pn 佔有,Pn 等待的資源爲 P0 佔有。
四個條件必須同時成立纔會出現死鎖。循環等待條件意味着佔有並等待條件,這樣四個條件並不完全獨立。

死鎖的解決方法:
一般來說,處理死鎖問題有三種方法:
1.通過協議來預防或避免死鎖,確保系統不會進入死鎖狀態。
2.可以允許系統進入死鎖狀態,然後檢測它,並加以恢復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章