我们先把这个词拆分成两部分,一个是实时(Real Time),它指的是实现一个功能的线程或者一个任务必须在一个确定的时间内完成。而另一个词操作系统(OS)则表示一个控制和管理计算机的硬件、软件并可以合理分配及调度相应资源,以便可以提供给用户的程序。那么实时操作系统的实质就在于“实时性”,它要保证如果有一个任务需要执行,那么操作系统必须在较短时间内执行此任务。
讲到了RTOS,就需要提一嘴我们在日常嵌入式开发中经常使用的前后台系统。该系统由一个无限循环的程序组成,这个循环按顺序执行不同的应用模块(系统的后台),由中断服务程序处理异步事件(系统的前台)。一些核心关键操作必须由中断程序进行执行,以便可以及时处理。而由中断程序提供的信息在对应后台程序没有顺序执行到之前,是不会被处理的,处理的延迟时间由后台程序循环执行的快慢来决定。
可以看到这种前后台系统结构非常简洁清晰,但是它的实时性主要是靠外部中断信号,如果软件规模变大,处理的模块变多,变得很难管理,实时性也根本难以保障。所以需要一个机制可以给予不同任务优先级的管理,让优先级更高的任务可以先获得资源进行处理。于是就有实时操作系统的出现。
实时操作系统(RTOS)的开发旨在为了让某些具有时效性、实时性的任务可以优先获得资源进行处理。根据对时间的硬件要求不同,又分为软实时系统和硬实时系统。示意图如下:
如上图所示,RTOS将任务分成了不同等级,总是让优先级更高的任务先运行。同时,中断优先级最高,可以打断所有任务,来处理紧急任务。
接下来再介绍一下RTOS的两个核心机制:多任务和任务调度。
1.多任务:
传统的CPU处理器同时只能执行一个任务,一个多任务OS通过快速的任务切换,可以使它在人眼中看起来好像每个任务都在并行执行。
2.任务调度:
对于可剥夺型内核,优先级高的任务一旦响应,就会剥夺优先级较低的任务的CPU使用权,从而提高了系统的实时响应能力。例如FreeRTOS,该操作系统支持抢占式调度和时间片调度。抢占式调度顾名思义就是任务一直运行直至有比其优先级更高的任务抢占,来进行任务切换。而时间片调度则是每个任务都有相同的优先级,每个任务会运行固定的时间片个数或者遇到阻塞函数,才会执行切换。
下面通过一张框图,来说明一下抢占式调度如何在RTOS中运行。
运行过程描述如下:
1.首先任务1此时在运行,此时任务2准备就绪,且任务2比任务1的优先级高,所有在抢占式调度器的作用下,任务2会抢占任务1的执行。
2.任务2此时在运行中,运行过程中任务3进入就绪。由于任务3比任务2优先级高,任务3抢占进行执行。
相信大家已经对实时操作系统有了初步的认识
来源:亿佰特物联网实验室