论文部分内容阅读
作为最主要的开放源码软件之一,Linux因具有内核源码公开、性能稳定、兼容UNIX、支持多种处理器、网络功能强、安全性高、内核可以剪裁等一系列优点,正迅速进入实时控制领域。但Linux毕竟是通用操作系统,以满足大多数用户需要为目的,本身还无法满足一般的实时应用。尽管2.6内核较2.4作出了巨大改进,主要有包括支持大部分POSIX标准中的实时功能、多任务、多线程、可抢占内核、O(1)进程调度算法等。但是,Linux的实时性能还是比较差,不能保证实时任务的响应时间。本文研究如何使Linux2.6满足硬实时的要求,以更加适应嵌入式领域的需求。论文分析了Linux2.6内核源代码,特别对进程调度机制、中断机制、抢占式内核、定时器等几个主要方面做了深入的分析。在此基础上,针对2.6内核实时性不足的三个方面提出了改进方案,并加以实现。首先,针对系统在繁重网络负载和I/O负载下实时任务难以实施的情况,提出中断线程化的方案;其次,引入经典的动态实时调度算法-最小空闲时间优先算法(LLF算法),将其与Linux2.6进程调度结构相结合,以弥补Linux2.6内核进程调度机制缺乏实时调度功能的不足,在保持了原有系统O(1)调度特性的同时,有效地增强了其实时调度功能;第三,针对Linux2.6时钟粒度粗糙的缺点,受Kurt-Linux的时钟机制改造思想的启发,将单次触发模式(One-Shot Mode)引入到Linux2.6定时器中,并且结合“最小空闲时间优先算法”巧妙设置了新的时钟机制。改进后系统在保持原有负载能力的基础上达到了微秒级的时钟精度。本文最后对Linux2.4内核、Linux2.6内核和改进系统在中断响应时间、上下文切换时间这两个实时性关键指标上进行了对比测试。测试结果表明,改进后的Linux2.6内核在实时性能方面有了进一步的提高,更加适用于嵌入式高实时性应用的开发。