一. Linux 在实时方面的不足
1. 早期的linux在任何时候。硬中断、软中断、tasklet、bh具有最高优先级,它们能够中断任何其他实时任务,并且在中断处理时,中断可能被长时间地关闭,其他任务得不到调度,会造成很大的延迟。
2. 早期的linux不支持抢占
3. 早期的linux在操作某些核心数据结构时, 为保证数据的完整性,采取了关闭中断的措施。
4. 早期时钟管理系统分辨率很低。
5. 早起调度器的时间复杂度是O(n),具有不确定性。
6. 早期的linux没有提供解决优先级反转的处理措施。
7. 动态内存分配算法的时间复杂度是O(n).具有不确定性。
8. linux虽然提供了SCHED_FIFO和SCHED_RR两种实时调度策略,但是还没提供基于截至时间优先的实时调度策略,比如EDF和LLF。
二. 各种Linux实时改造方法
1. 修改Linux内核本身,让其原生提供实时能力。
2. 引入新的硬件抽象层,在抽象层上实现实时操作系统的核心功能。
根据结构来划分:
三. 实时抢占补丁
它在原有的低延迟补丁和抢占补丁的基础上,引入了中断线程化、高精度时钟、临界区抢占以及优先级继承等。
实时抢占补丁分析:
1.自愿抢占补丁/低延迟补丁
2. 抢占补丁
3. 实时抢占补丁:a.中断线程化 b.高精度时钟 c.实时调度算法 d.优先级继承 e.其他(用户空间的实时支持,实时虚拟化技术、容错技术,内存分配算法)