1816_ChibiOS中的RT调度器

本文介绍了ChibiOSRTOS的特性,包括其基于优先级的快速调度器、UML在设计中的应用,以及线程管理、idle任务和低功耗设计。特别关注了调度器如何处理线程切换和超时,以及系统元素如就绪链表和idle任务的详细解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

3. 调度器的几个特点

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

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

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

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

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

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

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

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值