(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
专利 一种基于嵌入式实时操作系统的RCU实现方法
文档预览
中文文档
12 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共12页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-24 01:00:25上传分享