一組程序中,每個程序都無限等待被改組程序中另乙個程序所占有的資源,因而永遠無法得到的資源,這種現象稱為程序死鎖,這一組程序就稱為死鎖程序。
如果死鎖發生,會浪費大量系統資源,甚至導致系統崩潰。需要注意:
1.資源數量有限、鎖和訊號量錯誤使用
1.1資源的使用方式: 「申請-分配-使用-釋放」模式
可消耗資源:只可使用一次,可建立和銷毀的資源
1.2程序競爭可重用資源
例子1:
其中 t:磁碟裝置;d: 磁帶裝置;
程序q申請到了磁帶裝置再等待磁碟檔案,而p申請到了磁碟檔案,等待磁帶裝置。兩個互相等待就出現了死鎖現象。
例子2:
其中現在系統可分配記憶體為200kb
如果p1申請到80kb,p2申請到70kb,他們要接著申請剩餘需要的資源,都申請不到 ,均要等待,會出現死鎖現象。
1.3程序競爭可消耗資源
// 應用peterson演算法
void process_a
void process_b
活鎖現象:
飢餓:資源分配策略決定的
boost死鎖相關問題
讀寫鎖的實現 typedef boost shared lockreadlock typedef boost unique lockwritelock boost shared mutex rwmutex void readonly void writeonly 對同乙個rwmutex,執行緒可以同...
死鎖相關問題分析
1 死鎖定義 死鎖是程序死鎖的簡稱,是兩個或兩個以上程序無限期地等待永遠都不會發生的條件,系統處於停滯狀態。注 死鎖不僅可發生在硬體資源上,由於設計不當,也有可能發生在軟體資源的使用上。2 產生死鎖的必要條件 在系統中,如果以下4個問題同時成立,死鎖就會發生 1 互斥條件 必須有乙個資源以非共享的方...
分布式鎖相關知識
分布式協調技術主要用來解決分布式環境當中多個程序之間的同步控制,讓他們有序的去訪問某種臨界資源,防止造成 髒資料 的後果。在這圖中有三颱機器,每台機器各跑乙個應用程式。然後我們將這三颱機器通過網路將其連線起來,構成乙個系統來為使用者提供服務,對使用者來說這個系統的架構是透明的,他感覺不到我這個系統是...