2026-06-05 · os
【操作系统百科】线程化中断
把 IRQ handler 线程化——PREEMPT_RT 的核心改造之一。本文讲 request_threaded_irq、handler/thread_fn 分工、IRQF_ONESHOT、全线程化的延迟与吞吐代价、softirq 线程化趋势。

























汽车刹车、飞机飞控、工业机器人——这些场景需要确定性响应,通用 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
| 类型 | 定义 | 例子 |
|---|---|---|
| 硬实时 | 错过截止时间 = 系统失败 | ABS 制动、心脏起搏器 |
| 软实时 | 偶尔超时可降级 | 视频播放、VoIP |
| 固定实时 | 超时的结果没有价值但不灾难 | 金融交易 |
Wind River 的商业 RTOS:
BlackBerry 的微内核 RTOS:
Linux Foundation 的开源 RTOS:
void main(void)
{
k_thread_create(&my_thread, stack, STACK_SIZE,
my_entry, NULL, NULL, NULL,
PRIORITY, 0, K_NO_WAIT);
}Linux 实时补丁:
# 内核配置
CONFIG_PREEMPT_RT=y关键改变:
| 机制 | 标准 Linux | PREEMPT_RT |
|---|---|---|
| spinlock | 禁用抢占 | 变为 rt_mutex(可抢占) |
| softirq | 中断上下文 | 线程化 |
| 中断处理 | 硬中断 | 线程化中断 |
| 调度延迟 | ~ms | ~10-50μs |
从 Linux 6.12 开始 → PREEMPT_RT 完全合入主线。
航空电子分区调度:
时间窗口 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
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。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。