我正在尋找一個在抽象c +原子或僞彙編中的同步原語(自旋鎖,互斥體,信號量,讀寫鎖,條件變量,...)的典型實現的良好在線參考(即任何合理的執行原子操作序列的符號)或x86 asm。從最天真的實現開始,然後解決它們的缺點和一些解決缺陷的方法將是很好的。同步原語的簡單/規範實現?
回答
嘗試Tanenbaum的操作系統:設計和實現。
編輯:或現代操作系統。我認爲第一個包括Minix,第二個沒有。不知道,對不起=(
它是面向學術的,所以它會幫助您開始在正確的道路上。
雖然我確實詢問*在線*來源,無論如何,引用Tanenbaum值得+1。 :-) – 2010-11-19 22:48:12
作爲一個側面說明,如果你只是想原子的東西,並使用gcc找你,你有一些內置的功能,你可以用它代替ASM。
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html
但對於特定的鎖,你總是有維基百科
http://en.wikipedia.org/wiki/Spinlock
http://en.wikipedia.org/wiki/Semaphore_(programming)
另外值得一看是
http://en.wikipedia.org/wiki/Lock-free_and_wait-free_algorithms
不以任何方式提供完整的參考,但後續的紙張是用於理解Linux的同步原語的實現經典的和必要的:
「Fuss,Futexes and Furwocks:Fast Userlevel locking in Linux」,Franke Russell & Kirkwod,2002年渥太華Linux研討會論文集 - 可用(其中):http://www.cis.temple.edu/~ingargio/cis307/readings/futex0.pdf
從這和glibc的來源有可能學到很多東西,但它不是我稱之爲隨和:-)
真的很有意思。與我所尋找的不太一樣,但是如何最終設計futex並不是很明顯。猜猜它顯示瞭如何陷入「一切都是信號量」內核人士的心態...... ;-) – 2010-11-26 00:03:27
- 1. 「同步原語」的定義
- 2. 需要一個簡單的例子來實現同步
- 3. 實現SQL 3NF規範化
- 4. 簡單的驗收測試與規範
- 5. 實體框架規範模式實現
- 6. 我想實現實例規範化
- 7. 原文不規範
- 8. 使用Indy實現OAuth2規範的V10
- 9. 是JAXB的規範還是實現?
- 10. Markdown的規範實現是什麼?
- 11. 「規範」鎖對象的實現
- 12. 使用normalizr規範化簡單數組
- 13. javascript - 爲什麼有同步和異步模塊的規範?
- 14. Simpleton的簡單實現
- 15. 簡單的OpenID實現
- 16. 簡單的OpenGL實現
- 17. 實現最簡單的DHT
- 18. Keras簡單的RNN實現
- 19. 實現簡單的shell
- 20. Java如何找到規範實現?
- 21. 使用javascript實現OFX規範
- 22. 我需要什麼同步原語?
- 23. 同步原語「鎖定一次」
- 24. 簡單的基於數據庫的實例同步
- 25. 如何實現簡單的步幅預測器?
- 26. C語言語義規範
- 27. PHP語言規範?
- 28. 單一語句同步?
- 29. 實現異步接口同步
- 30. 規範模式異步
投票關閉作爲資源的建議。另請參閱:一個問題,如何:http://stackoverflow.com/questions/2368164/how-is-thread-synchronization-implemented-at-the-assembly-language-level – 2015-06-16 09:54:28