所謂死鎖:是指多個程序在執行過程中因爭奪資源而造成的一種僵局。
l 競爭資源:當系統中多個程序使用共享資源,並且資源不足以滿足需要,會引起程序對資源的競爭而產生死鎖。
l 程序間推進的順序非法:請求和釋放資源的順序不當,也同樣會導致產生程序死鎖
互斥條件:程序對所分配到的資源進行排它性使用,在一段時間內某資源只由乙個程序占用。
請求和保持條件:指乙個程序已經保持了至少乙個資源,但又提出新的資源請求,而此資源被其他占用,此時請求程序阻塞,但又對自己已經占用的資源保持不放。
不剝奪條件:程序已經獲得資源,在未使用完之前,不能被剝奪,只能在使用完時,由程序自己釋放。
環路等待條件:發生死鎖時,必然存在乙個程序-資源的環形鏈。
處理死鎖的方法
l預防死鎖
事先預防,破壞產生死鎖的四個必要條件之一。
摒棄「請求和保持」條件:
程序在申請資源時,是一次性的。
如何摒棄「請求「:當程序來時,一次性分配所有的資源(如果系統滿足),這樣就不會再有」請求「了。
如何摒棄「保持「:只要有乙個資源得不到分配,也不給這個程序分配其他的資源。
摒棄「不剝奪」條件:在這種方法中,程序是逐個提出對資源的要求的。如果乙個程序,獲得了部分資源,但得不到其它資源,這時,它釋放自己所占用的資源。
摒棄「環路等待」條件:把資源排序,當程序申請資源時,按序申請。
l避免死鎖
事先預防,並不是破壞產生死鎖的四個必要條件,而是用某種方法去防止系統進入不安全狀態,目前在較完善的系統中,常用此方法。銀行家演算法
安全狀態:是指系統能按照某種程序順序(p1,p2,…pn),來為每乙個程序pi分配其所需要的資源,直到滿足每個程序對資源的最大需求,使每個程序都可順利地完成。如果系統無法找到這樣乙個安全序列,則稱系統處於不安全狀態。
l檢測死鎖
並不事先採取任何限制性的措施,也不必檢查系統是否已經進入不安全區,此方法允許發生死鎖,關鍵是,發生死鎖了,系統可以通過檢測機構發現死鎖,並精確確定與死鎖有關的程序和資源,然後,採取適當措施,從系統中將已經發生的死鎖清除
l解除死鎖
這是與檢測死鎖配套使用。當檢測到系統已經發生了死鎖,要將程序從死鎖狀態中解脫出來。常用的方法是撤銷或掛起一些程序,以便**一些資源,再將這些資源分配給已經處於阻塞狀態的程序,使之轉為就緒狀態,以繼續執行。
計算機作業系統之死鎖的原因和必要條件
所謂死鎖 是指多個程序在執行過程中因爭奪資源而造成的一種僵局。l 競爭資源 當系統中多個程序使用共享資源,並且資源不足以滿足需要,會引起程序對資源的競爭而產生死鎖。l 程序間推進的順序非法 請求和釋放資源的順序不當,也同樣會導致產生程序死鎖 互斥條件 程序對所分配到的資源進行排它性使用,在一段時間內...
計算機作業系統 死鎖
目錄 死鎖的必要條件 死鎖的處理方法 鴕鳥策略 死鎖檢測與死鎖恢復 死鎖預防 破壞互斥條件 破壞占有和等待條件 破壞不可搶占條件 破壞環路等待 死鎖避免 四個必要條件 例如 執行緒a持有資源1,執行緒b持有資源2。假裝根本沒發生死鎖問題。因為解決死鎖問題的代價很高,因此鴕鳥策略這種不採取任務措施的方...
計算機作業系統 死鎖
死鎖預防 死鎖避免 主要有以下四種方法 把頭埋在沙子裡,假裝根本沒發生問題。因為解決死鎖問題的代價很高,因此鴕鳥策略這種不採取任務措施的方案會獲得更高的效能。當發生死鎖時不會對使用者造成多大影響,或發生死鎖的概率很低,可以採用鴕鳥策略。大多數作業系統,包括 unix,linux 和 windows,...