论文部分内容阅读
随着信息时代的发展,实时嵌入式系统已经不仅仅应用于工业自动化控制,而是更广泛的应用于多媒体通信、突发事件处理、环境监测、交通控制以及航空航天等领域。传统微内核结构的、仅仅具有实时功能的实时嵌入式操作系统越来越不能满足实际应用的需求。因此,实时嵌入式操作系统也开始从单功能、弱功能向高专业化的多功能、强功能方向发展。Linux作为一个模块化的单内核操作系统,其功能强大,具有极强的可定制性,支持几乎所有的嵌入式硬件平台,同时它又具有一定的实时性能。另外,Linux的一切应用开发都遵循GPL协议,内核代码是开源的,对内核的改动完全是自由开放的。可以说,Linux作为一个通用的分时操作系统,有非常大的潜力改造成为一个实时嵌入式操作系统。这也是国内外许多顶尖IT企业和科研机构的一个热点研究方向。本课题首先大量研究了国内外一些经典的实时操作系统方案,详细分析了几种实时调度算法的特点,并依据Linux2.6内核源代码认真分析了Linux内核的结构和制约其实时性的因素。在这基础之上采用直接修改内核法对Linux进行了实时性改进:对于Linux内核不可抢占的问题,修改内核源代码使用互斥锁mutex替换阻碍抢占的自旋锁spinlock,提高了内核整体的实时性;对于Linux内核中实时性不够强的核心调度算法,本课题结合RM算法和EDF算法,创新性的提出了一种以最终时限为基础、以执行频率为辅助的基于优先级的综合调度算法,并编写代码替换Linux内核的调度算法,大大提高了Linux的实时性;另外,Linux并没有提供预防优先级反转的方案,本课题利用优先级继承策略的思想,在资源表结构中添加等待队列链表和优先级记录,编写代码在Linux上实现了优先级继承方案,提高了操作系统的稳定性和安全性。最后将改进后的Linux在实验室搭建的ARM9实验平台上利用Lmbench测试其上下文切换时间,并与标准Linux相比较,得出最终结果。