4. 资源管理基本概念

在航电实时计算系统中,任务隔离解决的是“互不干扰”的问题,而资源管理解决的是“资源给谁、给多少、什么时候收回”的问题。两者是同一枚硬币的两面:没有资源管理,隔离只能停留在时间与空间边界的静态划分上;没有隔离,资源管理就失去了可度量的对象。本节从航电系统实际可管理的资源类型出发,说明资源预留、分配与回收三类策略的基本含义与工程做法。

一、航电系统中可被管理的资源类型

资源管理的第一个问题是“管什么”。在综合模块化航电(IMA)平台中,通常把资源划分为四类:

  • CPU 时间:以时间窗口或预算的形式分配给分区。例如某分区在 20 ms 主帧中获得 4 ms 执行预算,即 CPU 时间资源。CPU 时间不可存储,过期作废,因此它的管理本质是“调度 + 限额”。
  • 内存空间:包括代码段、数据段、堆栈和共享缓冲区。内存是可持久占用的资源,管理重点是容量上限、地址隔离和碎片控制。航电中常用“分区内存配额 + 静态链接”方式,避免运行时动态分配带来的不确定性。
  • I/O 通道:包括 ARINC 429、ARINC 653 端口、离散量、模拟量、CAN、AFDX 虚拟链路等。I/O 资源的管理重点是端口归属、采样/刷新周期和访问互斥。
  • 网络带宽:在 AFDX 等交换式以太网中,带宽以虚拟链路(VL)的带宽分配间隔(BAG)和最大帧长(Lmax)来约束。带宽是共享型资源,管理重点是流量整形与超额丢弃策略。

这四类资源的共同特征是“有限且可度量”。只有可度量的资源,才能被预留、分配和回收。下面这张图给出四类资源在分区与平台之间的管理关系,以及预留、分配、回收三条策略路径。

航电资源管理:资源类型与三类策略 可管理资源类型(有限且可度量) CPU 时间 主帧窗口 / 执行预算 不可存储,过期作废 内存空间 代码 / 数据 / 堆栈 / 缓冲 可持久占用,需防碎片 I/O 通道 429 / 653 端口 / 离散量 端口归属与访问互斥 网络带宽 AFDX 虚拟链路 VL BAG / Lmax 流量整形 三类策略:预留 → 分配 → 回收 ① 资源预留 配置阶段静态声明: · CPU 预算 4 ms / 20 ms · 内存配额 2 MB · VL 带宽 128 kbps · I/O 端口独占 目的:保证最坏情况可满足 ② 资源分配 运行阶段按策略发放: · 时间窗口轮转调度 · 内存按分区映射 · I/O 按端口表路由 · 带宽按 VL 整形发送 目的:在预留边界内高效使用 ③ 资源回收 任务结束或超限时收回: · 窗口结束强制切出 · 分区重启释放内存 · 端口关闭解除占用 · 超额帧直接丢弃 目的:防止资源泄漏与越界 回收结果反馈至预留配置:调整预算 / 配额 / 带宽

二、资源预留:把最坏情况先算清楚

资源预留的核心思想是“先证明,再运行”。在系统集成阶段,就要为每个分区、每条虚拟链路、每个 I/O 端口确定资源上限,并验证所有上限之和不超过平台能力。以 CPU 为例,若主帧周期为 20 ms,分区 A 需要 4 ms、分区 B 需要 3 ms、分区 C 需要 2 ms,则总预算 9 ms,加上系统开销 2 ms,共 11 ms,小于 20 ms,预留可行。若总预算超过主帧周期,就必须削减某个分区的预算或缩短其执行路径,而不是寄希望于“运行时再抢”。

内存预留通常采用静态配额。例如某分区代码段 512 KB、数据段 768 KB、堆栈 64 KB、共享缓冲 256 KB,合计 1.6 MB,则为其预留 2 MB 并留出余量。网络带宽预留则依据 VL 的 BAG 与 Lmax 计算:一条 VL 的 BAG 为 8 ms、Lmax 为 256 字节,则其最大带宽约为 256×8/0.008 = 256 kbps。多条 VL 的带宽之和必须小于物理链路带宽,并留出交换开销余量。

预留不是“越多越好”。过度预留会浪费平台能力,导致本可集成的功能无法上线;预留不足则会在最坏情况下出现超时。工程上通常以“最坏执行时间(WCET)+ 余量”作为 CPU 预留依据,以“峰值流量 + 突发余量”作为带宽预留依据。

三、资源分配:在边界内做调度

分配是运行阶段的行为。CPU 时间按主帧窗口轮转分配:调度表在配置时生成,运行时由分区调度器按表切换。分区 A 在 0~4 ms 运行,分区 B 在 4~7 ms 运行,分区 C 在 7~9 ms 运行,剩余时间留给系统分区。这种“时间触发”分配方式确定性最强,适合航电高安全等级场景。

内存分配在分区启动时完成映射:分区只能访问自己的地址空间,共享内存区域通过显式配置的端口访问。I/O 分配依据端口表:每个端口在配置时绑定到唯一分区,运行时按采样或队列模式读写。带宽分配由 AFDX 端系统按 VL 的 BAG 整形发送,交换机按 VL 的带宽约束转发,超出 Lmax 的帧被丢弃。

下面给出一个简化的分区资源配置示例,用于说明预留与分配之间的对应关系:

分区名    CPU预算    内存配额    I/O端口        VL带宽
A_飞控    4 ms/20ms  2.0 MB     429_CH1       128 kbps
B_显示    3 ms/20ms  4.0 MB     429_CH2       256 kbps
C_健康    2 ms/20ms  1.5 MB     离散量_IN1    64 kbps
系统分区  2 ms/20ms  1.0 MB     —             —
合计      11 ms      8.5 MB      —             448 kbps

该示例中,CPU 合计 11 ms 小于 20 ms 主帧,内存合计 8.5 MB 小于平台可用内存,带宽合计 448 kbps 远小于链路容量。这些数字属于教学示例,实际工程中需依据具体平台手册和 WCET 分析结果确定。

四、资源回收:防止泄漏与越界

回收策略决定资源在任务结束、超时或故障时如何归还。CPU 时间的回收是“窗口结束强制切出”:无论分区是否执行完,时间窗口一到,调度器立即切换到下一分区,未完成的工作留到下一主帧继续。这种强制回收保证了时间隔离,但也要求分区任务必须可被抢占且状态可恢复。

内存回收发生在分区重启或任务终止时。分区重启会清空其数据段和堆栈,重新加载代码段,从而释放被占用的内存。I/O 端口回收通过关闭端口、解除绑定实现,防止已终止分区继续占用通道。带宽回收则体现为超额丢弃:当某条 VL 的发送速率超过预留带宽时,端系统直接丢弃超额帧,而不是让它们挤占其他 VL 的带宽。

回收策略必须与健康监控(HM)配合。若分区超时后未被正确回收,可能出现“僵尸分区”继续占用 CPU 或内存,进而影响其他分区。工程上通常设置看门狗定时器和分区重启计数,超过阈值后触发系统级降级或重启。

五、三类策略的闭环关系

预留、分配、回收不是三个孤立动作,而是一个闭环:预留给出边界,分配在边界内运行,回收把运行结果反馈回预留配置。例如某分区在多次飞行中频繁触发 CPU 超时,说明其预留预算偏小,需要重新分析 WCET 并调整预算;若某条 VL 长期只用到预留带宽的 20%,则可在下一轮配置中缩减其带宽,把余量让给新增功能。这个闭环的驱动力是运行数据,而不是主观估计。

在航电实时计算中,资源管理的目标可以概括为一句话:让每个分区在确定的时间、确定的空间、确定的通道和确定的带宽内完成确定的功能。CPU、内存、I/O、网络带宽四类资源各有其度量方式和管理手段,但预留、分配、回收三类策略的逻辑是一致的——先证明可行,再按边界运行,最后按结果修正。掌握这一逻辑,才能在后续的分区调度、内存保护和网络配置中做出正确的工程决策。