操作系統-死鎖

一、什麼是死鎖

多個進程佔有並等待
死鎖是指多個併發進程,各自持有資源又都等待別的進程釋放所擁有的資源,在未改變這種狀態之前不能向前推進,這種狀態稱爲死鎖,死鎖產生的根本原因是系統資源不足。

二、死鎖的必要條件

互斥、非搶佔、佔有並等待、循環等待

  • 互斥:併發進程要求和佔用的資源只能被一個進程使用
  • 不可搶佔:進程已經獲得的資源,在未使用完成前,不可被剝奪
  • 佔有並等待:進程申請並等待新資源的過程中,繼續佔有已分配的資源
  • 循環等待:若干進程形成首尾相接的循環鏈,循環等待上一個進程的資源

三、死鎖預防

  • 打破互斥
  • 打破佔有並等待:當系統能夠滿足當前進程的全部資源需求時,才一次性地將所申請的資源全部分配給該進程
  • 打破非搶佔:一個進程請求當前被另一個進程佔用的一個資源時,操作系統可以搶佔另一個進程,要求它釋放資源
  • 打破循環等待:採用資源有序分配,其基本思想是將系統中的所有資源順序編號,將緊缺的,稀少的採用較大的編號,在申請資源時必須按照編號的順序進行,一個進程只有獲得較小編號的進程才能申請較大編號的進程

四、死鎖避免

  • 資源拒絕分配策略又稱爲銀行家算法
    資源拒絕分配策略又稱爲銀行家算法,該策略能夠保證系統中進程和資源總是處於安全狀態。當進程請求一組資源時,假設同意該請求,從而改變了系統的狀態,然後確定其結果是否還處於安全狀態,如果是,則同意這個請求;否則阻塞該進程直到同意該請求後系統狀態仍然是安全的。

五、死鎖檢測

六、死鎖解除

  • 取消所有死鎖進程
  • 回滾死鎖進程到前面定義的某些檢查點,然後重新啓動所有進程
  • 基於某種最小代價原則,連續取消死鎖進程直到不再存在死鎖
  • 基於某種最小代價原則,連續搶佔資源知道不存在死鎖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章