3、判斷系統(tǒng)是否可能進入死鎖狀態(tài)
從上面的死鎖解決方案來看,無論哪一種方式都不可避免的要增加系統(tǒng)的負擔。而同時一個系統(tǒng)是否有可進入死鎖狀態(tài)受系統(tǒng)資源數(shù)量,需要使用該資源的進程數(shù)量等因素影響。若系統(tǒng)本不可能引起死鎖,而我們采用了死鎖解決方案,是很不合理的。所以,考試中?嫉竭@樣的題型:給出系統(tǒng)的資源數(shù),以及需要使用該資源的進程數(shù)量等參數(shù),讓考生判斷系統(tǒng)有無可能產(chǎn)生死鎖。下面我們以例題的方式來說明如何解決這類問題。
例題1:
系統(tǒng)有3個進程:A、B、C。這3個進程都需要5個系統(tǒng)資源。如果系統(tǒng)有多少個資源,則不可能發(fā)生死鎖。
解答:
在分析這個問題時,我們可以取一些簡單的數(shù)據(jù)代入試題進行驗證、分析,以得到相應的規(guī)律。
如:
(1)當系統(tǒng)資源數(shù)量為9時,若給A與B分別分配了4個資源,C分配了1個資源,則系統(tǒng)中的每個進程都存在資源不足的情況,而都不放手自己擁有的資源。不能正常運行完畢,發(fā)生死鎖。
(2)當系統(tǒng)資源數(shù)量為12時,若給A、B、C各分配4個資源,則死鎖。
(3)當系統(tǒng)資源數(shù)量為13時,無論如何分配,總有至少1個進程能得到5個資源,得到5個資源的進程可以正常運行完畢,而后將自己占用的資源分配給其它進程,所以這樣能使所有進程運行完畢。
從上面的嘗試,我們可以總結(jié)出一個規(guī)律:先給所有進程分配他們所需要的資源數(shù)減1個資源,然后系統(tǒng)如果能再剩余1個資源,則系統(tǒng)不會發(fā)生死鎖。這樣解答本題變得非常容易。
(5-1)*3+1=13。
例題2:
一臺計算機有10臺磁帶機被m個進程競爭,每個進程最多需要三臺磁帶機,那么m至多為 時,系統(tǒng)沒有死鎖的危險。
A.3 B.4 C.5 D.6
解答
首先從m=6開始考察,首先每個進程分配1臺,剩下的4臺只能分配給4個進程,還有2個進程沒有分配,如果已經(jīng)分配了2臺的4個進程需要3臺的話,則系統(tǒng)就會死鎖。同樣,如果m=5,也會發(fā)生這種情況。當m=4時,每個進程可以分得2臺,還有2個進程可分得3臺,則可正常運行,運行完畢后可釋放資源,從而不會死鎖。在解這道題時有些學員提出“如果按照答案m=4,則這4個進程都是需要3臺磁帶機的話,共需要12臺磁帶機,這樣還不會死鎖?”。這種想法是錯誤的,因為并不是同時把所有進程都分配給足夠的資源才能完成這些進程,可以是一個進程先執(zhí)行完,釋放完資源再執(zhí)行另一個進程。
例如:4個進程中,每個進程分配2臺磁帶機,用去了8臺。剩下2臺,仍然可以滿足兩個進程,直到他們完成,釋放他們暫用的磁帶機。
相關推薦:2010年全國計算機軟考報名時間匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |