230 likes | 458 Views
Operating System Principles 作業系統原理 Chapter 7 死結. 著者 ABRAHAM SILBERSCHATZ Yale University PETER BAER GALVIN Corporate Technologies GREG GAGNE Westminster College 譯者 駱詩軒 駱詩富 鄧俊修. 7.1 系統模型 7.2 死結的特性 7.3 處理死結的方法 7.4 預防死結 7.5 避免死結 7.6 死結的偵測 7.7 自死結恢復.
E N D
Operating System Principles作業系統原理Chapter 7 死結 著者 ABRAHAM SILBERSCHATZ Yale University PETER BAER GALVIN Corporate Technologies GREG GAGNE Westminster College 譯者 駱詩軒 駱詩富 鄧俊修
7.1 系統模型 7.2 死結的特性 7.3 處理死結的方法 7.4 預防死結 7.5 避免死結 7.6 死結的偵測 7.7 自死結恢復 Chapter 7 死結-(進入等候的行程永遠無法改變其狀態)
7.7 自死結恢復 • 7.7.1 行程的終止 • 取消所有死結中的行程:顯然這樣會終止死結循環,但是代價很大,因為這些 行程可能已經計算很長的一段時間,而這部份的計算結果必須被拋除,並且稍 後可能要重新計算。 • 一次取消一個行程直到死結循環被消除為止:此方法需要可觀的超額費用,因 為在每個行程被取消後,必須求助於死結偵測演算法決定是否有任何行程仍然
7.7.2 資源的優先權 • 選擇犧牲者(select a victim):就是決定那一個資源與那一個行程需先行奪取之? 在行程被終止時,我們必須決定位先權次序以減少費用。影響費用的因素可能包 括死結行程在其執行期間所佔用的資源以及時間浪費的多寡。 • 回撤(rollback):如果我們從一行程處優先取得一資源,我們對這行程有那些事 要做呢?很明顯地,該行程已無法再正常執行;它缺少了某些必要的資源。我們必須將其撤回到某一安全狀態,再從這狀態重新開始。一般說來決定什麼是安全的狀態是很困難的。最簡單的方法就是全部撤回(total rollback):將行程中斷,以後再重新開始。然而較有效率的做法是將該行程撤回到能解開死結的狀態。換句話說此方法要求系統必須將每一個行程執行中的狀態儲存起來。 • 飢餓(starvation):我們要如何才能確定飢餓的情形不會發生呢?也就是說,如何才能保證資源不會總是從同一行程處優先取得?
7.2.1 必要條件 • 下列四狀況在系統中同時成立時即為死結問題發生的充要條件。 • 互斥(mutual exclusion):至少有一資源必須是不可共用的型式,換言之,一次只有一個行程可使用此資源。若有另一行程想使用這資源,則必須延遲至此資源被釋放後才可以。 • 佔用與等候(hold and wait):必須存在一個至少已佔用一個資源且正等候其它行程已佔用另外資源之行程。 • 不可搶先(no preemption):資源無優先權;因此,一個資源只能被佔用它的行程在完成工作目標之後,才被釋放。 • 循環式等候(circular wait):必須存在一等候行程的集合{P0, P1, ...Pn},其中P0等候的資源已被P1佔用,P1所等候的資源已被P2佔用,Pn-1所等後的資源已被Pn佔用,而Pn所等矣的資源已被P0佔用。
7.3 處理死結的方法 在理論上,有三種不同處理死結的方法 • 我們可以使用某一協議,以防止或避免死結,並保證系統絕不會進入死結狀態。 • 我們可以允許系統進入死結狀態,偵測出來再想辦法恢復之。 • 我們可以忽視此問題,假裝系統從沒發生過死結。 • 預防死結 (deadlock prevention)是一組可以確保死結必要條件至少有一項不會發生的方法。這些方法藉由限制對資源的要求來避免死結發生。 • 避免死結(deadlock avoidance)則求作業系統預先能取得,一個行程在它的生命期將會要求及使用那些資源。有了這些資訊之後,我們可以決定,此行程的每一要求是否該等待。
7.4 預防死結 • 7.4.1 互斥 • 對不可共用的資源型式來說互斥 (mutual exclusion)的條件必定成立。 • 7.4.2 佔用與等候 • 必須保證一個行程在要求一項資源時,不可以佔用任何其它的資源。 • 7.4.3 不可搶先 • 已經配置出去的資源不可被別的行程搶先佔用。 • 7.4.4 循環式等候 • 確保循環式等候的條件不成立,我們對所有的資源型式強迫安排一個線性的順序。
7.5 避免死結 • 7.5.1 安全狀態 • 系統能以某種順序將其資源分配給各行程且仍能避免死結者,則稱其狀態為安全 (safe)狀態。
7.6 死結的偵測 • 7.6.1 具單一例證的資源型式