- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
备注页 第八讲(3) 任务管理 时间管理、 内存管理 授课教师:李英祥 电邮地址:drliyingxiang@163.com 主要内容 1. 任务管理 2. 时间管理 3. 内存管理 1. 任务管理 建立任务OSTaskCreate() 堆栈检验 OSTaskStkChk() 删除任务OSTaskDel() 请求删除任务OSTaskDelReq() 改变任务的优先级OSTaskChangePrio() 挂起任务OSTaskSuspend() 恢复任务OSTaskResume() 获得有关任务的信息OSTaskQuery() 任务管理机制 任务管理用来实现对任务状态的直接控制和访问。 内核的任务管理是通过系统调用来体现,主要包括任务创建、任务删除、任务挂起、任务唤醒、设置任务属性等内容 。 建立任务OSTaskCreate() OSTaskCreate()需要四个参数: task是指向任务代码的指针; Pdata指向一个数据结构,该结构用来在建立任务时向任务传递参数 ; ptos是分配给任务的堆栈的栈顶指针(任务堆栈); prio是分配给任务的优先级 返回值 OSTaskCreate()的返回值为下述之一: OS_NO_ERR:函数调用成功。 OS_PRIO_EXIST:具有该优先级的任务已经存在。 OS_PRIO_INVALID:参数指定的优先级大于OS_LOWEST_PRIO。 OS_NO_MORE_TCB:系统中没有OS_TCB可以分配给任务了。 注意/警告 任务堆栈必须声明为OS_STK类型。 在任务中必须调用μC/OS提供的下述过程之一:延时等待、任务挂起、等待事件发生(等待信号量,消息邮箱、消息队列),以使其他任务得到CPU。 用户程序中不能使用优先级0,1,2,3,以及OS_LOWEST_PRIO-3, OS_LOWEST_PRIO-2, OS_LOWEST_PRIO-1, OS_LOWEST_PRIO。这些优先级μC/OS系统保留,其余的56个优先级提供给应用程序。 每个任务都有自己的堆栈空间。堆栈必须声明为OS_STK类型,并且由连续的内存空间组成。 用户可以静态分配堆栈空间(在编译的时候分配) ,静态堆栈声明应放置在函数的外面,这两种声明方式如下: 用户可以用C编译器提供的malloc()函数来动态地分配堆栈空间,如程序清单 L4.6所示。 在动态分配中,用户要时刻注意内存碎片问题。 堆栈检验 OSTaskStkChk() OSTaskStkChk()检查任务堆栈状态,计算指定任务堆栈中的未用空间和已用空间; 使用OSTaskStkChk()函数要求所检查的任务是被OSTaskCreateExt()函数建立的,且opt参数中OS_TASK_OPT_STK_CHK操作项打开。 参数 prio为指定要获取堆栈信息的任务优先级,也可以指定参数OS_PRIO_SELF,获取调用任务本身的信息。 pdata指向一个类型为OS_STK_DATA的数据结构 删除任务OSTaskDel() OSTaskDel()函数删除一个指定优先级的任务; 任务可以传递自己的优先级给OSTaskDel(),从而删除自身 如果任务不知道自己的优先级,还可以传递参数OS_PRIO_SELF 被删除的任务将回到休眠状态。任务被删除后可以用函数OSTaskCreate()或OSTaskCreateExt()重新建立 参数 prio为指定要删除任务的优先级,也可以用参数OS_PRIO_SELF代替,此时,下一个优先级最高的就绪任务将开始运行。 范例 请求删除任务OSTaskDelReq() 如果任务A拥有内存缓冲区或信号量之类的资源,而任务B想删除该任务,这些资源就可能由于没被释放而丢失。在这种情况下,用户可以让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己。用户可以通过OSTaskDelReq()函数来完成该功能。 发出删除任务请求的任务(任务B)和要删除的任务(任务A)都需要调用OSTaskDelReq()函数。 例如,假设任务5要删除任务10,而任务10占有系统资源,此时任务5不能直接调用OSTaskDel(10)删除任务10,而应该调用OSTaskDelReq(10)向任务10发送删除请求。 在任务10中调用OSTaskDelReq(OS_PRIO_SELF),并检测返回值。如果返回OS_TASK_DEL_REQ,则表明有来自其他任务的删除请求,此时任务10应该先释放资源,然后调用OSTaskDel(OS_PRIO_SELF)删除自己。 参数 prio为要求删除任务的优先级。如果参数为OS_PRIO_SELF,则表示调用函数的任务正在查询是否有来自其他任
您可能关注的文档
- 答《力场与时间有关系统的功能定理及其应用》.doc
- 第!章矩阵及其运算.PDF
- 第1章高等数学预备知识.PDF
- 第1章科技论文基础知识.pdf
- 第1章命题逻辑.ppt
- 第2讲矩阵代数.PDF
- 第2课西方古典哲学的代表柏拉图【人教版】[课件10].ppt
- 第2章MATLAB矩阵及其运算2.1变量和数据操作2.2MATLAB矩阵2.3.ppt
- 第5章MATLAB数值计算-Read.ppt
- 第7章空间解析几何与向量代数习题.PDF
- 建筑工程安全保证体系与措施.pdf
- 第七章 运动和力 小专题(三) 速度的图像及计算 沪粤版物理八年级下册.pptx
- 专题02 氮与社会可持续发展 高一化学下学期期中考点(苏教版2019必修第二册).pptx
- 第三单元学习项目一+多样的复调(第一课时)课件++2025-2026学年人教版(简谱)初中音乐八年级上册.pptx
- 1.5 科学验证:机械能守恒定律 课件高一下学期物理鲁科版(2019)必修第二册.pptx
- 第三单元第3课《制陶》课件+2025-2026学年辽海版初中美术八年级上册.pptx
- 9.2 把握适度原则 高二政治课件(统编版选择性必修3).pptx
- 25秋同步导学化学九下粤教科学版教学资源9.4 化学与健康.docx
- 专题2 物质的变化-中考化学复习(人教版2024).pptx
- 15小虾课件-三年级下册语文统编版.pptx
原创力文档


文档评论(0)