资料介绍
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操作系统下CompactPCI总线驱动程序的设计
- (完整版)vxworks嵌入式操作系统 0次下载
- VxWorks嵌入式操作系统的特点与应用 6次下载
- 基于VxWorks操作系统下光纤通道通信软件的实现 4次下载
- 关于实时操作系统VxWorks下的并口通信威廉希尔官方网站 4次下载
- VxWorks操作系统指南 72次下载
- 嵌入式实时操作系统COS一Ⅱ与VxWORKs
- 基于VxWorks操作系统的WindML 2D显示方案
- 基于VxWorks嵌入式操作系统的SNMP应用
- 基于VxWorks嵌入式操作系统的SNMP应用
- 实时操作系统VxWorks下PCI总线配置威廉希尔官方网站
- 实时操作系统VxWorks下的并口通信威廉希尔官方网站
- 文件压缩在VxWorks操作系统的应用
- VxWorks操作系统及实时多任务程序设计
- 基于VxWorks操作系统的WiWindML 2D显示方案
- 深度解析全球操作系统格局 670次阅读
- 详解实时操作系统和非实时操作系统 3500次阅读
- 什么是实时操作系统(RTOS) 4328次阅读
- Linux是实时系统还是分时操作系统? 1414次阅读
- TinyOS操作系统的工作原理、应用威廉希尔官方网站 及应用分析 5995次阅读
- 基于VxWorks操作系统实现PLC控制系统的应用方案 3458次阅读
- 该如何正确选择嵌入式操作系统 2707次阅读
- 基于嵌入式操作系统的VxWorks设备驱动程序设计 1336次阅读
- 嵌入式VxWorks操作系统建立TrueFFS文件系统 1620次阅读
- 对实时操作系统特性的讨论 5039次阅读
- 关于基于VxWorks的星务管理系统软件多任务实时性调度设计 4566次阅读
- 嵌入式操作系统是什么_嵌入式操作系统有哪些 2w次阅读
- 国产操作系统究竟哪里不行_国产操作系统为何难普及 1.3w次阅读
- vxworks的特点介绍 2w次阅读
- 如何安装实时操作系统RTOS 6104次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多