工业实时操作系统产品体系主要由内核层、中间件层、辅助设计工具、硬件抽象层几个部分组成,如图1.3所示。
图1.3 工业实时操作系统软件产品体系
内核提供实时操作系统最基本的功能,是操作系统工作的核心部分。内核基于硬件进行第一层软件扩充,主要实现任务管理、内存管理、文件管理、队列管理、时钟管理等功能。工业实时操作系统对内核有较强的实时性约束,要求其能够快速处理外部请求,并在规定时间内对请求做出响应,涉及包括任务调度算法、中断/异常管理、时钟管理、同步与通信机制等在内的关键技术。
任务调度算法是提升多任务管理实时性的关键,高效的调度算法可使系统在满足高性能、高稳定性的情况下快速完成任务调度和切换。
中断/异常管理直接影响系统对外部事件的响应及处理速度,以确保具有时间特性的功能得到及时运行。中断/异常管理主要包括面向应用层和面向底层两个处理部分,同时可对用户提供统一的中断处理接口。
时钟是实时操作系统的脉搏与心跳,其粒度大小及准确性同时影响任务的响应及时性和整个系统的效率。时钟管理的主要功能包括时间管理、定时管理、进程账务管理、负载管理等,时钟中断机制驱动着操作系统中的时间与定时器,是系统中与时间相关所有操作的基础。
同步与通信机制允许实时操作系统进行任务和中断的配合,以确保各任务协同完成,涉及技术包括优先级置顶协议、优先级集成协议等,可用于避免优先级反转/倒置等造成的延迟问题。
当前,国内外科研团队围绕实时操作系统内核涉及的任务调度算法、中断/异常管理、时钟管理、同步与通信机制等已取得了一定的研究成果与技术突破。在任务调度算法方面,上海理工大学的研究团队提出了一种混合关键级任务半分区调度算法 [10] ,该算法能够对多核处理器的空闲资源进行回收计算,在触发高关键级模式的情况下,为被抛弃的低关键级任务分配空闲时间片。此外,该团队还提出了一种嵌入式多核系统中的实时混合任务调度算法 [11] ,该算法在改进的边界公平实时混合任务算法的基础上,通过引入松弛度参数来优化判定任务优先级的方法,并进一步提出了基于松弛度与启发式策略相结合的启发式算法改进任务的分配策略,有效满足了系统的实时性要求。中国电力科学研究院的研究团队提出了一种基于灰狼优化算法的智能电表嵌入式操作系统任务调度算法 [12] ,该算法能够完成操作系统的计算任务分配,缩短了调度时间,保证了多任务调度的实时性。河南大学的研究团队提出了一种基于任务执行时间的启发式独立任务调度算法 [13] ,该算法通过对任务执行时间矩阵的预处理、分解、预调度、调整等,将任务分配至不同的资源,在拥有较低时间复杂度的同时节约了任务的完成时间。
云南大学的研究团队围绕Forth实时系统,提出了一种嵌入式多任务操作系统调度算法 [14] 、一种基于堆栈处理器的抢占式与时间片轮转调度方法 [15] ,以及一种新的中断任务类型 [16] 。嵌入式多任务操作系统调度算法 [14] 采用协同式多任务调度机制,缩短了任务切换时间,提高了在资源有限情况下的任务调度效率;抢占式与时间片轮转调度方法 [15] 实现了实时多任务的运行,弥补了堆栈处理器在实时多任务操作系统方面的不足;中断任务类型 [16] 能够处理嵌入式操作系统中的实时突发事件,并基于研究团队进一步提出的任务调度算法来保障系统终端、后台及中断任务的顺利运行。
国防科技大学的研究团队在实时操作系统时钟管理方面取得了一定的突破,提出了一种面向MCU的轻量级精确时钟同步协议实现技术 [17] ,该技术利用共享存储机制减少数据处理过程中的复制,并利用移位操作实现的近似计算处理替换了部分精确计算处理,减少了对计算和存储资源的占用。中国航发控制系统研究所的研究团队在进行时钟同步精度影响因子分析的基础上,提出了一种基于分布式仿真系统的高精度时钟同步方法 [18] ,该方法包含高精度逻辑时钟构建、网络回路优化、时钟晶振频率在线补偿等,促进了时钟同步在分布式仿真系统中的实际应用。中国科学院微电子研究所的研究团队在操作系统同步与通信机制方面取得了一定的突破,提出了一种基于多核通信接口框架的多核通信机制 [19] ,该机制分为逻辑层、操作系统移植层、传输层和移植层,满足了嵌入式非对称多核处理器在上层应用移植方面的需求。华东计算技术研究所的研究团队提出了一种嵌入式操作系统确定性核间通信机制 [20] ,该机制设计了端到端通信延迟的上限,可以满足多核高安全嵌入式操作系统的要求。华北科技学院的研究团队围绕实时操作系统同步与通信机制开展了一系列研究,设计了一种基于FreeRTOS操作系统同步与通信机制的浓度监测报警装置 [21] ,以及一种基于μC/OS-Ⅲ同步与通信机制的人机交互终端 [22] 。
目前,大多数实时操作系统内核主要可分为微内核和宏内核两类,微内核一般只包含必要的任务调度、内存管理等核心功能,而外设驱动等服务在其他进程中运行,并可通过裸内核相互传递消息,其主要优势是具备模块化的灵活特性;宏内核设计中的内核和操作进程共享空间,消息在进程间直接传递,具有集成特性,无须额外开销来调解模块之间的调用,具备一定的性能优势。目前广泛应用于各关键工业场景中的VxWorks等操作系统产品沿用了宏内核设计,但随着硬件平台资源的有限性越来越受到关注,越来越多的新兴工业实时操作系统产品开始采用微内核架构,以实现其维护简单、修改方便、操作灵活等优势。
中间件层位于实时操作系统内核和应用软件之间,用于协调和管理应用程序之间的通信和交互,是否支持丰富的中间件成为影响实时操作系统可扩展性的关键因素。中间件层为应用软件提供数据管理、应用服务、消息传递等功能和服务,具体包括文件系统、网络协议栈、图形用户界面、设备驱动框架等。此外,航空、航天、汽车、电子等行业存在大量行业专用的中间件及标准接口。从代码量看,中间件开发工作远大于实时操作系统内核,中间件层薄弱成为制约我国实时操作系统产品研发应用的主要因素之一。
在中间件相关研究方面,陕西国际商贸学院的研究团队设计了一种基于发布/订阅机制的实时中间件 [23] ,该中间件具有基于分布式对象的数据同步功能与实时保障机制,以及基于以太网的发布/订阅通信机制,满足了分布式应用中数据分发对实时性方面的要求。复旦大学的研究团队设计了一种数据服务中间件 [24] ,该中间件引入了虚拟实体和协议适配器,通过对物联网环境感知数据进行建模,消除了数据格式的异构性。天津理工大的研究团队设计了一种混合计算中间件 [25] ,该中间件能够将高并发实时处理业务逻辑、批处理业务逻辑和跨层次动态调用有效融合,缩短了开发时间。
在相关产品方面,经历较长时间的发展,Micrium等商业公司为其内核配套了丰富的中间件,FreeRTOS等开源项目在其OpenRTOS等商业项目发展中也积累了较完备的中间件,能够构建形成相对完整的实时操作系统软件平台。国内RT-thread等产品虽然提供posix接口、网络协议栈、GUI、设备文件系统、shell、libc库等中间件,但其中大部分依赖其他开源组件,且缺乏相应的辅助设计和调试工具 [26] 。
成熟完备的辅助设计工具能够显著降低工业实时操作系统的开发难度和成本,提升整体设计开发的技术水平,是打造工业实时操作系统生态的重要基础。辅助设计工具主要包括集成开发环境、模拟器、测试框架等。集成开发环境提供源代码编译器、工程管理工具等模块;模拟器能够模拟软/硬件功能,从而实现嵌入式工业实时操作系统软/硬件协同验证;测试框架能够有效提升开发、执行和报告自动化测试脚本的效率。
在辅助设计工具相关研究方面,武汉理工大学的研究团队提出了一种基于知识图谱的嵌入式操作系统测试用例推荐模型 [27] ,该模型根据历史用例知识设计本体模型,结合知识推荐建立复用推荐模型,节约了测试成本,具有一定的工程应用价值。上海微小卫星工程中心的研究团队提出了一种嵌入式操作系统自动化测试方法 [28] ,该方法利用版本管理工具及持续集成工具,实现了脚本自动编译、自动运行并记录测试结果,提升了测试的自动化水平。首都师范大学的研究团队提出了一种面向ROS的差分模糊测试方法 [29] ,该方法能够精准找出ROS不同版本功能包中的漏洞。北京计算机技术及应用研究所的研究团队提出了一种基于依赖要素比对的国产操作系统兼容性测试方法 [30] ,该方法对依赖要素进行了分级,并通过比对两个操作系统依赖要素的一致性获得操作系统兼容性测试结果。
目前,在开发语言方面,国内实时操作系统主要支持C和C++两种语言,相比国外主流产品,国内产品对Python、JAVA、RUST等语言的支持较为欠缺。同时,在面向机器人等专用领域,缺乏完备的上层仿真和辅助设计工具,设计和调试时间长、控制算法和控制策略等现有成果难以充分利用等问题仍然存在。结合嵌入式系统的复杂化和规模化趋势,自动的开发配置和测试验证、离线仿真开发等成为重要发展方向,可以有效提高开发效率。