预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据 Linux操作系统实时性的分析与改进策略木徐德陈亚军(西华师范大学计算机学院四川南充637000)触发的实时任务不能被立即被调度执行。如果低优先级的进程由于进入临界区或者为了尽快完成是操作系统的脉搏,操作系统环境建立之后,任间接唤起的。时钟也是许多操作系统基本活动的Linux虽然给实时进程提供了较高的优先级,但是片的调度策略可能使得一个实时进程在一个时间片内未完成,其优先级将降低,从而可能造成到摘要:Linux已经成为一个流行的嵌入式操作系统,但在实时应用中有些不足。本文在详细分析Linux实时性的基础上。从双内核结构、定时器的细粒度化、可抢占式内核和实时调度策略等四个方面做了改进,以增强系统的实时性。关键词:嵌入式系统;实时性;实时调度策略中图分类号:TP316文献标识码:A文章编号-1673-4580(2008)06-0016一(04)嵌入式系统是以应用为中心、以计算机技术为基础,软硬件可裁减,适用应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统⋯。众所周知,Linux已经成为一个流行的嵌入式操作系统,而Linux是按照分时系统的目标设计的,进程调度强调平衡各进程之间的响应时间来保证公平的CPIJ时间占用,因此,本身为一个通用的分时操作系统而非真正意义上的实时系统。尽管Linux系统已经加入了一些实时处理的支持,包括支持大部分的POSIX标准中的实时功能,支持多任务多线程,具有丰富的通信机制等,但是它还是没有满足嵌人式系统所要求的实时性。为了保证在嵌入式系统中的实时性,必须采用一定的策略加以改进。本文从双内核结构、定时器的细粒度化、可抢占式内核和实时调度策略四个方面对Linux的实时性做了改进,给出具体的算法思想或数据结构。Linux系统实时性的分析尽管Linux在内核中加入了提高中断性能和调度响应时间的改进,但其内核设计关注于应用程序的吞吐量,而在实时方面存在不足,主要表现在以下几个方面:(1)频繁关中断引起中断丢失,导致由中断任务而关闭了中断,那么即使有高优先级实时进程的中断发生,系统也无法响应。这种情况在实时系统中是不允许发生的。(2)粗糙的时钟粒度心1不能够提供精确的定时以满足实时应用微秒级的响应需求。时钟管理务的执行和中止在很多情况下都是由时钟直接或基准。系统用它来维持系统时间,监督进程运行,另外它还是进程调度的重要依据。通常Linux的时钟粒度被设置为10ms,而实时应用一般都需要微秒级的响应精度,显然,10ms的时钟粒度不能满足实时应用的需求。(3)Linux内核的不可抢占性。Linux不能保证在任一时刻系统所运行的进程是具有最高优先级的进程,这主要是由于被动调度和优先级反转等问题造成的。(4)缺乏有效的实时任务调度机制和调度算法【3】。Linux使用的是基于优先级的任务调度策略,这种调度策略不能保证实时任务按时完成。并没有加入时间限制,如完成的最后期限、应在多长时间内完成、执行周期等。Limtx的基于时间2008年第6期九江学院学报jiujiang(总第149期)(Sum149)·基金项目:本文得到四川教育厅重点科研项目(0727_/)35)的支持。收稿日期:2008一07—06作者简介:徐德(1982一),男,四川苍溪人,硕士,西华师范大学计算机学院教师。研究方向为嵌入式系统开发。JournallNo,6,2008ofUniversityNO 万方数据 级最低的任务来调度,只有当没有可运行的实时号。当中断信号需要实时进程来处理时,实时进关中断情况:l表示Linux内核打开中断,0表示该标志位,如果该位是1,立刻把中断传给Linux具有精密刻度的实时核心时钟处理系统(用于对来,不但提高了系统的稳定性和效率,而且独立一个高精确度定时器之后,需要维护两个与时钟有关的中断请求队列:系统时钟中断请求队列(timer—irq)和HRT中断请求队列(hrt—timer一岫),它们分别对应各自的中断服务程序。在内IG—HRT—REQ,则高精度定时器机制有效,否{除此之外,还需要修改与定时器相关的函数,为了解决Linux实现硬实时的最大障碍,就必须使Linux内核成为完全可被抢占实时内核。’改进截止时间实时任务无法完成。Linux实时性改进策略2.1双内核法该方法通过在系统的最底层增加一个实时核心层来实现,实时核心层负责硬件管理并提供实时任务管理,Linux核心被看作是实时核心中优先任务时Linux核心才被调度。对于实时内核来说,它始终不关闭硬件中断,可以接受所有的中断信程将抢占Linux内核;如果中断信号需要Linux内核来处理时,则由实时内核将信号传给Linux内核。实时内核中提供了一个用来模拟Linux内核的Linux关闭中断;实时内核在中断到来的时候检查内核,否则,将所有待处理的中断