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

大话 RCU (read copy update)

还得是看官方文档。kernel/Document/RCU/WhatisRCU.rst. 

        首先,我们要搞清楚一件事,指针它是一个变量,他在内存上也是占了空间的,然后他里面的值,是你申请的内存块的首地址。文档开篇就讲咱们的基本原理,就是把指针变量和指针指向的内存快分开来处理。但是呢,咱也不讲什么逻辑,也不上什么代码。把要解决的问题平移到日常生活中的场景中来。

        有个学校有一栋楼,里面有几个食堂,然后门口有个小姐姐手里举着个牌子,请到一号食堂就餐,这里这个牌子就是指针,一号食堂就指针指向的内存快。

        然后厨房发话了,辣椒炒肉,清蒸鱼没有了,换成辣子鸡和红烧肉,这时候二号食堂开始上菜了,这时候站在门口的小姐姐拿出了一个新的牌子,请到二号食堂用餐。这里就相当于copy原来的内存块,update内存块的值。然后重点来了,此时此刻,现在一号食堂里面的学生还在点菜或者吃着,咱们不管,然后新来的学生都被新的牌子引导到二号食堂,即新的内存块去了。

       这里要提一嘴,RCU之所以能成,得益于内存对齐的指针修改是原子的,即门口的小姐姐换牌子是瞬间的事,不存在中间态。

       那啥时回收一号食堂呢,等所有学生吃完饭之后,打扫得阿姨有空的时候。回收可以是更新的执行流阻塞式的等,或者通过注册回调函数,让系统来干这个活。文档推荐阻塞方法,简单粗暴,鲁棒性高,除非你这个更新执行流不能阻塞,有实时性要求。

        然后就是学生不能发生调度阻塞,不然就卡死了,跑不下去了。还有就是多个更新者需要自己互斥,最后会在一起批量更新上去。

       这个工具适合读取远大于写者的情况,读者几乎没有损耗。当然咱们搞驱动的基本用不上。原文还对api做了一些介绍,说了一些禁忌和原因。

http://www.lryc.cn/news/448158.html

相关文章:

  • vue项目npm run serve 报错,Error: read ECONNRESET at TCP.onStreamRead
  • 十二、MySQL数据类型精讲
  • 不同参数对分类精度的影响以及思考
  • 开源AI智能名片小程序源码:私域电商构建独特竞争力的新机遇
  • 从Web2到Web3:探索下一代互联网的无限可能性
  • POE供电支持画中画的摄像头解决方案
  • Python 3 字典
  • CFR( Java 反编译器)
  • 单片机的两种看门狗原理解析——IWDG和WWDG
  • SQL进阶技巧:如何获取状态一致的分组? | 最大、最小值法
  • windows10使用bat脚本安装前后端环境之msyql5.7安装配置并重置用户密码
  • 文件上传、amrkdown编辑器
  • Linux防火墙-4表5链
  • (最新已验证)stm32 + 新版 onenet +dht11+esp8266/01s + mqtt物联网上报温湿度和控制单片机(保姆级教程)
  • 无环SLAM系统集成后端回环检测模块(loop):SC-A-LOAM以及FAST_LIO_SLAM
  • 速盾:视频开cdn合适还是视频点播合适?
  • Mac电脑安装FFmpeg和卸载FFmpeg
  • 数据结构:栈 及其应用
  • 批量发送邮件:性能优化与错误处理深度解析
  • STM32原理知识查询表
  • 从 Kafka 到 WarpStream: 用 MinIO 简化数据流
  • 【Gitee自动化测试4】本地Git分支的增删查,本地Git分支中文件的增删查,本地文件的暂存/提交,本地分支的推送
  • vue-baidu-map的基本使用
  • 策略路由控制选路
  • 【数据结构和算法实践-排序-快速排序】
  • 测试面试题:请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试
  • 回归预测合集|基于灰狼优化21个机器学习和深度学习的数据回归预测Matlab程序 多特征输入单输出
  • html/css怎么禁用浏览器自动填写
  • 信息安全工程师(22)密码学网络安全应用
  • 算法打卡:第十一章 图论part08