当前位置: 首页 > 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.gsyq.cn/news/9047.html

相关文章:

  • Android开发参考
  • Transformer与ViT
  • WordPress开放嵌入自动发现功能中的XSS漏洞分析
  • Python lambda
  • Android Studio 配置国内源
  • PyCharm项目上传GitHub仓库(笔记) - 教程
  • 从RAG出发
  • Ubuntu 24.04 安装 DaVinci Resolve
  • 图解26:老生常谈的OSI网络模型
  • 【C++】指针
  • 详细介绍:前端学习——CSS
  • 用 Go 编写验证码识别脚本(基于 Tesseract)
  • 数据结构 静态链表的实现(算法篇) - 详解
  • ADS放入元器件include和DK.zip文件依然提示未定义
  • AI元人文(十三):良知觉醒——论三值伦理模型与元道德主体的诞生
  • Oracle EBS ERP——常见查询业务场景 - 指南
  • 图解24:8种常用的缓存淘汰策略
  • JS设计模式-模块模式
  • 利用Burpsuite实现抓取https流量
  • RTX4090双卡本地布署QwenImage模型并生成OpenAI API - yi
  • ubuntu22.04下搭建iRedMail邮件服务器 - 实践
  • 深入解析:SQL语句优化的步骤详解
  • 图解22:扩展系统的最佳8种策略
  • Winform项目添加WPF
  • 本地免费使用网页表格控件websheet
  • 图解21:Redis为什么这么快
  • 图解20:API接口12种安全措施
  • C#文件操作入门
  • python2.7+pandas
  • SAP集成HTTP接口(x-www-form-urlencoded格式)