土法炼钢兴趣小组的算法知识备份

【操作系统百科】实时 OS 巡礼

文章导航

分类入口
os
标签入口
#rtos#vxworks#qnx#zephyr#preempt-rt

目录

汽车刹车、飞机飞控、工业机器人——这些场景需要确定性响应,通用 OS 无法保证。

一、先看图

flowchart TD
    RT[实时需求] --> HARD[硬实时<br/>截止时间必须满足]
    RT --> SOFT[软实时<br/>偶尔超时可接受]

    HARD --> VX[VxWorks<br/>航空/国防]
    HARD --> QNX_R[QNX<br/>汽车/医疗]
    SOFT --> ZEPHYR[Zephyr<br/>IoT]
    SOFT --> PREEMPT[Linux PREEMPT_RT<br/>通用+软实时]

    classDef hard fill:#f8514922,stroke:#f85149,color:#adbac7;
    classDef soft fill:#f0883e22,stroke:#f0883e,color:#adbac7;
    class HARD,VX,QNX_R hard
    class SOFT,ZEPHYR,PREEMPT soft

二、硬实时 vs 软实时

类型 定义 例子
硬实时 错过截止时间 = 系统失败 ABS 制动、心脏起搏器
软实时 偶尔超时可降级 视频播放、VoIP
固定实时 超时的结果没有价值但不灾难 金融交易

三、VxWorks

Wind River 的商业 RTOS:

四、QNX

BlackBerry 的微内核 RTOS:

五、Zephyr

Linux Foundation 的开源 RTOS:

void main(void)
{
    k_thread_create(&my_thread, stack, STACK_SIZE,
                    my_entry, NULL, NULL, NULL,
                    PRIORITY, 0, K_NO_WAIT);
}

六、PREEMPT_RT

Linux 实时补丁:

# 内核配置
CONFIG_PREEMPT_RT=y

关键改变:

机制 标准 Linux PREEMPT_RT
spinlock 禁用抢占 变为 rt_mutex(可抢占)
softirq 中断上下文 线程化
中断处理 硬中断 线程化中断
调度延迟 ~ms ~10-50μs

6.1 已合入主线

从 Linux 6.12 开始 → PREEMPT_RT 完全合入主线。

七、ARINC-653

航空电子分区调度:

时间窗口 1 → 分区 A(飞控)
时间窗口 2 → 分区 B(导航)
时间窗口 3 → 分区 C(娱乐)

分区之间时间和空间完全隔离 → 一个分区 crash 不影响其他。

八、安全认证

标准 领域 RTOS
DO-178C 航空 VxWorks
ISO 26262 汽车 QNX, FreeRTOS
IEC 62304 医疗 VxWorks, QNX
IEC 61508 工业 VxWorks, SAFERTOS

认证需要源码可追溯、100% 代码覆盖、形式化方法。

九、对比总结

方面 VxWorks QNX Zephyr PREEMPT_RT
架构 微内核 微内核 单体 宏内核
确定性 极高 极高 中-高
生态 增长中 Linux 全生态
成本 商业 商业 开源 开源
内存 ~100KB ~1MB ~8KB ~GB

十、小结


参考文献

工具


上一篇Windows 内核 下一篇Unikernel

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-06-05 · os

【操作系统百科】线程化中断

把 IRQ handler 线程化——PREEMPT_RT 的核心改造之一。本文讲 request_threaded_irq、handler/thread_fn 分工、IRQF_ONESHOT、全线程化的延迟与吞吐代价、softirq 线程化趋势。

2026-06-01 · os

【操作系统百科】优先级反转与继承

火星探路者号因优先级反转重启——这是实时系统最经典的故事。本文讲优先级反转现象、PIP 优先级继承协议、PCP 优先级天花板、rt_mutex、PREEMPT_RT 的 spinlock 转换、DEADLINE 任务反转。

2026-04-18 · os

【操作系统百科】SCHED_FIFO/RR 与 PREEMPT_RT

Linux 里的实时:SCHED_FIFO/RR 提供优先级调度,但原版内核仍有不可抢占点。PREEMPT_RT 补丁集 20 年后(6.12)合入主线,把几乎所有 spinlock 变 rt_mutex、IRQ 变线程。本文讲 RT 调度语义、RT-throttling、cyclictest 基线、优先级继承、以及 RT 部署的陷阱。

2026-04-27 · os

【操作系统百科】内存回收

Linux 内存回收是 VM 最复杂的子系统之一。本文讲 active/inactive LRU、kswapd 与 direct reclaim、watermark 三线、swappiness 的真实含义、MGLRU 改造、memcg 回收与 PSI。


By .