为什么要在tTaskSchedRdy再次将任务插入就绪表

2018-03-12 11:36:28 +0000 李述铜

感谢同学 @gechangjian 的提问。

Q:为什么要在tTaskSchedRdy再次将任务插入就绪表?从就绪表中删除和加入 这么做的目的 是不是为了以后的 不同任务 可以占用同一个优先级​?

A:删除要的,任务不可能一直在就绪表。任务删除、挂起啊。就绪表就是表示任务在就绪状态。和 不同任务 可以占用同一个优先级 没什么关系。

插入就绪表,表示这个任务已经正在等待cpu空闲去占有它运行。如果将任务删除了,这个任务就不应该存在了,那在就绪表里还有什么意义呢。

如果挂起,那就是暂停任务运行。那如果还留在就绪表里,那调度器是不是得在每次获取最高优先级的任务时,还得判断下这个任务是不是挂起,如果不是挂起,才运行。这样额外增加判断代码,而且浪费时间去执行这些代码吧。

所以,就从就绪表里移除了,这样对调度器来说算法就非常简单了

rtos 无标签

推荐课程

  • 自己动手写嵌入式操作系统

    循序渐进,40余次迭代,写出不到2000行代码的嵌入式操作系统

  • 手把手教你学用嵌入式操作系统

    从实用角度出发,教你如何使用嵌入式操作系统

  • 深入理解ARM调试原理

    深入理解Jlink/Ulink等仿真调试工具背后工作的秘密

  • 轻松掌握Git & GitHub

    掌握当今最流行的版本管理工具,帮你找回过去任意时间的文件版本

  • 自己动手学用Keil(MDK)

    轻松掌握最主流的ARM开发工具Keil(MDK)