Linux 6.12 可能会实时支持“PREEMPT_RT”

Preempt-RT 是一种修改,允许具有较高优先级的任务中断具有较低优先级的任务。

El 实时系统的概念 这不是Linux近几年才想到的事情,自从有了这个想法 大约20年前开始,确切地说是2005年 作为“实时抢占”(“-rt”)项目的一部分,为 Linux 内核开发了 PREEMPT_RT 模式。

对于那些不知道的人 抢占_RT,他们应该知道 这是一个补丁 对于Linux内核并将操作系统转换为实时操作系统 (即时的)。 PREEMPT_RT 的主要目标是减少延迟并确保任务执行的可预测性,这对于需要快速响应的应用程序至关重要。

简单来说,我们可以说 PREEMPT_RT 允许内核的几乎所有部分被中断, 这减少了延迟。与标准内核不同,并非所有部分都可以中断,这可能会导致响应时间延迟。

自2015年以来该项目一直受到Linux基金会的监督 到目前为止,PREEMPT_RT 模式的实现都是以外部补丁的形式提供的。基于这些补丁,发行版例如 RHEL、SUSE 和 Ubuntu 创建了其产品的实时版本, 金融系统、音频和视频处理设备、航空系统、医药、机器人、电信和工业应用等领域的需求量很大,在这些领域,保证事件的可预测响应时间至关重要。

En 2019年促销活动开始 PREEMPT_RT 项目中开发的补丁数量 到主 Linux 内核。 在内核版本 5.3 中,配置文件中包含 PREEMPT_RT 选项以启用实时模式。

PREEMPT_RT 所需的 printk 位位于 linux-next 中。这 是 PREEMPT_RT 的最后一个已知障碍。 RT队列有 还有 UART 8250 的“原子控制台”,但尚未推出 linux-下一个。这意味着“旧版控制台”行为,即不从以下位置打印 紧急情况下的原子上下文。 8250 UART 控制器是唯一一款 今天提供“原子控制台”支持。

所有 这项工作即将取得成果由于必要更改的完整集成花费了五年时间并且即将完成,因为预计在版本 6.12 中,内核可以在 PREEMPT_RT 模式下编译,而无需应用额外的补丁。

据说最后一个障碍 阻止 PREEMPT_RT 启用的原因是缺少 使用 printk 函数支持非阻塞原子输出。 这个功能已经有 在 linux-next 分支中采用。 此外,8250 UART 控制器正在等待实现非阻塞原子控制台,如果没有该控制台,目前会阻止在原子上下文中执行的代码将紧急消息输出到控制台。

合并 printk 位后,可以在 X86、ARM64 上启用 PREEMPT_RT 和 Risc-V。这三个合并的架构多年来需要进行更改。
多年来,让我处于一个没有本质变化的位置
会影响他们的队列。 ARM 和 POWERPC 还剩下一些重要的补丁……

Linux内核开发人员 已宣布在 linux-nex 分支中集成最新的必要更改t,将用于编译版本 6.12。这些更改将允许使用 PREEMPT_RT 选项编译内核,从而引入实时功能。

一旦这些更改被接受 在主分支上,PREEMPT_RT 模式 它将适用于 X86、ARM64 和 RISC-V 架构。 由于必要的补丁尚未完全集成,因此稍后将添加对 ARM 和 POWERPC 架构的支持。

值得一提的是,提议的更改尚未最终确定,如果 PREEMPT_RT 没有到达 6.12 分支,那么它可能会在明年的 6.13 版本中集成。

最后, 如果您有兴趣了解更多有关它的信息,您可以在中查看详细信息 以下链接。