四、临界段代码


临界段代码(critical sections)

又叫做临界区(critical region),是指那些必须完整运行,不可被打断的代码段。

  • 中断处理程序和任务都会访问临界段代码,需要用关中断的方法加以保护;
  • 仅由任务访问的临界段代码,可以通过给调度器上锁的方法来保护。

关中断

OS_CFG_ISR_POST_DEFERRED_EN 设置为0

测量中断关闭时间

从关闭中断时开始计算,到重新打开时结束。

更新两个变量,通过查看这两个变量可以系统和特定任务进行优化。

  • 总的中断关闭时间
  • 单个任务的中断关闭时间

给调度器上锁

OS_CFG_ISR_POST_DEFERRED_EN 设置为1

测量调度器锁定时间

从给调度器上锁时开始计算,到给调度器解锁时结束。
更新两个时间,通过查看每个任务的调度锁定事件,可以堆系统和特定任务进行优化。

  • 总的调度锁定时间
  • 单个任务的调度锁定时间

某些功能会导致临界段代码长度增加

功能导致临界段代码边长的原因
多任务具有相同的优先级不使用相同优先级推荐使用关中断方法
事件标志组多个任务在等待多个事件,遍历这些任务和事件会花费相当长时间,导致临界段代码边长。 建议小于5个小任务等待一个时间标志组,可以使用关中断方法。
等待多个内核对象会极大增大关中断时间,最好使用给调度器上锁方式
以广播方式发送消息或者信号量以广播方式向多个任务发送消息或者信号量时,需要关中断;不适用广播方式选项时,可以采用关中断方式保护临界段代码。

转载于:https://www.cnblogs.com/tearain/p/9459216.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值