同步原语的简单/规范实现?

时间:2010-11-19 22:40:57

标签: c algorithm assembly synchronization locking

我正在寻找关于同步原​​语(自旋锁,互斥锁,信号量,读写锁,条件变量......)的典型实现的良好在线参考,无论是在抽象c + atomics还是伪asm(即任何所执行的原子操作序列的合理表示法)或x86 asm。从最天真的实现开始,然后解决它们的缺点,以及解决这些缺点的一些方法会很棒。

3 个答案:

答案 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