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

大话 RCU (read copy update)

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

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

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

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

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

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

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

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


http://www.mrgr.cn/news/38012.html

相关文章:

  • 保姆级复现yolov7(论文复现)
  • [数据集][目标检测]辣椒缺陷检测数据集VOC+YOLO格式695张5类别
  • 设计模式、系统设计 record part02
  • Java安全最佳实践:防御常见网络攻击
  • Study--Oracle-09--部署Openfiler存储服务器
  • 【机器学习】---深入探讨图神经网络(GNN)
  • 深信服2025届全球校招研发笔试-C卷(AK)
  • 一不小心,给腾讯云提了一个Bug
  • 学习ubuntu 24.10系统目录架构
  • uniapp view增加删除线
  • Python 统计学
  • 黑马头条day5- 延迟任务精准发布文章
  • 提升效率的秘密武器选择指南
  • 舒舒活动图片 小暑至,暑气湿气缠身怎么办?中医教你消暑宁心,健脾祛湿
  • 1.6 物理层
  • OpenAI o1-preview:详细分析
  • PIKACHU —— 靶场笔记合集
  • Eureka注册中心如何实现集群
  • 学校周赛(1)
  • 【hot100-java】【划分字母区间】