計算機(jī)操作系統(tǒng)畢業(yè)論文(2)
計算機(jī)操作系統(tǒng)畢業(yè)論文
計算機(jī)操作系統(tǒng)畢業(yè)論文篇2
淺析計算機(jī)操作系統(tǒng)中死鎖問題
摘 要:死鎖問題是計算機(jī)操作系統(tǒng)故障中一個十分重要的組成部分,其在對計算機(jī)資源使用最優(yōu)化的實現(xiàn)面前無疑是個亟待解決的問題,當(dāng)然,就這種計算機(jī)操作系統(tǒng)中的死鎖問題而言,其絕不是憑空產(chǎn)生的,相反的,其有著自身的一系列必要條件,而這些必要條件和產(chǎn)生原因?qū)嶋H上又可以為相應(yīng)應(yīng)對措施的采取指明突破口。本文主要圍繞著計算機(jī)操作系統(tǒng)中的死鎖問題這一中心主題,從死鎖問題的具體內(nèi)涵出發(fā),通過對其產(chǎn)生原因、必要條件的論述和揭示,最后給出可行的死鎖解決策略。
關(guān)鍵詞:計算機(jī)操作系統(tǒng);死鎖問題;原因;對策
死鎖,顧名思義,就是一個不通的狀態(tài),而當(dāng)期具體到計算機(jī)操作系統(tǒng)之中時,其則表示在一把包括多個進(jìn)程在內(nèi)的進(jìn)程集合體中,每個進(jìn)程都在等待相應(yīng)事件的促發(fā),而這些事件卻又在等待另一類進(jìn)程的完成,因此,這樣一來進(jìn)程之間一直處于一種等待的狀態(tài)之中,無法得到順利地執(zhí)行。當(dāng)然,這種不同的狀態(tài)也就必然導(dǎo)致了資源空間的極大浪費(fèi),不需要占用的資源無法放出,需要的資源又無法得到利用,這對于計算機(jī)操作系統(tǒng)的運(yùn)行來說,無疑是個不好的消息。因此,我們在進(jìn)行實際的計算機(jī)操作系統(tǒng)設(shè)計和運(yùn)行時,總是需要將其產(chǎn)生原因及形成機(jī)制有一個完整的認(rèn)識,并及時地采用相關(guān)措施加以應(yīng)對。
1 計算機(jī)操作系統(tǒng)死鎖問題
我們知道,操作系統(tǒng)是一臺計算機(jī)的靈魂,沒有操作系統(tǒng)計算機(jī)只能是一副空殼,什么功能也無法實現(xiàn)。然而,也正是在這種操作系統(tǒng)重要性的要求之下,人們已經(jīng)對其越來越為依賴了。當(dāng)然,這種依賴性如果碰到計算機(jī)運(yùn)行不暢或者死機(jī)的情況,用戶則會變得異常煩躁,而這種死機(jī)以及卡殼現(xiàn)象的發(fā)生實際上在很大層面上都是死鎖問題導(dǎo)致的。我們都可以清晰認(rèn)識到的是,就一個計算機(jī)系統(tǒng)而言,其所具有的系統(tǒng)資源是相對有限的,而這種資源在多數(shù)情況下又表現(xiàn)出一種獨(dú)占性的特點(diǎn),即許多資源無論在什么時刻都只能供一個進(jìn)程使用,而這一個進(jìn)程所占用的系統(tǒng)資源又是多方面的。雖然如今的計算機(jī)操作系統(tǒng)大部分采用的都是并發(fā)處理以及資源共享,但是其在中央處理器上的執(zhí)行時間是不確定的,這樣就必然導(dǎo)致進(jìn)程在具體執(zhí)行的之后呈現(xiàn)出一定的不確定性。
另外,這些進(jìn)程實際上又存在著一種競爭的關(guān)系,而這樣一來就必然導(dǎo)進(jìn)程發(fā)生死鎖的現(xiàn)象。事實上,就計算機(jī)操作系統(tǒng)的死鎖問題而演變,其實際上就是指一個不通的狀態(tài),而當(dāng)期具體到計算機(jī)操作系統(tǒng)之中時,其則表示在一把包括多個進(jìn)程在內(nèi)的進(jìn)程集合體中,每個進(jìn)程都在等待相應(yīng)的促發(fā),而這些事件卻又在等待另一類進(jìn)程的完成,因此,這樣一來進(jìn)程之間一直處于一種等待的狀態(tài)之中,無法得到順利地執(zhí)行。當(dāng)然,這種不同的狀態(tài)也就必然導(dǎo)致了資源空間的極大浪費(fèi),不需要占用的資源無法放出,需要的資源又無法得到利用。因此,我們可以發(fā)現(xiàn),單個進(jìn)程是不會發(fā)生死鎖問題的,只有兩個或者兩個以上的進(jìn)程出現(xiàn)時,死鎖才能夠產(chǎn)生。
2 計算機(jī)操作系統(tǒng)死鎖問題的形成機(jī)制
事實上,就計算機(jī)操作系統(tǒng)的死鎖問題而言,其雖然是如今給人類操作系統(tǒng)以及各個操作系統(tǒng)版本在實際的使用過程中經(jīng)常出現(xiàn)的一類問題,并對用戶的實際運(yùn)用造成了一定的影響,而這種影響是不能憑空產(chǎn)生的,因為這種操作系統(tǒng)死鎖問題有著一定的的形成機(jī)制。一般來說,造成計算機(jī)操作系統(tǒng)死鎖的原因主要包括有兩個方面,一方面是多個進(jìn)程在系統(tǒng)資源使用上的競爭,即系統(tǒng)中所具有的共享資源并不能滿足相關(guān)進(jìn)程的需要,從而出現(xiàn)爭奪的現(xiàn)象,而這種資源又可以具體分為硬件資源以及包括數(shù)據(jù)在內(nèi)的軟件資源。另一方面則是進(jìn)程在進(jìn)行順序的安排上是非法的,這樣一種非法的順序也就必然導(dǎo)致計算操作系統(tǒng)出現(xiàn)混亂以及卡殼的現(xiàn)象。
一般來說,計算機(jī)操作系統(tǒng)中的資源可以大致分為可剝奪性資源以及不可剝奪性資源,而就前者而言,當(dāng)某一進(jìn)程向系統(tǒng)請求要占用這一資源時,其完全可以為代替原先占用的那個進(jìn)程,但是這種進(jìn)程實際上又需要依賴相應(yīng)的進(jìn)程優(yōu)先實現(xiàn)。即優(yōu)先級高的可以剝奪優(yōu)先級低的,反之則不成立。而包括打印機(jī)以及磁帶機(jī)在內(nèi)的后者則不可能實現(xiàn)這一剝奪行為,而且也正是這種不可剝奪性,使得其死鎖發(fā)生的概率大大增加。當(dāng)然,包括信號量使用不當(dāng)以及程序設(shè)計不合理等在內(nèi)的因素也會直接導(dǎo)致計算機(jī)操作系統(tǒng)死鎖問題的發(fā)生。例如,進(jìn)程與進(jìn)程之間都在互相等待雙方傳來的消息,而這種消息如果使用不當(dāng)則會使得相關(guān)進(jìn)程不能順利地向前推進(jìn),從而陷入一種死鎖狀態(tài)。不過,死鎖若要產(chǎn)生,其就必須就要符合多個條件,即每一個資源只能被一個進(jìn)程使用、進(jìn)程在取得資源后不能強(qiáng)行剝奪以及兩個或兩個以上進(jìn)程之間形成一種循環(huán)式的等待資源關(guān)系。
3 計算機(jī)操作系統(tǒng)死鎖問題的解決策略
當(dāng)然,當(dāng)我們意識到計算機(jī)操作系統(tǒng)中死鎖問題重要性之時,我們總不能聽之任之,讓其一直持續(xù)下去,相反的,我們總會在充分發(fā)現(xiàn)其具體內(nèi)涵及形成機(jī)制之后,對其發(fā)生的構(gòu)成要素進(jìn)行破壞和抑制,干擾其具體形成過程,才能真正意義上將這種死鎖問題的發(fā)生概率以及發(fā)生率及其所造成的影響控制在最小范圍之內(nèi)。筆者在總結(jié)自身工作經(jīng)驗的過程中發(fā)現(xiàn),常用的死鎖問題解決策略主要表現(xiàn)在以下幾個方面:
3.1 死鎖預(yù)防
通常的處理方式有以下三種:(1)打破"不剝奪"條件:強(qiáng)迫那些請求新資源而沒有立即得到滿足的進(jìn)程暫時釋放它已保持的其它資源。這種方法實現(xiàn)起來非常復(fù)雜,通常適用于CPU和主存,缺點(diǎn)是反復(fù)地申請和釋放資源,降低了整個系統(tǒng)的吞吐量;(2)打破"部分分配"條件:對某進(jìn)程所要求的資源一次性地分配完畢缺點(diǎn)是致使系統(tǒng)資源的嚴(yán)重浪費(fèi),可能有進(jìn)程已占有的資源而很少使用;(3)打破"環(huán)路等待"條件:為系統(tǒng)中每類資源規(guī)定一個唯一的序號,而且要求每個進(jìn)程都要嚴(yán)格按照遞增的順序請求資源。它基于動態(tài)分配的思想,所以資源利用率比前面一種方法要高。但同時也有其缺點(diǎn):一是各資源的序號不宜經(jīng)常變動,二是如果進(jìn)程實際需要的資源順序與排定的資源序號不同時,也會造成資源的浪費(fèi)。
3.2 死鎖檢測與恢復(fù)
死鎖檢測與恢復(fù)與死鎖預(yù)防相比,具有積極主動的一面。死鎖預(yù)防是通過一定的限制約束策略,來防止造成死鎖產(chǎn)生的四個沖要條件中的任一個的出現(xiàn)來實現(xiàn)避免死鎖的。而死鎖的檢測是:只要有可能,就向申請資源的進(jìn)程進(jìn)行分配資源。操作系統(tǒng)會周期性的去檢測是否存在“環(huán)鏈等待”的出現(xiàn)。如果發(fā)現(xiàn)存在“環(huán)鏈等待”,即出現(xiàn)了死鎖,則會采取一定的措施來消除死鎖。常用的實施方法是撤消或掛起一些進(jìn)程,以便回收一些資源,再將這些資源分配給已處于阻塞狀態(tài)的進(jìn)程,使之轉(zhuǎn)為就緒狀態(tài)以繼續(xù)運(yùn)行。需要特別說明的是:死鎖檢測與恢復(fù)并不能防止死鎖的發(fā)生,它只是確定系統(tǒng)中是否存在死鎖,然后再予以恢復(fù)。
4 結(jié)束語
經(jīng)過上文的分析和介紹,我們對計算機(jī)操作系統(tǒng)死鎖問題的內(nèi)涵、形成機(jī)制、產(chǎn)生條件以及常用的解決策略等幾個方面的內(nèi)容有了一定的了解,從中我們可以深刻地認(rèn)識到,就這種極大浪費(fèi)系統(tǒng)資源并降低系統(tǒng)整體運(yùn)行效率的死鎖問題來說,其能否在計算機(jī)操作系統(tǒng)的實際運(yùn)行中得到完善的解決顯得尤為重要和必要。當(dāng)然,正如我們在上文中說的那樣,由于計算機(jī)操作系統(tǒng)自身、因素以及外在的人為操作因素等方面因素的影響,計算機(jī)操作系統(tǒng)的死鎖問題經(jīng)常發(fā)生,而這種發(fā)生實際上又是在多個必要條件均出現(xiàn)時才會出現(xiàn),這樣一來,我們便能夠及時地把握這種形成機(jī)制,及時地采用相關(guān)的解決策略,從而完善地解決這一問題。
參考文獻(xiàn):
[1]毛布,謝汶.一種基于博弈論的死鎖檢測機(jī)制研究[J].成都電子機(jī)械高等??茖W(xué)校學(xué)報,2010(04).