RTOS基础

实时操作系统是一种体积小巧,确定性强的计算机操作系统,RTOS通常用于需要在严格时间限制内对外部时间做出反应的嵌入式操作系统。

多任务处理

每个执行的程序由操作系统控制下的一个或多个线程实现,如果操作系统能够以这种方式执行多个线程,则称为多任务处理。小型的RTOS通常将线程称为任务,因为他们不支持虚拟内存,因此进程和线程之间没有区别。

多任务处理并发

多任务处理并发是指在同一时间内执行多个任务,每个任务都被分配一定的时间片来执行。操作系统会按照一定的时间间隔来切换任务,每个任务在执行时都会被操作系统调度器调度,以便在每个任务之间进行切换。

调度

调度器是内核中负责决定在特定时间应执行什么任务的部分,内核可以在任务的生命周期内多次暂停并恢复该任务。

调度策略是调度器用来决定何时执行哪个任务的算法。相对于非实时多用户系统中,调度策略通常会确保每个任务获得"公平"的处理器时间。

只有当调度算法决定执行不同的任务时,任务才会换出。这种切换可能在当前执行任务不知情的情况下发生,例如调度算法响应外部事件或定时器到期时;还可能发生在执行任务显式调用某个导致其让出,休眠或阻塞的API函数。

如果某任务让出,调度算法可能会再次选择同一任务执行。如果某任务休眠,则在指定的延迟时间到期前不可被选择。同样,如果某任务阻塞,则在特定事件发生或超时满之前将不可被选择。

操作系统内核负责管理这些任务状态和转换,确保根据调度算法和每个任务的当前状态在给定的时间选择适当的任务执行。

实时调度

实时操作系统利用与通用(非实时)系统相同的原理来实现多任务处理,但两者的目标截然不同,这一差异主要体现在调度策略上,实时嵌入式系统旨在对现实世界事件做出及时响应,这些事件通常有截止时间,实时嵌入式系统必须在此之前响应,RTOS调度策略必须确保遵守这些截止时间要求。

在小型的RTOS中实现这一目标,软件工程师必须为每个任务分配优先级。RTOS的调度策略就是确保能够执行最高优先级任务获得处理时间。如果存在多个能够运行的同等最高优先级任务,则调度策略可以选择在这些任务之间"公平"地分配处理时间。