回复
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记 原创
絶え間なくˋ
发布于 2022-8-10 10:15
浏览
0收藏
第三章:内核开发
本章主要介绍BearPi-HM Nano中的任务创建,管理,分配,删除等,分为任务管理,软件定时器,信号量,事件管理,互斥锁,消息队列6部分
1、任务管理
基本概念:
1、从系统的角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。
2、LiteOS的任务模块可以给用户提供多个任务,实现了任务之间的切换和通信,帮助用户管理业务程序流程。这样用户可以将更多的精力投入到业务功能的实现中。
3、LiteOS中的任务是抢占式调度机制,高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度,同时支持时间片轮转调度方式。
4、LiteOS的任务默认有32个优先级(0-31),最高优先级为0,最低优先级为31.
任务状态:分为就绪态,运行态,阻塞态,退出态,任务因优先级,会在各个状态进行切换
主要API接口
2、软件定时器
软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数。软件定时器扩展了定时器的数量,允许创建更多的定时业务。
工作原理:软件定时器使用了系统的一一个队列和一个任务资源,软件定时器的触发遵循队列规则,先进先出。定时时间短的定时器总是比定时时间长的靠近队列头,满足优先被触发的准则。当Tick中断到来时,在Tick中断处理函数中扫描软件定时器的计时全局链表,看是否有定时器超时,若有则将超时的定时器记录下来。Tick中断处理函数结束后,软件定时器任务(优先级为最高)被唤醒,在该任务中调用之前记录下来的定时器的超时回调函数。
主要API接口
3、信号量
1、信号量是一种实现任务间通信的机制,实现任务之间同步或临界资源的互斥访问。常用于协助一-组相.互竞争的任务来访问临界资源。2、在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。
运行原理:
1、信号量初始化,为配置的N个信号量申请内存(N值可以由用户自行配置,受内存限制) , 并把所有的信号量初始化成未使用,并加入到未使用链表中供系统使用。
2、信号量创建,从未使用的信号量链表中获取一个信号量资源, 并设定初值。
3、信号量申请,若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其它任务释放该信号量,等待的超时时间可设定。当任务被一个信号量阻塞时, 将该任务挂到信号量等待任务队列的队尾。
4、信号量释放,若没有任务等待该信号量,则直接将计数器加1返回。否则唤醒该信号量等待任务队列上的第一个任务。
5、信号量删除,将正在使用的信号量置为未使用信号量,并挂回到未使用链表。Tick中断处理函数结束后,软件定时器任务(优先级为最高)被唤醒,在该任务中调用之前记录下来的定时器的超时回调函数。
通过信号量的使用可以更改程序的运行顺序,从而使程序按照设计顺序执行
主要API接口
4、事件管理,互斥锁,消息队列
这三种任务管理机制与信号量功能相似,但不完全相同,类似于数组,链表,队列的区别。
故仅列出API接口,详细可查询PPT
| 鸿蒙设备开发实战_在线课程_华为云开发者学堂_云计算培训-华为云 (huaweicloud.com)
事件管理
互斥锁
消息队列
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
赞
收藏
回复
相关推荐