uCOS-II-任务管理-2教学课件.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 关中断(临界区操作),事件等代表,事件标记的等待表。 因为,进入临界区比较久了,系统一直不能响应中断,所以开中断,执行空操作, 是为了是ucos满足实时性(与windows和linux不同),实时性强,长时间关中断是不行的。空间换时间(优先级位图,调度的时间是固定的) * 为什么请求删除? 怎么实现? * 为什么请求删除? 怎么实现? * OSTaskCtr = 0u; /* Clear the number of tasks */ OSRunning = OS_FALSE; /* Indicate that multitasking not started */ OSCtxSwCtr = 0u; /* Clear the context switch counter */任务切换次数 OSIdleCtr = 0uL; /* Clear the 32-bit idle counter */ * OSTaskCtr = 0u; /* Clear the number of tasks */ OSRunning = OS_FALSE; /* Indicate that multitasking not started */ OSCtxSwCtr = 0u; /* Clear the context switch counter */任务切换次数 OSIdleCtr = 0uL; /* Clear the 32-bit idle counter */ * MRS R3, SPSR * * 2.7 其他任务管理函数 关于任务的删除 “任务A” 在删除 “任务B” 时,A不能知道B的详细情况,可能会造成A已申请的资源从系统中永久的丢失 这不合理! 正确的方法 Task_A 欲删除 Task_B 时,A 提出删除申请,B根据自身的情况处理后,删除自身。 uC/OS-II 中的 TCB 含有一个成员 OSTCBDelReq 用于标示有其他任务申请删除它。 使用系统函数 OSTaskDelReq( ) 提出任务删除申请。 ISR 中不允许删除任务。 请求删除 当以其他任务的优先级作为参数的时候,OsTaskDel粗暴地删除了任务,这在某些情况下是有效的,但是却不是必须这么做。通知对方任务,告诉它要删除你了,请任务自己删除自己是一种更好的做法。因为这么做,任务可以在删除自己之前先放弃自己使用的资源,如缓冲区、信号量、邮箱、队列等。如果总是用OsTaskDel删除一个任务,这个任务占用的资源不能得到释放,系统就会产生内存泄漏,在内存泄漏累积到比较大的时候最后,系统就会因为没有可用的内存崩溃。 OsTaskDelReq名称虽然是请求,却是集请求和响应于一段代码的。该代码的功能是: 1.请求删除某任务 2.查看是否有任务要删除自己 * * 2.7 其他任务管理函数 OSTaskDelReq( ) 系统函数原型: INT8U OSTaskDelReq( INT8U prio ) ; 优先级指定其他任务时的函数返回值说明: OS_TASK_IDEL_PRIO 申请删除空闲任务出错。 OS_PRIO_INVALID 优先级指定出错。 OS_TASK_NOT_EXIST 优先级指定的任务已不存在。 OS_NO_ERR 删除申请成功。 特别说明:此函数的参数可以是 “优先级” 指 定的其他任务,也可以是OS_PRIO_SELF 指定自身,后者用于查阅是否有其他任 务申请删除本任务。 * * 2.7 其他任务管理函数 OSTaskDelReq( ) 系统函数原型: INT8U OSTaskDelReq( INT8U prio ) ; 参数为 OS_PRIO_SELF 时的函数返回值说明: OS_

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档