Linux 实时系统:原理、挑战与 PREEMPT_RT 补丁应用
1. 引言
在嵌入式开发中,我们常常关注开发工具和流程,但实际上周边组件也会对开发过程产生重要影响。而在操作系统领域,Linux 作为通用操作系统,在实时性方面存在一定的局限性。本文将深入探讨 Linux 实时系统的相关概念、挑战以及解决方案,特别是 PREEMPT_RT 补丁的应用。
2. 实时系统基础概念
2.1 实时的定义
在计算领域,实时意味着计算机或嵌入式设备能够及时响应对外部环境的反馈。这与单纯追求速度不同,而是要在特定系统环境下达到足够快的响应速度,且不同行业(如汽车工业、核电厂)对“足够快”的定义也有所不同。同时,实时系统要能给出可靠响应,以确保决策不会对外部系统造成不良影响。例如,核电厂中的实时系统需要及时检测并预防异常情况,避免灾难发生。
2.2 通用操作系统(GPOS)与实时操作系统(RTOS)
Linux 通常被归类为通用操作系统(GPOS),它与 UNIX 类似,旨在为多用户提供服务,并追求最大平均吞吐量。然而,这种设计牺牲了对延迟的控制,与实时操作系统(RTOS)的要求相悖。实时操作系统需要在给定的时间约束内对随机异步事件做出响应,并对延迟有上限要求,即调度截止时间。
根据系统满足调度截止时间的能力,实时系统可分为以下三类:
| 类型 | 描述 |
| ---- | ---- |
| 硬实时系统 | 错过截止时间将导致系统完全失效 |
| 强实时系统 | 允许错过截止时间,但会降低系统质量,且错过后结果不再有用 |
| 软实时系统 | 错过截止时