死鎖
定義:一組程序的每乙個程序都在等待僅有該組程序中的其他程序才能引發的事件,那麼這組程序是死鎖的;
引起死鎖的必要條件:互斥條件,請求和保持,不可搶占,迴圈等待條件
引起死鎖的原因:競爭不可搶占性資源,競爭可消耗資源,程序推進不當
死鎖不能避免,只能降低死鎖的概率
預防死鎖:即破壞形成死鎖的四種必要條件之一就能避免死鎖。破壞請求和保持,程序執行前請求所有需要的資源,如果不能申請到就阻塞自己,這種方法資源利用率低,程序經常發生飢餓現象; 改進,程序獲得所需資源後即開始執行,執行過程中逐步釋放資源; 破壞不可搶占條件,當乙個程序已經保持了一些不可搶占資源的時候,提出申請資源而不能得到滿足的時候,必須釋放已經保持的所有資源,以後再重新申請,實現的代價很大,延長周轉時間,還增加系統開銷; 破壞迴圈等待條件,對所有資源進行線性排序,資源申請只能按照順序申請,當要申請當前資源後面的資源的時候,就放棄現在所有的資源。 這些辦法都是不可行的開銷太大,且效率低下
避免死鎖:為程序分配資源的時候,每當分配完後,檢查系統是否處於安全狀態。若是就分配成功,否則分配失敗。所謂的安全狀態就是指,系統在當前狀態下,能按照某個順序,為系統中的每個程序分配所需資源,且最終全部程序都能順利完成。 不安全狀態不一定會進入死鎖。常用的演算法是銀行家演算法
死鎖的檢測和解除:當程序請求分配資源的時,只要系統有可用資源滿足就分配,系統定期檢查程序圖或者資源圖時候存在環路,如果存在就就有死鎖的存在,則立即進行系統恢復;解除死鎖的方法通常有,搶占資源,從其他程序搶占足夠資源給死鎖程序;終止程序,終止乙個或多個程序來打破迴圈環路; 終止程序的方法:1.終止所有程序,簡單粗暴,但是程序的執行還可能同樣出現死鎖,並且所有的程序都要從頭再來;逐個終止程序,按照某種順序,逐個終止程序,直至有足夠的資源以打破迴圈等待。採取的策略是「代價最小」。通常考慮以下幾點,優先順序,還需要多少時間完成,還需要多少資源,程序是互動式還是批處理
作業系統死鎖
作業系統死鎖,在作業系統課程當中屬於比較關注的乙個知識點,在這裡做個簡單的梳理。死鎖的四個必要條件 作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借...
作業系統 死鎖
多執行緒以及多程序改善了系統資源的利用率並提高了系統 的處理能力。然而,併發執行也帶來了新的問題 死鎖。死鎖是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當前程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。關於死鎖的一些結論 競爭資源 當系統中供多個程序共享的資源如印表機 公用佇列等...
作業系統 死鎖
把需要排他性使用的物件稱為資源。資源可以是硬體也可以是軟體,比如印表機或者資料庫中的乙個加鎖記錄。資源可以分為兩類 可搶占資源和不可搶占資源。搶占這個詞,在程序和執行緒排程時就提到了這個概念,那時是程序或者執行緒可以搶占cpu,即搶占式排程。儲存器也可以搶占,如記憶體換頁。一般來說,可搶占資源不會引...