RTOS编程中的原子操作

27 篇文章 0 订阅
3 篇文章 0 订阅

RTOS编程中的原子操作

一、什么是原子操作

        原子操作(Atomic operation)是指一种不可分割的操作,在整个操作过程中都不会被打断。

二、为什么需要原子操作

        在一些可能 会被系统调度、中断等事件打断的场景的编程中,我们需要原子操作的支持来保障操作的原子性。

        同时原子操作还可以在多线程编程中,保障多线程间的并发执行不出现数据竞争问题;在一些程序的同步、并发控制中,提供有效支撑。

        在RTOS编程中,为了实现对临界区资源进行保护,常规的会通过 开关全局中断,调度器上锁等方式来进行处理。如果采用原子操作来替代这些处理,就能够大幅度提高临界区代码的执行效率、提升系统的运行效率,降低编程的复杂度。

三、RTOS是如何支持原子操作的

        一般来说RTOS为了实现原子操作支持,都会借助芯片平台的硬件指令来进行,并为用户侧提供原子操作函数来供用户使用。

        因为RTOS的原子操作支持依赖具体平台的原子操作指令与相关指令来实现,所以哪些平台有该支持呢?常规来说,采用ARM指令集的绝大多数内核、采用 RV32 指令集的大部分内核、采用 RV64 指令集的大部分内核都提供原子操作支持。

  • 硬实现:

        所谓硬实现就是使用与具体平台(aarch64、arm、riscv)紧密相关的具体原语指令进行操作,如:aarch64中的LSE扩展和ldxr、stxr;arm中的同步原语(ldrex、ldrexb、ldrexh、ldrexd、strex、strexb、strexh、strexd);riscv中的amo指令(amoswap、amoadd、amoand、amoor、amoxor、amomx、amomaxu、amomin、amominu)。

  • 软实现:

        所谓软实现就是通过软件关中断的方式对操作段进行保护,操作结束后再开启中断。

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值