cheney-lin / articals

0 stars 0 forks source link

同步 #3

Open cheney-lin opened 6 years ago

cheney-lin commented 6 years ago

eventfd源代码分析

https://www.cnblogs.com/ck1020/p/7214310.html

eventfd使用方法

http://man7.org/linux/man-pages/man2/eventfd.2.html

KVM irqfd and ioeventfd

http://blog.allenx.org/2015/07/05/kvm-irqfd-and-ioeventfd

cheney-lin commented 6 years ago

为什么spinlock临界区不能睡眠?

《奔跑吧》 P508 临界区的代码应该尽快地被执行掉,否则会使得等锁的进程浪费CPU。但是这往往很难做到,因为内核中有很多操作都会引起睡眠,详见:https://stackoverflow.com/questions/3676777/avoiding-sleep-while-holding-a-spinlock

为什么中断不能睡眠?

《奔跑吧》P636

spinlock的两个问题

传统的spinlock采用test_and_set

  1. 导致更早申请锁的线程可能会等很长时间,产生不公平
  2. 不停写全局内存会导致cache失效,导致性能损耗 https://www.ibm.com/developerworks/cn/linux/l-cn-spinlock/
cheney-lin commented 6 years ago

进程间同步

  1. mutex mutex一般用于线程同步,但也可以用来做进程同步
  2. 文件锁 http://blog.csdn.net/wangcg123/article/details/53765284
  3. 信号量
cheney-lin commented 6 years ago

深入理解并行编程原版

https://www.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html