章节列表

多优先级任务

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

在前面的课时中,任务都是以松散的方式直接放在存储器中,没有进行统一整理。那么在这节课时中,我们将尝试将系统中所有任务通过一定的方式组织在一起。同时引入优先级的概述,为每个任务分配了一个优先级。

如果你熟悉ucos ii的话,可以看到你对于任务优先级的划分与调度算法的处理与该课程中的一致。

主要内容

课程中是使用了 位图 + 任务指针数组将任务组织起来。

重点难点

本课时的难点在于理解怎样通过 位图 + 任务指针数组 这两种数据结构将任务结构组织起来。

请在学习时,结合上图和代码,理清其组织方式。同时分析与任务调度(sched)相关的函数是处理扫描该结构,如何将任务插入其中或从其中移除。

在分析过程中,最好能够在头脑中形成其工作过程的动态动画。

注意事项

有的同学提到:引入优先级之后,如果高优先级任务占用CPU,低优先级的任务岂不是没有机会运行?

是的,这是由设计策略决定的。实际上,你可以选择别的策略,比如通过某种方式让任务得到运行的机会。但是这会要求你提出相应的算法。在这里,课程的目标设计一个简单易学的RTOS,且其运行于资源非常有限的硬件上,所以设计尽可能简单。

如果你有更好的思路,可以尝试实现。欢迎与我分享!

应用实例

常见问题