- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ucos-ii中的任务_3.ppt
挂起任务 挂起指定任务,直到通过唤醒任务对任务进行解挂。 一个任务可以把自己挂起,也可以挂起其他任务 当任务把自己挂起后,会引起任务的调度,实时内核将选取另外一个合适的任务进行执行。 任务被挂起后,该任务将处于等待状态 挂起任务通常需要进行以下工作: 根据指定的ID,获得对应任务的TCB 把任务的状态变为等待状态,并把TCB放置到等待队列 如果任务自己挂起自己,进行任务调度 挂起任务 函数原形 INT8U OSTaskSuspend(INT8U prio); 恢复任务 根据任务ID解挂指定的任务。 如果任务还在等待其他资源,任务解挂后仍然处于等待状态; 否则,解挂后的任务将处于就绪状态。 解挂任务通常需要进行以下工作: 根据指定的ID,获得对应任务的TCB 如果任务在等待其他资源,任务将仍然处于等待状态;否则,把任务的状态变为就绪状态,并把TCB放置到就绪队列 进行任务调度 恢复任务 函数原形 INT8U OSTaskResume(INT8U prio); 删除任务 内核根据任务创建时获得的ID删除指定的任务。 在删除一个任务时,需要释放该任务所拥有的资源。 释放任务所拥有的资源通常由内核和任务共同完成。 内核通常只释放那些由内核为任务分配的资源 如任务名字和TCB等内容所占用的空间。 由任务自己分配的资源则通常由任务自身进行释放 如任务的堆栈空间,以及其他一些任务申请的资源,信号量、timer、文件系统资源、I/O设备和使用malloc等函数动态获得的内存空间等。 删除任务 任务删除通常需要进行以下工作: 根据指定的ID,获得对应任务的TCB 把任务的TCB从队列中取出来,挂入空闲TCB队列 释放任务所占用的资源 删除任务 删除任务函数原形 INT8U OSTaskDel(INT8U prio); 删除请求函数原形 INT8U OSTaskDelReq(INT8U prio); μC/OS-II的 初始化 在使用μC/OS-II的所有服务之前,必须要调用μC/OS-II的初始化函数OSInit( )对μC/OS-II自身的运行环境进行初始化。 函数OSInit( )将对μC/OS-II的所有的全局变量和数据结构进行初始化,同时创建空闲任务OSTaskIdle,并赋之以最低的优先级别和永远的就绪状态。如果用户应用程序还要使用统计任务的话(常数OS_TASK_STAT_EN=1),则OSInit( )还要以优先级别为OS_LOWEST_PRIO-1来创建统计任务 初始化函数OSInit( )对数据结构进行初始化时,主要要创建包括空任务控制块链表在内的5个空数据缓冲区。同时,为了可以快速地查询任务控制块链表中的各个元素,初始化函数OSInit( )还要创建一个数组OSTCBPrioTbl[OS_LOWEST_PRIO + 1],在这个数组中,按任务的优先级别的顺序把任务控制块的指针存放在了对应的元素中 OSInit()源代码细节 OS_CORE.C中 μC/OS-II的启动 μC/OS-II进行任务的管理是从调用启动函数OSStart( )开始的,当然其前提条件是在调用该函数之前至少创建了一个用户任务 OSStart()源代码细节 1、关于OSPrioHighRdy、OSPrioCur的数据类型及含义 2、关于OSTCBHighRdy、OSTCBCur的数据类型及含义 对比表2-4和表2-5 任务的挂起与恢复 等待状态 一个任务从运行状态到等待某种事件发生再运行的状态 挂起任务程序流程阅读:OSTaskSuspend() 1、删除就绪标志 2、做挂起记录:OSTCBStat 是否挂起自身的区别 等待状态到就绪状态 一个任务得到要求的资源进入准备运行的状态 恢复任务程序流程阅读:OSTaskResume() 判断是否是一个等待任务:OSTCBDly 判断是否是一个挂起任务:OSTCBStat 是:清除挂起记录 不是:使任务就绪 例2-8、例2-9 其他任务管理函数 睡眠状态 一个任务从运行状态、就绪状态、等待状态到不运行状态 任务的删除请求程序流程阅读:OSTaskDelReq () 例2-10 * * μC/OS-II中的任务 任务的基本概念 从应用程序设计的角度来看,UC/OS-II的任务就是一个 线程,就是一个用来解决用户问题的C语言函数和与之相关 的一下数据结构而构成的一个实体 从任务的存储结构来看,UC/OS-II的任务由任务程序代码、 任务堆栈和任务控制块组成 引申:关于LINUX中的线程和进程 一般来说LINUX中的进程具备如下要素: 1、有一段程序供其执行 2、有起码的私有财产,即进程专用的系统堆栈空间 3、有户口,操作
文档评论(0)