论文部分内容阅读
随着信息技术的发展,实时操作系统具有广阔的应用前景,特别是在嵌入式系统领域。Linux作为一个开源免费的操作系统,凭借其稳定的性能、广泛的适用性以及定制方便等优势,成为实时操作系统的一个理想选择。Linux作为通用分时操作系统,在实时性支持方面已得到较大的发展。本文以优化Linux实时性能为目标,详细分析了Linux可抢占内核以及Linux提供的进程调度算法,对已有的实时改进技术进行研究对比,并针对应用模式提出一种实时改进算法。本文所取得的主要研究成果主要有以下几方面:1.对Linux内核的可抢占性进行研究。分析了Linux为了增强实时性而对内核源码进行的修改。为了实现可抢占,内核主要做了以下修改:在thread_info结构体中添加了一个抢占计数器,用来决定能否抢占;修改内核自旋锁spinlock代码段,使进程处于自旋锁保护的互斥区中时不可抢占。2.对Linux提供的实时调度算法进行分析。解释了Linux调度器通过调度类的方式,提供多种进程调度策略,并详细分析了完全公平调度算法、实时调度算法以及调度中的关键数据结构和函数。3.对现有Linux实时改进技术进行研究。主要包括针对调度框架、调度算法延迟、调度算法本身和内核接口四个方面的改进:对Slot-Based Task-Splitting调度框架与通用调度框架进行分析对比;分析RT patch为改进调度算法延迟而做的修改,包括中断线程化、优先级继承等;从问题模式的角度,对已有的硬实时、软实时调度算法进行分析比较;分析对比RTAI、Xenomai这类内核接口API改进方案。4.针对一种特定的典型上层应用模式,提出一种实时性改进方案。首先,使用基于关联度的算法,由用户来对具有关联度的进程进行设置,将它们放在指定的CPU核运行。其次,在内核SCHED_RR调度策略的基础上,提出Weighted Round Robin调度策略,采用权重参数来指定时间片大小。这样采用SCHED_WRR调度策略的实时进程,不再是固定的时间片,而是根据进程代码中设置的权重来得到它的时间片大小。最后,测试并验证该实时调度算法所实现的功能,并与SCHED_RR调度策略进行性能比对,结果显示,在特定的应用模式下,该算法确实能提高实时性。