APP下载

基于Linux的实时操作系统的研究

2012-07-12华东石油局物探研究院系统保障部

电子世界 2012年13期
关键词:任务调度实时性中断

华东石油局物探研究院系统保障部 姜 岸

基于Linux的实时操作系统的研究

华东石油局物探研究院系统保障部 姜 岸

本文分析和研究了Linux系统在实时性方面存在的问题,并分析了实时系统的原理,以及提出了 实时Linux系统的系统结构和应用程序的结构。

Linux;实时操作系统;FIFO;实时应用程序

一、引言

随着计算机性能的不断提高,人们对计算机的数据处理能力提出了新的要求,比如在视频数据处理,网络数据处理等。因此,实时操作系统处理数据的效率成为当前计算机用户关注的焦点。目前,比较流行的实时操作系统主要有两大类:基于DOS的实时操作系统和基于UNIX操作系统。

基于DOS的实时操作系统是指在原有DOS的基础上,提高其相应功能来实现实时操作系统的特性,但是,由于DOS系统存在单任务的缺陷,因而其只能适应于需求时间较小任务量较少的实时任务处理。

基于UNIX的操作系统是通过UNIX的分时系统设计实时操作系统,来达到实时操作系统的最优平均性能。因此,基于UNIX的实时操作成为当前主要的实时操作系统,但其存在价格昂贵和应用开发环境匮乏的缺陷。由于Linux操作系统是开放源代码的类UNIX的操作系统,同时性能稳定,处理数据效率高,是一款性能高价格低廉的操作系统。

鉴于此,基于Linux的操作系统来开发一个高效性能的实时操作系统是可行的。

二、标准Linux系统在实时特性方面所存在的问题

实时操作系统的实时特性主要表现在以下几方面:(1)运行期间和处理数据的高可靠性特性;(2)处理数据请求的及时特性;(3)完成数据请求和处理的时限保证特性,即实时操作系统必须保证在指定的数据请求的响应时间内或者数据处理时间内完成请求或者处理任务,具有此功能的操作系统也称为硬实时操作系统;如果没有在数据处理请求,或者数据处理时间期限内完成数据处理,即未能实现时限保证特性,此类实时操作系统也称为软实时操作系统。

实时操作系统的实时性主要体现在时限保证,因此,超出时限保证范围的大小直接反映着实时操作系统的性能,即最坏情况。考虑到实时操作系统多方面的性能,所以,在设计Linux实时操作系统时,采用最优平均性能来衡量操作系统的实时性。

1.Linux的调度问题

Linux操作系统的调度问题主要是指进程调度。Linux操作系统的核心是不可竞争的,在规定的时间内对进程实现等级优先调度。一个等级较低的进程在调用系统核心进程时,则其会被操作系统挂起,只有当等级高的内核进程完成后,才能继续执行,但是,在执行系统核心进程期间,其完成时间的不可预测性可能造成等待后续进程的持久挂起,进而不能满足系统的实时性。

2.Linux的进程问题

Linux操作系统的进程问题主要包括进程的同步和进程的互斥问题。Linux操作系统的进行同步和进程互斥是通过信号量来实现的。在信号量的使用过程中,其存在信号量的加锁操作和解锁操作。由于信号量的频繁加锁和解锁操作会造成一定量时间的损耗,同时影响操作系统的实时特性。鉴此,Linux操作系统采用了粗粒度策略,但是仍然存在信号的加锁和解锁的问题,其系统性能较差。

3.Linux内存锁问题

与其他操作系统一样,Linux操作系统在内存管理方面,同样采用虚拟内存管理策略,即数据在处理过程中,进程会被系统换入内存和换出到虚拟内存中,频繁的换入和换出操作会耗费大量的时间。同时,实时操作系统需要将一些主要的或者关键的进程始终运行在内存中,但Linux不能保证这种实时要求。

4.Linux的时间问题

Linux操作系统的时间问题包括时间精度问题和定时器问题。操作系统的时间精度的精度越高,则中断处理就会越频繁,进而造成耗费时间量大。另外,Linux的硬时间周期一般为100Hz,这就要求Linux的最高时间精度可以为100ms,导致某些实时响应无法在此时间精度内完成实时响应。

5.关中断问题

Linux处理进程的互斥时,会保护临界资源,同时会关掉中断,但会造成优先级别高的进行长时间的阻塞,为了解决此问题,Linux开发者对其相关的实时性进行了扩充和增加,但最终只能保证一部分的软件实现实时应用。

三、实时Linux操作系统

1.基本思想

图1 实时Linux操作系统结构图

图2 实时Linux系统应用程序结构图

实时Linux操作系统最早是由新墨西哥理工学院开发的。实时操作系统主要是在实时环境下进行数据的采集,数据处理等。为了实时的Linux操作系统,开发者研究和设计了可推行的实时内核,并将原来的Linux内核作为一个进程与用户实时进程同时调度,同时将Linux核心进程的等级调到最低,以便于操作系统的实时进程进行资源推断,以此来保证系统的实时特性。用户或者开发者可以针对实时性的具体应用来开发或者编写实时任务,可以采用先进先出的策略来调度实时任务进程和Linux系统核心进程,其实时Linux操作系统的系统结构如图1所示。

2.原理与设计

(1)中断模拟

针对关中断的问题,实时Linux操作系统设计了一个软件中断模拟器,该中断模拟器位于硬件中断控制器与系统核心的中间。系统核心的中断处理包括关中断、开中断和中断返回。系统接收的全部硬件中断都会被中断模拟器接收并处理,当发生关中断时,中断模拟器进行软件标志的清除操作;如果发生中断,中断模拟器则检查软标志是否已经被标志为中断处理。中断模拟过程:首先,通过开中断开启中断,并设置中断堆栈;再次,进行中断处理;最后,通过中断返回调用软中断进行返回。

(2)实时任务

用户可以针对实际情况,设计和编写自己需要的实时任务并被实时系统所调度。在早期的处理器中,如80X86,就采用了分页存储技术,有效地保护了各个相互独立的实时任务,保证了运行过程中上下文切换时寄存器的修改。但是,在80486处理器中,由于采用了虚拟缓冲技术,造成实时任务的切换过于频繁,导致系统实时性能下降。因此,为了解决此问题,实时Linux操作系统采用了线程的形式来运行实时任务,减少运行地址空间和上下文切换开销。另外,实时Linux操作系统通过可加载核心模块来实现实时任务的加载和卸载,相比之下,比CPU上的上下文切换开销小,提升了实时Linux操作系统的实时性能。

(3)任务调度

任务调度主要是负责实时系统中各个实时任务能够在规定的时限内完成数据处理。任务调度是通过实时调度器来实现的。大部分实时调度器都未能够实现高效率的任务调度,开发者通过修改相关参数实现调度。实时Linux操作系统规定每个进程的优先级别,在调度过程中,根据进程的优先级别进行抢断运行,级别高的进程优秀于级别低的进程运行,每过一个实时时间片,任务调度器都会执行一次新的任务调度。同时,实时Linux操作系统还有其他实时调度算法,如时限优先算法,即运行时间越短,越优先;最早时限优先算法等。

(4)时间精度

时间精度的误差会直接影响实时系统的进程调度。如果偏差过大容易引起任务释放抖动,将对实时任务构成影响。在一般的操作系统中,采用时间周期调度任务。在实时Linux操作系统中,对任务调度的周期进行了改善,根据当前的系统时间和当前运行的实时任务需求的时间来决定时钟中断周期,从而使实时系统在处理实时任务的效率方面有较高的提升。尤其是在80486芯片以上的计算机上,时间精度反映出来的实时速度和效率会更高、更快。

(5)通信机制

实时Linux系统在进程通信过程中采用先进先出策略,并且定义实时先进先出数据结构,以便于进程的建立、释放、读操作和写操作,其中读写操作为原子操作,是不能被挂起的,能够有效防止进程优先级的倒置问题。实时Linux系统在调度实时任务时,也可以根据UNIX修过过的任务调度机制Sysem V IPC来实现任务调度,比如先进先出管道,消息队列等。

四、应用程序结构

实时Linux系统的应用程序在开发之前,实时应用程序开发者应当首先分析其运行环境,并把应用软件分为两部分:普通部分和实时部分。实时部分的设计要求简单,且只负责实时任务处理;而普通部分负责数据处理。实时Linux系统的实时应用程序的典型的数据流如图2所示。

五、总结

实时Linux系统是在原来普通操作系统的基础上进行相应的改善,在获得实时特性的同时,其还保留着对普通操作系统的兼容。针对普通操作系统存在的中断、进程调度和通信等问题进行了针对性的分析,同时针对实时系统的实时性,提出了一些相应的解决办法,并对实时应用软件进行了结构分析。希望本文能够对进一步研究如何保证实时系统的QOS,提供重要的参考。

[1]赵龙.对UNIX实时扩充的一点研究[J].计算机工程与科学,2005,11.20(4):76-80

[2]郭杰.基于Linux实时操作系统的分析和设计[D].硕士学位论文,2006

[3]李明.基于Linux的实时控制系统的调度算法研究[J].计算机工程与科学,2005(11):45-46

[4]须文波.欧爱辉基于RTAI-Linux的实时操作系统的分析与研究[J],现代计算机,2003(5):5-6

姜岸(1988—),女,江苏南京人,大学专科,主要研究方向:计算机linux。

猜你喜欢

任务调度实时性中断
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
基于时间负载均衡蚁群算法的云任务调度优化
跟踪导练(二)(5)
千里移防,卫勤保障不中断
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
云计算环境中任务调度策略
云计算中基于进化算法的任务调度策略
一种车载Profibus总线系统的实时性分析
FPGA内嵌PowerPC的中断响应分析