rcu机制的简单理解

Posted tongyishu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rcu机制的简单理解相关的知识,希望对你有一定的参考价值。

RCU的核心理念是读者访问的同时,写者可以更新访问对象的副本,但写者需要等待所有已存在读者完成访问之后,才能更新老对象。

这个过程实现的关键和难点就在于如何判断所有的读者已经完成访问,通常把写者开始更新,到所有已存在读者完成访问的这段时间叫做宽限期(Grace Period)

内核中实现宽限期等待的函数是synchronize_rcu(),这个函数是rcu的核心,用来等待已存在读者的全部退出, 由写者调用

技术图片

图中每个矩形代表一个读线程,t2~t3时段为宽限期,假设写线程从t2时刻开始对副本进行更新

Reader1在完限期开始之前已经完成读操作,无需考虑;

Reader2、Reader3、Reader4在进入宽限期之前已经进行读操作,所以写操作必须在Reader3完成之后(即t3时刻,所有的已存在读者均已完成)才能进行副本替换的动作;

Reader5、Reader6在宽限期开始之后才进行的读操作,无需考虑;

以上是关于rcu机制的简单理解的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核中的RCU机制

浅谈linux读写同步机制RCU

Linux内核同步 - RCU基础

再谈Linux内核中的RCU机制

Linux 内核 内存管理RCU 机制 ② ( RCU 机制适用场景 | RCU 机制特点 | 使用 RCU 机制保护链表 )

Linux 内核 内存管理RCU 机制 ② ( RCU 机制适用场景 | RCU 机制特点 | 使用 RCU 机制保护链表 )