您好、欢迎来到现金彩票网!
当前位置:秒速牛牛 > 通信模型 >

基于VxWorks实时操作系统的通信模型设计

发布时间:2019-05-20 18:16 来源:未知 编辑:admin

  软件设计中模块化的思想已日益普遍,模块化的设计能够使程序结构清晰,便于维护,开发起来也更加高效。大型软件通常由多个功能模块构成,模块的功能实现又是由多个线程所支撑的。诸如windows,Linux类型的操作系统自身能够对线程间的通信进行较好的管理,不需要过多的关心底层。而VxWorks是一个多任务系统,任务是系统最基本的执行单元。功能模块间的通信也就是任务间的通信,VxWorks对任务间通信的管理远没有windows的完善。在模块数量多,通信业务大的情况下VxWorks提供的任务间通信机制不能很好的满足实时性与资源利用的要求。本文提出了一种任务间的通信模型,将用于网络通信的UDP方式引进到任务间的通信中,使通信更加灵活和便于管理,改善了整个系统的性能。

  VxWorks操作系统是一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分,具有可靠高、实时性强、可裁减性的特点。VxWorks为程序员提供了高效的实时任务调度、中断管理、实时的系统资源以及任务间通信。应用程序员可以将精力放在应用程序本身,而不必关心系统资源的管理。VxWorks可以支持多达256个任务,支持二进制信号量、互斥信号量、消息邮箱等资源共享方式。高效实时的多任务内核使得VxWorks能同时面对多个系列的MPU、MCU、DSP提供类同的API接口,其良好的移植性在跨处理器平台上只需要修改1%~5%的代码。

  良好的持续发展能力、高性能的内核以及友好的用户开发环境,使VxWorks在嵌入式实时操作系统领域占据一席之地。它以良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等。

  嵌入式操作系统大多用于对实时性要求较高的场合,由于体积和成本的限制,嵌入式系统的资源和运行速度都不能和PC机相比。因此在此类系统上开发的应用程序的效率和减少资源消耗是十分重要的。VxWorks是一个多任务操作系统,传统的任务间通信模型有以下几种:共享内存、信号量和消息队列三种,这几种方式都有其不足的地方。

  共享内存方式使用全局变量或缓存,对于大型而复杂的程序,多个任务同时对一个变量进行读写操作会引起冲突或缓从区的溢出。信号量的通信模型虽然可以很好的起到互斥作用,但在多个任务同时与某一任务通信时就会产生对信号量的竞争,引起通信发起端的排队,降低系统的效率。消息队列可以通过异步的消息传送模型避免了由于信号量引起的排队问题,但任务数量较多时所需要的队列数量过大,会耗费大量系统资源。模块数量多,通信量大引起的任务排队和资源耗费会对VxWorks的实时性和系统性能产生影响。下面介绍的通信模型在克服以上问题方面有着一定的优势。

  整个通信模型由业务模块、UDP插口、虚拟设备控制器(DEV)和统一定时器四部分组成。模块间采用基于UDP的通信方式进行信息交互,通过一种虚拟设备控制器(DEV)的概念将UDP插口与业务模块绑定,两者之间呈现一种松耦合的关系。每个模块拥有属于自己的DEV,负责管理UDP插口与其他模块进行交互。统一定时器负责协调和控制业务模块发送消息的时机。统一定时器与DEV相结合共同完成模块间的通信。

  UDP本来是一种面向无连接的网络通信方式,把它引入到一个程序的内部作为通信手段需要考察其可靠性。UDP通信虽然是面向无连接的,在网络情况不好时有可能产生丢包,但由于程序是在一台主机上运行,程序内各个模块之间的交互也只限于本机上,并不经过网络,所以UDP包丢失的概率很小,通信可靠性是完全能够得到保证的。通信模型的原理图如下:

  虚拟设备控制器(DEV)本质上是一种数据结构,每个模块通过声明这样一个数据结构来获得属于自己的DEV。DEV中记录了有关UDP插口的信息,模块号或模块名称。DEV中还包括两个环形缓冲区用于和模块进行数据交互。UDP插口是与DEV紧密结合在一起的,但并不与模块直接联系,也就是说一个UDP并不固定属于某一模块,他们之间是一种松耦合的关系。DEV概念的引入将UDP套接字抽象为一种虚拟设备,供模块使用。使通信功能与模块的业务功能相互分离,更加独立,提高了效率。模块与UDP插口间也可以通过DEV进行灵活的配置与释放。DEV的结构如下:

http://upschool.net/tongxinmoxing/59.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有