历经二十年,实时Linux(PREEMPT_RT)终于进入主线内核

历经二十年,实时Linux(PREEMPT_RT)终于进入主线内核

在科技领域 , Linux内核的发展一直备受瞩目 。 经过二十年的不懈努力 , 实时Linux(PREEMPT_RT)终于被正式纳入主线内核 , 这一里程碑事件标志着Linux在实时操作系统(RTOS)领域迈出了重要一步 。
什么是实时操作系统(RTOS)?
实时操作系统是一种专门设计的操作系统 , 旨在以精确和可靠的方式处理时间关键性任务 。 与Windows或macOS等通用操作系统不同 , RTOS旨在在严格的时间限制内响应事件和处理数据 , 这些时间限制通常以毫秒甚至微秒来衡量 。 正如知名的实时Linux开发者和Google工程师StevenRostedt所说 , “实时是最快的最坏情况” 。
他的意思在于 , RTOS的基本特征是其确定性行为 。 RTOS保证关键任务将在规定的截止时间内完成 。 许多人误以为RTOS用于快速处理 , 实际上并非如此 。 在RTOS中 , 速度并非关键 , 可靠性才是 。 这种可预测性在对时间要求至关重要的应用中非常关键 , 例如工业控制系统、医疗设备和航空电子设备等等 。
实时Linux的历史
实时Linux代码现已整合进所有Linux发行版中 , 随着即将到来的Linux6.12内核 , 这意味着Linux将很快开始出现在更多关键任务设备和工业硬件中 。 但这一成就的实现却耗费了相当长的时间 。
实时Linux的故事始于1990年代末 , 当时Linux支持实时应用的需求日益增长 。 最初的努力集中在创建与Linux内核并行运行的独立实时内核 , 这包括堪萨斯大学的KURT、米兰大学的RTAI和新墨西哥矿业理工学院的RTLinux等学术项目 。
2004年 , 资深Linux内核开发者IngoMolnar开始收集和重塑这些技术的片段 , 以构建实时抢占补丁集PREEMPT_RT的基础 。 这种方法与早期的实时Linux解决方案不同 , 因为它修改了现有的Linux内核 , 而不是创建一个独立的实时内核 。 到了2006年 , 它已经获得了足够的关注 , 以至于LinusTorvalds评论道:“用Linux控制激光器是疯狂的 , 但这个房间里的每个人都以自己的方式疯狂 。 所以如果你想用Linux来控制一个工业焊接激光器 , 我没有问题 。 ”
到了2009年 , 包括ThomasGleixner、PeterZiljstra和Rostedt在内的一小群内核开发者完成了将先前的原型开发整合为一个单一的补丁集 。 从那时起 , 许多公司开始使用这个补丁集来构建需要毫秒级精度的硬实时属性的工业系统 。
实时Linux为何耗费如此长的时间?
那么 , 为什么实时Linux直到现在才完全被内核接受呢?\"我们实际上不会推动某件事 , 除非我们认为它已经准备好了 。 \"Rostedt解释道 , \"几乎每件事在进入主线之前通常都会被重写至少三次 , 因为我们对进入主线的内容有很高的标准 。 \"
此外 , 进入主线的路径不仅仅是技术挑战 。 社群观念也起到了一定作用 。 \"起初 , 我们甚至不能提实时 。 \"Rostedt回忆道 , \"每个人都说 , '哦 , 我们不关心实时 。 '\"
另一个问题是资金 。 多年来 , 实时Linux的资金一直不稳定 。 2015年 , Linux基金会成立了实时Linux(RTL)协作项目 , 以协调围绕主线化PREEMPT_RT的努力 。
完全整合的最后一个障碍是重新设计内核的print_k函数 , 这是一个可以追溯到1991年的关键调试工具 。 Torvalds对print_k特别保护——他编写了原始代码 , 并且仍然用于调试 。 然而 , print_k也在调用时在Linux程序中引入了硬延迟 。 这种延迟在实时系统中是不可接受的 。
经过大量的工作、激烈的讨论和几个被拒绝的提议 , 今年早些时候达成了妥协 。 Torvalds满意 , 实时Linux开发者满意 , print_k用户满意 , 最终 , 实时Linux成为现实 。
经过二十年的开发 , Linux实时补丁终于被合并到主线内核中 。 这一里程碑标志着内核开发者多年来努力将确定性、低延迟性能带给Linux的成果 。
随着实时补丁的合并 , Linux内核现在完全可抢占 , 能够以微秒级响应事件 。 这种能力对于需要精确计时的应用至关重要 , 如工业控制系统、机器人技术和音频制作 。
【历经二十年,实时Linux(PREEMPT_RT)终于进入主线内核】如今 , Linux准备在RTOS世界中成为一个严肃的竞争者 。 这不仅是实时制造商的胜利 , 也是所有Linux用户的胜利 。

    推荐阅读