- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Vxworks 操作系统内核
Vxworks 内核(wind)的基本功能可以分为如下几类:
任务;
任务间通信
中断服务程序
定时器服务(watchdog timers)
POSIX 时钟和定时器
POSIX memory-Locking 接口
任务
任务是代码运行的一个射象,从系统的角度看,任务是竞争系统资源的最小运行单元。
任务结构
实际引用中任务更好的对客观世界的事件做出反应。Vxworks 是多任务环境,每个任务都有自己的上下文(context),记录了任务运行时的 cpu 环境和系统资源状况,context切换时,比保护在任务控制块中(TCP),一备下次调用是恢复运行环境。
Context 包括:任务号,CPU 寄存器和浮点寄存器,可变栈几函数调用,标准的输入和输出,延迟时间,时间的大小,内核控制结构,信号处理函数(signal handlers),调用和性能监视。
3,任务状态和任务迁移
实时系统最基本的状况有以下四种:
就绪态(Ready):任务只等待系统分配 CUP 资源。
挂起态(Pend):任务需等待某些不可利用的资源而被阻塞。
休眠态(suspend):如果系统不需要某一个任务工作,则这个任务处于休眠状态。
延迟态(Delay):任务被延迟时所处的状态。
当系统函数对某一个任务进行操作时,任务从一种状态跃迁到另一种状态。处于任一状态的任务都可被删除。VxWorks 的任务跃迁如图 1 所示。
ready
?
pend
semtake() /msgQReceive()
ready
?
delay
taskDelay()
ready
?
suspend
taskSupend()
pend
?
ready
semGive()/msgQsend()
pend
?
suspend
taskSuspend()
delay
?
ready
expired delay()
delay
?
suspend
taskSuspend()
suspend
?
ready
taskResume()/ taskActiveate()
suspend
?
pend
taskResume()
suspend
?
delayed
taskResume()
kernelTimeSlice() control round-robin scheduling
taskPrioritySet() change the priority of a task
taskLock() disable task rescheduling
taskUnlock enable task rescheduling
优先级抢占方式
抢允许、禁止; 如果任务设置了抢占允许位,当此任务处于运行态时,如果高一级优先级任务因某各系统调用阻塞态或挂起态迁移为就绪,则此高优先级任务会立即抢占当前任务 的运行,如果设置了禁止,则当前任务不可被处于就绪的高优先级任务抢占,继续运行阻塞, 刮起或者改变抢占设置为止。Wind 有 256 优先级,(0-255)0 的优先级最高,255 最低。在程序运行中,可通过 taskPriorityset 设置改变优先级。
轮询方式:
时间轮转的方式;
通过 KernelTimeSlice()函数为任务分配时间片; 优先级锁
通过 taskLock() 和 TaskUnlock()函数设置抢占方式; 任务控制:
任务控制包括:任务创建、控制、信息。tsakSpawn() create and activate a new task; taskInit() InitiaLize a new task taskActivate Activate an initialized task
taskSpawn()函数可以做底层分配和初始化和任务激活,。初始化和激活函数分别是 taskInit
()和 taskActivate();
如果你不给你的应用程序中任务起名,vxworks 会给每个没有名字的任务器名字,名字统一格式为 tN,N 是十进制数,每次加 1;
taskName() get the task name associated with a task Id taskNameToId() look up the task ID associate with a task name. taskIdSelf() get the calling task ID
taskidVerify() Verify the existence of a specified task taskSpawn(
char *name //名称
int priority //任务的优先级int options //任务可选项
int stacksize //任务堆
您可能关注的文档
最近下载
- GB 55031-2022 民用建筑通用规范.docx VIP
- 护理临床带教老师课件.pptx VIP
- 第十四章 全等三角形 评估测试卷(含答案)2025-2026学年数学人教版(2024)八年级上册.pdf VIP
- 本科教学工作合格评估联络员培训材料.pptx VIP
- 苏G62-2021 成品住房装配化装修构造.docx VIP
- 2025年高考真题分类汇编专题10直线与圆及圆锥曲线(全国通用)(试卷+解析).docx VIP
- 本科教学工作合格评估联络员培训材料.pptx VIP
- 物演通论(曾蓉注释第二版)第一卷60.docx VIP
- 傻瓜式era汉化教学bymkatze葱神.pdf VIP
- 门静脉高压教学课件.pptx VIP
文档评论(0)