死鎖的定義:
所謂死鎖是指各併發程序彼此互相等待對方所擁有的資源,且這些併發程序在得到對方的資源之前不會釋放自己所擁有的資源。從而造成大家都想得到資源而又都得不到資源,各併發程序不能繼續向前推進的狀態。
死鎖的起因:
死鎖的起因是併發程序的資源競爭。產生死鎖的根本原因在於系統提供的資源個數少於併發程序所要求的該類資源數。
死鎖的必要條件:a、互斥條件 b、不剝奪條件 c、部分分配 d、環路條件
死鎖的預防:
1. 破壞「互斥」條件 破壞「互斥」條件,就是在系統裡取消互斥。若資源不被乙個程序獨佔使用,那麼死鎖是肯定不會發生的。 但一般來說在所列的四個條件中,「互斥」條件是無法破壞的。因此,在死鎖預防裡主要是破壞其他幾個必要條件,而不去涉及破壞「互斥」條件。
2. 破壞「占有並等待」條件 破壞「占有並等待」條件,就是在系統中不允許程序在已獲得某種資源的情況下,申請其他資源。即要想出乙個辦法,阻止程序在持有資源的同時申請其他資源。 方法一:建立程序時,要求它申請所需的全部資源,系統或滿足其所有要求,或麼什麼也不給它。這是所謂的 「 一次性分配」方案。
方法二:要求每個程序提出新的資源申請前,釋放它所占有的資源。這樣,乙個程序在需要資源s時,須先把它先前占有的資源r釋放掉,然後才能提出對s的申請,即使它可能很快又要用到資源r。
3. 破壞「不可搶占」條件 破壞「不可搶占」條件,就是允許對資源實行搶奪。
4. 破壞「迴圈等待」條件 破壞「迴圈等待」條件的一種方法,是將系統中的所有資源統一編號,程序可在任何時刻提出資源申請,但所有申請必須按照資源的編號順序(公升序)提出。這樣做就能保證系統不出現死鎖。
有關死鎖的討論
死鎖 是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。產生死鎖的原因 1 因為系統資源不足。2 程序執行推進的順序不合適。3 資源分配不當。產生死鎖的條件有四個 1 互斥條件 所謂互斥就是程序在某一時間內獨佔資源。2 請求與保持條件 乙...
有關死鎖的理解
以下為個人是一些理解和讀書筆記的結合.1.什麼是死鎖 程序的併發控制不僅僅要控制若干程序的同步與互斥,確保程序之間正常通訊,還需要解決程序死鎖問題。一旦出現程序死鎖,相應的程序將無法向前推進。如果系統內的絕大多數程序或全部程序死鎖,那麼整個系統將處於癱瘓狀態,造成系統 宕機 2.引起死鎖的主要原因 ...
有關於死鎖的知識
1 打個比方,假設有 p1 和 p2 兩個程序,都需要 a 和 b 兩個資源,現在 p1 持有 a 等 待 b 資源,而 p2 持有 b 等待 a 資源,兩個都等待另乙個資源而不肯釋放資源,就 這樣無限等待中,這就形成死鎖,這也是死鎖的一種情況。給死鎖下個定義,如 果一組程序中每乙個程序都在等待僅由...