我正在寻找关于同步原语(自旋锁,互斥锁,信号量,读写锁,条件变量......)的典型实现的良好在线参考,无论是在抽象c + atomics还是伪asm(即任何所执行的原子操作序列的合理表示法)或x86 asm。从最天真的实现开始,然后解决它们的缺点,以及解决这些缺点的一些方法会很棒。
答案 0 :(得分:2)
尝试Tanenbaum的操作系统:设计和实施。
编辑:或现代操作系统。我认为第一个包括Minix,第二个没有。不确定,抱歉=(
它以学术为导向,所以它会让你开始走上正确的道路。
答案 1 :(得分:1)
无论如何都不是完整的参考,但以下文章对于理解Linux中同步原语的实现是经典且必不可少的:
“Fuss,Futexes和Furwocks:Linux中的快速用户级别锁定”,Franke Russell& Kirkwod,2002年渥太华Linux研讨会论文集 - 可在({3}}
获取(等等)从那个和glibc来源可以学到很多东西,但这不是我所说的随和: - )
答案 2 :(得分:0)
作为旁注,如果你只是想要原子的东西并且你使用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