梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记
3.1任务管理
任务基本概念
任务是竞争系统资源最小的单位
多个任务可以同时进行,并实现任务之间的切换和通信
LiteOS采用的是抢占式调度机制,高优先级任务可打断低优先级任务,当任务优先级相同时,先创建的任务先运行
同时具备时间片轮转功能
LiteOS的任务默认为32个优先级,从高优先级到低优先级为0-31
任务状态
就绪(Ready)
运行(Running)
阻塞(Blocked)
退出态(Dead)
任务状态迁移
API任务接口(code)
3.2软件定时器
概念
基于系统Tick时钟中断且由软件来模拟的定时器,当经过Tick时钟所设定的数值后会触发回调函数
功能
遵循队列规则(先进先出)
基本即使单位
Tick
API软件定时器接口(code)
3.3信号量
概念
信号量是一种实现任务间通信的机制,实现任务之间同步或临界资源的互斥访问
系统进行多任务时,信号量可以协助各任务之间的同步或互斥实现临界资源的保护
信号量数值
对应有效资源数,表示剩下可被占用的互斥资源数
0:没有Post任务积累,且有可能有任务在此信号量上阻塞
正值:有一个或多个Post任务积累
信号量用作互斥:
记数是满的,以将信号量取空,是其他任务阻塞来保护临界资源
信号量用作同步:
记数是空的,任务1取信号量阻塞,任务2运行时释放信号量,将阻塞的任务1变为运行状态,实现两个任务同步
运行原理:
信号量初始化
信号量创建
信号量申请
信号量释放
信号量删除
信号量运行
API信号量接口(code)
3.4事件管理
概念
事件是一种实现任务间通信的机制,可用于实现任务间的同步
一个任务可以等待多个事件的发生
事件集合用32位无符号整型变量来表示,每一位代衷一个事件
事件可以提供一对多、多对多的同步操作
一对多同步模型
一个任务等待多个事件的触发
多对多同步模型
多个任务等待多个事件的触发
事件运行机制
API事件接口(code)
3.5互斥锁
概念
互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理
状态
开锁
任务释放,失去该互斥锁所有权
闭锁
任务持有,获得该互斥锁所有权
互斥锁可被用于对共享资源的保护从而实现独占式访问
互斥锁可以解决信号量存在的优先级翻转问题
LiteOS提供的互斥锁特点
通过优先级继承算法
解决优先级翻转问题
运行机制:保证了公共资源操作的完整性、
API互斥锁接口
3.6消息队列
概念
消息队列,是一种常用于任务间通信的数据结构,实现了接收来自任务或中断的不固定长度的消息,并根据不同的接口选择传递消息是否存放在自己空间
消息队列里为空,则挂起读取任务
出现新消息,则唤醒挂起的读取任务并对新消息进行处理
运行机制(创建队列、写队列、读队列、删除队列)
API消息队列接口