2
A
回答
3
概念上的死鎖檢測原則上很簡單,但很難實現。
從高級角度來看,你想要記錄每個線程持有的鎖,看看獲取鎖是否會導致死鎖。你可以用一個依賴圖形象化這個循環,這個循環意味着一個死鎖。
但是,還有其他操作可用於同步:例如,旋轉鎖定。這些會破壞任何檢測嘗試,所以要注意限制。
因此,讓我們先來模擬:想象一下,3線(T1,T2,T3)和3個互斥(M1,M2,M3)
- T1搶M1
- T2搶M2,等待M1
- T3搶M3,等待M2
如果T1
等待你擰M3
(你有一個週期),從而試圖抓住之前,你需要檢查這個條件。
可以使用模型化的:
- 一個表,其中列出了線程持有一個給定的互斥
- 的圖形,代表線程
之間的依賴關係。如果我們模型化的情況時, T1
試圖抓取M3
我們有:
Table
M1 -> T1,
M2 -> T2,
M3 -> T3,
Graph
{T1, T2, T3} x {T2 -> T1, T3 -> T2}
當T1
試圖搶M3
:
- 它查表並列出線程拿着它,在這裏
T3
。 - 它檢查在圖形中添加邊緣
T1 -> T3
是否形成一個循環。
2
請參閱this CP article - 你不是原創,我很害怕。另請參閱this microsoft.public.win32.programmer.kernel article,其中Microsoft員工解釋了Windows內置選項。
0
一個簡單的算法正在爲資源分配製作一個等待圖...
用於該U維持像
結構過程
{
int process_id;
int curr_res;
int want_in_future;
}的結構;
表示將....
(R1)-----> [P1] ------>(R2)
意思是...... R1一直分配給P1,現在這一進程將被渴望有R2在未來
但這種選擇可能會導致u到死鎖等
爲P1(R1)-----> [P1] ---- - >(R2)
對於p2(R2)-----> [P2] ------>(R 1)
一個循環的方式是否有如此的死鎖將存在
相關問題
- 1. 檢測SQL注入
- 2. 檢測HTML代碼注入
- 3. jquery檢測元素注入
- 4. Xpath注入檢測工具
- 5. 檢測通過PC
- 6. 檢測通過ALAsset
- 7. ADO.NET DeadLock
- 8. 通過mapquest庫注入角度指令。沒有檢測到指令
- 9. 通過javascript/jquery注入html?
- 10. 通過CSS注入HTML
- 11. 如何檢測通過JavaScript
- 12. MVC如何檢測通過
- 13. 通過PHP檢測代理
- 14. 通過PHP檢測MySQL InnoDB
- 15. 檢測通過的HttpApplication
- 16. 通過Ionic檢測耳機
- 17. 通過iframe檢測鼠標?
- 18. 通過參數值檢測
- 19. 通過@EJB註釋注入遠程EJB
- 20. 通過@Resource註解WebServiceContext注入問題
- 21. 通過註釋的Java字段注入
- 22. SpringSecurity RememberMeServices不是通過註釋注入
- 23. Delphi通過註冊表檢測Word版本
- 24. 通過「回車」鍵檢查C++中的空輸入檢測
- 25. 檢測註銷
- 26. 檢測CRT初始化是否在注入過程中完成
- 27. 通過VBScript檢測耳機是否插入或未插入
- 28. 如何檢測類是否可注入
- 29. 在休眠中檢測注入
- 30. 檢測網站中的注入內容
我相當肯定我看到一篇文章在微軟雜誌(MSJ? MSDN?),正是關於這個話題。一定是1997或98,因爲我還在上大學 – MSalters 2010-07-08 13:22:47