常见误区:

RTOS(FreeRTOS、RT‑Thread、uC/OS)≠ 通用操作系统

Linux 才属于通用操作系统 (GPOS,General‑Purpose OS)

四大分类层级:

  1. 裸机(无任何操作系统内核)
  2. RTOS 实时操作系统(专用嵌入式内核,单片机常用)
  3. 嵌入式 Linux(通用操作系统,一般跑在 MPU)
  4. 其他商用大型 OS:VxWorks、QNX

实现了多任务,但既不用现成 RTOS 内核、也不用 Linux 这类通用操作系统,属于裸机范畴下的自制任务方案

一、标准名称(书面 / 报告文档优先用)

1. 大类统称

  • 裸机多任务系统(Bare‑metal Multitask)
  • 无操作系统多任务方案

2. 按实现细分名字(单片机最常见两种)

方案 A:大循环 + 状态机任务(协作式,无上下文切换,90% 自制纯任务项目都是这种)
while(1)
{
    Task_Key();
    Task_Uart();
    Task_Led();
}

正式叫法:

超级循环 (Super‑loop) + 状态机任务调度

口语叫法:轮询任务框架、大循环任务框架

特点:任务轮流执行,不能抢占;每个任务靠内部switch做状态保存,没有独立任务栈,不保存 CPU 寄存器上下文

方案 B:自己手写抢占调度(SysTick 中断手动保存寄存器、独立任务栈,自己造调度器)

正式叫法:

自定义抢占式裸机调度器 / 自制轻量任务内核

行业戏称:自己滚了一个简易 RTOS

⚠️注意:做到这一步,本质上你已经实现了一个最小 RTOS 内核,只是不是市面上现成的。

二、日常口头叫法(工程师之间交流)

  • 裸机多任务
  • 无 OS 任务框架
  • 手写调度器
  • 状态机任务框架

一张对比表把4 种方案

方案有没有 OS 内核任务调度来源典型芯片归类
while (1) 顺序跑函数(无任务拆分)无调度,顺序执行普通 MCU STM32、8 位单片机裸机‑单任务超级循环
while (1)+ 多个状态机任务函数自己在主循环轮流调用任务MCU裸机多任务(你问的类型)
FreeRTOS / RT‑Thread / Zephyr有现成 RTOS 内核内核自带调度器MCURTOS 实时操作系统(专用 OS,非通用 OS)
Linux(Buildroot/Yocto)通用操作系统内核Linux 进程调度器MPU (如 IMX6ULL、全志)通用操作系统方案

命名使用建议

  1. 状态机轮询方案 → 裸机多任务(超级循环 + 状态机调度)
  2. 自己手写栈切换抢占调度 → 自定义裸机任务调度内核

分界线

  • 用现成 FreeRTOS 等内核 → RTOS 方案
  • 跑 Linux → 通用操作系统方案
  • 任务调度代码全部自己写,不引入任何操作系统内核裸机多任务系统
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐