《鸿蒙智能互联设备开发(微课版)》 课件 5.3.2 任务管理.pptx

《鸿蒙智能互联设备开发(微课版)》 课件 5.3.2 任务管理.pptx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

5.3.2任务管理

通过本节学习,您可以:了解任务管理

任务管理从系统的角度看,任务Task是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。OpenHarmony内核中使用一个任务表示一个线程。OpenHarmony内核中同优先级进程内的任务统一调度、运行。OpenHarmony内核中的任务采用抢占式调度机制,同时支持时间片轮转调度和FIFO调度方式。内核的任务一共有32个优先级(0-31),最高优先级为0,最低优先级为31。当前进程内,高优先级的任务可抢占低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。1.任务管理概念

任务管理任务的各状态如图所示:初始化就绪态阻塞态运行态退出初始化(Init):任务正在被创建。就绪态(Ready):任务在就绪队列中,等待CPU调度。运行态(Running):任务正在运行。阻塞态(Blocked):任务被阻塞挂起。Blocked状态包括:pending(因为锁、事件、信号量等阻塞)、suspended(主动pend)、delay(延时阻塞)、pendtime(因为锁、事件、信号量时间等超时等待)。退出态(Exit):任务运行结束,等待父任务回收其控制块资源。

任务管理初始化→就绪态:任务创建拿到控制块后为初始化阶段(Init状态),当任务初始化完成将任务插入调度队列,此时任务进入就绪状态。就绪态→运行态:任务创建后进入就绪态,发生任务切换时,就绪队列中最高优先级的任务被执行,从而进入运行态,此刻该任务从就绪队列中删除。初始化就绪态阻塞态运行态退出

任务管理运行态→阻塞态:正在运行的任务发生阻塞(挂起、延时、读信号量等)时,任务状态由运行态变成阻塞态,然后发生任务切换,运行就绪队列中剩余最高优先级任务。阻塞态→就绪态:阻塞的任务被恢复后(任务恢复、延时时间超时、读信号量超时或读到信号量等),此时被恢复的任务会被加入就绪队列,从而由阻塞态变成就绪态。初始化就绪态阻塞态运行态退出

任务管理就绪态→阻塞态:任务也有可能在就绪态时被阻塞(挂起),此时任务状态会由就绪态转变为阻塞态,该任务从就绪队列中删除,不会参与任务调度,直到该任务被恢复。运行态→就绪态:有更高优先级任务创建或者恢复后,会发生任务调度,此刻就绪队列中最高优先级任务变为运行态,那么原先运行的任务由运行态变为就绪态,并加入就绪队列中。初始化就绪态阻塞态运行态退出

任务管理运行态→退出态:运行中的任务运行结束,任务状态由运行态变为退出态。初始化就绪态阻塞态运行态退出

任务管理OpenHarmonyLiteOS-A内核的任务管理模块提供了创建任务、删除任务、控制任务状态、获取任务信息等几种功能,具体如表所示。2.任务管理接口功能分类接口名接口描述任务的创建和删除LOS_TaskCreate创建任务,若所创建任务的优先级比当前的运行的任务优先级高且任务调度没有锁定,则该任务将被调度进入运行态LOS_TaskCreateOnly创建任务并阻塞,任务恢复前不会将其加入就绪队列中LOS_TaskDelete删除指定的任务,回收其任务控制块和任务栈所消耗的资源任务的状态控制LOS_TaskResume恢复挂起的任务LOS_TaskSuspend挂起指定的任务,该任务将从就绪任务队列中移除LOS_TaskJoin阻塞当前任务,等待指定任务运行结束并回收其资源LOS_TaskDetach修改任务的joinable属性为detach属性,detach属性的任务运行结束会自动回收任务控制块资源LOS_TaskDelay延迟当前任务的执行,在延后指定的时间(tick数)后可以被调度LOS_TaskYield将当前任务从具有相同优先级的任务队列,移动到就绪任务队列的末尾

任务管理功能分类接口名接口描述任务调度LOS_TaskLock锁定任务调度,阻止任务切换LOS_TaskUnlock解锁任务调度。通过该接口可以使任务锁数量减1,若任务多次加锁,那么任务调度在锁数量减为0时才会完全解锁LOS_GetTaskScheduler获取指定任务的调度策略LOS_SetTaskScheduler设置指定任务的调度参数,包括优先级和调度策略LOS_Schedule触发主动的任务调度任务信息获取LOS_CurTaskIDGet获取当前任务的IDLOS_TaskInfoGet获取指定任务的信息LOS_GetSystemTaskMaximum获取系统支持的最大任务数任务优先级LOS_CurTaskPriSet设置当前正在运行的任务的优先级LOS_TaskPriSet设置指定任务的优先级LOS_TaskPriGet获取指定任务的优先级任务绑核操作

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档