论文部分内容阅读
实时操作系统是近年来研究的一个热点,目前的实时操作系统广泛应用于国防、工业自动控制、通信等领域。实时应用对系统的实时性能提出了更高的要求,系统的响应时间从毫秒级缩短到微妙级,甚至到纳秒级,因此需要有能够满足实时性的操作系统作为应用的支撑。Linux只是作为一个通用分时操作系统而开发的,其设计目标追求的是公平性和系统吞吐量,和实时系统的目标存在巨大差距。本文从Linux的时钟系统着手,通过分析Linux内核代码,找出影响Linux实时性的因素,提出了增加细粒度并行精密时钟系统的思想和设计实现方法,提高Linux操作系统的实时性能。常见的修改时钟系统的方法都是基于软件的层次上对内核的时钟模块代码进行修改,具有增加系统负担、改动过大等不足。而目前硬件的飞速发展为实时系统的研究提供了很大的便利。因此,本课题通过对硬件编程,在Linux内核中实现一个与原时钟系统共存的精密时钟系统,以支持具有强实时要求的应用。主要技术方法包括:重新设置中断向量、设计实时定时器队列结构以及对高级可编程中断控制器APIC编程实现高精度的时钟系统。首先,Linux原定时器队列采用的是“日历结构”,响应时间仅为毫秒级,所以在内核中另外建立一个实时定时器队列,专门用于实时进程。其次,通过修改APIC的中断函数的代码,来完成新时钟系统的中断控制。最后,用关中断的方式解决了新旧时钟共存的问题。修改后的内核在PC机上长时间运行过程中,始终能够及时响应时间精度为微妙的应用,任务响应时间能达到标准Linux2.6内核的1/12,取得了良好的效果。通过分析比较可以得出,采用双时钟系统,可以有效的满足实时应用在时间上的响应要求,而且对内核的改动较小,从而实现了以较小的改动来获得较高的实时性能,满足硬实时任务截止期的需求。该方法从硬件方向着手,对今后提高系统的实时性的研究有一定的借鉴意义。