实时Linux系统:需求、应用与实现路径
1. 实时内核的常见要求
实时系统意味着能够及时且正确地处理内外部事件。一个软件系统若要被认定为实时系统,需满足一些详细要求,尽管实时系统类型多样,但某些概念贯穿其中。
1.1 细粒度可抢占内核
实时行为要求内核能尽快从低优先级任务切换到高优先级任务。这个切换时间被称为抢占粒度,而等待重新调度的最长时间则定义了内核的最坏情况调度延迟。
在Linux 2.4系列中,不同的补丁引入了内核代码中的任务调度机会。此前,新任务只能在内核上下文退出时才能被调度。Robert Love提出的可抢占内核支持在Linux 2.5开发阶段被合并到主线内核,如今是Linux 2.6的标准特性,平均而言,它显著提升了可抢占性。
然而,任务间的并发性能仍不理想。只要系统中有任务持有独占资源,内核抢占就会全局禁用,即便没有其他任务竞争该资源。这导致只有平均延迟有所改善,最坏情况延迟仍无法满足硬实时要求。可以用一个交通类比来说明这种限制:整个城市(Linux内核)只有一个交通信号灯(抢占禁用锁),每当有车(任务)经过城市任何一个十字路口(独占资源)时,所有车都会被挡住。解决这一限制的方法是让每个独占资源的获取和释放相互独立,这也是PREEMPT_RT努力的一个基本方面。
1.2 严格执行的任务优先级
即使采用了细粒度可抢占内核,被抢占的低优先级任务仍可能长时间持有独占资源,导致请求相同资源的高优先级任务严重延迟,这就是优先级反转问题。由于Linux内核中独占资源广泛分布,遇到优先级反转的概率较高。操作系统需要采用特定技术,如优先级继承或优先级天花板(http://lwn.net/A
超级会员免费看
订阅专栏 解锁全文

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



