2. 实时任务模型与调度基础
在航电系统中,任务并不是“随便排队执行”的普通程序。飞控律计算、惯导数据融合、显示刷新、告警监控、总线通信等任务,各自有明确的触发方式、执行频度和时间约束。实时任务模型的作用,就是把这些运行需求抽象成可分析、可调度、可验证的对象。只有先建立正确的任务模型,后面的隔离与资源管理才有依据。
一、周期任务与非周期任务
周期任务按固定时间间隔触发,典型参数包括周期 T、最坏执行时间 C、相对截止时间 D 和相位 φ。例如某飞控计算机中,姿态解算任务每 10 ms 执行一次,最坏执行时间 1.8 ms,截止时间等于周期,即必须在下一个周期到来前完成。这类任务的可预测性最强,是航电实时调度的主体。
非周期任务没有固定到达时刻,通常由事件触发,例如飞行员操作、总线异常、BIT 自检请求。非周期任务又可分为软实时和硬实时:显示菜单刷新可以容忍偶尔延迟,而告警响应、余度切换指令则必须严格限时。工程上常把非周期任务拆成“到达—排队—执行”三段,并为其预留带宽或设置服务器机制,避免它挤占周期任务的时间预算。
还有一类偶发任务,到达时间不固定,但两次到达之间有最小间隔。它比纯非周期任务更容易分析,因为可以按最小间隔折算成等效周期负载。航电中很多故障处理任务就属于这一类。
二、优先级、截止时间与可调度性
优先级决定任务在就绪队列中的相对地位。静态优先级在系统运行前确定,不随运行状态改变;动态优先级则根据截止时间、松弛度等实时调整。截止时间分为绝对截止时间和相对截止时间,前者是具体时刻,后者是“从释放到必须完成”的时间长度。航电中常把截止时间与任务周期绑定,例如 D = T,但显示、记录类任务也可能允许 D > T。
判断一组任务能否满足时限,核心指标是CPU 利用率:
U = Σ(Ci / Ti)
示例:
任务A:C=1.8 ms,T=10 ms → 0.180
任务B:C=2.5 ms,T=20 ms → 0.125
任务C:C=4.0 ms,T=40 ms → 0.100
任务D:C=1.0 ms,T=50 ms → 0.020
合计 U = 0.425
利用率低于 1 只是必要条件,不代表一定可调度。是否可调度还取决于调度算法、优先级分配和任务间的阻塞关系。
三、RM 与 EDF 调度算法
RM(Rate Monotonic,速率单调)采用静态优先级:周期越短,优先级越高。它的优点是实现简单、行为确定、易于适航审定;缺点是利用率上限受任务数影响。对于 n 个任务,RM 的充分条件为:
U ≤ n × (2^(1/n) − 1)
n=3 时,上限约 0.780
n=4 时,上限约 0.757
n=5 时,上限约 0.743
注意这是充分条件,不是必要条件。上例中 U=0.425,远低于 n=4 时的 0.757,因此按 RM 调度是可调度的。若某组任务 U 超过该上限,仍可能通过精确响应时间分析证明其可调度。
EDF(Earliest Deadline First,最早截止优先)采用动态优先级:每次调度时选择绝对截止时间最近的任务。理论上,只要 U ≤ 1,EDF 就能保证所有任务满足截止时间,利用率上限更高。但 EDF 的运行时开销更大,优先级频繁变化,且过载时行为难以预测——一旦超载,可能引发连锁错过截止时间,这对航电安全关键功能是重大风险。
四、航电中的适用性分析
航电系统对调度算法的选择,不是单纯比较利用率上限,而是综合考虑确定性、可审定性、过载行为和实现复杂度。
| 维度 | RM | EDF |
|---|---|---|
| 优先级类型 | 静态,周期短者优先 | 动态,截止近者优先 |
| 利用率上限 | 约 0.69~0.78(随 n 变化) | 理论上限 1.0 |
| 过载行为 | 低优先级任务先错过,影响可界定 | 可能连锁错过,难以预测 |
| 实现复杂度 | 低,优先级表固定 | 较高,需动态排序 |
| 适航友好度 | 高,行为确定、易验证 | 较低,需额外证明过载安全 |
| 航电典型用途 | 飞控、惯导、告警等安全关键任务 | 显示刷新、记录、非关键计算 |
在工程实践中,航电系统常采用混合调度策略:安全关键周期任务用 RM 静态优先级,非关键任务用 EDF 或时间片轮转,并通过分区隔离限制非关键任务对关键任务的影响。例如 ARINC 653 分区系统中,每个分区内部可独立选择调度策略,分区之间按时间窗口轮转,从而把不同关键等级的任务在时间与空间上隔离开。
总结来看,RM 与 EDF 并非简单的好坏之分,而是面向不同约束的两种工具。航电实时任务建模的第一步,是把周期、非周期、偶发任务区分清楚,给出可信的 C、T、D 参数;第二步才是根据关键等级和适航要求选择调度策略。只有模型参数可信、调度策略匹配,后续的任务隔离与资源管理才有稳固基础。