Preempt_RT

什么是实时系统

实时系统的典型定义如下:“所谓实时系统,就是系统中计算结果的正确性不仅取决于计算逻辑的正确性,还取决于产生结果的时间。如果完成时间不符合要求,则可以认为系统发生了问题。”也就是说,不管实时应用程序执行的是何种任务,它不仅需要正确执行该任务而且必须及时完成。当前,Preempt_RT 维护者 Thomas Gleixner 给出的“实时”含义是:它和指定的一样快。

Linux 作为一种通用操作系统,随着时间的推移,在功能和时序行为方面一直在发展,以便适合许多其他更具挑战性的场景;尤其是实时系统对 Linux 的实时性改造一直从未停止过。

对 Linux 进行实时性改造,通常可从两个大的方向来着手。一个方向是从 Linux 内核内部开始,直接修改其内核源代码,其典型代表是 Preempt_RT 实时补丁;另一个方向则是从 Linux 内核的外围开始,实现一个与 Linux 内核共存的实时内核,即采用双内核方法,其典型实现为 RTAI/Linux,即现在的 Xenomai。

因为 Xenomai 实时内核与 Linux 内核共存,Xenomai 实时内核小而精巧,能够很好地控制其中的代码质量。Xenomai 实时内核完成了基本的硬件抽象层、任务调度管理和进程间通信管理模块等,能够满足一些硬实时系统的需求。然而,其上的实时应用通常分为实时和非实时两部分来完成 ,实时部分必须使用 Xenomai 提供的特有的 API;非实时部分则可以使用 Linux 提供的系统调用。与 Preempt_RT 实时编程相比,Xenomai 编程实现更为困难,软件移植难度更大

与双内核机制方案相比,Preempt_RT 实时补丁最大的优势在于它遵循 POSIX 标准,使用该补丁的实时系统应用程序和驱动程序与非实时系统的应用和驱动程序差异很小。因此,在使用该补丁的平台上做相应的开发比双内核机制的方案更容易。另外,该补丁与硬件平台相关性小,可移植性高。由于 Linux 内核过于庞大,有着较多关中断、关抢占代码,加上复杂的内存管理、调度器代码逻辑等众多不确定性因素,使得 Preempt_RT 虽然具有较好的软实时性,但在硬实时性方面有所欠缺。

什么是 Preempt_RT

Preempt_RT 补丁开发始于 2005 年。之后由德国 OSADL 组织赞助,Ingo Molnar、Thomas Gleixner 和 Steven Rostedt 三人共同发起,旨在将 Linux 内核的最大线程切换延迟从无限制的毫秒数降低到数十微秒的有界值。2016 年以后成为 Linux 基金会下属合作项目。目前 Preempt_RT 的赞助者来自 ARM、BMW、CIP、ELISA、Intel、National Instruments、OSADL、RedHat 和 Texas Instruments 等。经过 Preempt_RT 和 Linux 内核工程师在抢占、实时性方面的努力,Linux 内核的抢占延迟降低了几个数量级,使其能够与商业实时操作系统竞争。业界知名的 MontaVista Linux、WindRiver Linux、TimeSys Linux 都有 RT 补丁的身影。像 RTJVM、RTKVM、RTDocker、RTAndroid 等曾经出现过的 Preempt_RT 衍生用例,响应速度都有着不同程度的提升。

多年来,该补丁的许多部分已被纳入主线 Linux,包括高分辨率计时器(2.6.16)、优先级继承(2.6.18)、可抢占的 RCU(2.6.25)、内核互斥量和线程中断处理程序(2.6.30)、完全 Tickless 机制(3.10)、DL 调度器(EDF 调度算法)(3.14)、实时抢占锁(5.15)。然而,该补丁的核心部分仍然在主线之外。从近几年的 Preempt_RT 补丁来看,当前的主要工作不是开发新功能,而是专注于增量式引入主线和特定架构的支持。

当前 openEuler 22.03 LTS 主线内核版本为 Linux Kernel 5.10,有 180 把锁无法抢占,其中 8 把锁在 RT 补丁中强制修改成无法抢占。在最新的 5.17 内核中,Preempt_RT 补丁大小为 265KB,有 189 把锁仍然无法抢占,RT 补丁不再强制修改锁为无法抢占。

当前 Preempt_RT 主要特性

  • 抢占式临界区
  • 抢占式中断处理
  • 抢占式中断禁止代码序列
  • 内核自旋锁和信号量的优先级继承
  • 递延操作
  • 降低延迟的措施
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值