進程死鎖

進程死鎖

如果多個進程同時占有對方需要的資源而同時請求對方的資源,而它們在得到請求之前不會釋放所占有的資源,那么就會導致死鎖的發生,也就是進程不能實現同步。

基本信息

死鎖原因

產生死鎖的原因可歸結為如下兩點:

(1)競爭資源。當系統中供多個進程共享的資源如印表機、公用佇列等,其數目不足以滿足進程的需要時,會引起諸進程的競爭而產生死鎖。

(2)進程間推進順序非法。進程在運行過程中,請求和釋放資源的順序不當,也同樣會導致產生進程死鎖。

死鎖條件

1.互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。

2.請求與保持條件(Hold and wait):已經得到資源的進程可以再次申請新的資源。

3.非剝奪條件(No pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。

4.循環等待條件(Circular wait):系統中若干進程組成環路,該環路中每個進程都在等待相鄰進程正占用的資源。

預防死鎖

1、採用資源靜態分配策略,破壞"部分分配"條件;

2、允許進程剝奪使用其他進程占有的資源,從而破壞"不可剝奪"條件;

3、採用資源有序分配法,破壞"環路"條件。

死鎖的避免不嚴格地限制死鎖的必要條件的存在,而是系統在系統運行過程中小心地避免死鎖的最終發生。最著名的死鎖避免算法是銀行家算法。死鎖避免算法需要很大的系統開銷。

相關詞條

相關搜尋

熱門詞條

聯絡我們