死鎖及死鎖的四個必要條件、預防死鎖、解除死鎖


死鎖是多個線程在運行過程中互相競爭資源發生的僵局,若無外力作用,它們都無法推進下去。死亡如風,常伴吾身。窩窩頭,嘿嘿!

死鎖的四個必要條件

  1. 互斥條件:一個資源每次只能被一個進程使用。
  2. 請求和保持條件:一個進程因為請求資源而阻塞時,對已獲得的資源保持不放。
  3. 不剝奪條件:進程已經獲得的資源在沒有使用完之前,不能強行剝奪。
  4. 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。

解決死鎖的基本方法

預防死鎖:

1)資源一次性分配:一次性分配所有資源,這樣就不會有請求了(破壞請求條件)

2)只要有一個資源得不到分配,就不給這也進程分配其他的資源(破壞保持條件)

3)可剝奪資源:即當某進程獲得了部分資源,但得不到其它資源,則釋放已占有的資源(破壞不剝奪條件)

4)資源有序分配法:系統給每個資源賦予一個編號,每一個進程按照編程遞增的順序請求資源,釋放則相反(破壞環路等待條件)

解除死鎖:

常用的有:

1)剝奪資源:從其他進程剝奪足夠數量的資源給死鎖進程,以解除死鎖狀態;

2)撤銷進程:可以直接撤銷死鎖進程或撤銷代價最小的進程,直至有足夠的資源可用;

 

預防死鎖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM