实时内核要求与 Linux 实时路径解析
1. 实时内核的常见要求
实时意味着能够及时且正确地处理外部事件,一个软件系统若要被认定为实时系统,需满足一些详细要求,以下是几个关键方面:
- 细粒度可抢占内核
- 抢占粒度与调度延迟 :实时内核需尽快从低优先级上下文切换到高优先级任务,此切换时间为抢占粒度,等待重新调度的最长时间为最坏情况下的调度延迟。早期 Linux 2.4 系列,新任务只能在内核上下文退出时调度,而 Robert Love 提出的可抢占内核支持在 Linux 2.6 成为标准特性,平均抢占性有显著提升。
- 存在的问题 :但只要系统中有任务持有独占资源,内核抢占就会全局禁用,导致最坏情况下的延迟仍无法满足硬实时要求。可用交通类比说明,一个城市的单个交通灯(抢占禁用锁)会因一处交叉路口(独占资源)而阻挡所有车辆(任务)。解决办法是让每个独占资源的获取和释放相互独立,这也是 PREEMPT_RT 努力的方向。
- 严格执行任务优先级
- 优先级反转问题 :即便有细粒度可抢占内核,被抢占的低优先级任务可能长时间持有独占资源,导致请求同一资源的高优先级任务严重延迟,即优先级反转。Linux 内核中独占资源广泛分布,遇到优先级反转的概率较高。
- 解决方法 :需采用特定操作系统技术,如优先级继承或优先级上限(http://lwn.net/Articles/178253/),确保反转时间短且有界,甚至不发生。
-
超级会员免费看
订阅专栏 解锁全文
2003

被折叠的 条评论
为什么被折叠?



