http://blog.csdn.net/bullbat/article/details/7376424 Linux内核同步控制方法有很多,信号量、锁、原子量、RCU等等,不同的实现方法应用于不同的环境来提高操作系统效率。首先,看看我们最熟悉的两种机制——信号量、锁。一、信号量 首先还是看看内...
分类:
系统相关 时间:
2015-11-09 00:08:20
阅读次数:
353
如果你用Linuxperftool的top命令做热点纠察时,你会发现,前10名嫌疑犯里面肯定有好几个都是锁!在进行并行多处理时,不可
避免地会遇到锁的问题,这是不可避免的,因为这一直以来也许是保护共享数据的唯一方式,被保护的区域就是临界区。而我们知道,锁的开销是巨大的,因为它..
分类:
系统相关 时间:
2015-07-13 00:57:46
阅读次数:
144
如果你用Linux perf tool的top命令做热点纠察时,你会发现,前10名嫌疑犯里面肯定有好几个都是锁!在进行并行多处理时,不可避免地会遇到锁的问题,这是不可避免的,因为这一直以来也许是保护共享数据的唯一方式,被保护的区域就是临界区。而我们知道,锁的开销是巨大的,因为它不可避免地要么等待,要么让别人等待,然而这并不是开销的本质,开销的本质在于很多锁都采用了“原子操作”这么一个技术,如此一个...
分类:
系统相关 时间:
2015-07-12 23:22:23
阅读次数:
186
在很早以前,大概是2009年的时候,写过一篇关于Linux RCU锁的文章《RCU锁在linux内核的演变》,现在我承认,那个时候我虽然懂了RCU锁,但是我没有能力用一种非常简单的描述把Linux的实现给展示出来,有道是你能给别人用你自己的方式非常简洁地描述清楚,你才是真正的精通它,否则,无异于背诵。换个说法,如果你在被面试,在短时间内靠嘴说给面试官,且他还要能听明白,就说明自己真的懂了,这种时候...
分类:
系统相关 时间:
2015-07-12 11:12:41
阅读次数:
194
主要内容:Socket I/O事件的定义、I/O处理函数的实现。
内核版本:3.15.2
我的博客:http://blog.csdn.net/zhangskd
I/O事件定义
sock中定义了几个I/O事件,当协议栈遇到这些事件时,会调用它们的处理函数。
struct sock {
...
struct socket_wq __rcu *sk_wq; /*...
分类:
其他好文 时间:
2015-05-23 22:46:53
阅读次数:
260
接上篇使用RCU技术实现读写线程无锁,在没有GC机制的语言中,要实现Lock free的算法,就免不了要自己处理内存回收的问题。
Hazard Pointer是另一种处理这个问题的算法,而且相比起来不但简单,功能也很强大。锁无关的数据结构与Hazard指针中讲得很好,Wikipedia Hazard pointer也描述得比较清楚,所以我这里就不讲那么细了。
一个简单的实现可以参考我的gith...
分类:
其他好文 时间:
2015-05-03 22:11:14
阅读次数:
158
在一个系统中有一个写线程和若干个读线程,读写线程通过一个指针共用了一个数据结构,写线程改写这个结构,读线程读取该结构。在写线程改写这个数据结构的过程中,加锁情况下读线程由于等待锁耗时会增加。
可以利用RCU (Read Copy Update
What is rcu)的思想来去除这个锁。本文提到的主要实现代码:gist
RCU
RCU可以说是一种替代读写锁的方法。其基于一个事实:当写线程...
分类:
编程语言 时间:
2015-04-19 19:31:28
阅读次数:
175
目录[-]综述信号量与互斥锁Completions 机制自旋锁其他的一些选择不加锁算法原子变量与位操作seqlock(顺序锁)读取-拷贝-更新(RCU)小结综述在上一篇介绍了linux驱动的调试方法,这一篇介绍一下在驱动编程中会遇到的并发和竟态以及如何处理并发和竞争。首先什么是并发与竟态呢?并发(c...
分类:
系统相关 时间:
2015-04-11 22:21:37
阅读次数:
307
Linux内核实战演练网盘下载链接:http://pan.baidu.com/s/1fIYf0密码:341f要是网盘失效了,请加我QQ:3113533060课程内容:第1部分Linux内核中的基础数据结构内核模块;list链表;rb_tree;第2部分Linux内核中的同步方法详解lock锁;mutex;spin_lock;RCU;atomicoperations原..
分类:
系统相关 时间:
2015-01-08 11:30:40
阅读次数:
243
http://www.ibm.com/developerworks/cn/linux/l-rcu/
一、 引言
众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相...
分类:
系统相关 时间:
2014-12-12 15:01:14
阅读次数:
322