複製鏈接
請複製以下鏈接發送給好友

進程死鎖

鎖定
如果多個進程同時佔有對方需要的資源而同時請求對方的資源,而它們在得到請求之前不會釋放所佔有的資源,那麼就會導致死鎖的發生,也就是進程不能實現同步。
中文名
進程死鎖
外文名
Mutual exclusion
原    因
競爭資源和進程間推進順序非法
死鎖條件
互斥條件

進程死鎖死鎖原因

產生死鎖的原因可歸結為如下兩點:
(1)競爭資源。當系統中供多個進程共享的資源如打印機、公用隊列等,其數目不足以滿足進程的需要時,會引起諸進程的競爭而產生死鎖。
(2)進程間推進順序非法。進程在運行過程中,請求和釋放資源的順序不當,也同樣會導致產生進程死鎖。 [1] 

進程死鎖死鎖條件

1.互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。
2.請求與保持條件(Hold and wait):已經得到資源的進程可以再次申請新的資源。
3.非剝奪條件(No pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。
4.循環等待條件(Circular wait):系統中若干進程組成環路,該環路中每個進程都在等待相鄰進程正佔用的資源。

進程死鎖預防死鎖

1、採用資源靜態分配策略,破壞"部分分配"條件;
2、允許進程剝奪使用其他進程佔有的資源,從而破壞"不可剝奪"條件;
3、採用資源有序分配法,破壞"環路"條件。
死鎖的避免不嚴格地限制死鎖的必要條件的存在,而是系統在系統運行過程中小心地避免死鎖的最終發生。最著名的死鎖避免算法是銀行家算法死鎖避免算法需要很大的系統開銷
參考資料
  • 1.    湯曉丹 梁紅兵 哲鳳屏 湯子瀛.計算機操作系統:西安電子科技大學出版社,2009