第6章行程同步
1. 臨界區:一段可能對某個共享的資料進行修改的一段代碼
2. 解決臨界區必須要滿足的三項要求
(1)互斥:當有一個行程在臨界區內執行的時候,任何其他的行程都不可以再進入臨界區執行
- 前進:空閑讓進,
- 有限等待:要控制行程從做出進入臨界區選擇到請求被允許的程序中,其他行程被允許進入該臨界區的次數(避免行程等待時間過長)
3. 信號量:信號量是一個整型值,>=0表示系統中當前某類資源的可用數目,<0表示系統中等待該資源的行程數,它的值只能由 P、V原語操作所改變,
剩下的看書
第7章死鎖
1. 死鎖產生的四個必要條件:(4個條件同時滿足會引起死鎖)
A. 互斥,B. 占有并等待,C.非搶占,D.回圈等待
2. 如果分配圖無環,那么系統就沒有行程死鎖,如果有環,那么可能存在死鎖(每個資源剛好有一個實體,那么有環就意味著已經出現死鎖,如果環涉及一組資源型別,而每個型別只有一個實體,那么出現死鎖,環所涉及的行程就死鎖,此情況下環是死鎖存在的充分必要條件,
如果每個資源型別有多個實體,那么有環并不意味著已經出現死鎖,此情況下環是死鎖的必要不充分條件,)
3.死鎖的處理方法
(1)可以用協議以預防或避免死鎖
(2)可允許系統進入死鎖狀態,然后檢測它,并加以回復
(3)可忽視這個問題,認為死鎖不會發生
4. 死鎖預防:
(1)對非共享資源,必須要有互斥條件
(2)當一個行程申請一個資源時,它不能沾有其他資源
(3)如果占有資源并申請另一個不能立即分配的資源,那么其現已分配的資源都可被搶占
(4)對所有資源型別進行完全排序,且要求每個行程按遞增順序來申請資源,當行程申請某個資源時,他必須釋放掉所有較低序號的資源,
注:以上四條分別對應死鎖的四個產生條件
副作用:低設備使用率和系統吞吐率
5. 死鎖避免:
如果系統能按某個順序為每個行程分配資源并能避免死鎖,那么系統狀態就是安全的,如果沒有這樣的順序存在,那么系統狀態就處于不安全狀態,
關系:安全狀態不是死鎖狀態,死鎖狀態是不安全狀態,不是所有不安全狀態都能導致死鎖狀態,
6. 銀行家演算法: 看書(重點)
死鎖避免是根據防止系統進入不安全狀態實作的
靜待資源分配破壞了占有并等待條件
資資源的按序分配可以破壞回圈等待條件
銀行家演算法是一種死鎖預防演算法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275113.html
標籤:其他
上一篇:ConcurrentHashMap的實作原理(JDK1.7和JDK1.8)
下一篇:C#寫log,自家用
