这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » VxWorks的一些技术特点(老站转)

共1条 1/1 1 跳转至

VxWorks的一些技术特点(老站转)

菜鸟
2002-05-28 01:26:54     打赏
发信人: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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]