real-time linux的一些基础概念
核心认知:实时 ≠ 速度快
实时系统(Real Time)的关键不是单纯跑得快,而是确定性(可预测性)。
RTOS(实时操作系统)可以保证不错的整体吞吐性能,但会主动牺牲部分整体吞吐量,来换取行为的绝对可预测、时延可控。
一般有两种分类:
-
硬实时(Hard Real-Time)
- 定义:系统必须在预先规定的最大时限内响应内外触发的事件,拥有最坏情况时延的绝对保障。
- 失效后果:一旦错过截止时间,就会造成系统彻底崩溃、设备损坏、人员安全危险等灾难性故障。
- 典型场景:空中交通管制、车辆整车 / 底盘控制系统、医疗设备(如心脏起搏器)等安全攸关场景。
-
软实时(Soft Real-Time)
- 定义:系统尽可能最快响应事件,属于尽力而为(best effort) 的设计。
- 失效后果:偶尔错过截止时间、丢失事件,不会产生毁灭性灾难,只会出现体验、服务质量的下降。
- 典型场景:网络语音通话(VoIP)、多媒体流媒体、电脑游戏等消费级体验类业务。
Linux 在 Realtime 方面的表现
-
原生主线(Vanilla)Linux 的定位
标准 Linux 内核并非硬实时系统,它和传统 Unix 一致,是分时操作系统,设计核心目标:- 最大化系统整体吞吐量
- 在多用户、多任务环境中公平分配 CPU 时间
- 调度器避免进程长期饥饿、保障整体调度公平性
-
原生 Linux 的实时性短板
- 内核部分服务(内存分配、系统调用等)时序行为不确定、不可预测(非确定性)
- 默认配置下,进程执行系统调用时无法被抢占,高优先级实时任务无法及时插队
- 整体设计优先吞吐性能,而非时延与可预测性
-
吞吐量 vs 确定性的取舍矛盾
- 通用 Linux 极致优化整体吞吐量,而非时延与可预测性
- CPU 多层大容量高速缓存,大幅拉高平均运行速度
- 但对实时场景而言:
稳定可控的慢速(乌龟),远好于快慢不定的极速(兔子) - CPU 缓存机制会导致最坏时延不可控,让硬实时任务无法稳定、安全独占 CPU 资源,无法满足硬实时严苛的时限要求
参考资料:
Making Linux do Hard Real-time(Jim Huang)
本作品采用 CC BY-NC-SA 4.0 协议

浙公网安备 33010602011771号