1.2 任务就绪队列
在任务调度模块,就绪队列是个重要的数据结构。任务创建后即进入就绪态,并放入就绪队列。在鸿蒙轻内核中,就绪队列是一个双向循环链表数组,每个数组元素就是一个链表,相同优先级的任务放入同一个链表。
任务就绪队列Priority Queue主要供内部使用,用户进行业务开发时不涉及,所以并未对外提供接口。双向循环链表数组能够更加方便的支持任务基于优先级进行调度。任务就绪队列的核心代码在kernel\src\los_task.c文件中。
1.2.1 任务就绪队列的定义
(1)表示队列数量最多有32个,也就是链表数组的长度为32,对应任务优先级为32.
(3)表示链表数组,也就是队列,对应索引为置表示优先级,索引越小,优先级越高。
(4)表示队列的bitmap,这是个32位的整形数据,对应的bit位0表示为31-优先级的队列没有就绪,1表示有就绪。
(2)表示为bitmap赋值,初始值为0x80000000,表示优先级为31的空线程就绪。
1.2.2 初始化任务就绪队列
在OsSchedInit()函数中,对就绪队列进行了初始化