个人笔记,向原子哥学习的
RTOS全称Real Time Operating System,中文名称就是实时操作系统
操作系统允许多个任务同时执行,叫做多任务,但实际上一个CPU在某一时刻只能运行一个任务。操作系统中任务调度器会决定在某一时刻应该运行哪个任务,在各个任务器之间进行切换,合理使用系统资源,提高效率。
RTOS的任务调度器被设计为可预测的,这正是嵌入式实时操作系统所需要的,具体实现,是由用户给每个任务分配一个任务优先级,任务调度器就可以根据优先级来决定下一刻应该运行哪个任务。
什么是多任务系统?
以前个人学习C51、STM32单片机裸机的时候一般都是在main函数里用一个while(1)做一个大循环来完成所有处理,只是有时候需要用到中断去处理一些事情,称为单任务处理,也成前后台系统,中断服务函数作为前台程序,大循环作为后台程序。
前后台系统的实时性差,前后台系统各个任务都是排队等着轮流执行,需要排队等饭吃。
而在抢占式多任务系统里,高优先级的任务可以打断低优先级任务的运行而取得CPU的使用权,这样子就能保证紧急任务的运行。
任务
在使用RTOS的时候一个实时应用可以作为一个独立的任务。每个任务都有自己的运行环境,不依赖系统中其他任务或者RTOS调度器。任何一个时间点只能有一个任务运行,具体哪个任务是由RTOS调度器决定的,RTOS调度器因此会重复的开启、关闭每个人任务。
任务不需要了解RTOS调度器的具体行为,RTOS调度器的职责是确保当一个任务开始执行的时候其上下文环境(寄存器、堆栈等内容)和任务上一次退出