1. INTEGRITY操作系统概述

INTEGRITY 是 Green Hills Software 面向安全关键领域推出的实时操作系统,其设计目标不是"功能尽可能多",而是"在最坏情况下仍可预测、可证明、可隔离"。理解 INTEGRITY,需要抓住三条主线:实时微内核架构决定了它的时间确定性,分区隔离机制决定了它的空间与故障确定性,ARINC 653 与 POSIX 双接口决定了它既能承载航空电子标准应用,又能复用大量通用软件资产。这三条主线共同支撑了它在航空、轨道交通、医疗、工业控制等场景中的地位。

一、实时微内核架构:把"不可预测"挡在内核之外

传统宏内核把文件系统、网络协议栈、设备驱动都放在内核态运行,任一模块的缺陷都可能拖垮整个系统,且内核内部锁竞争、长路径调用会带来难以界定的最坏执行时间。INTEGRITY 采用微内核思路,内核只保留最必要的机制:分区与任务的调度、地址空间管理、分区间通信(IPC)的通道管理、中断的分发与时间管理。文件系统、网络、驱动、甚至部分运行时库都以用户态服务的形式存在,运行在各自受保护的空间中。

这种划分带来两个直接后果。第一,时间可预测:内核路径短、可静态分析,任务切换与 IPC 的延迟有明确上界,便于做最坏情况执行时间(WCET)分析。第二,故障可遏制:某个用户态服务崩溃,不会直接破坏内核数据结构,内核可以按预定策略重启该服务或降级处理。对于高可靠软件测试而言,这意味着测试对象被清晰地切成"内核行为"与"分区/服务行为"两层,测试用例设计也应据此分层:内核层关注调度时序、IPC 超时、中断响应;服务层关注功能正确性与异常恢复。

二、分区隔离机制:空间隔离与时间隔离

分区(Partition)是 INTEGRITY 隔离的基本单位。每个分区拥有独立的地址空间,由内存管理单元(MMU)强制隔离,分区之间不能直接读写对方内存,只能通过内核仲裁的 IPC 通道通信。这解决了空间隔离问题:一个分区的野指针或缓冲区溢出,无法越界改写另一个分区的数据。

时间隔离则由调度表保证。系统按预定义的周期调度表(Major Time Frame)轮转执行各分区,每个分区在表中被分配固定的时间窗口。只要分区在其窗口内完成工作,它就不会侵占其他分区的时间;即使某分区出现死循环,时间窗口耗尽后也会被强制切走。这种"时间分区"是 ARINC 653 的核心思想,也是 INTEGRITY 能够支撑 DO-178C A 级软件的根基之一。

下面这张图给出一个典型的两分区系统结构:分区 A 承载飞控计算,分区 B 承载显示与健康监控,二者通过内核仲裁的 IPC 通道交换数据,调度表按固定周期轮转。

INTEGRITY 分区隔离与调度结构示意 分区 A(飞控计算) 任务 A1 控制律 任务 A2 传感器采集 独立地址空间 · MMU 强制隔离 时间窗口:0–10 ms 分区 B(显示与健康监控) 任务 B1 画面刷新 任务 B2 故障记录 独立地址空间 · MMU 强制隔离 时间窗口:10–16 ms INTEGRITY 微内核 分区调度 · 地址空间管理 · IPC 通道仲裁 · 中断分发 · 时间管理 IPC 通道 调度表(Major Time Frame = 16 ms) 分区 A:0–10 ms 分区 B:10–16 ms 窗口耗尽即强制切换,防止分区超时侵占

三、ARINC 653 与 POSIX 双接口

INTEGRITY 对外提供两套主要接口。一套是 ARINC 653 分区管理接口,包括分区创建、进程(任务)管理、时间与周期管理、采样/队列端口通信等。它规定了分区内进程的调度属性、端口通信语义以及健康监控(Health Monitoring)机制。航空电子软件按 ARINC 653 编写,可以在不同厂商的符合该标准的平台上移植,这是航电软件复用与适航取证的重要基础。

另一套是 POSIX 接口,包括 pthread、信号量、消息队列、时钟与定时器、文件操作等。POSIX 接口让大量通用软件、测试工具、协议栈能够以较小改动运行在 INTEGRITY 上,尤其适合承载非安全关键但需要复用的功能,例如日志服务、配置管理、地面维护接口。两套接口并非互斥:一个系统里可以同时存在 ARINC 653 分区和 POSIX 分区,由调度表统一编排。

对测试人员来说,接口差异直接影响测试方法。ARINC 653 分区通常需要验证端口通信的采样/队列语义、健康监控触发条件、分区重启后的状态恢复;POSIX 分区则更接近通用 Linux 测试经验,但必须额外关注实时优先级反转、信号量超时、时钟精度等实时性问题。

四、高可靠安全关键领域的应用场景

INTEGRITY 的典型应用集中在"失效后果严重、且需要多安全等级功能共存"的场合。航空领域,它被用于飞控计算机、综合模块化航电(IMA)平台,把不同 DAL 等级的软件分区隔离在同一硬件上;轨道交通领域,用于列车控制与安全监控;医疗领域,用于输液泵、呼吸机等需要确定性响应的设备;工业领域,用于安全仪表系统与机器人控制。

这些场景的共同需求是:多个功能共享硬件但必须互不干扰,系统在部分功能失效后仍能维持安全状态,且整个行为可被分析和验证。INTEGRITY 通过微内核缩小可信基、通过分区实现故障遏制、通过调度表保证时间确定性,正好对应这三项需求。

学习提示:后续章节中出现的"分区""时间窗口""IPC 端口""健康监控"等术语,均以本节的结构图为参照。测试用例设计时,先判断被测对象属于内核层、分区层还是服务层,再选择对应的观测点与判据。

五、从架构到测试的关注点

把上述架构落到测试实践,可以形成几条清晰的关注线。第一,内核层关注调度时序:验证分区切换是否严格按调度表发生,测量任务切换与 IPC 的最坏延迟是否在预算内。第二,分区层关注隔离有效性:构造一个分区越界访问或死循环的用例,确认其他分区不受影响、健康监控按预期动作。第三,接口层关注语义正确性:ARINC 653 端口在采样模式下是否只保留最新值、队列模式下是否按序不丢;POSIX 定时器在负载下是否仍满足精度要求。第四,系统层关注降级与恢复:模拟某分区故障重启,验证系统整体仍处于安全状态、关键功能不中断。

这些关注点并不需要在一开始就全部展开,但它们是理解 INTEGRITY 测试与故障诊断的骨架。掌握本节的结构关系后,后续关于分区配置、端口通信测试、健康监控验证、时序分析的内容,都能挂接到这张骨架上,形成完整的知识体系。