1、基于同步原语扩展的实时操作系统
在多核处理器的每一个处理器核上都运行一个完全相同的RTOS,然后提供扩展的组件库,这种组件库提供相应的同步原语以支持处理器核间的通信。Eg:VxWorks、RealOS。
通过MP Extended Library同步原语库扩展,运行在一个处理器核(Processor Element)上的任务不仅能和运行在同一PE上的任务通信,还能和运行在不同PE上的任务通信,这样任务间就可以协同通信而完成特定的应用。通过将应用划分成不同的可以并行运行的任务而运行在不同的PE核上就可以并行的处理数据,从而达到提高系统性能的目的。
在这样的架构中,运行在每个PE上的RealOS和运行在单核上的RealOS没有任何区别,主要扩展在于MP Extended Library的实现,它提供了一种跨核通信的手段,使运行在不同核上的任务能够同步和传输交换数据。
通过同步原语库的扩展来实现对多核处理器的支持,是一种常见的对RTOS的扩展,不需要对现行的RTOS做太大修改,只需要增加一个相对独立的扩展库,就可以实现对于多核处理器的支持;同时多核的机制对应用程序不透明,应用需要根据需求安排多任务在多核上运行。这样的机制使一份RTOS在系统存储器中拷贝了多份,浪费了一定的存储空间;同时由于对应用程序不透明,需要设计多任务在多核处理器上的调度和运行,增加了应用程序的复杂度,同时需要更多的时间来调试和移植多核处理器程序。
2、基于微内核和分布式技术的实时操作系统
QNX是由加拿大QNX软件系统公司推出的实时操作系统。QNX Nuetrnio是一种微内核的操作系统,每一个驱动程序、应用程序、协议栈、GUI服务、文件系统都在受保护的地址空间中运行。任何一个模块都可能出现错误,也有可能重新启动运行,但都不会影响到其他模块及内核的运行。
在QNX Nuetrino中,OS内核只提供最基本的服务,如线程调度、进程间通信、同步,所有其他OS服务、驱动程序、应用程序都作为单独的运行进程,通过同步消息传递与内核进行通信,这种消息传递机制形成了一条软总线,可以根据需要动态地插拔服务程序。因此,可以在系统运行中更换或重新启动几乎所有的模块,甚至是设备驱动程序。
QNX对多核处理器的支持基于其微内核结构,通信被集成到QNX消息传递原语,本地的IPC和远端节点间的IPC一样。在单CPU上运行的进程分布到多CPU上时,可以同样通信,源代码和运行代码都不需要改动。
3、传统的SMP结构的实时操作系统
由Linux发展而来的各种RTOS一般采用这种方法,由一个RTOS调度运行各个任务在各处理器核上运行。
在这种系统结构中,所有的CPU在运行时(除系统引导和初始化外)都是对称的,没有主次之分,通常物理上也采用同一种CPU。所有的CPU通过同一条总线共享同一个内存及所有的外设。为减少访问内存的冲突,SMP结构中的各个CPU通常都有自己的Cache。