我們研究了很多關於操作系統課程中的死鎖問題。他們多久真的發生一次?或者更確切地說有多少次出現死鎖(操作系統實際上不會讓死鎖發生)?在操作系統中發生多少次(即將發生)的死鎖
1
A
回答
0
死鎖發生的頻率與使用同步程序編寫多線程程序時一樣多,而且您不知道自己在做什麼。
例如,在將線程置於等待狀態之前,只要需要相同的互斥體來喚醒該線程,就必須釋放互斥鎖,這只是一個小例子。
0
我在問同樣的問題。我在我的教科書中發現了這個問題:
費用是一個重要的考慮因素。忽略死鎖的可能性是 比其他方法便宜。由於在很多系統中,很少發生死鎖(比如說,每年一次),其他方法的額外花費似乎不值得。
它還提到,如果它發生,系統可能會慢一點,最終需要重新啓動。我們都熟悉的東西。 教科書引用來自Brian,W.'s Operating System Basics的第323頁。
但是正如Joao所說,開發人員需要生成高質量的代碼。所以我想在理論上,如果你運行了很多垃圾程序,你可能會經常面對死鎖。
0
用戶程序的多線程進程中的死鎖將使用戶應用程序失去功能,這與操作系統中的死鎖無關。如果內核以不正確的方式分配資源並且這種情況發生的非常少,操作系統中會發生死鎖。頻率是幾年一次,因此Windows和Unix等流行操作系統採用鴕鳥方法來忽略死鎖。
相關問題
- 1. TAO在鎖定時發生死鎖
- 2. RMI如何發生死鎖?
- 3. 如何判斷這個系統是否會發生死鎖?
- 4. neo4j在多線程更新關係時發生死鎖問題
- 5. 在互斥代碼中發生死鎖
- 6. PHP算一個星期一定的操作多少次發生
- 7. Laravel發生多次關係
- 8. Oracle - 找到發生死鎖的表
- 9. 在Ubuntu操作系統中生成UUID
- 10. 在Go中發生死鎖,兩個例程拆分工作
- 11. 其他號碼發生多少次
- 12. 關閉管道時發生死鎖fd
- 13. 使用DuplicateOutput時CRITICAL_SECTION發生死鎖
- 14. 調用FreeLibrary可能發生死鎖
- 15. 爲什麼它不會發生死鎖?
- 16. 硬件發生「死鎖」還是軟件導致死鎖?
- 17. RwLock何時會發生死鎖而不是死鎖?
- 18. 在Session-Per-Request Web環境中發生死鎖後重新發生事務
- 19. 回發發生多次
- 20. 開發操作系統
- 21. MySQL拋出「操作系統錯誤號22」 - 發生了什麼?
- 22. R中的系統發生MANOVA?
- 23. hadoop與pyspark和oozie發生死鎖的工作
- 24. 如何在下面的代碼中發生死鎖?
- 25. 發生在集羣列存儲索引中的死鎖
- 26. 的xsl:誰發生多次
- 27. ControlledAccessException發生在4.6以上操作系統的玩家創建過程中!
- 28. 從主鍵索引上的範圍鎖定發生死鎖
- 29. 在交換shell之後在UNIX操作系統中實際發生了什麼
- 30. 在Windows7 32位操作系統上的鉻生成錯誤操作系統
可以給一個實際的例子應用程序發生死鎖嗎? – pappa 2011-01-11 12:21:04
只要有2個代碼在2個線程中運行的應用程序使用相同的互斥體和另一個機制,也許是一個信號量(保持簡單)。等待信號量而不釋放互斥量,就會發生死鎖。 – 2011-01-13 22:42:34