论文部分内容阅读
随着计算机,网络和通信技术地发展,实时系统越来越多得被应用于工业控制、网络通信、实时监控,多媒体等领域。这些新的实时网络应用的出现给实时系统地发展提出了新的要求和挑战。同时,随着开源项目的兴起,作为典型代表的Linux得到了迅速普及和发展,已成长为稳定的、性能优秀的操作系统。但是Linux本身是一个只是一个类UNIX的通用的操作系统,其在实时性能方面有着比较大的缺陷。然而基于Linux本身的特点,将其改造成为一个合适的实时系统是完全可行的。
论文在深入分析和研究Linux2.4版本内核源代码的基础上,结合实时操作系统的原理.选择了对Linux在内存管理和进程调度这两方面进行研究和实时化改进,取得了显著的效果。
首先通过对内核代码的分析,了解到Linux的内存管理是采用了虚拟内存管理的方式,使得系统中的每个进程可以使用比实际内存多很多的虚拟内存,提高了系统内存的使用效率。但正是由于虚拟内存的存在,使得进程每次获得的内存都是先分配虚拟内存,在分配物理内存。系统对物理内存的分配总是会放在最后一步,即在相关指令执行的时候才进行,而且也仅将进程所需要的部分内存分配给进程。当进程所需要的页面不在内存时,系统会发生缺页中断,将进程所需的页面调入内存,而这个中断时间是不确定的,那么就必然不能满足实时进程的需求,又考虑到虚拟内存的强大功能,在不删除虚拟内存结构的情况下,针对实时进程采用一次将实时进程所需的内存全部分配的方法来完成在内存管理这块的改进。同时在研究分析的过程中,发现系统中的空闲内存总量需要放在一个较高的量上才有可能使系统中有足够的内存可以满足一般实时进程对内存的需求,那么有必要提高系统中空闲内存的数量,从而加快实时进程的响应时间。
由于Linux的进程调度是采用的不可抢占式的内核调度。其进程调度发生在每次中断发生的时刻,因此要提高Linux在调度方面的实时性,改变时钟中断的粒度是首要工作。适当提高系统的时间粒度,可以有效地提高系统的实时性。但如果将时间粒度提到无限高,则系统会频繁发生时钟中断,从而严重影响系统性能。其次在进程刚生成时,Linux让子进程和父进程保持同样的优先级别,不利于系统对实时进程的响应,因此必须要修改进程的优先级,并将实时进程挂在符合其优先级别的可运行队列中去。
论文中详细阐述了针对Linux操作系统进行的实时化改进方案和具体实施过程,最后对改进后的系统进行了测试,达到了预期的,平均响应时间只有改进前的40%,系统性能有了大幅度地提高。