2.2.3 模块化开放软件解决方案

分离内核促进了分布式开放架构。之所以说它是分布式的,是因为没有一个主RTOS拥有所有的硬件资源。换句话说,没有一个“流量管理”RTOS,使得系统中的其他软件必须通过这个RTOS的API请求CPU时间、内存和I/O设备。相反,分离内核是一组处理程序状态机,它将真实的CPU核心、内存和设备的一个子集封装在一个分区中提供给客户操作系统使用。

由于分离内核是分布式的,从某种程度上主RTOS已经被消除了,因此原本由主RTOS提供的服务被分发到各个分区中。分离内核允许多个RTOS进行组合,以满足成本、安全性、兼容性、确定性、重用性等项目要求。一个分区中的裸机程序可以运行一个严密的实时控制循环,并获得高度安全保障。其他的开源模块可以移植到分区中,并在其他裸机分区中得到重用,同时可以托管多个开源RTOS,比如μC/OS-Ⅱ或者FreeRTOS。此类操作系统的任意组合都可以整合到系统当中,从而避免选择单个主RTOS。相比只用一个RTOS,采用分离内核的解决方案后,用户的选择会更加丰富:一方面,我们可以使用COTS(Commercial Off-The-Shelf,商用现成品)[1]三软件模块;另一方面,我们可以在分区中运行虚拟化的Linux内核,借助Linux完成设备虚拟化,实现应用软件的快速部署。

通过分离内核的分区来开发辅助软件模块,开发者可以突破操作系统的限制,而不必局限在某个RTOS上进行模块化设计。分离内核定义了分区可以访问哪些内存区域,哪些内存区域是只读的,哪些是可读/写的,以及哪些内存区域可以与其他分区共享。该定义是由分离内核在特权Hypervisor模式下经过MMU配置的,并且不能被分区更改或者绕过。串行端口、网络接口、图形和存储设备之类的外围设备也被分配给分区,并且分离内核使用硬件(通过对中断控制器和IOMMU(Input/Output Memory Management Umt,输入/输出内存管理单元)进行编程)来强制进行访问。通过这种方式来构建高度模块化的软件系统体系结构,这就是MOSA的初衷。