外观
扩展更多功能
约 555 字大约 2 分钟
2025-12-09
为了更好地使用RTOS,我们需要深入理解RTOS工作原理,最好的方法是动手写一个RTOS。
如果你希望写一个类似RT-Thread/FreeRTOS的系统,欢迎关注这门课程:【RTOS内核开发】从0手写嵌入式操作系统
现有系统的功能
通过前面内容的学习,我们实际上已经具备了一个非常原始的RTOS系统。
这个系统向我们提供了task_t结构,可用于存储任务运行状态、栈、运行地址等相关的数据信息,因此可用于实现特定功能的任务。
与此同时,提供了task_init函数用于初始化该任务。在任务运行起来之后,如果希望能够切换到其它任务,则可以调用task_switch()来实现任务切换。
task_switch()是最核心的部分,它向我们展示了任务切换究竟是怎么回来,具体实现实现的。我们看到,任务切换的本质实际上就是保存任务的运行状态,再恢复下一任务的运行状态。
不足和改进方法
现在实现的这个小系统功能是非常简陋的,仅仅实现了任务的初始化、切换函数。
实际上一个完整的RTOS提供的功能很多,例如任务的睡眠、内存管理等各种功能。不同任务由于读写同一内容,也可能发生读写冲突的情况。任务也有可能在执行过程中需要因为需要等待某些外部事件需要暂停运行。甚至于某些任务如果没有主动调用task_switch(),会一直占用CPU运行,进而导致其它任务迟迟没有运行的机会。

如果想解决这些问题,就需要对现有系统进行进一步设计,引入新的数据结构来管理任务、事件等,并配合相应的算法来实现这些功能。感兴趣的同学可以进一步深入研究。

