提到操作系统,除了我们熟悉的桌面操作系统、服务器操作系统和嵌入式操作系统,还有一个非常重要的分支,就是“实时操作系统”,在对系统稳定性和实时性要求高的领域,比如军事、工业、汽车等,发挥着核心作用。
因为是工业、军工等领域,所以对于普通用户距离有点儿远。之前我们工业相关领域,甚至军工行业,用的实时操作系统主要是国外产品,以风河公司的VxWorks为代表。
注:2022年,汽车Tier1巨头安波福(Aptiv)以43亿美元收购风河公司(Wind River),在“软件定义一切”的大背景下,引起了业界广泛关注。
有实时操作系统,就有非实时操作系统。
两类操作系统的主要区别在于任务调度处理方式不同,非实时操作系统采用的是基于时间片的任务调度方式,而实时操作系统采用的是基于任务优先级的任务调度方式。
优先级的意义在于,必须保证重要的任务优先被执行。这和办公和娱乐应用中,各种应用任务平等对待的理念并不相同。
当然优先级这个事情也不是绝对的,目前非实时操作系统对于进程的调度,也会融入优先级的算法,差异只是彻底性的问题。
实时操作系统是彻底基于优先级,一旦有优先级高的任务出现,可以无条件的,抢占任何正在执行的,低优先级的进程。而基于基于时间片的调度方式的非实时操作系统,就没有这么彻底了,即便有优先级,也得让正在执行的任务完成当前时间片,再优先分配高优先级进程。
所以实时操作系统和非实时操作系统的差异,并非系统裁剪、轻量化那么简单,整个系统的核心——任务调度算法都不同。
我们平时一般都会把实时操作系统和嵌入式操作系统关联——嵌入式实时操作系统,当然,“实时”和“嵌入式”属于两个不同的分类维度,之所以这么关联,主要还是因为对实时性要求较高的系统,并非针对于桌面系统和服务器系统,主要还是各种嵌入式设备,汽车、工业设备、军工装备等等。也就是说,大部分实时操作系统都是嵌入式操作系统,但嵌入式操作系统并非都是实时的,是需要视整个装备系统的需求情况而定。
我们筛选了国内目前用的比较多的三个典型场景下的实时操作系统,供大家参考: