Linux 主线内核已合并史诗级补丁 ‘PREEMPT_RT’
在 2024 年 9 月的欧洲开源峰会上,Linus Torvalds 宣布 ‘PREEMPT_RT’(Real-Time Linux) 补丁已被接受合并到 Linux 主线内核。
从 Linux 6.12 开始,所有发行版都将包含实时 Linux 代码。这意味着 Linux 将开始运行在更多任务关键设备 (mission-critical devices) 和工业硬件上。
使用它,Linux 内核完全可抢占,使其能够在微秒内响应事件。这一能力对于需要精确时间控制的应用程序至关重要,如工业控制系统、机器人技术和音频制作。
PREEMPT_RT 补丁从 2004 年开始启动开发工作,为 Linux 内核实现了实时计算能力。事实上,实时 Linux (Real-time Linux) 的故事最早可追溯到 20 世纪 90 年代后期,当时 Linux 需要支持实时应用的需求日益增长。
最初的尝试集中在创建可以与 Linux 内核并行运行的独立实时内核。这包括堪萨斯大学的 KURT;米兰大学的 RTAI;以及新墨西哥矿业与科技学院的 RTLinux 等学术项目。
Linux 内核开发者 Ingo Molnar 于 2004 年开始收集并重新整理这些项目的代码片段,并构建了实时抢占补丁 (real-time preemption) PREEMPT_RT 的基础。
这种方法与早期的实时 Linux 解决方案不同,因为它修改了现有的 Linux 内核,而不是创建一个单独的实时内核。
到 2006 年,它获得了广泛关注,以至于 Linus Torvalds 评价称:"用 Linux 控制激光器太疯狂了,但在座各位都有自己的疯狂之处。因此,如果你想用 Linux 来控制工业焊接激光器,我对你使用 PREEMPT_RT 没有意见。”
2009 年,内核开发者 Thomas Gleixner、Peter Ziljstra 和 Rostedt 组建了小团队,将之前的原型开发整合成一个单一的树外补丁集。
正是从那时起,许多公司开始使用这个补丁集来构建需要毫秒级精度的强实时工业系统。
2015 年,Linux 基金会创建 Real-Time Linux (RTL) 协作项目,以协调将 PREEMPT_RT 补丁合并到主线内核。
但要将 PREEMPT_RT 补丁完整合并到内核还面临着最后一个障碍:重新设计 print_k 函数。
这是一个可以追溯到 1991 年的关键调试工具,最早是 Linus Torvalds 本人开发用于调试。然而,每当 Linux 程序调用 print_k 时就会产生硬延迟。这在实时系统中是不可接受的。
Rostedt 解释道:“print_k 有千百种‘hacks’技巧,用来处理上千种不同的情况。每当我们将 print_k 修改为执行某种操作时,就会破坏这些情况之一。print_k 在调试中可以让开发者确切知道进程崩溃时对应的代码定位。如果对系统进行高强度测试,延迟主要在大约 30 微秒左右,但随后会突然变成 5 毫秒。这个延迟就是 print_k 消息。
经过大量工作,许多激烈的讨论,以及几次被拒绝的提案,今年初 Linux 内核社区终于在重新 print_k 上达成了一致。
随着 ‘PREEMPT_RT’ 补丁的合并,相信 Linux 将会在实时操作系统领域成为有力的竞争者。这不仅对实时系统制造商来说是一个胜利,也是所有 Linux 用户的胜利。
延伸阅读

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微软优化 Hyper-V 代码,以缩短启动时间
微软已提交 Hyper-V 更新至 Linux 6.12 内核。其中包含的大多是一些小改动,但确实有助于优化大型 Hyper-V VM 的启动时间。 通过并发执行 hv_synic_init() 优化启动时间 使用帮助程序读取 hv_snp_boot_ap() 中的控制寄存器 在 hv_fcopy_start 中添加内存分配检查 值得一提的 Hyper-V 优化是通过允许并发执行 hv_synic_init() 函数来优化 VM 启动时间。Microsoft 工程师 Saurabh Sengar 指出,对于具有许多 CPU 的 VM(例如多达 1,780 个 vCPU),由于在 hv_synic_init() 内对每个 CPU 进行顺序初始化,Hyper-V ACPI 初始化函数可能需要数秒才能完成。 对于 Linux 6.12 及以后的版本,每个 CPU 都会并行执行该函数,从而为现有逻辑带来约 66% 的改进。但从总体上看,对于使用 Hyper-V 的超大型虚拟机来说,这只是节省了一两秒的时间。但是在拥有超大型虚拟机的云计算世界中,几秒钟的 downtime 都可能至关重要,这对于...
- 下一篇
JetBrains 与阿里云战略合作发布 JetBrains AI Assistant,聚焦中国市场开发者,实现开发效率代际提升
中国杭州,2024年9月19日 —— 全球知名的软件开发工具提供商JetBrains在2024云栖大会上正式发布基于阿里云通义大模型的JetBrains AI Assistant,标志着JetBrains在完善其开发工具产品生态方面迈出了重要一步。JetBrains AI Assistant与多款JetBrains产品深度集成,能够以高度的适配性完成代码生成与重构、回答和解释代码相关问题、撰写文档和提交信息等工作,助力中国本土开发者提升效率和代码质量,实现生产力的全面跃升,释放出更多的时间和精力去探索新的技术领域和创新思路。 图:发布仪式合影 JetBrains中国区总裁李玥萱表示,“中国市场在JetBrains的全球版图中占据举足轻重的地位。作为一家技术领先的软件开发公司,JetBrains积极拥抱市场变化,确保我们的产品和服务始终与开发者的需求同频共振,助力他们突破效率极限。未来,我们期待与阿里云继续深化战略合作,不断探索和创新,为中国市场的用户提供更加强大、更加智能的工具和解决方案,共同开启一个充满无限可能的智能开发新时代。” 图:JetBrains中国区总裁李玥萱 阿里云智能集...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS6,CentOS7官方镜像安装Oracle11G
- Mario游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果