早期的嵌入式开发没有操作系统的概念,只有裸机程序,比如在最简单的51上面基本就没有操作系统的说法。
可以把裸机程序看成两部分:前台系统和后台系统。什么叫前台呢和后台呢?其实可以很形象的理解,一般的裸机程序都是一个大的无限循环(while或for),这样一直在运行的程序就可以称为“后台”,而中断(包括中断服务程序),可以打断后台程序继而自己执行,所以称之为“前台”,是不是很形象呢。也可以这样来理解,中断的优先级别较高,所以是“前台”。
如上图所示,应该就不难理解了。
‘下面就来介绍实时操作系统。
两个关键词,实时的,操作系统。实时的就是要在一定的时间内完成某一项任务,实时里面又分硬实时和软实时,硬实时要求这项操作必须在时间内完成,不能超时,软实时则没有这么严格的要求,主要体现在软实时系统超时后对整个系统造成的后果不会很严重,相反,如果硬实时操作系统中的实时任务超时,会带来灾难性的后果。所以,实时程度也是衡量一个RTOS性能的指标。
目前市面上的实时操作系统都有:ucos,FreeRTOS,RT-Thread等。
什么又是可剥夺内核呢?
RTOS的核心是实时内核,内核管理着所有的任务,内核决定了该运行哪个任务,也决定了任务切换的时机,这项能力称为多任务管理。同时执行多个任务,给人多个CPU的感觉,其实不是,只是内核给CPU安排了满满的“日程”,最大化的利用了CPU的资源。而多任务的模式 ,很适合复杂应用的实现。好了,说了这么多,可剥夺指的就是CPU的使用权是可以被剥夺的,从优先级低的任务那里剥夺,被优先级高的任务剥夺,所以,CPU总是运行就绪任务中优先级最高的那个。而这其中,中断的优先级又是最高的,如下图所示:
FreeRTOS是一个可剪裁的,可剥夺的多任务实时内核的操作系统,他管理的任务数没有上限,它提供了所有实时操作系统的功能,包括资源管理,同步,任务通信。而且,FreeRTOS是用C语言和少量汇编编写的,结构整洁,可读性强,最重要的一点,如其名,它是开源的,免费的,所以它的应用非常广泛。