基于VxWorks的多任务程序设计及通信管理

时间:2022-07-05 01:43:40

基于VxWorks的多任务程序设计及通信管理

摘要:在实时系统中实现多任务程序是非常重要的的环节,本文简单描述了VxWorks操作系统的特点及VxWorks操作系统下实现多任务程序的设计方法。

关键字:VxWorks;多任务程序设计;通信管理

中图分类号:TP316.2 文献标识码:A文章编号:1007-9599 (2011) 05-0000-01

VxWorks-based Multi-task Programming and Communication Management

Xiao Zhihao

(No.715 Institute,Hangzhou310012,China)

Abstract:In real-time system multi-task programming is a very important process,this article briefly describes the characteristics of the VxWorks operating system and to achieve multi-task programming design methods under VxWorks operating system.

Keywords:VxWorks;Multi-task programming;Communication management

在实时系统的应用开发中,采用嵌入式系统有较为明显的优势,它可以支持多任务,使得能够更容易的开发程序,易于维护,还能够提高实时系统的可靠性和稳定性。

一、VxWorks概述

美国WIND River System公司首先提出了VxWorks这种嵌入式实时操作系统,经过使用后被业界一致任务是性能比较出色的实时操作系统。VxWorks实时操作系统具有400多个简洁的、相对独立的目标模块,操作用户能够按需选择适用模块进行剪裁、配置系统。

VxWorks实时操作系统可靠性高、实时性好,因此被专家广泛的应用在航空、航天、军事、通信、计算机等高精尖的技术和对实时性要求较高的专业领域中。

二、多任务程序设计

(一)任务结构。VxWorks实时操作系统的内核wind为程序运行提供了最基础的多任务环境,它的多任务设计可以任意时刻打断正在运行的任务,对内部发生的时间在严格的时间内做出反应。表面看来。是同时执行多个任务,事实上,系统内核是已经调度策略任务交替运行。VxWorks实时操作系统利用任务调度模块简称TCB来进行任务调动,每一个任务都和一个任务调度模块相关联。TCB包含任务的当前状态、等待的资源和事件、优先级、任务的起始地址等数据信息,在任务最开始激活时会得到这些信息。TCB还能够存放执行中的任务被停止时需要存储的数据信息,当任务重新运行时,就可以恢复该数据信息。同样的,当切换任务时,当前运行的任务也同样存入TCB,而重新被切换为执行状态的任务在TCB中取回存储的信息,从停止的位置重新开始运行。

(二)任务状态和状态转移。VxWorks实时系统中的任务包含以下4种状态:就绪态、挂起态、休眠态、延迟态。

VxWorks实时系统中执行一项任务可以从当前状态转移为另一种状态,并且处于以上四种状态中的任意一种都可以被删除。任务的状态及转移关系如图一所示。

图一 任务状态转移

(三)任务调度

1.基于优先级的抢占式任务调度。VxWorks实时系统系统的内核king把优先级分为256级,0级为最高优先级,256级为最低优先级。系统创建任务时,依据给定值为每个运行的任务分配不同的优先级,被分配为最高优先级的的任务将会一直执行下去,当其不再为就绪态而转为运行状态时,系统会保存当前运行任务的信息,以便系统能够切换到更高一级的任务。优先级抢占调度即就处于绪状态的高优先级任务可以抢占运行中的低优先级任务,因此可以保持其实时性,但是也增加了其复杂性。

2.基于时间片的轮转调度。这种调度方式就是系统分配给处于就绪态的相同优先级任务相同的执行时间片,这样,就使得同样任务按照时间片的轮转调度运行、进行任务切换。(如图二)

图二 任务的时间片调度

三、多任务通信管理

(一)共享内存。一般情况下,任务的内存空间是互不干扰的,但是需要通信时,允许多个任务同时访问共享内存区,是任务之间最简单的通信方法。最大的优势就是便捷,但是同时也带来很大的危险性。

(二)信号量。信号量是为了针对不同类型的问题季节任务之间的同步和互斥,可以分为三种:二进制信号量、计数器信号量、互斥信号量。二进制信号量最适合嵌入式软件,用于同步和互斥;计数器信号增加了计数功能可以解决一对多的资源实例保护情况;互斥信号量专门解决互斥问题,用于安全删除等情况。

(三)消息队列。消息队列是实现比较复杂的一种高级的任务间通信方式,其进行任务间通信时不是同步的,取信和送信是可以不同时进行的信息交换的。可以只发,没取的消息可以一直储存至最大长度。因此在实时性要求较高的系统时必须单独有一个内存区域储存。

(四)管道。管道是有PIPE驱动管理的虚拟I/P设备,在很多时候可以替代消息列队,但是使用方法要比其简单,它可以和第一个异步I/O设备同时工作。

四、结束语

VxWorks实时系统是一种可以支持多任务的嵌入式系统,它具有可靠性高、实时性好的优势,在很多高精领域广泛的应用。本文从任务程序设计和通信管理两方面做了简单的描述表明,可以综合考虑系统中多任务的通信机制,来满足系统对多任务实时性的要求。因此,通过VxWorks实时系统的嵌入式开发可以优化整个实时系统的性能,并且达到高可靠性、高效性、高实时性。

参看文献:

[1]李洪亮,候朝桢,周绍山.VxWorks下实时多任务程序的实现[J].微计算机信息,2008(24)

[2]闫得杰.基于VxWorks的多任务程序设计及通信管理[J].光机电信息,2010(27)

[3]王榕,樊宇涛,王琼.VxWorks下的多任务程序设计[J].电脑编程技巧与维护,2006(9)

[4]刘尉悦,张万生,刑涛,王砚方.Vx Works操作系统及实时多任务程序设计[J],2001(5)

上一篇:浅析Java语言中的重载与重写 下一篇:自来水收费管理系统的研究与实现