作業系統第三章第四節

2021-09-02 00:03:05 字數 1383 閱讀 3461

作業系統第三章第四節

產生死鎖的原因和必要條件

1.關於死鎖:指多個程序在執行過程中,因爭奪資源而造成的一種僵局。當程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。

死鎖(deadlock): 指程序之間無休止地互相等待!

飢餓(starvation):指乙個程序無休止地等待

產生死鎖的原因可歸結為如下兩點:

(1)競爭資源。系統中供多個程序共享的資源如印表機、公用佇列等的數目不滿足需要時,會引起資源競爭而產生死鎖。

可把系統中的資源分為兩類:

v 可剝奪和非剝奪性資源

›可剝奪性資源:分配給程序後可以被高優先順序的程序剝奪。如cpu和主存。

›不可剝奪性資源:分配給程序後只能在程序用完後釋放。如磁帶機、印表機等。

v 永久性資源和臨時性資源

›永久性:印表機。可順序重複使用

›臨時性:程序產生被其他程序短暫使用的資源,如資料資源:「生產者/消費者」演算法中的訊號量。。它可能引起死鎖。

(2)程序間推進順序非法。程序在執行過程中,請求和釋放資源的順序不當,同樣會導致死鎖。

程序在執行中具有非同步性特徵,多個程序按向前推進的順序有兩種情況:

((1))推進順序合法

((2))推進順序非法

產生死鎖的必要條件

①互斥條件:程序對所分配到的資源進行排他性使用

②請求和保持條件:程序已經保持了至少乙個資源,又提出新的資源請求,而新請求資源被其他程序占有只能造成自身程序阻塞,但對自己已獲得的其他資源保持不放,必然影響其他程序。

③不剝奪條件:程序已獲得的資源未使用完之前不能被剝奪,只能在使用完時由自己釋放。

④環路等待條件

4、處理死鎖的基本方法

事先預防:

①預防死鎖

v 設定限制條件,破壞四個必要條件的乙個或幾個,預防發生死鎖。

v 較易實現。限制條件的嚴格也會導致系統資源利用率和系統吞吐量降低。

②避免死鎖

v 不須事先限制,破壞四個必要條件,而是在資源的動態分配過程中,用某種方法去防止系統進入不安全狀態,從而避免發生死鎖。

v 這種事先加以較弱限制的方法,實現上有一定難度,但可獲較高的資源利用率及系統吞吐量,目前在較完善的系統中,常用此方法來避免發生死鎖。

事後處理:

③檢測死鎖。

v 允許系統執行過程中發生死鎖,但通過系統檢測機構可及時的檢測出,能精確確定與死鎖有關的程序和資源;然後採取適當的措施,從系統中將已發生的死鎖清除掉。

④解除死鎖。

v 與死鎖檢測配套的一種措施。

v 常用的實施方法:撤銷或掛起一些程序,以便**一些資源並將他們分配給已阻塞程序,使之轉為就緒以繼續執行。

v 死鎖的檢測與解除措施,有可能使系統獲得較好的資源利用率和吞吐量(死鎖機率不一定很高),但在實現上難度也最大。

軟體構造 第三章 第四節 OOP程式設計

1.oo 物件導向 的標準 1 使用class作為中心原則 2 具有靜態型別 3 支援泛型 4 支援多型 5 支援繼承 6 支援動態繫結 分派 2.基本概念 物件,類,屬性,方法 1 隊象 模擬真是世界中具有狀態和表現的物體 2 類 每個物件都有乙個類,類定義了實現過程和型別,類中的方法就是api ...

Lua manual翻譯 第三章第三 四節

因為受到經濟危機的影響,我在 bokee.com 的部落格可能隨時出現無法訪問的情況 因此將2005年到2006年間在 bokee.com 撰寫的部落格文章全部遷移到 csdn 部落格中來,本文正是其中一篇遷移的文章。lua提供了如下的基礎堆疊操作api void lua settop lua st...

Lua manual翻譯 第三章第三 四節

因為受到經濟危機的影響,我在 bokee.com 的部落格可能隨時出現無法訪問的情況 因此將2005年到2006年間在 bokee.com 撰寫的部落格文章全部遷移到 csdn 部落格中來,本文正是其中一篇遷移的文章。lua提供了如下的基礎堆疊操作api void lua settop lua st...