论文部分内容阅读
作为最主要的开放源码软件之一,Linux因具有内核源码公开、性能稳定、兼容UNIX、支持多种处理器、网络功能强、安全性高、内核可以剪裁等一系列优点,正大步进入实时控制领域。Linux最初是作为通用操作系统而设计开发的,其设计的基本原则是尽量缩短系统的平均响应时间并提高系统的吞吐量。尽管Linux也提供了一些实时处理的支持,包括支持大部分POSIX标准中的实时功能、多任务、多线程等。但是,Linux的实时性能还是比较差,不能保证实时任务的响应时间。
本文以内核源码为基础,分析了Linux的中断、进程调度策略、虚拟内存、文件系统等Linux的内核机制。在此基础上,详细分析和测量了内核的调度延迟、中断延迟、上下文切换时间、虚拟内存引起的延迟时间、文件系统导致的系统延迟。将降低调度延迟时间作为突破点,采取优化系统时钟中断和改进实时进程调度算法来提高Linux的实时性能。
分析了标准Linux的时钟机制,分析了Linux时钟中断的不足之处,提出了双频时钟中断机制。双频时钟中断提高了系统的定时精度,增强了内核对实时进程的响应能力,同时保证了系统的整体性能不受大的影响。实验表明新的时钟中断的性能得到了较好的改善。
详细分析了标准Linux的实时调度,介绍了Linux的调度策略、调度流程、进程权值的选择,分析了Linux实时调度算法的不足之处,提出了EEDF调度算法(EnhancedEarliestDeadlineFirst),给出了EEDF的算法流程,详细分析了EEDF算法的可调度条件及时间特性,并针对Linux的具体环境对EEDF调度算法进行了实例分析,给出了Linux下的实现方案、案例与测试结果。
介绍了实时Linux下的实时应用程序开发的两种模式以及周期性任务的开发。
实验结果表明,Linux的实时性能得到了较好的改善,并较好地保持了实时性与兼容性的统一。