预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VxWorks操作系统及实时多任务程序设计刘尉悦张万生邢涛王砚方(中国科技大学近代物理系,合肥,230027摘要:数字式声纳系统需要实时的显示其搜索、跟踪结果,同时对用户命令作出及时的响应,并实时控制前端的硬件。本文介绍基于VxWorks实时操作系统和X窗口系统的显示及控制程序设计。着重介绍本系统中基于VxWorks的实时多任务程序设计。关键词:实时,实时操作系统,VxWorks,X-Window一.系统概况本系统运行于VME总线系统(MVME177上,通过VME背板总线与各模件交换数据对各处理模件进行控制并把信号处理结果显示。MVME177模件运行于嵌入式实时操作系统VxWorks下,人机交互界面基于X窗口系统。二.嵌入式实时操作系统VxWorks简介由于声纳系统在探测到某些目标后(例如鱼雷要迅速作出反应,所以要求控制及显示系统必须是实时操作系统。实时操作系统,要求能够随时打断正在执行的任务,对内部和外部发生的事件在确定的时间内作出响应。本系统采用的VxWorks是由美国WindRiver开发的一种类UNIX的高性能嵌入式实时操作系统。它是目前世界上用户数量最大的实时操作系统。具有优越的技术性能、丰富的应用软件支持、良好的技术服务和可靠的系统稳定性。VxWorks的主要性能特点有:1.高度可剪裁的微内核结构VxWorks的所需要的存储器空间大约为8KB~488KB(ROM、620KB~29.3KB(RAM,具有极好的可伸缩性。2.高效的多任务调度VxWorks支持中断驱动的优先级抢占式调度和时间片轮转调度,并具有确定的、快速的上下文切换能力。3.灵活的任务间通讯手段支持信号灯、消息队列、管道、信号和套接字等进程间通讯和互斥手段。4.支持诸如Ringbuffer、Linklist等共享内存技术。5.确定的、微秒级的中断延迟时间。6.适用于多种物理介质的TCP/IP协议族支持和几乎所有常用的基于TCP/IP协议的应用层协议。7.极其丰富的板级支持软件包(BSP,支持多种处理器板。8.支持POSIX1003.1b(实时扩充。9.快速、灵活的I/O系统。10.支持MS-DOS、RT-11和RAW等文件系统和网络文件系统(NFS。11.灵活的启动方法,支持从ROM、本地磁盘以及网络启动。三.VxWorks的一些技术特点VxWorks的特点主要在于嵌入式和实时性。由于嵌入式的特点,系统内核只有任务管理和简单的内存管理,在此之上可以根据需要配置各种功能模块,包括网络管理、文件系统、虚拟存储器等等。实时性则体现在实时调度算法和实时内核(高效的进程间通讯、内存管理等。VxWorks支持POSIX标准,所以POSIX的概念和接口以及一些策略都被支持,但为了提高系统性能,VxWorks另有一套接口及实现策略称为wind内核,下面的讨论主要是针对wind内核而言的,POSIX标准可以参见相关资料。h任务在VxWorks中,最小的程序运行单位称为任务(Task。每个任务包含有一段固定的代码和数据空间,操作系统内核通过任务控制块(TaskControlBlock对它的执行、通讯、资源等情况进行控制。任务具有就绪、阻塞、挂起和延迟等状态。与Linux和WindowsNT下的进程不同的是:在VxWorks中,所有任务共同享有物理内存,存在于统一的线性空间中,每个任务没有自己独立的代码段和堆,只有独立的动态栈,任务中的地址即是真正的物理地址。由于不需要进行地址空间映射,在任务切换时的上下文切换(ContextSwitch时间大为减少,符合实时操作系统要求快速响应的原则。从这个意义上来说,VxWorks的任务更接近Linux和WindowsNT下的线程(Thread。VxWorks的代码段与堆共享减少了上下文切换时间,却带来了共享代码的可重入性(Reentrancy问题。如一个函数被两个任务所调用,当其中包含对全局、静态变量等从堆中分配空间的数据进行访问时,就有可能产生冲突,从而引发错误。在应用软件开发时要加以注意,解决方法是使用局部变量(从栈中分配空间或使用信号灯对临界代码进行监控。h任务调度VxWorks有两种任务调度策略,优先级抢先调度和时间片轮转调度。这两种调度策略都是系统级的,与POSIX进程级的调度策略不同。即整个系统里要么是优先级抢先调度,要么是时间片轮转调度;而POSIX标准下可以每个进程使用自己的调度策略。系统共有256个优先级。优先级抢先调度指的是一个优先级较低的任务正在执行中,另一个优先高的任务进入就绪状态,则马上进行处理器抢先,执行高优先级任务。直到高优先级释放处理器(完成、挂起、阻塞…才继续执行低优先级任务。优先级抢先调度可以保证实时系统的迅速响应特性,但是也带来一个问题:当系统中存在几个相同优先级的任务时,就会使单一任务独占处理器直