×

VxWorks操作系统的基本组件

消耗积分:0 | 格式:rar | 大小:0.63 MB | 2017-10-26

分享资料个

  VxWorks 是实时操作系统,这决定了它的任务调度必须是基于优先级的,而且必须是可抢占式调度方

  式,这样才能够区分实际情况下不同状态的处理级别,对高优先级的情况进行优先响应。

  2.1.1 内核实现基本原

  VxWorks 内核维护三个队列:tick 队列、ready 队列、active 队列。另外还有一个队列涉及任务,即任

  务等待资源时所处的队列,这个队列可以是 VxWorks 内核提供的,也可以是用户提供的,此处令其为 pend

  队列。

  所谓 tick 队列,即当调用 taskDelay 函数让任务延迟一段固定的时间时,任务所处的队列,此时任务

  被设置为 Delay 状态,无资格竞争使用 CPU;ready 队列即有资格竞争使用 CPU 的所有任务,该队列以优

  先级为序排列任务,队列头部是除了当前运行任务外,系统中最高优先级的任务;active 队列有些误导,

  实际上称之为 task 队列更合适,因为系统中所有的任务无论当前状态如何,都将在这个队列中,这个队列

  维护着系统中当前所有的任务,即通过该队列可以查找到当前系统中的所有任务,在 Shell 下运行“i”命

  令,显示系统中所有的任务,就是通过遍历 active 队列完成的;pend 队列即当任务竞争使用某资源,而资

  源当前不可得时,任务就被设置为 pend 状态,进入 pend 队列。

  函数 taskSpawn 创建一个新的任务。首先,其创建一个任务控制结构,对该结构进行初始化后,将结

  构加入 active 队列以作为系统任务管理之用。此时任务仍无资格竞争使用 CPU,taskSpawn 函数的最后一

  步就是将这个任务结构再加入到 ready 队列,此时这个任务才真正可以称为已经在竞争使用 CPU 了。当系

  统中所有的优先级高于这个任务的其他任务运行完毕或者由于等待资源而处于阻塞时,这个新创建的任务

  就将被调度运行。所以,在 VxWorks 下,如果一个新创建的任务优先级不高,创建后将等待一段时间才能

  被真正执行。在实际项目中,有时需要一个新的任务被创建后立刻得到执行,那么就需要在创建任务时,

  指定一个较高的任务优先级。VxWorks 内核将任务分为 256 个优先级,标号从 0 到 255。其中 0 表示最高

  优先级,255 表示最低优先级。任务在调用 taskSpawn 函数进行创建时就指定了优先级,当然任务的优先

  级并非在创建后就无法改变,用户可以通过调用 taskPrioritySet 函数在任务创建后重新设定优先级,

  taskPrioritySet 专门针对嵌入式平台下不同的情况对同一任务不同运行级别的需求进行设置。值得注意的

  是,taskPrioritySet 函数不同于通用操作系统提供的类似函数,taskPrioritySet 函数可以提高或者降低任务的

  运行级别,而不是通用操作系统下在任务创建后就只能动态地降低任务优先级。

  VxWorks 下对于应用层任务,推荐使用 100~250 之间的优先级,驱动层任务可以使用 51~99 之间的

  优先级。要特别注意的是,内核网络数据包收发任务 tNetTask 的优先级为 50,如果使用网口进行调试,则

  一定注意不要创建任务优先级高于 50 的任务,否则 tNetTask 任务将无法得到运行,表现形式是死机,因

  为系统将无法再从网口接收调试命令,无法响应 Tornado Shell 或者 Telnet 下输入的任何命令。以上只是推

  荐值,事实上,由于嵌入式系统下的特殊应用,对于某个任务优先级的设置需要根据该任务完成的具体工

  作而定,而不可一味地遵循推荐值。如笔者曾在项目中为了与 Shell“争读”从串口发送的命令,就将一个

  应用层任务优先级设置为 0。要谨记在任务达到某一特殊目的后,必须将任务优先级设置回正常(推荐)

  值。

  无论何种操作系统,任务在设计中都由一个数据结构表示。这个数据结构包含一个任务运行时需要的

  所有信息,我们一般将这些信息称为任务上下文。具体的任务上下文(广义上)包括以下内容:

  1)所在平台 CPU 内部所有的寄存器值,特别是指令寄存器,这代表了任务当前的执行点。这一般是

  狭义上的任务上下文。除了寄存器值,每个任务有自己的内存映射空间、任务名称、任务优先级值、任务

  入口函数地址、打开文件句柄数组、信号量和用于各种目的的队列

VxWorks操作系统的基本组件

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !