【原理】RT-Thread内部IPC之信号量

关于操作系统,FreeRTOS也好,UCOS也好,再或者是RT-Thread,都有任务间的通讯机制(简称IPC),分别有:信号量,互斥量,事件邮箱,消息队列。从裸机转向操作系统,我们便需要学习他们,下面,简单总结一下信号量的原理与使用的好处。

 

裸机下开发:任务间的通讯通常我们都是使用一个变量,任务是否执行前,我们都会先去判断这个变量是否为true。这样便会造成:1,实时性不高,若我们的任务比较繁多,当任务1的变量在任务2执行过程中更改为true,MCU需要跑完一圈任务,才能执行任务1,这样变回使任务实时性不高。2,变量没有为true时,任务仍需要轮询。

 

信号量原理主要有获取信号量与释放信号量:

获取信号量:当任务执行时,需要获取信号量时,若此时信号量为0,则任务根据等待信号量的时间会直接返回、挂起一段挂起、或永久挂起。 任务挂起时,MCU不会进行轮询,从而减轻了MCU的负荷。

释放信号量:释放了信号量时,若信号量队列上没有挂起任务,则信号量数值会+1,若有任务挂起时,信号量数值不会+1,而是直接将挂起的一个任务A状态更改为就绪,并进行一次任务调度,若就绪任务队列内没有任务比进任务A优先级高,则任务A马上执行。

 

相比之下,使用信号量会提高任务间的通讯实时性,以及减轻MCU的负荷。

关于信号量的应用场景,RT-Thread编程手册写的很完美,看手册即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值