关于uCOS-II进出临界区时使用开关中断方式的疑问
2013-05-08 14:44
141 查看
这两天闲来无事,正在移植uCOS-II,看见很多人这样实现进入与退出临界区的两个函数:
“*OS_ENTER_CRITICAL()&OS_EXIT_CRITICAL().这两个函数分别是退出临界区和进入临界区的宏指令实现。主要用于在进入临界区之前关闭中断,在退出临界区的时候恢复原来的中断状态。它的实现比较简单,可以直接开关中断来实现,也可以通过保存关闭/ 恢复中断屏蔽位来实现。”
如果进入临界区的时候用关闭中断、退出临界区的时候再打开中断来实现,是否会造成这种情况发生:代码在临界区的运行时间过长,造成此中断长时间不可用?
如果用如下方式实现不更好:
1、进入临界区时:关中断->检查临界资源是否被占用->未被占用则标志使用临界资源->开中断;
2、根据步骤1使用或者不使用临界资源;使用完毕后进入步骤3,若不使用则其他处理;
3、退出临界资源:关中断->标志临界资源可用->开中断
其中1和3用同一个中断。
临界资源只是需要互斥使用而已啊,为什么有些处理方式是长时间禁止中断呢?
还在深入理解ARM处理器中,此稚嫩的疑问先做记录,带全面理解ARM处理器后需解开此疑问。
“*OS_ENTER_CRITICAL()&OS_EXIT_CRITICAL().这两个函数分别是退出临界区和进入临界区的宏指令实现。主要用于在进入临界区之前关闭中断,在退出临界区的时候恢复原来的中断状态。它的实现比较简单,可以直接开关中断来实现,也可以通过保存关闭/ 恢复中断屏蔽位来实现。”
如果进入临界区的时候用关闭中断、退出临界区的时候再打开中断来实现,是否会造成这种情况发生:代码在临界区的运行时间过长,造成此中断长时间不可用?
如果用如下方式实现不更好:
1、进入临界区时:关中断->检查临界资源是否被占用->未被占用则标志使用临界资源->开中断;
2、根据步骤1使用或者不使用临界资源;使用完毕后进入步骤3,若不使用则其他处理;
3、退出临界资源:关中断->标志临界资源可用->开中断
其中1和3用同一个中断。
临界资源只是需要互斥使用而已啊,为什么有些处理方式是长时间禁止中断呢?
还在深入理解ARM处理器中,此稚嫩的疑问先做记录,带全面理解ARM处理器后需解开此疑问。
相关文章推荐
- uCOS-III开关中断进出临界区的三个宏
- 关于Rotate动画使用方式的疑问
- ucos-ii开关中断
- lpc2200移植ucos-II总结(六 关于中断及时钟节拍)
- 关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方式
- 关于setImageState(int[] state, boolean merge)的解释以及使用方式
- angularJs中关于ng-class的三种使用方式说明
- 关于kotlin插件 MVP Generator的使用方式
- 关于hibernate 、ibatis、jdbctemplate对Bbasedao的封装已经使用方式
- 关于MFC中OpenCV图像处理使用cvFindContours引起的中断错误
- 关于easyui在使用tab组件创建选项卡时href方式载入页面遇到的问题
- 【关于新版Cocos2dx/Cocos2d-JS】安装包和使用方式的变化
- 关于Access发布使用打包软件的一些疑问解答
- [RTOS]--关于STM32F4移植uCOSIII使用FPU会HardFault
- 关于快捷方式不能使用,发表自己的解决方式
- Android 关于使用ScrollView和RecyclerView 时候Topbar被隐藏解决方式
- 关于项目使用ARC的管理方式
- 一步一步教你使用uCOS-II
- 关于ucos_ii 就绪表的理解
- Android使用异步的误区(关于Handler.post的操作方式)