嵌入式系统VxWorks介绍及编程


Posted on February 26, 2014


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

实时操作系统和分时操作系统的区别

从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。

分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。这样的系统无法实时响应外部异步事件。(jm注:windows并不是分时操作系统,网上说的不正确

实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。分时系统主要应用于科学计算和一般实时性要求不高的场合。实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。

VxWorks的特点

  • 可靠性

操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。而稳定、可靠一直是VxWorks的一个突出优点。自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。

  • 实时性

实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。

VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。VxWorks 提供的多任务机制中对任务的控制采用了优先级抢占(Preemptive Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。

  • 可裁减性

用户在使用操作系统时,并不是操作系统中的每一个部件都要用到。例如图形显示、文件系统以及一些设备驱动在某些嵌入系统中往往并不使用。

VxWorks 由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks 内核最小为 8kB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。由于它的高度灵活性,用户可以很容易地对这一操作系统进行定制或作适当开发,来满足自己的实际应用需要。

对一个实时内核的要求

一个实时操作系统内核需满足许多特定的实时环境所提出的基本要求,这些包括:

多任务:由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。多任务提供了一个较好的对真实世界的匹配,因为它允许对应于许多外部事件的多线程执行。系统内核分配CPU给这些任务来获得并发性。

抢占调度:真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。

任务间的通讯与同步:在一个实时系统中,可能有许多任务作为一个应用的一部分执行。系统必须提供这些任务间的快速且功能强大的通信机制。内核也要提供为了有效地共享不可抢占的资源或临界区所需的同步机制。

任务与中断之间的通信:尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先化和减少中断延时,我们通常希望在任务级处理相应的工作。所以需要在任务级和中断级之间存在通信。 

 


标签:N/A

其它推荐日志:

c#链接数据库的问题

c#中结构数组定义

Word中的字体大小(几号-几磅)

PHP下载DOC文件出错乱码的解决方案

RegularExpressionValidator控件

去除桌面图标下的阴影

无意中发现了另外一种开发AJAX的方法,ajax.dll

打到一个很有用的的显IP代码!分享一下!

Vista技巧:禁用Vista中的移动中心

Dreamweaver启动停留在初始化扩展的位置的解决方法

使用word-break:break-all强制英文超域后换行

两种彻底删除VIEWSTATE的方法

Windows Vista资源管理器复制、移动、删除文件慢的7种不同的解决办法和几个现象

.net中的FileUpload控件,突破上传的4m限制

ASP.NET页面状态管理——ViewState的使用

sql2000挂起无法安装的问题

C#获取当前IE地址栏的url

关于linkbutton点击后弹出新窗口的代码

UML--时序图

把字符串时间转换为timestamp的一个方法(php)

word技巧:回车换行键符

关于如何生成随机记录-如何解决每次RND的结果都一样的问题?

xp sp2 iis5.1 其他人不能访问本机网站!

asp错误0x80004005的解决方法!

如何JS获取URL参数

使用Bluetooth与手机传送文件

系统进程列表(转)

BitComet Beta 20070528

无法启动World Wide Web Publishing服务的解决方法

.NET开发中的一些小技巧

关于"Could not load file or assembly ''Microsoft.Office.Interop.Word''..."问题的解决方法

关于SqlDataAdapter的Update方法

判断获取URL传递的参数是否为空(php)

IE7启动时总打开runonce2.aspx的解决办法

php啊,addslashes和stripslashes,烦

Understanding Page Inheritance in ASP.NET 2.0

个人网站设计经验谈

DW做ASP程序时关于数据库的几个常见问题

一般IIS运行不了ASP.NET,试一下下面四种方法,99%有效

HTML“pre”标签


Search
最新评论
推荐日志
微信扫一扫