1. 课程导入与INTEGRITY可靠性验证全景

INTEGRITY 是一款面向安全关键领域的实时操作系统(RTOS),它的核心价值不在于“跑得快”,而在于“错得可控”。在航空电子、轨道交通、医疗设备、工业控制等场景中,系统一旦失效可能直接威胁人身安全,因此 INTEGRITY 从设计之初就围绕分区隔离、时间与空间保护、确定性调度、内存保护等机制构建。它通常运行在具备 MMU(内存管理单元)的处理器上,通过分离内核(Separation Kernel)为多个应用分区提供互不干扰的执行环境。理解这一点,是理解后续所有故障注入与可靠性验证工作的前提:我们验证的不是某个普通应用的业务逻辑,而是“当故障发生时,系统是否仍能守住安全边界”。

那么,为什么需要故障注入?因为安全关键系统的可靠性不能只靠“正常路径测试”来证明。常规功能测试只能说明系统在预期输入下工作正常,却无法回答:如果某个分区越界写内存会怎样?如果中断被意外屏蔽会怎样?如果任务执行时间超出预算会怎样?如果通信通道丢包或延迟会怎样?故障注入(Fault Injection)就是主动、可控地把这些异常引入系统,观察系统是否按照设计预期进行检测、隔离、恢复或安全降级。它把“假设系统是可靠的”变成“用证据说明系统在故障下仍然可靠”。

可靠性验证的目标可以概括为三条:第一,确认安全机制确实生效,例如分区隔离、内存保护、时间监控;第二,确认故障不会跨分区传播,即故障被限制在局部;第三,确认系统在故障后仍能进入预定义的安全状态,而不是随机崩溃或静默错误。

本课程围绕 INTEGRITY 的故障注入与可靠性验证展开,整体学习路径可以分成四个层次。第一层是建立对象认知:明确 INTEGRITY 的分离内核、分区、任务、时间窗口、通信通道、健康监控等核心概念,知道哪些对象可以被注入、哪些对象需要被保护。第二层是掌握注入手段:包括软件注入(如修改内存、篡改返回值、模拟异常)、硬件注入(如引脚电平扰动、总线错误)、以及基于调试接口或仿真环境的注入方式。第三层是设计验证用例:针对具体安全机制,构造可复现、可观测、可判定的测试场景,并定义通过/失败准则。第四层是分析结果与闭环改进:从日志、跟踪、覆盖率、故障传播路径中判断系统行为是否符合预期,并把发现的问题反馈到配置或设计中。

为了把上述层次落到工程实践,本课程会以一个典型的综合化航电或工业控制场景作为贯穿对象。假设系统中有三个分区:导航分区、显示分区和健康监控分区。导航分区负责周期计算,显示分区负责人机界面刷新,健康监控分区负责收集各分区状态并执行降级策略。它们通过 INTEGRITY 提供的分区间通信机制交换数据,并由时间分区调度表分配固定的 CPU 时间窗口。这个对象不是真实项目复刻,而是为了教学而合理构造的示例,后续章节中的参数、日志和结果都基于该示例进行说明。

INTEGRITY 可靠性验证全景:对象、注入与判定 验证对象层 分离内核 分区与任务 时间窗口 通信通道 健康监控与安全状态 故障注入层 软件注入 内存篡改 / 返回值异常 任务超时 / 异常抛出 硬件注入 引脚扰动 / 总线错误 时钟抖动 / 电源毛刺 接口注入 调试接口 / 仿真环境 通信丢包 / 延迟注入 验证判定层:故障传播与安全边界 导航分区 周期计算 时间预算 10ms 内存区 A 显示分区 界面刷新 时间预算 15ms 内存区 B 健康监控分区 状态收集 降级决策 安全状态触发 数据流 状态上报 故障隔离边界 判定依据:安全机制是否触发 → 故障是否跨分区传播 → 系统是否进入预定义安全状态

上图把本课程的全景拆成三层:验证对象层、故障注入层和验证判定层。对象层回答“我们保护什么”,注入层回答“我们如何制造异常”,判定层回答“我们如何判断系统是否可靠”。三层之间不是简单的先后关系,而是相互约束:注入手段必须针对具体对象,判定准则必须对应具体安全机制。例如,针对导航分区的内存越界注入,判定重点不是导航分区是否继续运行,而是内存保护是否触发、显示分区是否被污染、健康监控是否收到异常并执行降级。

在工程实践中,一个完整的验证闭环通常包含以下要素。首先是可复现的注入配置:记录注入对象、注入位置、注入时机、注入值和持续时间。其次是可观测的运行时数据:包括分区调度轨迹、内存访问日志、通信计数、健康监控事件。再次是明确的判定准则:例如“注入后 50ms 内健康监控应上报分区异常”“显示分区数据不应出现导航分区的越界值”“系统应在 200ms 内进入安全状态”。最后是结果归档与回归:把每次注入的配置、观测数据和判定结论保存下来,形成可重复执行的验证资产。

本课程后续章节会逐步展开:先建立 INTEGRITY 的对象模型与安全机制认知,再进入具体注入方法、用例设计、结果分析和工程化实践。学习时建议始终带着三个问题:这次注入针对哪个安全机制?预期系统如何反应?用什么证据判断它确实做到了?

需要特别强调的是,故障注入不是“破坏系统”,而是“用可控的破坏换取可信的证据”。在安全关键领域,没有经过故障注入验证的可靠性声明,往往只是假设。INTEGRITY 提供了分区隔离、时间保护、内存保护、健康监控等机制,但这些机制是否真正生效、是否在边界条件下仍然有效,必须通过注入实验来回答。本课程的目标,就是让读者具备独立设计、执行和判定 INTEGRITY 故障注入实验的能力,并能把验证结果转化为可复用的工程结论。