計算機死鎖是什麼意思,計算機死鎖的原因計算機作業系統說過死鎖,請問是什麼

時間 2022-03-24 13:30:08

1樓:璩衛束運駿

死鎖就是計算機內訪問同乙個互斥資源,導致兩個或者兩個以上程序都得不到這個資源,都處於等待狀態。比如說,有兩個人一碗面一雙筷子,兩人都想吃麵,但是甲已經拿到了筷子要拿麵,而乙拿到了面要拿筷子,兩個人人都需要對方的東西,但是雙方都不讓出來就導致了死鎖

2樓:裴希傅舒榮

死鎖是指在一組程序中的各個程序均占有不會釋放的資源,但因互相申請被其它程序所占用不會釋放的資源而處於的一種永久等待狀態。

3樓:匿名使用者

所謂死鎖: 是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去.此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等竺的程序稱為死鎖程序.

由於資源占用是互斥的,當某個程序提出申請資源後,使得有關程序在無外力協助下,永遠分配不到必需的資源而無法繼續執行,這就產生了一種特殊現象死鎖。

一種情形,此時執行程式中兩個或多個執行緒發生永久堵塞(等待),每個執行緒都在等待被其他執行緒占用並堵塞了的資源。例如,如果執行緒a鎖住了記錄1並等待記錄2,而執行緒b鎖住了記錄2並等待記錄1,這樣兩個執行緒就發生了死鎖現象。

計算機系統中,如果系統的資源分配策略不當,更常見的可能是程式設計師寫的程式有錯誤等,則會導致程序因競爭資源不當而產生死鎖的現象。

理解了死鎖的原因,尤其是產生死鎖的四個必要條件,就可以最大可能地避免、預防和解除死鎖。所以,在系統設計、程序排程等方面注意如何不讓這四個必要條件成立,如何確定資源的合理分配演算法,避免程序永久佔據系統資源。此外,也要防止程序在處於等待狀態的情況下占用資源,在系統執行過程中,對程序發出的每乙個系統能夠滿足的資源申請進行動態檢查,並根據檢查結果決定是否分配資源,若分配後系統可能發生死鎖,則不予分配,否則予以分配 。

因此,對資源的分配要給予合理的規劃。

一、有序資源分配法

這種演算法資源按某種規則系統中的所有資源統一編號(例如印表機為1、磁帶機為2、磁碟為3、等等),申請時必須以上公升的次序。系統要求申請程序:

1、對它所必須使用的而且屬於同一類的所有資源,必須一次申請完;

2、在申請不同類資源時,必須按各類裝置的編號依次申請。例如:程序pa,使用資源的順序是r1,r2; 程序pb,使用資源的順序是r1,r2;若採用動態分配有可能形成環路條件,造成死鎖。

採用有序資源分配法:r1的編號為1,r2的編號為2;

pa:申請次序應是:r1,r2

pb:申請次序應是:r1,r2

這樣就破壞了環路條件,避免了死鎖的發生

二、銀行演算法

避免死鎖演算法中最有代表性的演算法是dijkstra e.w 於2023年提出的銀行家演算法:

該演算法需要檢查申請者對資源的最大需求量,如果系統現存的各類資源可以滿足申請者的請求,就滿足申請者的請求。

這樣申請者就可很快完成其計算,然後釋放它占用的資源,從而保證了系統中的所有程序都能完成,所以可避免死鎖的發生。

什麼是死鎖?

4樓:石小卜

在併發程式設計中,死鎖 (deadlock) 是一種十分常見的邏輯錯誤。通過採用正確的程式設計方式,死鎖的發生不難避免。

死鎖的四個必要條件

在計算機專業的本科教材中,通常都會介紹死鎖的四個必要條件。這四個條件缺一不可,或者說只要破壞了其中任何乙個條件,死鎖就不可能發生。我們來複習一下,這四個條件是:

•互斥(mutual exclusion):存在這樣一種資源,它在某個時刻只能被分配給乙個執行緒(也稱為執行緒)使用;

•持有(hold and wait):當請求的資源已被占用從而導致執行緒阻塞時,資源占用者不但無需釋放該資源,而且還可以繼續請求更多資源;

•不可剝奪(no preemption):執行緒獲得到的互斥資源不可被強行剝奪,換句話說,只有資源占用者自己才能釋放資源;

•環形等待(circular wait):若干執行緒以不同的次序獲取互斥資源,從而形成環形等待的局面,想象在由多個執行緒組成的環形鏈中,每個執行緒都在等待下乙個執行緒釋放它持有的資源。

解除死鎖的必要條件

不難看出,在死鎖的四個必要條件中,第

二、三和四項條件比較容易消除。通過引入事務機制,往往可以消除第

二、三兩項條件,方法是將所有上鎖操作均作為事務對待,一旦開始上鎖,即確保全部操作均可回退,同時通過鎖管理器檢測死鎖,並剝奪資源(回退事務)。這種做法有時會造成較大開銷,而且也需要對上鎖模式進行較多改動。

消除第四項條件是比較容易且代價較低的辦法。具體來說這種方法約定:上鎖的順序必須一致。

具體來說,我們人為地給鎖指定一種類似「水位」的方向性屬性。無論已持有任何鎖,該執行緒所有的上鎖操作,必須按照一致的先後順序從低到高(或從高到低)進行,且在乙個系統中,只允許使用一種先後次序。

請注意,放鎖的順序並不會導致死鎖。也就是說,儘管按照 鎖a, 鎖b, 放a, 放b 這樣的順序來進行鎖操作看上去有些怪異,但是只要大家都按先a後b的順序上鎖,便不會導致死鎖。

舉例假如有三個物件a、b、c,我們人為約定它們的鎖序是: a 先於 b 先於 c。舉例說來,下列鎖序均為合法:

• 鎖c,放c

• 鎖b,放b

• 鎖b,鎖c,放b,放c

• 鎖b,鎖c,放c,放b

• 鎖a,放a

• 鎖a,鎖c,放a,放c

• 鎖a,鎖c,放c,放a

• 鎖a,鎖b,放a,放b

• 鎖a,鎖b,放b,放a

• 鎖a,鎖b,鎖c,放a,放b,放c

• 鎖a,鎖b,鎖c,放c,放b,放a

而在上面定義的系統中,可能導致發生死鎖典型上鎖序列包括:

• 鎖b,鎖a,鎖c,放c,放a,放b

(因為先b後a的上鎖順序違反了鎖序約定,如果另一線程同時按照先a後b的順序上鎖,則可能由於執行緒甲獲得了b,執行緒乙獲得了a,而導致雙方同時等待對方釋放所持有的鎖,從而形成死鎖局面;解法是將操作序列中增加適當的鎖操作,即改為鎖b,放b,鎖a,鎖b,鎖c,放c,放a,放b)

或者說,只要拿鎖的時候不出現逆序(例如拿著c的時候試圖抓b或a,或者拿著b的時候試圖抓a),並出現潛在逆序的時候先放掉「小」鎖再抓大的,就一定不造成死鎖了。

5樓:匿名使用者

當某一程序提出資源的使用要求後,使得系統中一些程序處於無休止的阻塞狀態,在無外力的作用下,這些程序永遠也不能繼續前進。我們稱這種現象為死鎖。

計算機死鎖的原因計算機作業系統說過死鎖,請問是什麼

6樓:

死鎖的原因主要是:(1) 因為系統資源不足。(2) 程序執行推進的順序不合適。

(3) 資源分配不當等。如果系統資源充足,程序的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,程序執行推進順序與速度不同,也可能產生死鎖。

產生死鎖的四個必要條件:(1) 互斥條件:乙個資源每次只能被乙個程序使用。

(2) 請求與保持條件:乙個程序因請求資源而阻塞時,對已獲得的資源保持不放。(3) 不剝奪條件:

程序已獲得的資源,在末使用完之前,不能強行剝奪。(4) 迴圈等待條件:若干程序之間形成一種頭尾相接的迴圈等待資源關係。

這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立

作業系統中有若干程序併發執行,它們不斷申請、使用、釋放系統資源,雖然系統的進

程協調、通訊會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能

繼續執行,否則就阻塞的情況。此時,若不借助外界因素,誰也不能釋放資源,誰也不能解

除阻塞狀態。根據這樣的情況,作業系統中的死鎖被定義為系統中兩個或者多個程序無限期

地等待永遠不會發生的條件,系統處於停滯狀態,這就是死鎖。

死鎖的解除與預防:

理解了死鎖的原因,尤其是產生死鎖的四個必要條件,就可以最大可能地避免、預防和

解除死鎖。所以,在系統設計、程序排程等方面注意如何不讓這四個必要條件成立,如何確

定資源的合理分配演算法,避免程序永久佔據系統資源。此外,也要防止程序在處於等待狀態

的情況下占用資源。因此,對資源的分配要給予合理的規劃。

什麼是死鎖?

7樓:匿名使用者

在併發程式設計中,死鎖 (deadlock) 是一種十分常見的邏輯錯誤。通過採用正確的程式設計方式,死鎖的發生不難避免。

死鎖的四個必要條件

在計算機專業的本科教材中,通常都會介紹死鎖的四個必要條件。這四個條件缺一不可,或者說只要破壞了其中任何乙個條件,死鎖就不可能發生。我們來複習一下,這四個條件是:

•互斥(mutual exclusion):存在這樣一種資源,它在某個時刻只能被分配給乙個執行緒(也稱為執行緒)使用;

•持有(hold and wait):當請求的資源已被占用從而導致執行緒阻塞時,資源占用者不但無需釋放該資源,而且還可以繼續請求更多資源;

•不可剝奪(no preemption):執行緒獲得到的互斥資源不可被強行剝奪,換句話說,只有資源占用者自己才能釋放資源;

•環形等待(circular wait):若干執行緒以不同的次序獲取互斥資源,從而形成環形等待的局面,想象在由多個執行緒組成的環形鏈中,每個執行緒都在等待下乙個執行緒釋放它持有的資源。

解除死鎖的必要條件

不難看出,在死鎖的四個必要條件中,第

二、三和四項條件比較容易消除。通過引入事務機制,往往可以消除第

二、三兩項條件,方法是將所有上鎖操作均作為事務對待,一旦開始上鎖,即確保全部操作均可回退,同時通過鎖管理器檢測死鎖,並剝奪資源(回退事務)。這種做法有時會造成較大開銷,而且也需要對上鎖模式進行較多改動。

消除第四項條件是比較容易且代價較低的辦法。具體來說這種方法約定:上鎖的順序必須一致。

具體來說,我們人為地給鎖指定一種類似「水位」的方向性屬性。無論已持有任何鎖,該執行緒所有的上鎖操作,必須按照一致的先後順序從低到高(或從高到低)進行,且在乙個系統中,只允許使用一種先後次序。

請注意,放鎖的順序並不會導致死鎖。也就是說,儘管按照 鎖a, 鎖b, 放a, 放b 這樣的順序來進行鎖操作看上去有些怪異,但是只要大家都按先a後b的順序上鎖,便不會導致死鎖。

舉例假如有三個物件a、b、c,我們人為約定它們的鎖序是: a 先於 b 先於 c。舉例說來,下列鎖序均為合法:

• 鎖c,放c

• 鎖b,放b

• 鎖b,鎖c,放b,放c

• 鎖b,鎖c,放c,放b

• 鎖a,放a

• 鎖a,鎖c,放a,放c

• 鎖a,鎖c,放c,放a

• 鎖a,鎖b,放a,放b

• 鎖a,鎖b,放b,放a

• 鎖a,鎖b,鎖c,放a,放b,放c

• 鎖a,鎖b,鎖c,放c,放b,放a

而在上面定義的系統中,可能導致發生死鎖典型上鎖序列包括:

• 鎖b,鎖a,鎖c,放c,放a,放b

(因為先b後a的上鎖順序違反了鎖序約定,如果另一線程同時按照先a後b的順序上鎖,則可能由於執行緒甲獲得了b,執行緒乙獲得了a,而導致雙方同時等待對方釋放所持有的鎖,從而形成死鎖局面;解法是將操作序列中增加適當的鎖操作,即改為鎖b,放b,鎖a,鎖b,鎖c,放c,放a,放b)

或者說,只要拿鎖的時候不出現逆序(例如拿著c的時候試圖抓b或a,或者拿著b的時候試圖抓a),並出現潛在逆序的時候先放掉「小」鎖再抓大的,就一定不造成死鎖了。

計算機的GT mu是什麼意思,計算機strobe是什麼意思

普通的計算器相信大家都會用,大家經常用來加減乘除,快速計算結果。有些小小的功能鍵能事半功倍,而這些功能可能有很多人從未使用過,在網上找了些資料,又根據自己實際使用中的經驗,把那些個功能鍵的作用及使用方法給整理了一下。m 把目前顯示的值放在儲存器中,是計算結果並加上已經儲存的數,如螢幕無 m 標誌即儲...

計算機語言是什麼,計算機語言 是什麼意思

計算機語言 computer language 指用於人與計算機之間通訊的語言。計算機語言是人與計算機之間傳遞資訊的媒介。計算機系統最大特徵是指令通過一種語言傳達給機器。為了使電子計算機進行各種工作,就需要有一套用以編寫計算機程式的數字 字元和語法規劃,由這些字元和語法規則組成計算機各種指令 或各種...

計算機病毒是什麼意思啊,什麼是計算機病毒?

天使之吻 一段與機器裡資料相關的程式。最初是為保護自己機器的資料安全,但後來,有人利用這種技術用於攻擊別人的機器,破壞其系統,銷毀資料,偷竊隱私等等,直接廢掉別人計算機的作業系統。現在病毒多是指搞破壞的那種。木馬其實也是病毒,只是它的功能主要就是 偷 把你計算機上的資料,操作記錄,密碼賬號等等偷走,...