進程的死鎖

產生死鎖的四個條件同時具備:互斥條件、不可搶佔條件、佔有且申請條件、循環等待條件
爲什麼會有死鎖:若干進程競爭有限資源,又推進順序不當,從而構成無限循環等待的局面,這種狀態叫做死鎖。所謂死鎖是指多個進程循環等待它方佔有的資源而無限期的僵持下去的局面。
死鎖原因:
  1. 一種原因是系統提供的資源太少,遠不能滿足併發進程對資源的需求。
  2. 二是由於進程推進順序不合適引起的死鎖。
產生死鎖的必要條件:(四個必須同時具備)
  • 互斥條件:某個資源在一段時間內只能由一個進程佔有;
  • 不可搶佔條件:進程所獲得的資源在未使用完畢之前,資源申請者不能強行從資源佔有者手中奪取資源,只能由該資源的佔有者主動釋放;
  • 佔有且申請條件:進程至少已經佔有一個資源卻又申請新的資源;
  • 循環等待條件:存在一個進程等待序列,形成一個進程循環等待。

解決死鎖的方法(靜態策略):預防、避免、檢測與恢復三種
  • 死鎖的預防:保證系統不進入死鎖的一種策略。他的基本思想是要求進程申請資源時遵循某種協議,從而打破死鎖的的四個必要條件中的一個或幾個,保證系統不會進入思索狀態。

  • 死鎖的避免(動態策略):在資源分配過程中若預測到有發生死鎖的可能性,則加以避免。
  1. 安全序列。系統中的所有進程能夠按照某一種次序分配資源,並且依次的運行完畢,這種序列叫做安全序列。
  2. 銀行家算法。從當前狀態出發,逐個按安全序列檢查各客戶誰能完成其工作,然後嘉定其完成工作且歸還全部貸款,再進而檢查下一個能完成工作的客戶。

  • 死鎖的檢測與恢復(多在實際操作中使用)。系統設有專門的機構,當死鎖發生時,該機構能夠檢測到死鎖發生的位置和原因。並能通過外力破壞死鎖發生的必要條件,讓進程從思索狀態恢復出來。

  • 死鎖的恢復:
  1. 系統重啓;
  2. 撤銷進程,剝削資源;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章