《鸿蒙智能互联设备开发(微课版)》 课件 5.3.2 任务管理_第1页
《鸿蒙智能互联设备开发(微课版)》 课件 5.3.2 任务管理_第2页
《鸿蒙智能互联设备开发(微课版)》 课件 5.3.2 任务管理_第3页
《鸿蒙智能互联设备开发(微课版)》 课件 5.3.2 任务管理_第4页
《鸿蒙智能互联设备开发(微课版)》 课件 5.3.2 任务管理_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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获取指定任务的优先级任务绑核操作

LOS_TaskCpuAffiSet绑定指定任务到指定CPU上运行,仅在多核下使用LOS_TaskCpuAffiGet获取指定任务的绑核信息,仅在多核下使用任务管理任务管理的一般开发流程如下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论