章节列表

临界区保护

2018-05-29 03:39:42 +0000 李述铜

Hi,恭喜顺利进入该章节!

如果说前面只是通过简单的两个任务来演示RTOS的核心工作过程;那么从这节课就开始,我们就开始设计功能完善的RTOS。请注意,在接下来的课时中,需要你具备良好的数据结构知识。如果不具备,也不用太担心,因为课程中会介绍,但是要求你付出比较多的时间和精力。

主要内容

本课程中引入了临界区的概述,然后针对临界区提出了开/关中断地保护方法。

之所以要引入,是因为内核很多代码和数据可以直接被任意任务共享,为了避免读写冲突,所以要借助这种方法加以隔离。这种方法是最简单但有效的方法。也许你还有其它的方法。

重点难点

注意事项

在同学问到:在进入临界区后,如果有调用tTaskSwitch()/tTaskSched()会不会立即任务切换;如果不立即切换,是不是这次切换就丢失了?

实际上,在tTaskSwitch()只是设置了PendSVC挂起。如果当前中断被关闭,这个挂起请求不会丢失,其会在中断开启时立即响应。所以,不存在上述所说的问题。

应用实例

常见问题