linux内核笔记 ——RCU
文章平均质量分 88
junguo
这个作者很懒,什么都没留下…
展开
-
RCU机制
简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。这样在同一时间可以有多个线程同时读取该链表,并且允许一个线程对链表进行修改(修改的时候,需要加锁)。RCU适用于需要频繁的读取数据,而相应修原创 2012-12-02 01:33:55 · 31984 阅读 · 2 评论 -
TREE RCU实现之一 —— 数据结构
代码分布 在分析代码之前, 先看看代码的分布情况。RCU实现的代码包含在下列一些文件中,此处用到的是linux 3.6.4的代码。 RCU实现的头文件,所有使用RCU的代码都需要包含它 包含rcupdate.h中没有包含的函数声明。原创 2012-12-05 02:36:29 · 12477 阅读 · 3 评论 -
TREE RCU实现之三 —— 定期调用
上一节,介绍过了RCU实现中用到的主要函数。不过还需要定期的运行这些函数,整个机制才完整。 RCU的实现是通过在update_process_times() 中调用rcu_check_callbacks()来达到这个目的的。每个CPU都会定期的调用update_process_times()。rcu_check_callbacks()会去检查当前的RCU机制中是否有需要处理的内容,原创 2012-12-07 11:17:52 · 10315 阅读 · 0 评论 -
TREE RCU实现之二 —— 主干函数
RCU的实现集中在以下几个步骤: 1, 调用call_rcu,将回调函数增加到列表。 2, 开始一个宽限期。 3, 每个CPU报告自己的状态,直到最后一个CPU,结束一个宽限期。 4, 宽限期结束,每个CPU处理自己的回调函数。call_rcu的实现 static void__call_rcu(st原创 2012-12-06 18:36:50 · 8773 阅读 · 0 评论