韓丹 高占江
摘 要:計算機在運行過程中,操作系統經常會出現故障,死鎖問題是其中最為重要的一種。特別是在計算機資源使用最優基礎下,死鎖問題的解決已經迫在眉睫。計算機操作系統中的死鎖問題并不是憑空產生的,需要一些必要的條件,這些條件則是解決計算機死鎖問題的突破口。
關鍵詞:計算機;死鎖問題;操作系統
死鎖就是一個不通狀態,在計算機操作系統中發生死鎖情況,表示的是在多個進程集合中,多個進程都在等待事件的發生,而被等待發生的事件又在等待其它事件的發生,這樣進程之間始終處于等待狀態,無法順利執行。這種不同的狀態會浪費大量的資源,需要的資源得到不到應用,不需要占用的資源無法被釋放,這將會對操作系統的運行造成不良影響。
一、死鎖發生的原因
對死鎖的發生原因進行總結,可以總結為以下兩點:1、計算機操作系統中的有限資源受到競爭。2、進程的推進順序。
計算機操作系統供多個進程并發執行的共享資源無法滿足各個進程在執行時的具體需求,如果執行的進程的推進非法,進程在執行過程中因為會對資源進行爭奪,最終將會導致系統發生死鎖。需要注意的是進程通信以及其它的一些原因也有可能會導致進程死鎖情況的發生,通過分析總結,通常引起進程死鎖的原因有以下幾點:
1、資源競爭引起的死鎖
因為競爭資源競爭而引起的死鎖在計算機系統中會經常發生,主要滿足死鎖的所有條件死鎖才會發生,缺少任意一個死鎖條件,死鎖都不會發生時。因此,也只有進程在對死鎖進行爭奪時,死鎖現象才有可能發生。死鎖的發生還取決與進程的推進速度和資源的請求順序。
2、進程通訊引起的死鎖
進程相會等待對方所發來的消息,結果導致進程無法前進,從而將會產生死鎖。例如,進程A等待進程B發來消息,而此時進程B又在等待進程C發來消息,進程C又等待進程A發來消息,通過分析可以看出進程A、B、C并沒有對同一資展開競爭,而是由于等待對方所資源而進入了死鎖狀態狀態,此種類型的死鎖在以消息為執行基礎的系統中比較常見。
3、其余類型的死鎖
在設計程序過程中,如果在設計上存在不合理情況,也會引起廣義死鎖。廣義死鎖比較常見的類型就是在程序應用過程中存在數據結構、變量等區域。在使用并發進程時,如果設計的程序存在不合理的情況,往往會錯誤的任務資源被其它程序所占用,彼此都在等待對方使用后,再對資源加以應用,結果發生死鎖。
二、計算機操作系統死鎖問題的解決
人們已經意思到了操作系統中存在死鎖問題的嚴重性,因此要加強對其的分析,需要在充分了解其形成機制和具體內涵后,對其構成的因素進行抑制和破壞,干擾死鎖的形成過程中,降低死鎖的發生幾率。通過對計算機操作系統和死鎖進行詳細分析,進行總結,常用的解決死鎖的策略主要有以下幾方面。
(一)預防死鎖的發生
對死鎖的問題的處理應當以預防為主,通過合理的預防,避免死鎖現象的發生,從避免了不要的損失。通常來說,對死鎖的預防可以從以下幾個方面入手: 1、打破“不剝奪”,請求資源未得到滿足進程要釋放自身所占有的資源,該方法在計算機操作系統中實現起來比較復雜,因此通常在主存和CPU中使用,該方法的主要缺點為需要對資源進行反復的申請與釋放,整個系統的吞吐量將會降低。
2、打破“環路等待”,系統中的資源都擁有自己特定的編號,并且每個進程在運行過程中對資源的請求都需要嚴格依據順序進行。受動態分配資源影響,該分配方式的資源使用率更高。其缺主要為:(1)進程需要的資源如果與資源編號的順序不符,資源的利用率將會下降。(2)資源序號不宜頻繁發生變化。
3、打破“部分分配”,對經常所要求的資源通過一次性分配完成,該方式的主要缺點被進程所占用的資源的使用率很低,資源浪費情況較為嚴重。
(二)死鎖的檢測與恢復
死鎖的檢測與恢復與預防死鎖相比更加主動積極。通過上文的分析,可以發現,死鎖的預防主要是采取一系列的限制策略,避免計算機操作系統在運行過程中出現死鎖,通過限制死鎖發生所必須要存在的條件中的任意一個條件,避免死鎖的發生。
1、死鎖檢測
在計算機操作系統運行過程中,只要存在可能,就向將資源分配給申請資源的進程。操作系統在運行過程中會周期性的對進程的運行情況檢測,查看是否存在“環鏈等待”情況,如果發現該情況也就說明系統在運行過程中出現了死鎖現象,則需要采取相應的措施消除死鎖。
2、死鎖恢復
當死鎖發生并且已經被檢測到時,可以采取以下措施接觸死鎖:(1)重新啟動,將所有死鎖進程全部撤銷,不論是進程是否參與了死鎖,這是解決死鎖最常用的一種方式。(2)終止進程,通過對死鎖進程的終止,將進程所占用的資源全部收回,在具體撤銷過程中,可以分為逐步撤銷死鎖進程和一次性撤銷死鎖進程兩種不同的方式進行。(3)進程回退,回退進程至前一個檢查點,然后再一次啟動進程,此時原來的死鎖現象有可能會再一次發生,但是因為并發處理通常存在不確定性,因此死鎖現象通常不會再次發生。(4)剝奪資源,針對死鎖進程的部分資源和全部資源被一次性或多次額剝奪直到解決死鎖為止,在具體實施剝奪資源過程中,剝奪資源的方式和資源的特性有著一定關系。此外,在資源剝奪過程中還有可能會受到人工干預。
以上死鎖的恢復方法都會損失進程已經完成的開銷,因此撤銷進程的次序上要考慮成本。因此,在程序的具體選擇過程中,應當依據下列優先原則進行:①處理時間最少的進程。②處理運輸工作量少的進程。③剩余時間最長的進程。④獲取分配資源最少的進程。⑤優先級最先的進程。依據上述有限有原則,對死鎖進行恢復,可以使操作系統運行的經濟性達到最優,符合人們的要求。
結束語:
計算機操作系統在運行過程中出現死鎖是避免不了的,因此應當采取合理的方式對死鎖進行處理,使計算機中的資源的利用率能夠得到最大化。通過分析,不難發現計算機操作系統在運行過程中出現死鎖現象需要滿足一定的條件,在對對死鎖問題分析與處理時,需要從這些條件入手,更好的解決死鎖問題。
參考文獻:
[1]張海鵬,李曦. 操作系統中的死鎖檢測[J].計算機系統應用,2013,10:14-18.
[2]張君.操作系統中進程死鎖的探討[J].電腦知識與技術,2012,10:201-203.
[3]于平華,馬連喜,李欣,李曉麗. 計算機操作系統的安全問題與防范對策[J]. 計算機光盤軟件與應用,2014,17:165-167.