当前位置: 首页 > news >正文

linux kernel synchronization rcu

Read Copy Update /RCU

可以单个写,多个读,在内核中常用于更新链表。对比顺序锁,只能用指针访问资源,读数据无需加锁,避免多次读数据。
应用场景:

  • 多个读
  • 少量写
  • 写相较于读具有更高优先级
    rcu保持数据指针的引用,当资源发生变化时:
  1. 创建一份数据的拷贝
  2. 进行修改
  3. 所有reader结束后,指针更新
<linux/rcupdate.h>
rcu_read_lock()
rcu_read_lock()
synchronize_rcu()/call_rcu()
rcu_assign_pointer()
rcu_derefenrence()

kfree申请的动态内存

  1. 使用synchronize_rcu(),在函数后才可以安全kfree为了rcu_derefenrence为kmalloc的内存。
  2. 使用call_rcu(struct rcu_head* head, callback_func),在回调函数中kfree。

RCU reader的生命周期
当RCU reader进入临界区时,会调用rcu_read_lock();当退出临界区时,会调用rcu_read_unlock();

http://www.hskmm.com/?act=detail&tid=12116

相关文章:

  • 锁定Nvidia驱动版本
  • 第二十一章-sql 注入-union 联合注入 (1)
  • Android开发参考
  • 求出e的值
  • 线段树
  • CSP-S模拟24
  • 今年CSP...
  • 0voice-2.1.1-io多路复用select/poll/epoll
  • Transformer与ViT
  • comfUI背后的技术——VAE - 实践
  • CCPC2023 秦皇岛 M. Inverted
  • redux
  • 20250921 模拟赛 T4 题解
  • 1.3 课前问题列表
  • NOIP 模拟赛十一
  • Proxy 库解析(四)
  • warm-flow 监听器对象获取问题
  • Hexo Butterfly 5.4 分页问题 YAML 错误 解决方法总结
  • js逆向:某Q音乐平台请求数据模拟生成
  • maven
  • 第十一届中国大学生程序设计竞赛网络预选赛(CCPC Online 2025)
  • 网络流
  • 完整教程:数据结构 栈和队列、树
  • 深入解析:【ubuntu】ubuntu中找不到串口设备问题排查
  • 酵母双杂交技术:高通量筛选的突破与不可忽视的三大局限性
  • ubuntu20.04测试cuda
  • Android Studio 配置国内源
  • PyCharm项目上传GitHub仓库(笔记) - 教程
  • 从RAG出发
  • 软件工程第二次作业——第一次个人编程作业