RTOS开发学习记录(1):程序结构

成元 2026-04-11 { 教程, 笔记 } [ RTOS ]

前言

最近本人在实现一个轻量化的 RTOS,本文用于说明为什么要用 RTOS、什么时候适合用 RTOS,并对几种常见的软件结构做一个简单对比。

需要先说明一点:RTOS 并不是必须的。对于很多嵌入式项目来说,简单轮询或者“轮询 + 中断”就已经足够;只有当系统复杂度上来后,RTOS 的价值才会真正体现出来。

相关代码请访问我的Github仓库,网址为:yuan-rtos

我接下来也会出一些文章介绍我写的 RTOS,比如移植啊,怎么实现任务切换等功能。

简单轮询

所谓简单轮询,就是程序只在一个死循环中按顺序执行各项功能,不使用中断,也不使用 OS 等涉及异常控制流的机制。

其优点十分的明显,如下:

但是缺点也十分的明显,主要有以下几条:

轮询 + 中断

相比简单轮询,加入中断后,系统可以更及时地响应外部事件。通常主循环负责普通逻辑,中断负责处理紧急事件或采集数据。

其优点如下:

但仍然有一些缺点,主要是以下几条:

不过在很多实际项目中,“轮询 + 中断”已经足够完成任务,不一定非要上 RTOS

RTOS

当系统功能较多、模块之间协作复杂、实时性要求较高时,简单轮询或“轮询 + 中断”往往会逐渐暴露出结构混乱、维护困难等问题。

这时,引入 RTOS 可以帮助我们把程序划分为多个独立任务,由内核统一完成调度、同步和通信。

其有以下的的优点:

但也有以下的缺点:

适用场景如下:

总结

从简单轮询,到“轮询 + 中断”,再到 RTOS,本质上是软件结构逐步复杂化、工程化的过程。

因此,是否使用 RTOS,不应盲目跟风,而应根据项目复杂度、实时性需求、资源条件和维护成本来决定