3.6 KiB
3.6 KiB
中断与实时性保障参考
1. 与本项目的关系
本方向为论文的“可保障性”提供理论和系统基础,覆盖固定优先级响应时间、共享资源阻塞、优先级倒置、中断线程化、CPU/IRQ 亲和性以及外部闭环测量。
2. 经典理论资料
| 资料 | 等级 | 可支撑内容 | 本项目使用方式 |
|---|---|---|---|
| C. L. Liu, J. W. Layland, “Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment,” 1973. DOI | A | RMS/EDF 与周期任务基础 | 建立基本任务模型 |
| L. Sha, R. Rajkumar, J. P. Lehoczky, “Priority Inheritance Protocols: An Approach to Real-Time Synchronization,” IEEE TC, 1990. DOI | A | 优先级继承、优先级上限与有界阻塞 | 支撑锁竞争和优先级倒置分析 |
| N. Audsley et al., “Applying New Scheduling Theory to Static Priority Pre-emptive Scheduling,” 1993. DOI | A | 含阻塞和抖动的精确固定优先级分析 | 构建含 IRQ/驱动阻塞的 RTA |
| K. Tindell, A. Burns, A. Wellings, “An Extendible Approach for Analyzing Fixed Priority Hard Real-Time Tasks,” Real-Time Systems, 1994. DOI | A | 固定优先级分析扩展 | 用于更复杂任务和通信分析 |
3. 内核与测量资料
| 资料 | 等级 | 可支撑内容 |
|---|---|---|
| Linux Kernel, “PREEMPT_RT Theory of Operation.” 官方文档 | A | 可抢占锁、rtmutex、优先级继承和线程化中断 |
| Linux Kernel, “How realtime kernels differ.” 官方文档 | A | 普通 Linux 与 PREEMPT_RT 的内核语义差异 |
| Linux Foundation Real-Time Linux, “Cyclictest.” 官方文档 | A/B | 唤醒延迟工具、参数、限制和最大值解释 |
Linux rt-tests 项目. kernel.org |
B | cyclictest、hwlatdetect 等实现与版本记录 |
4. 本项目分析框架
关键任务响应时间可写为:
R_i = C_i + B_i + I_irq,i + I_sched,i
+ sum(ceil((R_i + J_h) / T_h) * C_h)
其中 C_i 是自身执行时间,B_i 是共享资源阻塞,I_irq,i 是中断与驱动干扰,I_sched,i 是调度器和不可抢占区间干扰,求和项是高优先级任务干扰。该式只用于组织分析;每个项的取值和适用假设必须单独验证。
实测至少覆盖:
- 计划释放、就绪、开始和完成时间;
- 唤醒延迟、响应时间、完成抖动、违约率和观测最大值;
- IRQ 数量、处理时间、CPU 亲和性和最长关中断区间;
- 推理提交、DMA 和完成中断与关键任务峰值的时间关联;
- GPIO/CAN/RS485/网络外部回路端到端时延。
5. 对照与消融
- O0 普通 Linux、O1 PREEMPT_RT、O2 SylixOS 默认、O3 SylixOS 优化、必要时 O4 等预算调优;
- 逐项去除 CPU 隔离、IRQ 亲和性、优先级继承、内存预分配和推理准入;
- 同时报人工智能有效吞吐代价,避免通过饿死推理任务获得低抖动。
6. 不应直接推出的结论
- cyclictest 测得的是特定路径的唤醒延迟,通常不等于业务任务完整响应时间。
- 实测最大值不是 WCET;零违约不是硬实时证明。
- PREEMPT_RT 和专用 RTOS 的机制差异必须通过等价任务语义比较,不能只比较工具默认输出。