?

計算機操作系統中死鎖問題研究

2016-08-19 19:07黃正鵬
電腦知識與技術 2016年20期
關鍵詞:操作系統計算機問題

黃正鵬

摘要:死鎖問題是計算機操作系統中重要的內容,本文從死鎖概念、產生的原因以及死鎖的預防、檢測、處理等幾個方面分別進行討論,較為全面的探討了常見的操作系統中死鎖問題。

關鍵詞:計算機;操作系統;死鎖;問題

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)20-0034-02

1 計算機操作系統中死鎖簡介

計算機操作系統是管理計算機各種軟硬件資源的軟件系統,其中死鎖問題是操作系統必須處理的一種資源分配問題。通常而言計算機操作系統死鎖指的是,由于可分配資源的有限性或者彼此進程通信而引起的一種在多個進程之間產生的阻塞現象。計算機操作系統如果不對其進行強制性的資源回收或者資源重新分配,這種阻塞現象將一直存在下去,影響操作系統進行正常的資源管理。由此可見,計算機操作系統中的死鎖問題必須發生多個進程之間,在單進程系統中必然不會產生死鎖問題。簡言之,死鎖問題,就是一種資源等待與資源釋放之間產生的矛盾,由于存在系統資源的持續占用必然引起資源空間嚴重浪費,常見的用戶等待以及死機現象都可能是由于死鎖問題導致的,因此處理好死鎖問題無論從計算操作系統資源有序合理分配方面還是良好用戶體驗方面都是必須解決重要問題。下文則具體從死鎖產生原因、產生條件、死鎖避免手段以及死鎖解決措施等方面進行探討。

2 計算機操作系統死鎖產生原因分析

計算機操作系統產生死鎖的原因主要體現在兩個方面,首先,是由于計算機系統資源數量有限性的原因造成的,如果任何進程所需的資源都能得到滿足,那么肯定不會出現死鎖的現象,當然讓計算機系統資源無限制供給是不現實的;其次,產生死鎖的原因則是由于系統資源在分配策略上出現問題,而引發的死鎖問題,由于分配環節以及進程推進過程中產生了進程間的循環等待,不同進程之間都占據了其他進程所需要的系統資源,而所占用的資源又不進行釋放,必然引起死鎖現象的出現。

通過分析計算機死鎖產生原因可以看出發生死鎖必然產生四個方面的必要條件,概括如下:第一是資源的互斥性(Mutual exclusion),即資源在任意時刻只能由一個進程所占用,而不能被多個進程所共享;第二是請求與保持條件(Hold and wait),進程因請求資源而被陷入阻塞狀況時,可以不釋放已獲得的資源;第三是不剝奪條件(No pre-emption),進程已經獲得的資源在使用完成之前不可以被剝奪;第四是循環等待條件(Circular wait),若干個進程之間形成了一個資源等待環。上述四個條件是操作系統產生死鎖的必要條件,只要其中一個條件不被滿足,就不會發生死鎖。

通過對計算機操作系統死鎖產生原因進行分析,那么在操作系統設計、進程調度、資源分配時,如何有效的破壞其產生條件或者在資源分配時進行有效的規避,就能盡可能地減少死鎖現象的發生;除此之外,通過一定的死鎖檢測手段,在操作系統進行實時分析資源分配時可以進行動態的判斷,對于有可能發生死鎖的資源分配不予以分配。

3 計算機操作系統中死鎖預防手段

1) 計算機操作系統中死鎖預防處理分析

正如上文所述,死鎖產生有四個必要條件,除去第一個互斥性條件,只要破壞任意其他三個產生條件即可避免死鎖現象的出現。因此,常見的預防手段也是按照這樣的思路進行預防處理的,具體而言:首先,即破壞其請求和保持條件,可以一次性的將進程所需要資源進行分配,來避免死鎖情況的出現,這種做法最大的缺點在于其系統資源浪費情況比較嚴重;其次,是破壞資源“不剝奪條件”,通過一定的設計(如優先級手段),使得占有資源的進程可以釋放其已經占有的資源,先供其他進程使用,在其使用完成以后,原資源占有進程可以再通過向CPU重新申請來獲得資源,這種預防處理方式在系統設計實現時復雜度較高;再次,即通過破壞“環路等待條件”實現死鎖避免,通過對系統資源進行編號標識,各個進程對資源申請按照一定的次序進行,通過這樣的動態資源分配來破除環路的形成,以此達到死鎖情況的避免,相對而言這是一種較為高效的死鎖預防處理手段。

2)預防死鎖代表性的算法——銀行家算法

Dijkstra E.W(中文名艾茲格·迪杰斯特拉)于1965年提出來的銀行家算法是經典的死鎖避免算法。該算法是基于銀行貸款業務產生的,具體思路是認為銀行可供貸款的總錢數是有限的,任何一個客戶申請貸款時需要提供其最大貸款額度,并且應保障按時歸還,銀行家在貸出欠款時不能超過自身最大的錢數,并且盡量滿足更多客戶的貸款需求。這里的銀行家與計算機操作系統對于資源的掌握是一致的,而每個進程對于資源的請求情況則與客戶貸款的情況較為類似,當某個進程向操作系統申請資源時,操作系統需要分析該進程最大的資源需求量,當滿足其要求時進行分配,否則將延遲分配;當進程再次向操作系統申請資源分配時,系統會對資源的申請量與該類資源的剩余量的關系,一旦超出則繼續延遲分配。很顯然的,銀行家算法能夠實現系統的資源分配時出現進程間的死鎖現象。銀行家算法是經典的死鎖預防算法,是計算機操作系統內容學習過程中,必然會遇到的內容。

4 解決計算機操作系統中死鎖問題的措施

當系統中出現了死鎖,一般通過死鎖檢測以及死鎖排除兩個步驟進行死鎖問題的解決。死鎖檢測思路主要是通過兩個容器完成的,其中一個是用來一個容器是用來保存各個進程正在請求的資源,另一個容器則是保存各個進程中已經占有的資源,具體的檢測手段是通過遍歷正在請求資源的進程的請求資源是否已經被其他進程所占有,反方向再遍歷一次,即可發現系統中是否出現了死鎖問題。除了這種直接的進程資源方式的檢測以外,還可以通過側面的系統效率檢測、進程等待時檢測等手段來實現死鎖問題的發現。相對而言,計算機操作系統對于進程死鎖檢測的手段實現起來還是相對比較容易的。

一旦發現了操作系統中出現了死鎖的現象,那么處理死鎖問題則成為了下一步應當解決的問題。處理死鎖問題的方法,主要有四種方式,其一,通過撤銷所有死鎖進程來實現;其二通過依次撤銷死鎖進程,每撤銷一個后進行死鎖檢測,直至死鎖不存在為止;其三,通過釋放死鎖程序所占資源,來實現死鎖問題的解決;最后,則是通過強制性滿足被等待進程的一方資源請求來解除死鎖??傊?,死鎖處理方式是圍繞資源滿足或者資源剝奪的方式進行的。

除了上述,操作系統中資源分配的死鎖問題以外,計算機網絡中也存在死鎖情況,最為常見的就是“存儲轉發死鎖”,另外數據庫系統中也存在死鎖的情況,其解決措施是通過事務的手段來進行的,在此就不具體討論了。

5 小結

計算機操作系統中死鎖問題究其本質是由于資源有限性以及資源分配策略問題引發的一種存在于多個進程之間無限阻塞的現象。本文以死鎖的概念為切入點,分析了操作系統中死鎖產生的原因以及必要條件,并以此給出了解決死鎖問題的常見思路,即通過“死鎖避免——死鎖檢測——死鎖處理”這種死鎖處理流程來有效解決死鎖問題。

參考文獻:

[1] 張偉杰. 計算機操作系統中死鎖問題研究[J].計算機光盤軟件與應用,2014(18):81+83.

[2] 齊鵬. 基于未來鎖集的死鎖規避技術研究[D].哈爾濱工業大學,2015.

[3] 徐本勝. 智能空間中的沖突問題和死鎖問題研究[D].北京工業大學,2015.

[4] 周南鳳. 探究計算機操作系統中死鎖問題[J].信息與電腦(理論版),2015(13):69-70.

猜你喜歡
操作系統計算機問題
計算機操作系統
基于計算機自然語言處理的機器翻譯技術應用與簡介
信息系統審計中計算機審計的應用
演員出“問題”,電影怎么辦(聊天室)
韓媒稱中俄冷對朝鮮“問題”貨船
“問題”干部“回爐”再造
Fresnel衍射的計算機模擬演示
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合