ucos OS_ENTER_CRITICAL
来源:互联网 发布:linux tmp目录用途 编辑:程序博客网 时间:2024/03/29 00:26
今天又看了一下ucos保护临界段代码,ucos是利用禁止中断来保护临界段的。
ucos给我们提供了三种方法:
一:直接关中断和直接开中断。即成对使用,保证临界段的安全。
二:先把原来的中断状态压入栈中,然后再关闭中断。恢复时直接从栈中返回原来存储的中断状态。
三:先保存原来的中断状态到一个变量中,然后再关闭中断。
三种情况我都说完了,下面我说一下为什么有这三种形态:
其实,这三种方法从应用上可分为两种,可嵌套和不可嵌套。
其实大家分析一下,所谓保护临界段代码就是关中断,在操作系统内部本身就是关中断、然后开中断。这是没有问题的,但大家想一下,操作系统给用户提供了一些编程接口,当用户希望用同样关中断的方法来保护共享数据时。比如用户写的代码如下:
关中断
调用系统服务
其他操作
开中断
大家想一下,本来用户想保存从用户关中断和开中断这些代码的,不过你调用了操作系统的服务,如果你是用的方法是不可嵌套的,那在退出操作系统代码时已经开中断了。违背了用户的愿望。所以我们操作系统提供可嵌套的关 开中断的方法。这种嵌套是针对高层应用程序的。在操作系统内部这个嵌套是没有任何意义的。
那有一点疑惑可能你会提出,那中断最好是支持嵌套了,是,这个没错。但大家想一想我们想嵌套,就必须保存原来的状态寄存器的值,而前提是机器要有支持读状态寄存器的指令。如果没有这样的指令,只能采取第一种最不好的方案了。
这也是为什么ucos要分这三个情况。它是定义了一个宏,关中断和开中断时用这个宏做。这个宏用条件编译实现具体的关中断和开中断的方法。
- ucos OS_ENTER_CRITICAL
- ucos OS_ENTER_CRITICAL .
- OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()
- ucos
- ucos
- ucos
- UCOS
- ucos
- ucos资料
- ucos-recorde1
- ucos-recorde2
- 移植ucos
- ucos---信号量
- ucos---优先级
- UCOS 简介
- bc31+uCOS
- OS-ucos
- ucos---优先级
- JCo 指南
- LPTSTR、LPCSTR、LPCTSTR、LPSTR的意义
- CListCtrl 使用方法总结
- birt标签的使用
- sem_open can't open a name with directory
- ucos OS_ENTER_CRITICAL
- httpModules 与httpHandler
- 获取Linux的cpu占用率和mem使用情况
- 【转】我的第一个WINCE驱动
- 一个人的命运决定于晚上8点到10点之间...
- poj 2195 zoj 2404 hdu1533 Going Home
- linux启动流程
- jetty请求form表单太大解决
- Web Services, Part 1: SOAP vs. REST