共1条
1/1 1 跳转至页
VxWorks的一些技术特点(老站转)
发信人:Gang_Jin (金刚) 版面名称:Embedded(698)
标 题:VxWorks的一些技术特点
发信站:中国科大BBS站 (Wed, 07 Jun 2000 14:52:07 )
标 记:标记
VxWorks的一些技术特点
VxWorks的特点主要在于嵌入式和实时性。由于嵌入式的特点,系统内核
只有任务管理和简单的内存管理,在此之上可以根据需要配置各种功能模
块,包括网络管理、文件系统、虚拟存储器等等。实时性则体现在实时调
度算法和实时内核(高效的进程间通讯、内存管理等)。下面对这几个方
面进行简要的介绍,着重介绍与UNIX不同之处,并与流行的操作系统Linux、
Windows NT进行比较,在一些应用软件开发需要注意的地方也做了说明。
VxWorks支持POSIX标准,所以POSIX的概念和接口以及一些策略都被支持,
但为了提高系统性能,VxWorks另有一套接口及实现策略称为wind内核,下
面的讨论主要是针对wind内核而言的,POSIX标准可以参见相关资料。
* 任务
在VxWorks中,最小的程序运行单位称为任务(Task)。任务与Linux、
WindowsNT下的进程(Process)有相似也有不同之处。
每个任务包含有一段固定的代码和数据空间,操作系统内核通过任务控制
块(Task Control Block)对它的执行、通讯、资源等情况进行控制。任
务具有就绪、阻塞、挂起和延迟等状态。当任务被提交之后就进入挂起状
态;激活后进入就绪状态,等待系统分配处理器执行;当任务申请已被占
用的资源时则进入阻塞,当资源被其他任务释放后回到就绪状态等待调度;
延迟是当任务等待定时器完成的状态。从任务的这些概念上看来,任务与
进程是相似的。
但是在另一方面,Linux和WindowsNT下的每个进程都各自享有一块独立的
线性空间,拥有自己独立的代码段、堆和栈空间,在每个进程看来都是自
己独占系统内存,进程中的地址要经过系统进行进程空间到物理存储器的
映射后才成为真正的物理地址。
而在VxWorks中,所有任务共同享有物理内存,存在于统一的线性空间中,
每个任务没有自己独立的代码段和堆,只有独立的动态栈,任务中的地址
即是真正的物理地址。
由于不需要进行地址空间映射,在任务切换时的上下文切换(Context Switch)
时间大为减少,符合实时操作系统要求快速响应的原则。从这个意义上来说,
VxWorks的任务更接近Linux和WindowsNT下的线程(Thread)。
VxWorks的代码段与堆共享减少了上下文切换时间,却带来了共享代码的可重
入性(Reentrancy)问题。MyFunc函数将被两个任务所调用,当其中包含对全局、
静态变量等从堆中分配空间的数据进行访问时,就有可能产生冲突,从而引发
错误。在应用软件开发时要加以注意,解决方法是使用局部变量(从栈中分配
空间)或使用信号灯对临界代码进行监控。
* 任务调度
VxWorks有两种任务调度策略,优先级抢先调度和时间片轮转调度。这两种调度
策略都是系统级的,与POSIX进程级的调度策略不同。即整个系统里要么是优先
级抢先调度,要么是时间片轮转调度;而POSIX标准下可以每个进程使用自己的
调度策略。系统共有256个优先级。
优先级抢先调度指的是一个优先级较低的任务正在执行中,另一个优先级较高的
任务进入就绪状态,则马上进行处理器抢先,执行高优先级任务。直到高优先级
释放处理器(完成、挂起、阻塞…)才继续执行低优先级任务。
优先级抢先调度可以保证实时系统的迅速响应特性,但是也带来一个问题:当系
统中存在几个相同优先级的任务时,就会使单一任务独占处理器直至完成。所以
加入了基于优先级的时间片轮转调度方式。在不同优先级的任务间以抢先方式调
度,相同优先级的任务则以时间片进行轮转。
WindowsNT的进程调度是消息驱动的时间片轮转。Linux的进程调度也支持带优先
级的时间片轮转,但它是时间片级的抢先,即调度发生在时间片结束时;而VxWorks
是指令级的抢先,即调度发生在当前指令结束时。
在任务调度中,还需要注意的是优先级倒置(Priority Inversion)问题。任务t3获
取某种资源S后被高优先级任务t1抢先,在t1执行中也需要申请资源S,于是t1被阻塞,
t3继续执行,但t3迅速被另一较高优先级任务t2所抢先,于是t1就必须无限期地等待
t2完成,然后执行t3直至t3释放资源S。
为了解决这个问题,VxWorks引入一种称为优先级继承(Priority Inheritance)的
方法。当高优先级任务t1因为t3占用的资源而被阻塞时,t3就具有与t1相同的临时优
先级,以保证它不会被t2所抢先,直至t3释放资源后恢复原有的优先级。
* 存储管理
在基本的wind内核中,任务直接操作线性物理内存,不存在虚拟存储等复杂的存储管
理策略,这主要是从性能来考虑的。不过VxWorks也提供支持POSIX标准的虚拟存储区
和共享内存(多处理器间共享)组件。
* 任务间通讯
在任务间传递控制信息时,通讯量小,wind内核支持各种UNIX的通用手段:信号灯
(semaphore)、消息队列(Message Queue)、管道(Pipe)、信号(Signal)和
套接字(Socket)。信号灯主要用于对临界资源访问的同步和互斥;消息队列多用
于消息驱动机制;管道是基于文件系统实现的任务间按先进先出方式传送数据的通
讯方式;信号相当于软中断;套接字机制主要用于网络通讯。
当任务间需要大量交换数据时,由于VxWorks直接操作物理内存,可以直接访问全
局存储区,不需要特别的手段,与Linux下的共享存储段申请和WindowsNT中的存储
映射文件方式不同。
* 中断
在VxWorks下,所有中断服务程序都不属于任何一个任务,并且使用同一个栈进行
数据存储,则中断将不会引起上下文切换,以实现高效的中断响应。中断与各任务
之间可以通过前面所述的各种手段进行通讯,但要注意对中断服务程序有一些限制,
例如不能进行可能导致阻塞的资源申请等等。
* 文件系统
VxWorks支持多种本地文件系统:MS_DosFS、RawFS和RT-11FS,用户可根据具体配
置选择;还支持网络文件系统NFS,可以没有局域文件系统。
* 网络支持
Vxworks支持多种物理介质的TCP/IP协议族和几乎所有常用的基于TCP/IP协议的应
用层协议如ARP、BOOTP、SLIP和FTP,甚至其启动就是通过BOOTP或FTP方式取得系
统映象文件。
* 启动
由于VxWorks是一种嵌入式操作系统,它支持多种启动方式:ROM、本地磁盘或网
络启动。
以上简单介绍了一些VxWorks的技术特点,要注意这些特点都是跟VxWorks的特性
----实时性与嵌入式密切相关的。
--
※ 来源: 中国科大BBS站 [bbs.ustc.edu.cn]
关键词: VxWorks 一些 技术 特点 老站转 系统 任
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |