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