全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211405364.9 (22)申请日 2022.11.10 (71)申请人 南京翼辉信息技 术有限公司 地址 210012 江苏省南京市雨 花台区宁双 路19号云密城7号楼二层 (72)发明人 王翾 韩辉 吴鹏程  (74)专利代理 机构 南京中高专利代理有限公司 32333 专利代理师 吴瑾 (51)Int.Cl. G06F 9/50(2006.01) G06F 9/52(2006.01) (54)发明名称 一种基于嵌入式实时操作系统的RCU实现方 法 (57)摘要 本发明提供一种基于嵌入式实时操作系统 的RCU实现方法, 包括以下步骤: 1) 读线 程对共享 数据进行读取时, 为读操作进行加解锁; 2) 写线 程对共享数据进行拷贝后修改, 修改后更新源数 据; 3) 开启全局宽限期; 4) 宽限期阶段等待; 5) 判 定CPU是否经历静默期; 6) 对CPU进行静默期标 记; 7) 判定全局宽限期是否结束; 8) 全局宽限期 结束后, 确认修改前的共享数据能够被释放; 通 过借助嵌入式实时操作系统的线 程控制块TCB实 时记录RCU占用情况, 作为静默期QS的判定条件 之一, 提高判定的实时性和效率; RCU在实时系统 上创建定时器, 通过定期检测作为进行静默期QS 和宽限期GP判定的一个时机, 提高判定准确性和 判定效率。 权利要求书1页 说明书6页 附图4页 CN 115454653 A 2022.12.09 CN 115454653 A 1.一种基于嵌入式实时操作系统的RCU实现方法, 其特 征在于: 包括以下步骤: 1) 读线程对 共享数据进行读取时, 为读 操作进行加解锁; 2) 写线程对共享数据进行拷贝后修改, 修改后更新源数据; 3) 开启全局宽限期 (GP) ; 4) 宽限期 (GP) 阶段等待; 5) 判定CPU是否经历静默期 (QS) ; 6) 对CPU进行静默期 (QS) 标记; 7) 判定全局宽限期 (GP) 是否结束; 8) 全局宽限期 (GP) 结束后, 确认修改前的共享数据能够被释放。 2.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法, 其特征在于: 所述步骤1) 中, 为读操作进行加解锁包括在所述嵌入式实时操作系统的线程控制块 (TCB) 中, 记录RCU占用情况。 3.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法, 其特征在于: 所述步骤3) 中, 当写线程完成了数据更新后, 开启全局 宽限期 (GP) , 并在与该CPU对应的数 据结构中进行记录, 并将与该  CPU对应的位图变量中对应 每一个核的  bit均设为1。 4.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法, 其特征在于: 所述步骤4) 中, 所述宽限期 (GP) 阶段等待包括宽限期 (GP) 阶段非阻塞等待和宽限期 (GP) 阶 段阻塞等待; 其中, 所述宽限期 (GP) 阶段阻塞等待过程通过互斥锁内核锁、 线程挂起与恢 复、 或布尔类型的变量循环等待中的任意 一种方式实现。 5.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法, 其特征在于: 所述步骤5) 中, 判定 CPU经历静默期 (QS) 的条件 包括: 5.1) CPU进行了一次线程调度操作; 5.2) CPU运行在空 闲线程; 5.3) CPU正在运行的线程控制块 (TCB) 记录的  RCU占用情况为非占用状态; 当且仅当满足上述条件中的任意 一种时, 就判定当前  CPU经历过一次静默期 (QS) 。 6.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法, 其特征在于: 所述步骤6) 中, 对CPU 进行静默期 (QS) 标记包括: 6.1) 在与该CPU对应的数据结构中记录; 6.2) 在与该  CPU对应的位图变量中将对应的核的  bit清0。 7.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法, 其特征在于: 所述步骤7) 中, 判定全局 宽限期 (GP) 是否结束 时, 判断与该  CPU对应的位图变量中每一个 核对应的 bit是否都为0, bit均为0时, 判定全局宽限期 (GP) 结束。 8.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法, 其特征在于: 所述嵌入式实时操作系统在线程调度时, 进行CPU是否经历静默期 (QS) 和判定全局 宽限期 (GP) 是否结束的检测; 同时, 所述 嵌入式实时操作系统还通过定时器定期检测CPU是否经历 静默期 (QS) 和判定全局宽限期 (GP) 是否结束。 9.根据权利要求8所述的一种基于嵌入式实时操作系统的RCU实现方法, 其特征在于: 所述定时器在所述嵌入式实时操作系统上通过  tick或者手动创建。权 利 要 求 书 1/1 页 2 CN 115454653 A 2一种基于嵌入式实时操作系统的RCU实现方 法 技术领域 [0001]本发明涉及数据同步实现方法的技术领域, 具体涉及一种基于嵌入式实时操作系 统的RCU实现方法。 背景技术 [0002]RCU是Read, Copy ‑Update的缩写, 意指读, 复制 ‑更新, 是一种同步机制, 是Linux操 作系统下数据同步的一种实现方式。 以链表 为例, RCU机制同一时刻允许多个线程对链表进 行读操作, 且读的时候允许一个线程对链表进行修改。 当读者多, 更新者少时, RCU  的效率 很高, 在Linux操作系统中, 有很多子系统借助 RCU来进行数据同步, 如文件系统中, 由于查 找目录情形比较多, 修改目录则相对较少, 因此就可以使用  RCU同步机制。 [0003]RCU的基本思想是: 先拷贝一份旧数据, 然后对拷贝后的数据进行修改, 形成一个 新的数据, 最后再用新的数据替换掉旧的数据。 [0004]例如, 如图1所示, 假设有一个单向链 表, 其中包 含一个由指针P 指向的节点; 现在, 要使用RCU同步机制来更新这个节点的数据, 那么首先需要 分配一段新的内 存空间, 由指针  Q 指向, 用于存放 这个复制的节点数据, 如图2所示。 [0005]然后将指针P  指向的节点数据, 以及它和下一节点[11,  4, 8]的关系, 都完整地 复制到指针Q指向的内存区域中, 如图3所示。 [0006]接下来, 写者会修改这个复制的数据, 即如图4所示, 将[5,  6, 7]修改为[5,  2,  3]。 [0007]修改完成之后, 写者就可以将这个更新发布 (publish) 了, 对于读者来说就可见 了。 因此, 发布之后才开始读取操作的读者, 比如读节 点[1, 2, 3]的下一个节 点, 得到的就 是新的数据[5,  2, 3], 如图5中粗边框所示; 而在  publish 之前就开始读取操作的读者则 不受影响, 依然 使用旧的数据[5,  6, 7], 如图5中细边框所示。 [0008]等到所有引用旧数据区的读者都完成了相关操作, 写者才会释放由指针P指向的 内存区域, 如图6所示。 虽然思想简单且 能够有效提高数据同步效率, 但是  RCU在实际实现 时, 仍然存在以下缺陷与不足: 1) 需要依赖很多操作系统相关的独有技术, 又因为Linux操作系统不属于实时系 统, 不需要考虑实时性等 问题, 因此当前RCU同步机制仅在Linux操作系统下有源代码能够 实现, 其他嵌入式实时操作系统尚缺乏与RCU资源同步方法的有效结合。 [0009]2) RCU同步机制的实现依赖Linux操作系统下独有的技术, 对于其他嵌入式实 时操 作系统, 没有相关技 术实现, 因此 无法在此类嵌入式实时操作系统中开发出  RCU同步机制。 [0010]3) Linux操作系统不是实 时系统, RCU同步机制实现时, 也没有充分考虑实 时性, 因 此其当前实现方法也无法在实时系统上直接使用。 发明内容 [0011]为了解决现有技术中存在的缺陷与不足, 本发明提供了一种基于嵌入式实时操作说 明 书 1/6 页 3 CN 115454653 A 3

PDF文档 专利 一种基于嵌入式实时操作系统的RCU实现方法

文档预览
中文文档 12 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共12页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于嵌入式实时操作系统的RCU实现方法 第 1 页 专利 一种基于嵌入式实时操作系统的RCU实现方法 第 2 页 专利 一种基于嵌入式实时操作系统的RCU实现方法 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-24 01:00:25上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。