死鎖

什麼是死鎖

指兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。

死鎖原因

  • 系統資源不足
  • 資源分配不當
  • 進程運行的順序不合適

死鎖的條件

操作系統上說,產生死鎖的條件有四個:

  1. 互斥條件:所謂互斥就是進程在某一時間內獨佔資源。
  2. 請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
  3. 不剝奪條件:進程已獲得資源,在末使用完之前,不能強行剝奪。
  4. 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關係。

舉個栗子

資源A和B分別都是獨佔資源。—-形成互斥條件
線程1在佔有資源A後,需要請求資源B來完成自己的任務。同時,線程2佔有資源B,需要請求資源A來完成自己任務。這個時候因爲線程1和線程2都不能滿足繼續運行的條件(線程1少資源B,線程2少資源A),從而進入阻塞狀態。同時彼此都擁有對方需要的資源,而不釋放。(請求與保持,不剝奪)又等待彼此的資源(循環等待)。於是就形成了死鎖。

現實出現的原因

出現死鎖時,有很大一部分由第三個原因造成的。

鳴謝

巴山夜雨
weibo
weixin

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