用Vx Works的信号量机制实现任务同步
- 格式:pdf
- 大小:81.09 KB
- 文档页数:2
基于嵌入式操作系统VxWorks 的多任务并发程序设计的多任务并发程序设计((6)――――综合实例综合实例作者作者::宋宝华 e e--mail:21cnbao@这一次连载我们将给出一个综合的实例,系统地用到连载1~5中所学的知识。
13 系统描述假设我们面对这样的一个通信控制系统,它由三大部分组成:运行于PC 机Windows 操作系统上的人机界面程序、运行于RISC 结构通用处理器上的VxWorks 操作系统和运行于数字信号处理(DSP )处理器上的波形处理软件。
RISC 处理器和DSP 都存在于目标电路板上,是一个典型的嵌入式系统硬件平台。
在Windows 的人机界面上我们可以编辑一些信息,经过TCP/IP 协议栈传递给VxWorks 操作系统,VxWorks 再控制DSP 将这些信息经过数字调制之后发送出去。
VxWorks 与DSP 通过共享内存(硬件意义上的同一片内存,即同一存储芯片的相同存储空间)通信。
系统整体框架如下图:上述框架来源于一个真实的开发项目,限于技术保密的原因,笔者不能透露其细节。
但是从上述简单描述中,我们应该大概已知道该系统的功能。
其实,这样的系统非常常见,是一种较通用的软硬件架构方式。
14 任务控制与调度整个VxWorks 上的波形控制模块需要运行如下几个并发的用户任务: // VxWorks 与DSP 之间的数据传递(1)SendDatatoDSP:VxWorks发送数据到DSP;(2)RecvDataFromDSP:VxWorks从DSP接收数据;// VxWorks与DSP之间的通信控制(硬件查询方式)(3)IsDspDataCome:查询DSP是否有数据向VxWorks传送;(4)IsDspReqData:查询DSP是否向VxWorks及上层请求报文;// VxWorks与Windows的数据传递(5)SendDataToWin:通过socket(基于UDP协议)向Windows上传报文;(6)RecvDataFromWin:接收来自Windows的通过socket(基于UDP协议)下传的报文。
VxWork介绍及编程VxWork介绍及编程一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。
良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
实时操作系统和分时操作系统的区别从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。
分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。
这样的系统无法实时响应外部异步事件。
实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。
分时系统主要应用于科学计算和一般实时性要求不高的场合。
实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。
VxWorks的特点•可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。
而稳定、可靠一直是VxWorks的一个突出优点。
自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。
•实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。
实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。
VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。
vxWorks多任务编程初探(转)进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。
而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。
它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。
线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。
线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。
线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。
根据进程与线程的设置,操作系统大致分为如下类型:1、单进程、单线程:MS-DOS大致是这种操作系统;2、多进程、单线程:多数UNIX(及类Unix的Linux)是这种操作系统;3、多进程、多线程:Windows NT(以及基于NT内核的Windows 2000、XP等)、Solaris 2.x和OS/2都是这种操作系统;4、单进程、多线程:vxWorks就是这种操作系统。
vxWorks只有一个进程(内存空间和资源分配),其任务的概念与线程大致相当,所有任务之间共享内存和其它资源。
vxWorks由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。
vxWorks 内核最小为8KB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。
vxWorks的内核主要包括:1、多任务:为满足真实世界事件的异步性,现代操作系统需提供多任务支持,由系统内核分配CPU给多个任务并发执行。
vxworks使用过程中的100个疑问与解答1. VxWorks是什么?VxWorks是一种实时操作系统(RTOS),由美国Wind River公司开发,适用于嵌入式系统。
2. VxWorks有哪些特点?VxWorks具有高度可靠性、实时性、可移植性和可扩展性等特点。
3.如何安装VxWorks?安装VxWorks需要下载安装包,然后按照安装指南进行安装。
4.如何创建VxWorks任务?可以使用taskSpawn函数来创建任务,指定任务的入口函数、优先级等参数。
5. VxWorks如何进行任务间通信?任务间可以使用消息队列、信号量、共享内存等机制进行通信。
6.如何调试VxWorks程序?可以使用Wind River公司的调试工具Wind River Workbench进行调试。
7. VxWorks支持哪些开发语言?VxWorks主要支持C和C++开发,也可以使用汇编语言和Java等。
8.如何加载和运行VxWorks程序?VxWorks程序可以通过TFTP、FTP等网络协议加载到目标设备上,然后使用命令运行。
9. VxWorks是否支持多任务?是的,VxWorks支持多个任务的同时运行,并通过任务调度器进行任务切换。
10.如何实现任务间的同步?可以使用信号量、事件标志等机制实现任务间的同步。
11. VxWorks中如何实现中断处理?VxWorks提供了中断服务例程(ISR)和处理器驱动程序(DPC)来处理中断。
12.如何列出VxWorks系统中的任务?可使用taskShow命令列出系统中所有任务的详细信息。
13.如何获取任务的优先级?可以使用taskPriorityGet命令获取任务的优先级。
14.如何设置任务的优先级?可以使用taskPrioritySet命令设置任务的优先级。
15.如何控制任务的时间片轮转?可以使用taskDelay命令来控制任务的时间片轮转。
16.如何查看VxWorks系统的中断信息?可以使用intShow命令来查看系统中的中断信息。
VxWorks之认识(转)Tornado是WindRiver公司开发的用于嵌入式开发的一组产品,它包括32位实时操作系统VxWorks,集成开发环境(IDE,包括编译器等)。
下面是我阅读完VxWorks相关文档后的一些个人认识。
一.VxWorks操作系统VxWorks时实时多任务的嵌入式操作系统,它主要包括任务调度、I/O功能、文件系统、中断管理、内存管理、网络功能、内存管理、BSP(系统启动模块)等。
它的多任务的实现是由中断驱动的,即在每个系统时钟中断中,实现任务的调度。
VxWorks中的任务有优先级的概念。
与其它嵌入式操作系统相比,它有如下优点:1.任务之间的切换快,任务间通信手段多样;2.中断响应的延时短;3.内存管理安全:VxWorks把内存分成很多区域,包括内核区、用户区,并且采用虚拟内存管理的方法,这样大大提高了系统的安全性,并且增加了堆栈溢出的判断;4. I/O功能丰富,硬件驱动全面;5.文件系统强大;6.网络功能全面;7.对任务的实时监控;8. BSP(启动模块)的支持;9.多CPU的支持;10.系统各模块是单独的库,可以根据需要加载。
下面就详细讲述各部分内容。
1.多任务功能:VxWorks的任务有优先级的概念,其任务调度也是基于优先级考虑的,是抢占式的,VxWorks的任务有256个等级,0—255,数目越小表示优先级越高。
高优先级的任务可以打断低优先级的任务而抢先执行,只有在高优先级的任务执行完后,低优先级的任务才可以执行。
其调度算法有两种:完全抢占式的和循环分配式的。
完全抢占式的是除了高优先级任务可以打断低优先级任务外,在相同优先级的任务之间,不可以相互打断,并且同优先级任务不是同时执行的,只有等该任务执行完后,与其相同优先级的任务才可以执行;循环分配式除了具有抢占功能之外,相同优先级的任务是可以同时执行的,即系统时间片是在它们之间平均分配的,这样,相同优先级的任务可以同时执行。
VxWorks信号量是提供任务间通信、同步和互斥的最优选择,提供任务间最快速的通信。
也是提供任务间同步和互斥的主要手段。
VxWorks提供3种信号量来解决不同的问题。
二进制信号量是最快的最常用的信号量,可用于同步或互斥。
互斥为了解决内在的互斥问题、优先级继承、删除安全和递归等情况而最优化的特殊的二进制信号量。
计数器类似于二进制信号量,但是随信号量释放的次数改变而改变。
二进制信号量semBCreate (SEM_Q_FIFO/SEM_Q_PRIORITY , SEM_EMPTY/SEM_F ULL)有两个作用:(1)任务间的互斥--同一个任务获取和释放信号量,防止两个任务同时存取一个资源(2)任务间的同步--一个任务获取信号量,另一个任务(或者中断)释放信号量二进制信号量实现互斥使用二进制信号量可以很方便的实现互斥,互斥是指多任务在访问临界资源时具有排他性。
为了使多个任务互斥访问临界资源,只需要为该资源设置一个信号量,相当于一个令牌,那个任务拿到令牌即有权使用该资源。
把信号量设置为可用,然后把需要的资源的任务的临界代码置于semTake()和semGive()之间即可。
注明:1、互斥中的信号量与任务优先级的关系:任务的调度还是按照任务优先级进行,但是在使用临界资源的时候只有一个任务获得信号量,也就是说还是按照任务优先级获得信号量从而访问资源。
只是当前使用资源的任务释放信号量semGive(),其它任务按照优先级获得信号量。
2、信号量属性中的参数为:SEM_Q_PRIORITY。
而且在创建信号量的时候必须把信号量置为满SEM_FULL。
即信号量可用。
基本实现互斥模型:SEM_ID semMutex;semMutex = semBCreate(SEM_Q_PRIORITY, SEM_FULL);task(void){semTake(semMutex, W AIT_FOREVER);//得到信号量,即相当于得到使用资源的令牌//临界区,某一个时刻只能由一个任务访问semGive(semMutex);}二进制信号量实现同步同步即任务按照一定的顺序先后执行,为了实现任务A和B同步,只需要让任务A和B共享一个信号量,并设置初始值为空,即不可用,将semGive()置于任务A之后,而在任务B 之前插入semTake()即可。
VxWorks操作系统概述(1) 无忧电子开发网VxWorks操作系统概述(1)1. VxWorks操作系统概述1.1. VxWorks 操作系统简介实时多任务操作系统是能在确定的时间内执行其功能,并对外部的异步事件作出响应的计算机系统。
多任务环境允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。
VxWorks系统提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。
实时系统的另一关键特性是硬件中断处理。
为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR有自己的上下文。
VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。
系统的链接器可按应用的需要自动链接一些目标模块。
这样,通过目标模块之间的按需组合,可得到许多满足功能需求的应用。
VxWorks操作系统的基本构成模块包括以下部分:·高效的实时内核WindVxWOrks实时内核(Wind)主要包括基于优先级的任务调度、任务同步和通信、中断处理、定时器和内存管理。
·兼容实时系统标准POSIXVxWOrks提供接口来支持实时系统标准P.1003.1b.·I/O系统VxWOrks提供快速灵活的与ANSI-C相兼容的I/O系统,包括UNIX的缓冲I/O和实时系统标准POSIX的异步I/O。
VxWOrks包括以下驱动:网络 --- 网络设备(以太网、共享内存)管道 --- 任务间通信RAM --- 驻留内存文件SCSI --- SCSI硬盘,磁碟,磁带键盘 --- PC x86键盘(BSP仅支持x86)显示器 --- PC x86显示器(BSP仅支持x86)磁碟 --- IDE和软盘(BSP仅支持x86)并口 --- PC格式的目标硬件·本机文件系统·I/O系统VxWorks的文件系统与MS-DOS、RT-11、RAM、SCSI等相兼容。
仿真培训软件vxots介绍及应用(初级)方向实践
试题
以下是仿真培训软件VxWorks的介绍及其在初级应用方向的实践试题:
1.VxWorks简介:VxWorks是一款实时操作系统(RTOS),广泛应用于航空、航天、工业控制等领域。
它具有实时性、稳定性、可靠性高等特点,可支持多种处理器和硬件平台。
VxWorks提供了丰富的中间件和开发工具,方便开发者快速构建实时应用程序。
2.实践试题:
任务1:了解VxWorks系统组成和特点,思考VxWorks 在实时系统开发中的优势和局限性。
任务2:安装VxWorks开发环境,配置开发环境变量。
任务3:创建一个简单的VxWorks任务,实现两个整数相加的功能。
要求任务能够接收输入参数,并在任务完成后返回结果。
任务4:使用VxWorks提供的消息队列实现两个任务之间的通信。
其中一个任务发送一个整数,另一个任务接收并打印该整数。
任务5:使用VxWorks提供的信号量实现两个任务间的同步。
确保一个任务等待另一个任务完成某项工作后再继
续执行。
以上仅为基本示例,根据实际应用场景和需求,可进行深入的学习和探索。
更多内容建议查阅VxWorks开发教程和相关论坛。
基于VxWorks的多任务实时性分析张宇;王省书;胡春生【摘要】为了分析VxWorks操作系统在多任务环境下任务切换的实时性,运用时间戳方法对任务抢占切换时间进行了测量,并通过数据定量分析了任务数量对任务切换时间的影响.同时为了加强任务控制,使用信号量通信机制,设计任务间通信控制程序,并对信号量的实时性影响进行了测量与分析.结果表明任务数量和信号量机制对切换时间有一定影响,但增加的延迟时间非常小.%In order to analyze the real - time characteristics of multi - task of the system based on VxWorks, a method is designed to measure the task switching time. By measurement date, the task switching time influenced on multi - task is analyzed. As well as, taking advantage of semaphores task communication mechanism, program is given to aim at controlling multi - task. Then the real - time characteristics of semaphores is measured and analyzed. Theresult'indicates that the quantity of tasks and semaphores mechanism have a certain influence on the task switching time, but the added delay time is very short.【期刊名称】《微处理机》【年(卷),期】2013(034)001【总页数】5页(P53-57)【关键词】VxWorks系统;实时操作系统;任务调度机制;任务通信【作者】张宇;王省书;胡春生【作者单位】国防科学技术大学光电科学与工程学院,长沙410073【正文语种】中文【中图分类】TP316.21 引言VxWorks操作系统是由美国Wind River System公司推出的一款嵌入式实时操作系统。
1 前言S N T P是简单网络时间协议(S i m p l e Network Time Protocol)的简称,是由网络时间协议NTP(Network Time Protocol)简化而来,是一种使Internet上的计算机保持时间同步的一种通信协议,可通过提供完全的机制来访问国际标准时间,广泛用于需要精确时间同步的场合。
VxWorks嵌入式实时操作系统的网络组件(network components)支持SNTP网络对时协议,用户要在该系统下实现SNTP对时功能,并不需要关心协议本身,只需把SNT P客户端和SNT P服务器端这两个组件分别包括进来,再调用相应的V x W o r k s AP I函数,即可分别实现SNT P客户端和服务器端的对时功能。
2 SNTP服务器的实现SNTP服务器端有两种工作模式,主动模式(S N T P_A C T I V E)和被动模式(SNTP_PASSIVE),VxWorks操作系统启动时会自动调用SNTP初始化函数sntpsInit( ),设置服务器的工作模式(SNTPS_MODE)、广播时间间隔(S NTP S_IN TER VAL)、目标IP地址(SNTPS_D STADDR)和SNTP端口号(SN T P_PO R T)等。
如果服务器工作模式选为被动模式(SNTP_PASSIVE),则服务器将等待来自客户端的请求,并发送包含NT P时间戳的回应帧。
如果选择主动模式(SNTP_ACTIVE),则服务器端在固定的时间间隔周期性的发送N T P时间戳信息。
当采用主动模式时,SNTP服务器根据SNTPS_DSTADDR 和 SNTPS_INTERVAL的值来决定目标的IP地址和广播的时间间隔。
默认情况下,服务器每隔64秒广播发送一次时间戳信息。
S N T P S_D S T A D D R和SNTPS_INTERVAL的值可以通过sntpsConfi gSet()函数来进行设置。