关于uCOS-II进出临界区时使用开关中断方式的疑问

这两天闲来无事,正在移植uCOS-II,看见很多人这样实现进入与退出临界区的两个函数:

“*OS_ENTER_CRITICAL()&OS_EXIT_CRITICAL().这两个函数分别是退出临界区和进入临界区的宏指令实现。主要用于在进入临界区之前关闭中断,在退出临界区的时候恢复原来的中断状态。它的实现比较简单,可以直接开关中断来实现,也可以通过保存关闭/ 恢复中断屏蔽位来实现。”

如果进入临界区的时候用关闭中断、退出临界区的时候再打开中断来实现,是否会造成这种情况发生:代码在临界区的运行时间过长,造成此中断长时间不可用?

如果用如下方式实现不更好:

1、进入临界区时:关中断->检查临界资源是否被占用->未被占用则标志使用临界资源->开中断;

2、根据步骤1使用或者不使用临界资源;使用完毕后进入步骤3,若不使用则其他处理;

3、退出临界资源:关中断->标志临界资源可用->开中断

其中1和3用同一个中断。


临界资源只是需要互斥使用而已啊,为什么有些处理方式是长时间禁止中断呢?

还在深入理解ARM处理器中,此稚嫩的疑问先做记录,带全面理解ARM处理器后需解开此疑问。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值