AIOT人人都是极客

文章数:1086 被阅读:1552441

账号入驻

Linux 内核实战课(同步篇):RCU

最新更新时间:2023-07-07
    阅读数:
  • RCU 解决了什么

  • RCU 例子

  • RCU 原理

    • Grace Period

    • Quiescent Status

  • Linux 同步方式的总结


RCU 解决了什么

RCU 是读写锁的高性能版本,它的核心理念是读者访问的同时,写者可以更新访问对象的副本,但写者需要等待所有读者完成访问之后,才能删除老对象。读者没有任何同步开销,而写者的同步开销则取决于使用的写者间同步机制。

RCU 适用于需要频繁的读取数据,而相应修改数据并不多的情景,例如在文件系统中,经常需要查找定位目录,而对目录的修改相对来说并不多,这就是 RCU 发挥作用的最佳场景。

RCU 例子

RCU 常用的接口如下图所示:

API 说明
rcu_read_lock 标记读者进入读端临界区
rcu_read_unlock 标记读者退出临界区
synchronize_rcu 同步RCU,即所有的读者已经完成读端临界区,写者才可以继续下一步操作。由于该函数将阻塞写者,只能在进程上下文中使用
call_rcu 把回调函数 func 注册到RCU回调函数链上,然后立即返回
rcu_assign_pointer 用于RCU指针赋值
rcu_dereference 用于RCU指针取值
list_add_rcu 向RCU注册一个链表结构
list_del_rcu 从RCU移除一个链表结构

为了更好的理解,在剖析 RCU 之前先看一个例子:

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved