1816_ChibiOS中的RT调度器

         全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1816_ChibiOS中的RT调度器_第1张图片

1. ChibiOS的调度是一个严格根据优先级来的调度器。

2. 有一个与此功能相关的参数配置,用来设置时间片。如果这个数值设置为0,那么调度将会认为所有的线程优先级一样,线程之间的协同调度具有相同的优先级。

3. 调度器的几个特点

         - 上下文的切换速度非常快;

         - 信息总是从切换出来的任务传递到切换进去的任务;

         - 充分利用虚拟定时器来实现一些超时的处理;

4. 系统的一些元素采用了类的设计,这样就很容易派生支持多核MCU的架构。

1816_ChibiOS中的RT调度器_第2张图片

1. 这里第一次见识到在实际的软件设计中切切实实采用了UML进行简单的建模的一个例子。关于UML到现在为止,我还是处于看不懂的水平。但是,结合这里的介绍大概还是能够猜测出来这里想要表达出来的概念。

2. 这里有几个概念需要理顺清楚:线程的就绪链表、注册表(一系列激活的线程表)、当前线程、虚拟定时器链表、调试相关信息、时间测量标定数据、内核运行时统计。

3. 就绪链表是一个双向链表。

1816_ChibiOS中的RT调度器_第3张图片

1. 当前任务并不是就绪链表的一部分,当前任务或者说当前线程是由一个全局指针来进行索引调用的。

2. OS中有个优先级最低线程是idle,这个在其他任何任务都不就绪的时候激活。

3. 关于idle有几点值得注意下:

         - 第一,idle是有利于降低功耗的。因为这里面的指令基本都是等待或者挂起之类的处理;

         - 第二,idle切换到其他的任务,也就是说在前面所说的等待命令状态下的唤醒是通过中断来激发的。

         - 第三,idle只有两个状态,那就是ready或者current执行状态。

4. idle任务是又OS初始化的时候自动创建的,会一直持续存在到OS关机。

你可能感兴趣的:(ChibiOS,ChibiOS,RTOS)