基于嵌入式操作系统VxWorks的多任务并发程序设计(1)――基本概念

1引言

  嵌入式系统定义义为:嵌入到对象体系中的专用计算机系统。“嵌入性”、“专用性”与“计算机系统”是嵌入式统的三个基本要素,对象系统则是指嵌入式系统所嵌入的宿主系统。目前,随着高端消费类电子产品(如PDA、手机、智能家电)的普及,嵌入式计算机系统获得了相当广泛的应用。

 操作系统在嵌入式软件体系中占据着重要低位,学习和掌握相关的知识是一名嵌入式系统研发人员的必须。

  1.1本文的读者对象与写作目的

  本文针对的读者对象为入门级的嵌入式系统软件开发人员以及其他对嵌入式操作系统感兴趣的朋友,顺利阅读本文需要读者具备的基本知识能力为:

  (1)熟练的C语言程序设计能力;

  (2)操作系统的基本知识。

  如果读者具备在Windows平台下进行多线程程序设计或者其他嵌入式操作系统本台下进行多任务程序设计的经验,将对阅读本文有很大的帮助。

  本文虽然以VxWorks为介绍的主体对象,但是其中所论述的概念和方法并不局限于VxWorks操作系统本身。它们也同样适用于其它嵌入式操作系统,如WinCE、嵌入式Linux、ucos等,所谓“万变不离其宗”。

  笔者力求能以通俗和形象的语言进行论述,但是由于水平有限,文中难免存在错误和纰漏,诚盼读者朋友指正。

  1.2 为什么以VxWorks为写作对象

  之所以选择VxWorks操作系统为本文的写作对象,是因为:

  (1)VxWorks具备清晰的多任务并发控制及任务间通信的成熟机制;

  (2)VxWorks有广泛的使用基础,国内外分布着大量的VxWorks程序员;

  (3)VxWorks简单易学,便于我们集中目标讲解多任务控制程序本身。

  1.3 什么是VxWorks

   VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它凭借着良好的可持续发展能力、高性 能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据了重要一席。VxWorks具备高可靠性和实时性,因而被广泛地应用在通信、军事、航空、 航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国 者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。

 VxWorks的实时性体现在它能在限定时间内执行完规定的功能并对外部的异步事件作出响应。实时操作系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合;而分时操作系统按照相等的时间片调度进程轮流运行,无法实时响应外部异步事件,因而主要应用于科学计算和实时性要求不高的场合。

  VxWorks由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks 内核最小为 8KB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。VxWorks的内核主要包括:

  (1)多任务:为满足真实世界事件的异步性,现代操作系统需提供多任务支持,由系统内核分配CPU给多个任务并发执行。如果是单CPU,则执行方式实质是宏观并行、微观串行;

  (2)任务调度:真实世界的事件具有继承的优先级,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务,VxWorks对 这种优先级抢占调度(Preemptive Priority Scheduling)提供了支持。同时,VxWorks也支持同优先级任务间的时间片轮转调度(Round-Robin Scheduling);

  (3)任务间的通讯与同步:在一个实时系统中,系统必须提供多个任务间快速且功能强大的通信机制,并提供为了有效地共享不可抢占的资源或临界区所需的同步机制;

  (4)任务与中断之间的通信:许多外设以中断方式与CPU通信,我们不宜在中断服务程序(ISR)中进行过多的处理,通常将相应处理交给特定任务去完成。

  VxWorks前些年对我国一直采取禁运措施,自从对中国的销售解禁以来,它在中国赢得了越来越多的用户。

  2 进程、线程与任务

  既然我们是讲解一种操作系统,那我们就有必要再老生长叹一次进程与线程的概念及其区别。

进程(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只有一个进程(内存空间和资源分配),其任务的概念与线程大致相当,所有任务之间共享内存和其它资源。

  3 开发环境

 嵌入式软件开发不同于PC机Windows操作系统之上的应用软件开发,它一般需要一个交叉编译和调试环境。编译和调试软件运行在宿主机上(我们通常使用的PC机,Windows操作系统),它们按照目标平台CPU指令集生成目标代码,并将目标代码下载到目标机上运行;此后,主机和目标机需建立通讯连接,并传输调试命令和数据。调试方式如下图所示:

 VxWorks的开发环境为WindRiver公司提供的Tornado,它支持的目标平台可以是X86、ARM、PowerPC等类型处理器。Tornado包含三个高度集成的部分:

  (1)运行在宿主机和目标机上的强有力的交叉开发工具和实用程序;

  (2)运行在目标机上的高性能、可裁剪的实时操作系统VxWorks;

  (3)连接宿主机和目标机的多种通讯方式,如:以太网,串口线,ICE或ROM仿真器等。

  对于不同的目标机,Tornado给开发者提供一个一致的图形接口和人机界面,如下图所示:

  我们通常需要一块目标电路板来进行嵌入式系统的开发调试工作,但是相信还有相当多的读者朋友没有目标开发电路板,为了实现本文中代码的调试,我们可采用两种方式:

  (1)使用Tornado提供的VxSim模拟器来模拟调试,在此模拟器平台上,我们同样可以实现和运行本文中将介绍的大部分程序。VxSim是一个原 型仿真器,它能使开发者在没有实际目标硬件的情况下,先进行原型机应用程序的开发。如果我们要调试BSP程序,不能依赖此平台。其界面很简洁,如下图:

  (2)使用著名的VmWare虚拟机软件虚拟一个X86目标机平台,安装对应于X86版本的Tornado,我们可以调试BSP和一般应用程序。 VMWare是一个“虚拟机”软件,它使用户可以在一台机器上同时运行多个WIN2000/WINNT/WIN9X /DOS/LINUX/VxWorks等系统。VmWare是较“多启动”是一个更好的选择:“多启动”系统在一个时刻只能运行一个系统,在系统切换时需 要重新启动机器,而VmWare则使用运行于Windows之上,各种操作系统的切换直接在VmWare软件中进行。VmWare的界面如下图:

时间: 2024-09-05 08:16:36

基于嵌入式操作系统VxWorks的多任务并发程序设计(1)――基本概念的相关文章

基于嵌入式操作系统VxWorks的多任务并发程序设计(2) ――任务控制

4 任务与任务状态 VxWorks实时内核Wind提供了基本的多任务环境.对用户而言,宏观上看起来,多个任务同时在执行.而本质而言,在微观上,系统内核中的任务调度器总是在根据特定的调度策略让它们交替运行.系统调度器需要使用任务控制块(TCB)数据结构来管理任务调度功能,TCB被用来描述一个任务.TCB中存放了任务的上下文(context)信息,主要包括程序计数器PC.CPU内部寄存器.浮点寄存器.堆栈指针SP.任务信息等.每一任务都与一个TCB关联,当执行中的任务被停止时,任务的上下文信息需要被

嵌入式操作系统风云录:历史演进与物联网未来.

嵌入式操作系统风云录: 历史演进与物联网未来 何小庆 著 图书在版编目(CIP)数据 嵌入式操作系统风云录:历史演进与物联网未来 / 何小庆著. -北京:机械工业出版社,2016.10 ISBN 978-7-111-55085-3 Ⅰ. 嵌-   Ⅱ. 何-   Ⅲ. 实时操作系统   Ⅳ. TP316.2 中国版本图书馆CIP数据核字(2016)第248216号 本书全面回顾了嵌入式操作系统的演进历史,主流的嵌入式操作系统的技术特点.成长历程以及背后的商业故事,展望了嵌入式操作系统未来的技术路

嵌入式操作系统风云录:历史演进与物联网未来第2章 Chapter2

第2章 Chapter2 嵌入式操作系统的历史 20世纪70年代末,嵌入式操作系统商业产品开始在北美出现,20世纪90年代末嵌入式OS的数量呈井喷式增加,最鼎盛的时候有数百种之多,即使经过30多年的发展和淘汰,现在嵌入式OS依然有数十种之多.最早的嵌入式操作系统是实时多任务操作系统(RTOS)内核,支持8位和16位微处理器,它初期使用汇编和PLM语言编程,后来支持C和Ada.本章讲述了RTOS发展历史中几个重要产品背后的故事. VRTX:嵌入式操作系统的开拓者 最早出现的商业嵌入式操作系统当属V

嵌入式操作系统---重点知识

嵌入式系统的特点:1. 精简内存空间  2.待机时间长  3.可与外界设备连接  4.动态加载应用程序  5.网络通信 嵌入式处理器分类:1.嵌入式微处理器  2.嵌入式微控制器  3.嵌入式DSP处理器  4.嵌入式片上系统 MIPS:即"无内部互锁流水级的微处理器",其机制是尽量利用软件办法避免流水线中的数据相关问题. ARM处理器:ARM处理器既是一个公司名字,也是一类微处理器的统称,还是一种技术的名字.ARM处理器主要用于工业控制.无线通信.网络应用.消费类电子产品.成像和安全

常用嵌入式操作系统

嵌入式操作系统与通用的操作相比较主要特点在于: 1.小内核,稳定可靠. 2.需要可装卸.可裁剪,以便能灵活应对各种不同的硬件平台. 3.面向应用,强实时性,可用于各种设备控制当中. 国际上常见的嵌入式操作系统大约有40种左,右如:Linux.uClinux.WinCE.PalmOS.Symbian.eCos.uCOS-II.VxWorks.pSOS.Nucleus.ThreadX .Rtems .QNX.INTEGRITY.OSE.C Executive .他们基本可以分为两类,一类是面向控制.

嵌入式操作系统风云录:历史演进与物联网未来Chapter3 第3章

Chapter3 第3章 开源的嵌入式操作系统 今天开源软件正大行其道,从服务器.云计算.桌面到手机和嵌入式设备,到处都可以见到开源软件和开源的操作系统.本章介绍对嵌入式系统发展具有重要影响的几种开源的操作系统. 开源软件与嵌入式操作系统 Linux支持多种微处理器.总线架构和设备,半导体公司SoC芯片的驱动程序.应用相关的中间件.工具和应用程序都是先为Linux开发,后来才移植到其他OS平台.这些特性都非常适合于嵌入式系统应用. 在讨论开源的嵌入式操作系统(简称嵌入式OS)之前,我们先把开源软

嵌入式操作系统Palm webOS该怎么操作

现今随便逛逛各大科技博客.资讯网站,关于iOS.Android.wp7几个时下主流移动操作系统的消息铺天盖地,如若再赶上新产品的发布,那更是风头一时无两.前有Google I/O大会和android 3.1版本的正式推出,今有WWDC大会和iOS5的发布,思来想去打算聊点"小资"的."非主流"的,所以今天就来聊聊webOS的故事. 对于很多人来说webOS还是个陌生的事物,但如果我们提到Palm,很多就会恍然大悟,"哦,原来是他", 对,就是他,

《智能路由器开发指南》——1.3 开源嵌入式操作系统比较

1.3 开源嵌入式操作系统比较 开源嵌入式操作系统,其字面意思有3点,即开放源代码.嵌入式和操作系统,但实质上其流行的关键在于其可扩展性. 开源是指开放源代码,是指软件在开放源代码许可证下发布软件,保障软件用户自由查看软件源代码的权利.这同时也保障了用于修改.复制和再分发的权利,但仍需遵守开源许可协议中的一些约束.开放源代码不仅仅指开放源代码的软件,也是一种软件开发模式. "许可证"是指授权条款,是指使用.修改.复制和再分发的条款和条件的法律文件.最常见的开源许可证有几种:GNU GP

嵌入式操作系统风云录:历史演进与物联网未来导读

Preface 前 言 我是在1994年正式进入嵌入式系统这个领域的,之前10年,我虽然参与过工业自动化和通信设备开发项目,但在当时,它们还不能算是真正意义上的嵌入式系统.可以这样讲,1994年之前我对实时多任务操作系统有一定的了解,但对嵌入式操作系统基本上是一无所知.20多年一路走过来,我与嵌入式系统和嵌入式操作系统结下了不解之缘. 写作的初衷 本书最初的构想还要从2008年整理的一本小册子<嵌入式系统文集>说起.就在那一年,我自己有了更多的可以自由支配的时间,于是我将前几年撰写的20余篇文