摘要:分析了linux的实时性,针对其在实时应用中的技术障碍,在参考了与此相关研究基础上,从三方面提出了改善linux实时性能的改进措施。为提高嵌入式应用响应时间精度,提出两种细化linux时钟粒度方法;为增强系统内核对实时任务的响应能力,采用插入抢占点和修改内核法增强linux内核的可抢占性;为保证硬实时任务的时限要求,把原linux的单运行队列改为双运行队列,硬实时任务单独被放在一个队列中,并采用lf调度算法代替原内核的fif调度算法。
关键词:linux;实时性;调度策略;抢占
1 引言
目前,无论是在日常生活,还是在工业控制,航空航天,军事等方面,嵌入式系统都有着非常广泛的应用。嵌入式系统目前主要有:inds e、vxrks、qnx等,它们都具有较好的实时性、系统可靠性、任务处理随机性等优点,但是它们的价格普遍偏高。而嵌入式linux以其非常低廉的价格,可以大大的降低成本,逐渐成为嵌入式操作系统的首选。但是,作为通用操作系统的linux,由于其在实时应用领域的技术障碍,要应用在嵌入式领域,还必须对linux内核作必要的改进。许多嵌入式设备都要求与外部环境有硬实时的交互能力,将最初按照分时系统目标设计的linux 改造成能支持硬实时性的操作系统显得十分重要。幸运的是, linux 及其相关项目的开放源码特征为深入研究其内核并加以改造提供了可行性, 可以修改linux 内核中的各个模块以达到满足嵌入式应用的需求,提高软件方面的开发速度。目前,改善linux内核的设计与实现,使其适用于实时领域吸引了许多研究和开发人员的注意力[1-4]。常用的实时性改造方法是采用双核方法,这种方法的弊端在于实时任务的开发是直接面向提供精确实时服务的小实时核心的,而不是功能强大的常规linux核心。基于此,近年来修改核的方法越来越受到科研人员的重视,这种方法是基于已有linux系统对于软件开发的支持,进行源代码级修改而使linux变成一个真正的实时操作系统。本文分析了标准linux在实时应用中的技术障碍,参考了修改核方法的思想,从内核时钟管理、内核的抢占性、内核调度算法三方面论述了改善标准linux实时性能的方法。
2 linux 在实时应用中的技术障碍
2.1 linux的实时性分析
linux作为一个通用操作系统,主要考虑的是调度的公平性和吞吐量等指标。然而,在实时方面它还不能很好地满足实时系统方面的需要,其本身仅仅提供了一些实时处理的支持,这包括支持大部分psix标准中的实时功能,支持多任务、多线程,具有丰富的通信机制等;同时也提供了符合psix标准的调度策略,包括fif调度策略、时间片轮转调度策略和静态优先级抢占式调度策略。linux区分实时进程和普通进程,并采用不同的调度策略。
为了同时支持实时和非实时两种进程,linux的调度策略简单讲就是优先级加上时间片。当系统中有实时进程到来时,系统赋予它最高的优先级。体现在实时性上,linux采用了两种简单的调度策略,即先来先服务调度(shed-fif)和时间片轮转调度(shed-rr)。具体是将所有处于运行状态的任务挂接在一个run-queue 队列中,并将任务分成实时和非实时任务,对不同的任务,在其任务控制块task-strut中用一个pliy属性来确定其调度策略。对实时性要求较严的硬实时任务采用shed-fif调度,使之在一次调度后运行完毕。对普通非实时进程,linux采用基于优先级的轮转策略。
2.2 linux在实时应用中的技术障碍
尽管linux本身提供了一些支持实时性的机制,然而,由于linux系统是以高的吞吐量和公平性为追求目标,基本上没有考虑实时应用所要满足的时间约束,它只是提供了一些相对简单的任务调度策略。因此,实时性问题是将linux应用于嵌入式系统开发的一大障碍,无法在硬实时系统中得到应用。linux在实时应用中的技术障碍具体表现在:
未完...点击下方链接下载完整文档