APP下载

Vxworks嵌入式实时操作系统任务调度方法研究

2014-03-10董艳铃常扬

计算机与网络 2014年10期
关键词:信号量包率多任务

董艳铃 常扬

(中国电子科技集团公司第五十四研究所河北石家庄 050081)

Vxworks嵌入式实时操作系统任务调度方法研究

董艳铃 常扬

(中国电子科技集团公司第五十四研究所河北石家庄 050081)

介绍了Vxworks嵌入式实时操作系统内核任务调度的4种方法,针对嵌入式实时操作系统多线程实时调度的应用需求,在对Vxworks嵌入式实时操作系统调度原理与方法进行分析研究的基础上,根据指定应用环境的设计指标与方案,对Vxworks嵌入式实时操作系统系统任务调度方法进行了分析比较,通过仿真实验的方式对其性能进行测试,并得出了方法适用性的相关论断,从而为相关领域嵌入式实时操作系统的技术应用提供参考。

嵌入式 实时 任务调度

1 引言

Vxworks嵌入式操作系统的实时性主要建立在多任务体系与任务间通信的基础上,专用通信网络的实时性要求很高,在嵌入式实时操作系统没有得到广泛应用的时期,往往采用硬件实时性分析与大规模仿真设计结合的方式进行相关工作,效率低及可操作性差。随着以Vxworks为代表的嵌入式实时操作系统步入历史舞台,专用通信网络设计方法取得了巨大的进步。随之而来,如何完成多任务间的同步与调度就成为了一项重要的研究内容。

2 Vxworks实时操作系统

Vxworks是美国风河系统公司推出的高性能实时操作系统。Vxworks是一个运行在目标机上的高性能和可裁剪的嵌入式实时操作系统,有着良好的可靠性和卓越的实时性,被广泛应用于通信、军事、航空和航天等对实时性要求严格的高新技术领域。

Vxworks是一个功能强大而且比较复杂的操作系统,包括进程管理、存储管理、设备管理、文件系统管理和网络协议与系统应用等。

实时操作系统(Real Time Operating System,RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定时间内控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时2种模式,硬实时要求在规定时间内必须完成操作,这是在操作系统设计时保证的;软实时则只是按照任务的优先级,尽可能快的完成任务即可。在专用通信网络中,必须使用硬实时操作系统,且要求操作系统必须具备以下特点:①多任务;②有线程优先级;③多种中断级别[1]。

Vxworks操作系统满足以上实时性设计需求,其只占用很小的存储空间,并可以高度裁剪,保证了系统能以较高的效率运行。

3 多任务与实时性

多任务提供一种机制,用于响应多重和离散事件,多任务构造出多线程并发执行的表象,但实际上系统内核是根据某种调度算法交错执行。每个任务拥有各自的上下文,即拥有各自的CPU环境和系统资源,在上下文切换时,任务的上下文保存在任务控制块(Task Control Block,TCB)中。Vxworks任务状态转换图如图1所示。

Vxworks操作系统作为当前最为优秀的嵌入式实时操作系统,其多任务环境允许将实时应用构建成一组独立的任务,每个任务拥有各自的线程与一套系统资源[2]。为了协调任务间的行为,任务间通信设备允许通过同步和通信操作协调各自的活动。

表1 任务状态符号

若应用程序调用了内核程序,任务将从一个状态改变到另一个状态。图1描述了任务创建时处于挂起状态,必须激活一个创建的任务才能是其处于就绪状态,运行过程中的状态会根据任务所处的不同阶段而不断跳转。在操作系统里内核负责维护每个任务的当前状态。Vxworks操作系统的几种主要任务状态如表1所示[3]。

4 Wind任务调度

基于Vxworks实时操作系统的任务调度方法的研究是多任务设计的核心问题。根据应用环境需求,任务调度方法以任务优先级为依据,同优先级任务实时性调度方法分为4种:①轮转调度;②信号量调度与同步;③DELAY延时方法;④API阻塞方法[4]。

4.1 轮转调度

当所有任务都处于就绪状态时,轮转调度算法倾向于平均使用CPU,其基本原理是对于所有同优先级任务通过时间片获得相同的CPU处理时间。在Vxworks内核运行环境下,可以使用kernelTimeSlice函数启动轮转调度算法,以时间片长度或时间间隔为参数[5]。

在大多数系统状态下,并不一定需要使用轮转调度算法,但在相同代码被多份复制执行时,例如在用户接口任务内执行时,则需要使用轮转调度算法。

4.2 信号量调度与同步

Vxworks系统中,多任务对应多线程,每一个人任务启动一个或者多个线程来完成预定功能。对多个线程进行调度,尤其是不同优先级的线程之间进行调度,最为便捷有效的方法是线程间通信,可以使用通常意义下的信号量,利用信号量的阻塞特性来实现线程互斥与同步。

在Vxworks操作系统中,信号量被高度优化,并提供了最快的任务间通信机制。信号量是互斥与任务同步的最主要手段[6]。

4.3 DELAY延时方法

Vxworks提供了任务延时接口TaskDelay,TaskDelay以时间片为参数,用于任务运行过程中的时序控制[7]。TaskDelay有一个十分有用的特性,即当参数为0时,系统默认线程立即释放资源控制权,内核将资源赋予当前处于就绪状态的等待线程。利用这一特性,可以将每一个设计为执行完毕即释放的运行模式,从而达到线程调度的目标。

这一方案的缺点是TaskDelay(0)的执行依赖于线程函数的执行流程,换句话说,需要执行到这条代码的时候才能释放资源。因此,同优先级的线程执行顺序和时间间隔是随代码效率不同而不同,不适合精确控制方案[8]。

4.4 API阻塞方法

专网通信系统的设备驱动程序,包括某些系统通用函数(如MsgQ类)是阻塞式执行的,也就是说,当对设备进行操作时,如设备当前无法响应,则线程阻塞到这个执行点上,等待设备就绪。利用这一特性,可以起到与信号量调度异曲同工的目的[9]。

5 性能仿真及分析

根据上节分析,4种任务调度方法各有优劣,采用半实物仿真的方式从不同角度对调度方法的性能进行测试分析,如表2所示。

表2 仿真环境参数

仿真方法:本次仿真的任务目标是测试任务调度方法的适用环境,通过多路高速数据输入,相关任务对输入数据进行采集、解析和转发,统计丢包率可以通过对各个任务的处理状况的分析得到任务调度的适用度。

仿真结果如下:4路2 Mbps数据输入,4个线程分别对数据进行采集、帧解析和统计,采集时间为100 min,获取实验结果统计如图2所示。

图2 4路低速输入丢包率统计

在2 Mbps低速数据输入的条件下,线程开销较小,因此,4种调度方案均取得较好的实验数据,丢包率均小于0.01‰。4路64 Mbps数据输入,12个线程分别对数据进行采集、帧解析和统计,采集时间为100 min,获取实验结果统计如图3所示。

图3 4路高速输入丢包率统计

在64 Mbps高速数据输入的条件下,4种调度方案线程开销差异较大,根据实验数据,轮转调度开销最大,丢包率稳定在0.1‰,信号量互斥方法开销最小,丢包率稳定在0.001‰,延时调度的开销不稳定,丢包率在0.001‰-0.1%之间波动,而API调度方法在这里采用的是总线阻塞的方式,由于总线能力限制,丢包率也不是很稳定,总体位于0.005‰水平线下。4路64 Mbps数据输入,分别用4、8、16和32个线程分别对数据进行采集、帧解析和统计,采集时间为100 min,获取实验结果统计如图4所示。

图4 线程数改变条件下的丢包率统计

当操作数据源的线程数量不断增加,4种调度方法丢包率均有所变化,符合调度原理。轮转调度算法随着竞争线程数的增加性能下降的最为明显,延时调度算法的丢包率由0.05‰上升至0.16‰,而信号量与API调度方法的性能变化不大,均上升了0.002‰。

6 结束语

通过以上仿真,得出如下结论:当系统载荷数据较小且线程数较少的条件下,4种调度算法的性能差异并不明显;载荷数据或竞争线程数增加会导致轮转调度和延时调度的性能下降,互斥信号量和以其为基础的API调度方式性能较好。因此,在高载荷的大系统中应使用基于互斥信号量的任务调度方法。

[1]XIANG Zheng,REN Peng.A Multitask Scheduling Algorithm for Vxworks:Design and Task Simulation[C].Shanghai:AICI, 2009.

[2]王金刚,高伟,苏琪,等.Vxworks程序员指南[M].北京:清华大学出版社,2003.

[3]周俊杰,何攀峰.基于Vxworks的实时多任务软件框架设计[J].国外电子测量技术,2012(4):80-82.

[4]闫得杰.基于Vxworks的多任务程序设计及通信管理[J].光机电信息,2010,27(9):64-68.

[5]李洪亮,侯朝帧,周绍生.Vxworks下实时多任务程序的实现[J].信息技术,2009(25):24-25.

[6]曹庆年,张金森,孟开元.Vxworks多任务调度策略的研究[J].中国科技信息,2008(8):124-125.

[7]李强.嵌入式软件实时性测试过程研究[J].计算机与网络,2007,33(18):38-39.

[8]李海清,张锐.基于PowerPC嵌入式网络通信平台的实现[J].计算机与网络,2010,36(12):39-41.

[9]梁科,徐铂韬,赵研.基于片上PowerPC的Vxworks处理平台设计[J].无线电工程,2008,38(12):62-64.

Research on Task Scheduling Algorithm in VxWorks Embedded Real-time Operating System

DONG Yan-ling CHANG Yang
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)

The four methods of kernel task scheduling in VxWorks embedded real-time operating system(RTOS)are introduced.Aiming at the application requirements of multithread real-time scheduling in VxWorks embedded RTOS,based on the analysis and research of scheduling theories and methods of VxWorks RTOS,the four system task scheduling methods in VxWorks embedded RTOS are analyzed and compared according to the design criteria and plans in required application environments.their performance are tested through simulation experiments,and the relevant conclusions of method applicability are obtained,which provide the references for technology?application in embedded RTOS field.

embedded;real-time;task scheduling

TP316

A

1008-1739(2014)10-55-4

定稿日期:2014-04-26

猜你喜欢

信号量包率多任务
支持向量机的船舶网络丢包率预测数学模型
一种基于喷泉码的异构网络发包算法*
电磁线叠包率控制工艺研究
基于中心化自动加权多任务学习的早期轻度认知障碍诊断
Nucleus PLUS操作系统信号量机制的研究与测试
基于判别性局部联合稀疏模型的多任务跟踪
基于多任务异步处理的电力系统序网络拓扑分析
一类完全由内积构造的多任务核的几个性质
TCN 协议分析装置丢包率研究
硬件信号量在多核处理器核间通信中的应用