系統(tǒng)進程死鎖是什么原因如何讓進程不死鎖
發(fā)布時間:2014-05-27 11:16:16 作者:佚名
我要評論
申請的資源被其他等待進程占有,那么該等待進程有可能永遠處于等待狀態(tài)而無法改變該狀態(tài),這便是所謂的系統(tǒng)進程死鎖,下面為大家介紹幾種讓進程不死鎖的方法
如果我們的電腦有多個程序在同時進行,肯定會出現(xiàn)競爭得到一定數(shù)據(jù)資源的情況,而此時資源如果不夠用便會進入等待的狀態(tài)。果所申請的資源被其他等待進程占有,那么該等待進程有可能永遠處于等待狀態(tài)而無法改變該狀態(tài),這便是所謂的系統(tǒng)進程死鎖。那么,有什么辦法能讓系統(tǒng)進程不死鎖嗎?
其實,想要系統(tǒng)不死鎖的根本辦法便是要將產(chǎn)生死鎖的4個必要條件消失,下面一起來分析下該如何破壞這些條件吧。
破壞互斥條件
破壞互斥條件即允許多個進程同時訪問資源。由于多數(shù)資源的必須互斥訪問這一固有特性不能改變,因此,死鎖的預防通過破壞這個必要條件實現(xiàn)在很多場合是行不通的。例如,打印機資源必須互斥使用,否則幾個進程同時使用,每個進程各打印一行,這種輸出信息的方式顯然是不能被用戶接受的。
破壞占有和等待條件
采用資源靜態(tài)分配法可破壞這一條件,該方法是指在進程運行前,一次性地_請分配它運行所需的全部資源。若系統(tǒng)有足夠的資源分配給某一進程,則一次性地將其所需資源分配給該進程,這樣,在進程運行期間便不會再提出任何資源請求,從而使等待條件不成立。如果分配時有一種資源要求不能滿足,則進程需要的其他資源也先不分配給進程,從而避免進程在等待期間占用任何資源,破壞了占用條件,從而避免死鎖的發(fā)生。
該方法控制簡單且容易實現(xiàn),但由于進程運行期間對所需資源的全部占用,使得某些使用時間很短的資源被長時間占用,這樣會嚴重影響系統(tǒng)資源的充分利用,導致資源利用率降低,同吋也影響到未獲得全部資源的進程推遲運行。
破壞不剝奪條件
采用剝奪式控制方法可以破壞該條件,該方法是使一個已保持了某些資源的進程,由于新的資源要求目前得不到滿足,它必須先暫時釋放巳保持的所有資源(一種剝奪式),然后去等待,以后再一起向系統(tǒng)提出巾請,這樣也能防止死鎖。這種方法實現(xiàn)起來相對W難,為了保護進程自動放棄資源的現(xiàn)場以及后來的再次恢復,需要付出高昂的代價,并且這種方法只適用于處理機和存儲器資源,對其他資源,此法不宜使用。
破壞循環(huán)等待條件
采用資源順序分配法可破壞該條件。這種分配方法的基本思想是:把系統(tǒng)的全部資源分成多個層次,一個進程得到某一層的一個資源后,它只能再_請較高一層的資源;當一個進程要釋放某層的一個資源時,必須先釋放所占有的較高層的資源;當一個進程獲得了某一層的一個資源后,它想再申請該層中的另一個資源,就必須先釋放在該層中巳占有的資源。或者說,進程釋放資源的順序是按照中請資源的相反順序進行的。這樣可以預防循環(huán)等待現(xiàn)象的發(fā)生,因此不會發(fā)生死鎖。使用該方法要特別注意的問題是對資源所處層次的安排。在通常情況下,把各進程經(jīng)常用到的、比較普遍的資源安排在較低的層次上,把重要且相對匱乏的資源安排在較高的層次上,以便實現(xiàn)對各資源的最大限度的利用。該方法相對于前面介紹的方法,在資源利用率和系統(tǒng)吞吐量上都有明顯的改善。但也存在一些缺陷。
(1)低層次的資源必須在進程請求分配髙層次的資源之前提前申請,這對于暫時不需使用的低層次資源來說,會因空閑等待而產(chǎn)生浪費。
(2)各類設備的資源層次一經(jīng)設定,便不能經(jīng)常隨意改動,這就限制了新類型設備的增加。
(3)各資源的層次是按照大多數(shù)進程使用資源的順序設置的。對于資源使用與此層次相閃配的進程,資源能得到有效的利用,否則,資源的浪費現(xiàn)象將仍然存在。
如果出現(xiàn)死鎖,進程便永遠不能完成,并且阻礙使用系統(tǒng)資源,阻止了其他作業(yè)開始執(zhí)行。因此讓系統(tǒng)進程不再出現(xiàn)死鎖是那么的重要,需要引起我們的關(guān)注哦。
其實,想要系統(tǒng)不死鎖的根本辦法便是要將產(chǎn)生死鎖的4個必要條件消失,下面一起來分析下該如何破壞這些條件吧。
破壞互斥條件
破壞互斥條件即允許多個進程同時訪問資源。由于多數(shù)資源的必須互斥訪問這一固有特性不能改變,因此,死鎖的預防通過破壞這個必要條件實現(xiàn)在很多場合是行不通的。例如,打印機資源必須互斥使用,否則幾個進程同時使用,每個進程各打印一行,這種輸出信息的方式顯然是不能被用戶接受的。
破壞占有和等待條件
采用資源靜態(tài)分配法可破壞這一條件,該方法是指在進程運行前,一次性地_請分配它運行所需的全部資源。若系統(tǒng)有足夠的資源分配給某一進程,則一次性地將其所需資源分配給該進程,這樣,在進程運行期間便不會再提出任何資源請求,從而使等待條件不成立。如果分配時有一種資源要求不能滿足,則進程需要的其他資源也先不分配給進程,從而避免進程在等待期間占用任何資源,破壞了占用條件,從而避免死鎖的發(fā)生。
該方法控制簡單且容易實現(xiàn),但由于進程運行期間對所需資源的全部占用,使得某些使用時間很短的資源被長時間占用,這樣會嚴重影響系統(tǒng)資源的充分利用,導致資源利用率降低,同吋也影響到未獲得全部資源的進程推遲運行。
破壞不剝奪條件
采用剝奪式控制方法可以破壞該條件,該方法是使一個已保持了某些資源的進程,由于新的資源要求目前得不到滿足,它必須先暫時釋放巳保持的所有資源(一種剝奪式),然后去等待,以后再一起向系統(tǒng)提出巾請,這樣也能防止死鎖。這種方法實現(xiàn)起來相對W難,為了保護進程自動放棄資源的現(xiàn)場以及后來的再次恢復,需要付出高昂的代價,并且這種方法只適用于處理機和存儲器資源,對其他資源,此法不宜使用。
破壞循環(huán)等待條件
采用資源順序分配法可破壞該條件。這種分配方法的基本思想是:把系統(tǒng)的全部資源分成多個層次,一個進程得到某一層的一個資源后,它只能再_請較高一層的資源;當一個進程要釋放某層的一個資源時,必須先釋放所占有的較高層的資源;當一個進程獲得了某一層的一個資源后,它想再申請該層中的另一個資源,就必須先釋放在該層中巳占有的資源。或者說,進程釋放資源的順序是按照中請資源的相反順序進行的。這樣可以預防循環(huán)等待現(xiàn)象的發(fā)生,因此不會發(fā)生死鎖。使用該方法要特別注意的問題是對資源所處層次的安排。在通常情況下,把各進程經(jīng)常用到的、比較普遍的資源安排在較低的層次上,把重要且相對匱乏的資源安排在較高的層次上,以便實現(xiàn)對各資源的最大限度的利用。該方法相對于前面介紹的方法,在資源利用率和系統(tǒng)吞吐量上都有明顯的改善。但也存在一些缺陷。
(1)低層次的資源必須在進程請求分配髙層次的資源之前提前申請,這對于暫時不需使用的低層次資源來說,會因空閑等待而產(chǎn)生浪費。
(2)各類設備的資源層次一經(jīng)設定,便不能經(jīng)常隨意改動,這就限制了新類型設備的增加。
(3)各資源的層次是按照大多數(shù)進程使用資源的順序設置的。對于資源使用與此層次相閃配的進程,資源能得到有效的利用,否則,資源的浪費現(xiàn)象將仍然存在。
如果出現(xiàn)死鎖,進程便永遠不能完成,并且阻礙使用系統(tǒng)資源,阻止了其他作業(yè)開始執(zhí)行。因此讓系統(tǒng)進程不再出現(xiàn)死鎖是那么的重要,需要引起我們的關(guān)注哦。
相關(guān)文章

如何把操作系統(tǒng)遷移到新硬盤里 操作系統(tǒng)遷移到新硬盤
為了保證遷移之后可以順利從新盤啟動,操作系統(tǒng)如何順利遷移到新硬盤呢?下面小編給大家?guī)砹瞬僮飨到y(tǒng)遷移到新硬盤的方法,感興趣的朋友跟隨小編一起看看吧2023-04-21
WmiPrvSE.exe是什么進程?WMI Provider Host占用很高CPU的解決方法
很多用戶在操作Win10系統(tǒng)的過程中,會發(fā)現(xiàn)WmiPrvSE.exe進程,但是占用CPU很高,怎么辦呢?下文就為大家?guī)砹嗽敿毜慕鉀Q方法,一起看看吧2023-01-14
dllhost.exe進程占用CPU很高怎么解決?全面解析dllhost.exe進程
這篇文章主要介紹了dllhost.exe進程占用CPU很高怎么解決?全面解析dllhost.exe進程的相關(guān)資料,需要的朋友可以參考下本文詳細內(nèi)容介紹2022-05-27
啟動Autodesk Desktop Licensing Service時出現(xiàn)錯誤1067:進程意外終止
許多用戶在啟動Autodesk Desktop Licensing Service時,經(jīng)常會出現(xiàn)Windows無法在本地計算機上啟動Autodesk Desktop Licensing Service服務錯誤1067,下文就為大家?guī)砹嗽?/div> 2021-08-23fxksmdb.exe 是什么進程 fxksmdb.exe可以關(guān)閉嗎
今天打開電腦應用進程發(fā)現(xiàn)fxksmdb.exe、fxksmpl.exe、fxksmW.exe三個進程,經(jīng)過查看文件路徑發(fā)現(xiàn)原來是施樂打印機的驅(qū)動程序自帶的應用,平時都沒注意到這個,這下放心了2018-11-11keyiso是什么進程 服務中的Keyiso服務器是否是病毒
今天在服務器中看到Keyiso進程,看字面意思Keyiso就是CNG Key Isolation系統(tǒng)服務,如果無法啟用會導致依賴的無線服務沒辦法啟動,現(xiàn)在無線網(wǎng)絡沒辦法用,所以這個是有用的2018-05-04
TaobaoProtect.exe進程怎么刪除? 結(jié)束TaobaoProtect.exe的教程
TaobaoProtect.exe進程怎么刪?電腦中有TaobaoProtect.exe進程占用內(nèi)存,想要結(jié)束這個進程,該怎么結(jié)束呢?下面我們就來看看結(jié)束TaobaoProtect.exe的教程,需要的朋友可以2017-08-11qttask.exe是什么進程?qttask.exe是不是病毒?
部分網(wǎng)友朋友問小編qttask.exe是什么進程?qttask.exe是不是病毒?qttask.exe占內(nèi)存大可以關(guān)閉嗎?小編上網(wǎng)查詢整理了關(guān)于qttask.exe相關(guān)內(nèi)容,不清楚的朋友可以認真查看本2017-07-25
qqprotect.exe是什么進程?qqprotect.exe怎么禁止自動啟動?
最近,有網(wǎng)友問小編qqprotect.exe是什么進程?qqprotect.exe怎么禁止自動啟動?qqprotect.exe應用程序錯誤怎么辦?小編通過整理分享了qqprotect.exe相關(guān)內(nèi)容的介紹以及qqpr2017-07-19TpKmpSVC.exe是什么進程?TpKmpSVC.exe是病毒嗎?
有部分網(wǎng)友朋友問小編 tpkmpsvc.exe是什么進程?tpkmpsvc.exe 是病毒?tpkmpsvc.exe可以關(guān)閉嗎?小編根據(jù)大家的疑問整理來tpkmpsvc.exe相關(guān)內(nèi)容的詳細介紹,有疑惑的朋友快來2017-07-18最新評論







