论文摘要
作为最主要的开放源码的操作系统之一,Linux具有内核源码公开、性能稳定、兼容UNIX、支持多种处理器、网络功能强、安全性高、内核可剪裁等一系列优点,正迅速进入实时控制领域。Linux最初是作为通用操作系统而设计开发的,其设计的基本原则是尽量缩短系统的平均响应时间并提高系统的吞吐量,尽管Linux也提供了一些实时处理的支持,包括支持大部分POSIX标准中的实时功能、多任务、多线程、可抢占内核、O(1)进程调度算法等,但是,Linux的实时性能还是比较差,不能保证实时任务的响应时间[1]。因此,Linux通常需要做一定的改造,才能更好的应用于嵌入式实时系统。本课题是嵌入式Linux网络视频监控系统开发工作的一部分,该监控系统要求在较大的网络吞吐量和长时间读写数据的的运行状况下兼具有良好的实时特性。为了充分利用Linux本身丰富的网络功能,Linux的实时性能改造排除了双内核的方案,采用了对Linux内核本身进行改进以达到实时要求的方法。标准Linux2.6内核中已经成功实现的O(1)调度程序保证了进程调度的时间为常数,并实现了抢占式调度;2.6内核还支持可抢占性,只要重新调度是安全的,正在执行的任务就可以在任何时间被其他可执行任务抢占。可见2.6内核在进程调度和提高内核可抢占性两个方面已经取得了较好的改进。本课题的主要精力是集中在内部改造Linux内核来为应用程序带来实时性能这个主题上,主要内容如下:(1)分析了Linux2.6内核的中断机制,以及打上Ingo Molnar的实时化补丁后的内核的中断机制,分析如何通过改进中断机制来提高Linux系统的实时性能。(2)提出改进方案:将中断作为内核线程并赋予不同的实时优先级,在中断服务程序入口函数中进行当前任务优先级与中断线程优先级的比较,不同的情况进行不同的处理,从而保证实时性高的任务不被打扰,优先级高的中断能立即响应;分析了标准Linux的同步机制,以及Linux自旋锁的不足之处,在实时方案中用互斥代替自旋锁加以改进。(3)对这种方案进行分析和测试,改进后的系统较好地解决了标准Linux在实时性方面存在的不足使之成为一个软实时系统,明显提高了任务相应时间的精度,可以应用在众多具有软实时要求的环境中,在规定时间内完成数据采集、处理工作、多媒体信息处理、过程控制等要求迅速相应的工作,例如基于网络的监控系统,室内温度控制系统等应用。(4)讨论期间选型和模块划分,构造硬件平台,实现了基于ARM9开发平台的嵌入式实时Linux系统的构建,包括开发平台bootloader的开发,实时Linux内核镜像的编译,交叉编译环境的建立,根文件系统的移植,经过后期系统的长期运行测试,证明了该系统的实时性能良好,系统运行稳定。