linux中產(chǎn)生死鎖的原因是什么

這篇“l(fā)inux中產(chǎn)生死鎖的原因是什么”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“l(fā)inux中產(chǎn)生死鎖的原因是什么”文章吧。

成都創(chuàng)新互聯(lián)自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊(duì)及專業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。

linux中產(chǎn)生死鎖的原因有:1、競(jìng)爭(zhēng)不可搶占資源而引起死鎖;2、競(jìng)爭(zhēng)可消耗資源而引起死鎖 ;3、進(jìn)程推進(jìn)順序不當(dāng)而引起死鎖(進(jìn)程運(yùn)行過程中,請(qǐng)求和釋放資源的順序不當(dāng),而導(dǎo)致進(jìn)程死鎖)。

本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。

一、死鎖的概念:

如果一組進(jìn)程(或線程)中的每一個(gè)進(jìn)程(或線程)都在等待僅由該組進(jìn)程中的其他進(jìn)程(或線程)才能引發(fā)的事件,那么該組進(jìn)程(或線程)是死鎖的(Deadlock)。

二、產(chǎn)生死鎖的原因 :

(一)競(jìng)爭(zhēng)不可搶占資源引起死鎖

如:共享文件時(shí)引起死鎖

系統(tǒng)中擁有兩個(gè)進(jìn)程P1和P2,它們都準(zhǔn)備寫兩個(gè)文件F1和F2。而這兩者都屬于可重用和不可搶占性資源。如果進(jìn)程P1在打開F1的同時(shí),P2進(jìn)程打開F2文件,當(dāng)P1想打開F2時(shí)由于F2已結(jié)被占用而阻塞,當(dāng)P2想打開1時(shí)由于F1已結(jié)被占用而阻塞,此時(shí)就會(huì)無線等待下去,形成死鎖。

linux中產(chǎn)生死鎖的原因是什么

(二)競(jìng)爭(zhēng)可消耗資源引起死鎖

如:進(jìn)程通信時(shí)引起死鎖

系統(tǒng)中擁有三個(gè)進(jìn)程P1、P2和P3,m1、m2、m3是3可消耗資源。進(jìn)程P1一方面產(chǎn)生消息m1,將其發(fā)送給P2,另一方面要從P3接收消息m3。而進(jìn)程P2一方面產(chǎn)生消息m2,將其發(fā)送給P3,另一方面要從P1接收消息m1。類似的,進(jìn)程P3一方面產(chǎn)生消息m3,將其發(fā)送給P1,另一方面要從P2接收消息m2。

如果三個(gè)進(jìn)程都先發(fā)送自己產(chǎn)生的消息后接收別人發(fā)來的消息,則可以順利的運(yùn)行下去不會(huì)產(chǎn)生死鎖,但要是三個(gè)進(jìn)程都先接收別人的消息而不產(chǎn)生消息則會(huì)永遠(yuǎn)等待下去,產(chǎn)生死鎖。

linux中產(chǎn)生死鎖的原因是什么

(三)進(jìn)程推進(jìn)順序不當(dāng)引起死鎖:進(jìn)程運(yùn)行過程中,請(qǐng)求和釋放資源的順序不當(dāng),而導(dǎo)致進(jìn)程死鎖。

上圖中,如果按曲線1的順序推進(jìn),兩個(gè)進(jìn)程可順利完成;如果按曲線2的順序推進(jìn),兩個(gè)進(jìn)程可順利完成;如果按曲線3的順序推進(jìn),兩個(gè)進(jìn)程可順利完成;如果按曲線4的順序推進(jìn),兩個(gè)進(jìn)程將進(jìn)入不安全區(qū)D中,此時(shí)P1保持了資源R1,P2保持了資源R2,系統(tǒng)處于不安全狀態(tài),如果繼續(xù)向前推進(jìn),則可能產(chǎn)生死鎖。

linux中產(chǎn)生死鎖的原因是什么

三、產(chǎn)生死鎖的必要條件

(1)互斥條件。進(jìn)程(線程)所申請(qǐng)的資源在一段時(shí)間內(nèi)只能被一個(gè)進(jìn)程(線程)鎖占用。

(2)請(qǐng)求和保持條件。進(jìn)程(線程)已經(jīng)占有至少一個(gè)資源,但又提出了新的資源請(qǐng)求,而該資源卻被其他進(jìn)程(線程)占用。

(3)不可搶占條件(不可剝奪條件)。進(jìn)程(線程)已獲得的資源在未使用完之前不能被搶占。

(4)循環(huán)等待條件(環(huán)路等待條件)。在發(fā)生死鎖時(shí),必然存在一個(gè)進(jìn)程(線程)—-資源的循環(huán)鏈。

四、死鎖的避免、預(yù)防和解決方法

死鎖避免是在系統(tǒng)運(yùn)行過程中注意避免死鎖最終的發(fā)生。

死鎖產(chǎn)生的前三個(gè)條件是死鎖產(chǎn)生的必要條件,也就是說要產(chǎn)生死鎖必須具備的條件,而不是存在這3個(gè)條件就一定產(chǎn)生死鎖,那么只要在邏輯上回避了第四個(gè)條件就可以避免死鎖。

死鎖避免的基本思想:系統(tǒng)對(duì)進(jìn)程發(fā)出的每一個(gè)系統(tǒng)能滿足的資源申請(qǐng)進(jìn)行動(dòng)態(tài)檢查,并根據(jù)檢查結(jié)果決定是否分配資源;如果分配后系統(tǒng)有可能發(fā)生死鎖,則不予分配;否則予以分配。

(一)常用的避免死鎖的方法:

1、有序分配資源

2、銀行家算法,基本思想:在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。

(二)死鎖的預(yù)防:

1、破壞“不可剝奪”條件:當(dāng)一個(gè)進(jìn)程占有一個(gè)資源后又申請(qǐng)一個(gè)資源而無法滿足時(shí),則退出原占有的資源。
該策略實(shí)現(xiàn)起來復(fù)雜且代價(jià)大。因?yàn)橐粋€(gè)資源在使用一段時(shí)間后被強(qiáng)行剝奪,會(huì)造成前階段工作失效。
2、破壞“請(qǐng)求和保持”條件:采用靜態(tài)的一次性資源分配策略,即進(jìn)程運(yùn)行前申請(qǐng)全部資源,滿足則運(yùn)行,不然就等待,這樣就不會(huì)占有且申請(qǐng)。
3、破壞“互斥”條件:該策略是幾乎不可能的,因?yàn)橘Y源的互斥性是由其自身的性質(zhì)決定的。
4、破壞“循環(huán)等待”條件:將系統(tǒng)中所有資源順序編號(hào),一般原則是,較為稀缺、稀少的資源的編號(hào)較大。進(jìn)程申請(qǐng)資源時(shí),必須嚴(yán)格按照資源編號(hào)的順序進(jìn)行,否則系統(tǒng)不予分配。即一個(gè)進(jìn)程只有得到編號(hào)較小的資源時(shí),才能申請(qǐng)編號(hào)較大的資源;釋放資源時(shí),應(yīng)按編號(hào)遞減的次序進(jìn)行。

(三)解決死鎖的方法:

目前有兩種方法,一是不讓死鎖發(fā)生;二是可以允許死鎖發(fā)生,發(fā)生后再加以解決。

具體有以下4種方法:

1、預(yù)防死鎖。通過設(shè)置某些嚴(yán)格限制破壞死鎖產(chǎn)生的條件防止死鎖發(fā)生,但該方法會(huì)導(dǎo)致系統(tǒng)資源利用率過低

2、避免死鎖。在資源動(dòng)態(tài)分配過程中,采用某種方法防止系統(tǒng)進(jìn)入不安全狀態(tài),避免發(fā)生死鎖。該方法以較弱的限制條件為代價(jià),可獲得較高的資源利用。

3、檢測(cè)死鎖。允許系統(tǒng)運(yùn)行過程中產(chǎn)生死鎖,通過在系統(tǒng)中設(shè)置檢測(cè)機(jī)構(gòu),及時(shí)檢測(cè)出死鎖是否真的發(fā)生,并能精確的確定與死鎖有關(guān)的進(jìn)程與資源,然后采取措施解除死鎖。

4、解除死鎖。這是與檢測(cè)死鎖相配套的措施,用于將進(jìn)程從死鎖狀態(tài)下解脫出來。

以上就是關(guān)于“l(fā)inux中產(chǎn)生死鎖的原因是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱:linux中產(chǎn)生死鎖的原因是什么
瀏覽路徑:http://muchs.cn/article24/jogjce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站導(dǎo)航定制開發(fā)、品牌網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)