科技論文模板_第1頁(yè)
科技論文模板_第2頁(yè)
科技論文模板_第3頁(yè)
科技論文模板_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《操作系統(tǒng)原理》科技論文題目:淺談死鎖問題院(系):軟件學(xué)院專業(yè):學(xué)生姓名:學(xué)號(hào):指導(dǎo)教師:軟件學(xué)院201淺談死鎖問題于文奇(遼寧工程技術(shù)大學(xué)軟件學(xué)院軟件工程11-02遼寧葫蘆島125105)【摘要】:自從操作系統(tǒng)中引入多道程序設(shè)計(jì)技術(shù)以后,程序的并發(fā)性所引起的死鎖問題便成了操作系統(tǒng)中我們必須面對(duì)和解決的一個(gè)難題。本文旨在探討操作系統(tǒng)中死鎖的形成原因及其有效地解決辦法,通過實(shí)例和由淺入深的方式對(duì)死鎖問題進(jìn)行了全面而詳細(xì)的探討,由此我們知道,死鎖問題是無法去完全避免和防范的,我們只能盡可能的去完善操作系統(tǒng)中的各項(xiàng)設(shè)計(jì),從而在最大程度上去減少死鎖的發(fā)生。【關(guān)鍵字】:死鎖;死鎖產(chǎn)生的原因;死鎖產(chǎn)生的條件;死鎖的避免;銀行家算法引言多道程序設(shè)計(jì)技術(shù)在吉大的提高了系統(tǒng)資源的利用率同時(shí),也產(chǎn)生了諸如死鎖這樣的棘手問題,著給操作系統(tǒng)的設(shè)計(jì)帶來了新的挑戰(zhàn)。能否有效的解決死鎖問題已經(jīng)成為了操作系統(tǒng)設(shè)計(jì)中的一個(gè)重要的技術(shù)指標(biāo)。死鎖的概述死鎖是進(jìn)程死鎖的簡(jiǎn)稱,是由Dijkstra于1965年研究銀行家算法時(shí)首先提出的。所謂死鎖,是指多個(gè)進(jìn)程因?yàn)楦?jìng)爭(zhēng)資源而造成的一種僵局,若無外力推進(jìn)下去,此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)程成為死鎖進(jìn)程。由于資源占用是互斥的,當(dāng)摸個(gè)進(jìn)程提出申請(qǐng)資源之后,似的進(jìn)程在無外力作用下永遠(yuǎn)分配不到必須的資源二無法繼續(xù)進(jìn)行,這就產(chǎn)生了一種特殊現(xiàn)象死鎖。計(jì)算機(jī)系統(tǒng)中,如果系統(tǒng)的資源分配策略不當(dāng),更常見的可能是程序員寫的程序有錯(cuò)誤等,則會(huì)導(dǎo)致進(jìn)程因競(jìng)爭(zhēng)資源不當(dāng)而產(chǎn)生死鎖的現(xiàn)象。在計(jì)算機(jī)系統(tǒng)中,產(chǎn)生死鎖的原因可以分為兩點(diǎn):(1)并發(fā)進(jìn)程對(duì)臨界資源的競(jìng)爭(zhēng)。在進(jìn)程并發(fā)環(huán)境下,進(jìn)程需要獨(dú)占某個(gè)系統(tǒng)資源,而這些資源又被進(jìn)程所共享,因此,必然引起進(jìn)程之間對(duì)資源的競(jìng)爭(zhēng)。(2)并發(fā)進(jìn)程推進(jìn)順序不當(dāng)。以哲學(xué)家進(jìn)餐問題為例,有5個(gè)哲學(xué)家同時(shí)圍坐在圓桌上進(jìn)餐,每個(gè)哲學(xué)家右手邊放一把叉子,完成就餐需要用兩把叉子。如果5個(gè)哲學(xué)家同時(shí)去拿叉子,則每個(gè)哲學(xué)家只能拿到一把,然而所有哲學(xué)家都在等待另一把得不到的叉子,因此無法完成就餐。這就發(fā)生了死鎖現(xiàn)象。3、死鎖的處理死鎖現(xiàn)象會(huì)導(dǎo)致計(jì)算機(jī)系統(tǒng)無法正常運(yùn)行,我們必須對(duì)死鎖進(jìn)行處理以排除死鎖帶來的不便。處理死鎖歸結(jié)起來有四種方法:(1)預(yù)防死鎖。通過設(shè)置某些限制條件,去破壞產(chǎn)生死鎖的4個(gè)必要條件中的一個(gè)或幾個(gè)條件,來防止發(fā)生死鎖。(2)避免死鎖。是指在資源的動(dòng)態(tài)分配過程中,用某種方法防止系統(tǒng)進(jìn)入不安全狀態(tài)從而避免死鎖的發(fā)生。(3)檢測(cè)死鎖。這種方法允許系統(tǒng)在運(yùn)行過程中發(fā)生死鎖,但可通過系統(tǒng)設(shè)置的檢測(cè)機(jī)構(gòu),及時(shí)地檢測(cè)出死鎖的發(fā)生,并采取適當(dāng)措施,從系統(tǒng)中將已發(fā)生的死鎖清除掉。(4)解除死鎖。這是檢測(cè)死鎖的最終目的。在已檢測(cè)到死鎖的基礎(chǔ)上,采取某種針對(duì)死鎖的措施,將死鎖從系統(tǒng)中排除掉。4、死鎖的預(yù)防(1)摒棄“請(qǐng)求和保持”條件為了摒棄這一條件,系統(tǒng)要求所有進(jìn)程都一次性地申請(qǐng)其所需的全部資源,若系統(tǒng)擁有足夠的資源分配給進(jìn)程時(shí),便把進(jìn)程所需資源分配給它,這樣,該進(jìn)程在整個(gè)運(yùn)行期間,便不會(huì)再提出資源請(qǐng)求,從而摒棄了請(qǐng)求條件,但只要有一種資源的要求不能滿足,則已有的其他資源也全部不分配給該進(jìn)程,讓進(jìn)程等待。由于在等待期間的進(jìn)程不占有任何資源,因此摒棄了保持條件,從而可以避免發(fā)生死鎖。這種方法的優(yōu)點(diǎn)是簡(jiǎn)單,易于實(shí)現(xiàn),且很安全;但缺點(diǎn)也極其明顯:資源嚴(yán)重浪費(fèi),一個(gè)進(jìn)程一次獲得共所需的全部資源,嚴(yán)重地惡化了系統(tǒng)的資源利用率;進(jìn)程推遲運(yùn)行,僅當(dāng)進(jìn)程獲得其所需全部資源后,方能開始運(yùn)行,但可能有某些資源長(zhǎng)期被其它進(jìn)程占用,致使進(jìn)程遲遲不能運(yùn)行。(2)摒棄“不剝奪”條件該策略規(guī)定,一個(gè)已保持了某些資源的進(jìn)程,若新的資源要求不能立即得到滿足,它必須釋放已保持的所有資源,以后需要時(shí)再重新申請(qǐng)。這意味著,進(jìn)程已占有資源在運(yùn)行過程中可被剝奪,從而摒棄了“不剝奪條件”。這種策略實(shí)現(xiàn)起來比較復(fù)雜,且要付出很大代價(jià)。因?yàn)橐粋€(gè)資源在使用一段時(shí)間后被釋放,可能會(huì)造成前階段工作的失效。此外,該策略還可能由于反復(fù)地申請(qǐng)和釋放資源,使進(jìn)程的執(zhí)行無限推遲。這不僅延長(zhǎng)了進(jìn)程的周轉(zhuǎn)時(shí)間,也增加了系統(tǒng)開銷。(3)摒棄“環(huán)路等待”條件該策略規(guī)定,系統(tǒng)將所有的資源按類型進(jìn)行線性排隊(duì),并賦予不同的序號(hào)。例如,令輸入機(jī)的序號(hào)為1,打印機(jī)的序號(hào)為2,穿孔機(jī)為3,磁帶機(jī)為4,磁盤為5。所有進(jìn)程對(duì)資源請(qǐng)求,必須嚴(yán)格按資源序號(hào)遞增的順序提出,如果申請(qǐng)的資源號(hào)小于已占用的資源序號(hào),則它必須釋放出序號(hào)小于申請(qǐng)序號(hào)的已占用資源??梢宰C明系統(tǒng)在任何情況下,不可能進(jìn)入循環(huán)等待狀態(tài)(用反證法),因而摒棄了“環(huán)路等待”條件。在采用這種策略時(shí),由于總有一個(gè)進(jìn)程占據(jù)了較高序號(hào)的資源,它繼續(xù)請(qǐng)求的資源必然是空閑的,因此進(jìn)程可以一直向前推進(jìn)。該策略較之前兩種策略,在資源利用率、系統(tǒng)吞吐量上都有顯蓍提高,但也存在不述嚴(yán)重問題:(1)為系統(tǒng)中各種資源類型分配的序號(hào),必須相對(duì)穩(wěn)定,這就限制了新設(shè)備類型的增加;(2)盡管在為資源分配序號(hào)時(shí),已考慮到大多數(shù)作業(yè)實(shí)際使用這些資源的順序,但也經(jīng)常會(huì)發(fā)生作業(yè)使用資源的順序與系統(tǒng)規(guī)定順序不同的情況,造成資源的浪費(fèi)。死鎖的預(yù)防很重要,雖然上面提到的預(yù)防措施都有自身的缺點(diǎn)和局限性,但是也都有各自的優(yōu)點(diǎn),我們不僅要從理論上了解這些預(yù)防措施,也要在實(shí)際應(yīng)用中靈活的運(yùn)用,要根據(jù)死鎖產(chǎn)生的原因選擇適當(dāng)?shù)姆椒ń鉀Q這些死鎖問題,避免造成更大的麻煩和損失5、死鎖的避免在多數(shù)情況下,用死鎖預(yù)防的策略來防止死鎖發(fā)生時(shí),無論是間接的死鎖預(yù)防還是直接的死鎖預(yù)防都會(huì)導(dǎo)致低效的資源使用和低效的進(jìn)程執(zhí)行。死鎖避免則是另一種有效的防止死鎖的方法,它需要知道將來的進(jìn)程資源請(qǐng)求的情況。下面是兩種死鎖避免方法:(1)拒絕啟動(dòng)進(jìn)程法(2)銀行家算法該算法的核心是保證操作系統(tǒng)的安全狀態(tài),首先通過實(shí)例來看一下什么是安全狀態(tài)。例如進(jìn)程P需要申請(qǐng)6個(gè)資源(假設(shè)是同一種),已經(jīng)申請(qǐng)了4個(gè)資源,還差2個(gè)資源。若這個(gè)時(shí)候操作系統(tǒng)還剩下1個(gè)資源,顯然,這個(gè)時(shí)候操作系統(tǒng)無論如何都不能再分配資源給進(jìn)程P了,因?yàn)榧词谷拷o了他也不夠,還很可能會(huì)造成死鎖。若這個(gè)時(shí)候操作系統(tǒng)還有2個(gè)資源,無論P(yáng)這一次申請(qǐng)幾個(gè)資源,操作系統(tǒng)都可以滿足他,因?yàn)椴僮飨到y(tǒng)可以保證P不死鎖,只要他不把剩余的資源分配給別人,進(jìn)程P就一定能順利完成任務(wù)。銀行家算法可行是因?yàn)椴还苋魏螘r(shí)候,操作系統(tǒng)分配資源的時(shí)候都可以保證當(dāng)前接受資源的進(jìn)程不會(huì)陷入死鎖,因?yàn)椴僮飨到y(tǒng)總是可以滿足該進(jìn)程需要的資源的。假設(shè)有n個(gè)進(jìn)程{p1,p2,p3,…pn},最后一個(gè)分配到資源的是pi,pi還需要mi個(gè)資源,假設(shè)此時(shí)操作系統(tǒng)還有m個(gè)資源剩余,那么很顯然m>=mi?;蚣僭O(shè)pj還需要mj個(gè)資源,同理可知m>=mj,也就是說在所有的進(jìn)程中,還需要的資源數(shù)總是有小于m的,這樣就可以保證資源數(shù)永遠(yuǎn)不會(huì)為0,即使可能有為0的暫時(shí)性情況發(fā)生。另外,還需要保證資源數(shù)不會(huì)減少,而且所有已經(jīng)分配到資源的進(jìn)程總有一天會(huì)歸還它所擁有的資源,根據(jù)操作系統(tǒng)再分配的時(shí)候的狀態(tài)即可判定??梢钥闯?,銀行家算法從避免死鎖的角度上說是非常有效的,但是,從某種意義上說,它缺乏實(shí)用價(jià)值,因?yàn)楹苌儆羞M(jìn)程能夠在運(yùn)行前就知道其所需資源的最大值,而且進(jìn)程數(shù)也不是固定的,往往在不斷地變化(如新用戶登錄或退出),況且原本可用的資源也可能突然間變成不可用(如磁帶機(jī)可能壞掉)。因此,在實(shí)際中,如果有,也只有極少的系統(tǒng)使用銀行家算法來避免死鎖。另外需要指出的是,不安全狀態(tài)并不一定引起死鎖,因?yàn)榭蛻舨⒉灰欢ㄉ暾?qǐng)其最大貸款額度,但銀行家不敢抱有這種僥幸心理。6、死鎖的檢測(cè)與恢復(fù):死鎖檢測(cè)與恢復(fù)與死鎖預(yù)防相比,具有積極主動(dòng)的一面。死鎖預(yù)防是通過一定的限制約束策略,來防止造成死鎖產(chǎn)生的四個(gè)沖要條件中的任一個(gè)的出現(xiàn)來實(shí)現(xiàn)避免死鎖的。而死鎖的檢測(cè)是:只要有可能,就向申請(qǐng)資源的進(jìn)程進(jìn)行分配資源。操作系統(tǒng)會(huì)周期性的去檢測(cè)是否存在“環(huán)鏈等待”的出現(xiàn)。如果發(fā)現(xiàn)存在“環(huán)鏈等待”,即出現(xiàn)了死鎖,則會(huì)采取一定的措施來消除死鎖。常用的實(shí)施方法是撤消或掛起一些進(jìn)程,以便回收一些資源,再將這些資源分配給已處于阻塞狀態(tài)的進(jìn)程,使之轉(zhuǎn)為就緒狀態(tài)以繼續(xù)運(yùn)行。需要特別說明的是:死鎖檢測(cè)與恢復(fù)并不能防止死鎖的發(fā)生,它只是確定系統(tǒng)中是否存在死鎖,然后再予以恢復(fù)。7、總結(jié)死鎖是由于各進(jìn)程對(duì)系統(tǒng)中有限資源的競(jìng)爭(zhēng)而引起的進(jìn)程的阻塞。我們可以通過死鎖預(yù)防、死鎖避免以及死鎖檢測(cè)與恢復(fù)三種方法來處理死鎖,這幾種方法的共同目標(biāo)便是消除進(jìn)程的阻塞。由于死鎖是一種隨機(jī)性和不確定性很強(qiáng)的現(xiàn)象,我們無法去完全消除它,對(duì)它的各種處理方法也都是以犧牲一定的系統(tǒng)效率為代價(jià)的,所以,我們還有待于探索和尋求一些更有效的辦法來解決它。合理的分配計(jì)算機(jī)資源是操作系統(tǒng)主要工作之一,有效的處理死鎖是其重要的組成部分。然而由于計(jì)算機(jī)系統(tǒng)的復(fù)雜性,死鎖問題至今仍然難以完全解決,現(xiàn)有的各種解決方法都是以不同程度在犧牲系統(tǒng)效率為代價(jià)的??傊?,在這里討論死鎖問題,希望本文的討論有利于讀者對(duì)死鎖問題的深刻理解,并深入研究解決死鎖問題的方法?!緟⒖嘉墨I(xiàn)】[1]湯小丹等.計(jì)算機(jī)操作系統(tǒng).西安電子科技大學(xué)出版社,2007

[2]張堯?qū)W,史美林.計(jì)算機(jī)操作系統(tǒng)教程[M].北京:清華大學(xué)出版社,2000

[3]甄志龍,于遠(yuǎn)誠(chéng).OS中死鎖問題的狀態(tài)模型探討[J].通化師范學(xué)院學(xué)報(bào),2005,26:23-25

TalkingaboutthedeadlockproblemYuWenQi(Liaoning[Abstract]:Sincetheintroductionoftheoperatingsystemafterthemulti-channelprogrammingtechniques,proceduresconcurrencydeadlockcausedbytheoperatingsystemhasbecome,andwemustfaceadifficultproblemtosolve.Thispaperaimstoexplorethecausesoftheoperatingsystemandeffectivelydeadlocksolutionsthroughexamplesandprogressiveapproachtothewaythedeadlockacomprehensiveanddetaileddiscussion,whichweknowisnotgoingdeadlockcompletelyavoidedandprevention,wecanonlygoasfaraspossibletheimprovementoft

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論