3. 静态分区基础
在综合模块化航空电子(IMA)与高安全实时系统中,分区(Partition)是隔离资源、约束干扰、保障确定性的核心机制。理解静态分区,必须先厘清“分区”到底分的是什么:它既分空间,也分时间,并通过配置表在系统运行前固定下来。本节从分区概念出发,对比静态与动态分区,剖析时间分区与空间分区,并介绍 ARINC 653 标准的基本框架。
一、分区概念:把共享资源切成互不干扰的“隔间”
分区是一种资源隔离单元。在一个共享的处理器、内存和 I/O 平台上,多个应用(如飞控、显示、导航、健康管理)被划分到不同分区中运行。每个分区拥有独立的地址空间、独立的执行时间窗口和独立的故障边界。分区内发生的错误——越界写、死循环、异常跳转——不应传播到其他分区。
分区通常由三个要素定义:
- 空间边界:该分区可访问的内存段、外设寄存器与通信端口;
- 时间边界:该分区在周期调度中获得的执行时间片与释放时刻;
- 通信接口:分区之间通过受控的采样端口、队列端口或服务端口交换数据,而非直接共享内存。
这三者共同构成分区的“契约”。操作系统(通常是分区化 RTOS 或 Hypervisor)负责强制执行该契约,任何越界访问都会被内存保护单元(MPU/MMU)拦截,任何超时执行都会被调度器强制切换。
二、静态分区与动态分区对比
静态分区在系统集成阶段就确定所有分区的数量、内存布局、时间窗口和通信通道,生成一张不可变的配置表。运行时调度器只按表执行,不做资源再分配。动态分区则允许在运行时根据负载、优先级或请求创建、迁移、合并分区,资源分配具有弹性。
| 对比维度 | 静态分区 | 动态分区 |
|---|---|---|
| 配置时机 | 集成期固定,运行期只读 | 运行期可创建、调整、销毁 |
| 时间确定性 | 强,最坏执行时间可静态分析 | 弱,受运行时分配影响 |
| 资源利用率 | 较低,需按峰值预留 | 较高,可复用空闲资源 |
| 故障隔离 | 边界清晰,易于认证 | 边界随分配变化,验证复杂 |
| 典型标准 | ARINC 653、DO-297 | 部分虚拟化平台、云化边缘系统 |
| 适用场景 | 飞控、航电、核电、轨交 | 通用计算、弹性业务、研发验证 |
静态分区的代价是“预留即占用”,但换来的是可预测性和可认证性。在安全关键领域,这种交换通常是值得的。
三、时间分区与空间分区
空间分区解决“谁能访问哪块内存”。它依赖 MMU/MPU 为每个分区建立独立的地址映射,分区之间不能直接读写对方数据。空间分区防止的是内存越界与数据污染。
时间分区解决“谁在什么时候运行、运行多久”。它采用周期性时间片轮转:一个主时间帧(Major Time Frame)被划分为若干固定长度的时间窗,每个分区在自己的窗口内运行,窗口结束即被强制挂起。时间分区防止的是CPU 独占与执行超时。
两者必须同时存在。只有空间分区,一个分区仍可能死循环占满 CPU;只有时间分区,一个分区仍可能越界改写其他分区数据。下图展示了静态分区中空间与时间双重隔离的协同关系:
图中左侧是空间分区:三个应用各自拥有独立地址段,由 MMU/MPU 强制隔离。右侧是时间分区:主时间帧 30 ms 被切分为 A(10 ms)、B(15 ms)、C(5 ms) 三个窗口,周期重复。两者叠加,才构成完整的静态分区隔离。
四、ARINC 653 标准简介
ARINC 653 是航空电子领域定义分区化操作系统接口的权威标准,全称《Avionics Application Software Standard Interface》。它规定了分区管理、进程管理、时间管理、分区间通信和健康监控等核心服务。
ARINC 653 的核心模型包括:
- 分区(Partition):独立的地址空间与时间窗口,是调度的基本单位;
- 进程(Process):分区内的执行实体,分为周期进程与偶发进程;
- 主时间帧(Major Time Frame):由配置表定义的周期调度循环;
- 分区间通信(IPC):通过采样端口、队列端口和服务端口进行受控数据交换;
- 健康监控(Health Monitoring):在进程、分区、模块三级处理故障。
一个典型的 ARINC 653 分区配置片段如下:
Partition {
Name = "FLIGHT_CTRL";
Period = 30 ms; // 主时间帧周期
Duration = 10 ms; // 本分区时间窗
Offset = 0 ms; // 在主帧中的起始偏移
Memory = 0x10000000..0x100FFFFF;
Processes = { "guidance", "control_law", "actuator_cmd" };
Ports = { Sampling("nav_data", IN), Queue("cmd_out", OUT) };
}
该配置在集成期固化,运行时由分区化 OS 按表调度。任何分区无法通过修改配置在运行时扩大自己的时间窗或内存段,这正是静态分区确定性的来源。
五、常见误区与复盘
复盘来看,静态分区的本质是用集成期的确定性换取运行期的可预测性。空间分区划定“能碰什么”,时间分区划定“能跑多久”,ARINC 653 则把这两者标准化。掌握这三层关系,才能理解后续实时性与抖动优化的所有手段。