我贴几篇华为内部专家zhushy在华为云开发者社区发布的关于鸿蒙源码的技术分析帖子,
有兴趣的可以一看究竟~
前言主要以鸿蒙轻内核中源码所包含的数据结构-双向链表、数据结构-就绪队列、数据结构-排序链表、中断管理、时间管理、任务和任务调度、 互斥锁、信号量、队列、事件、定时器、静态内存、 动态内存等为例,讲述鸿蒙轻内核源码的概况。
此文会给读者介绍源码中重要的数据结构,双向循环链表Doubly Linked List
。在讲解时,会结合数据结构相关绘图,培养读者们的数据结构的平面想象能力,帮助更好的学习和理解这些数据结构的用法。
此文会继续给读者介绍源码中重要的数据结构,任务基于优先级的就绪队列Priority Queue
。在任务调度模块,就绪队列是个重要的数据结构。任务创建后即进入就绪态,并放入就绪队列。在鸿蒙轻内核中,就绪队列是一个双向循环链表数组,每个数组元素就是一个链表,相同优先级的任务放入同一个链表。掌握鸿蒙轻内核的优先级就绪队列Priority Queue
这一重要的数据结构,会给进一步学习、分析鸿蒙轻内核源代码打下了基础,让后续的学习更加容易。
此文会继续给读者介绍鸿蒙轻内核源码中重要的数据结构:任务排序链表TaskSortLinkAttr
。鸿蒙轻内核的任务排序链表,用于任务延迟到期/超时唤醒等业务场景,是一个非常重要、非常基础的数据结构。
中断是指出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。当外设需要CPU时,将通过产生中断信号使CPU立即中断当前任务来响应中断请求。此文会给读者介绍中断的概念,鸿蒙轻内核的中断模块的源代码。
此文将带大家一起剖析鸿蒙轻内核的时间管理模块的源代码。时间管理模块为任务调度提供必要的时钟节拍,会向应用程序提供所有和时间有关的服务,如时间转换、统计、延迟功能。
华为云开发者社区后续也会陆续推出更多的分享文章,敬请期待,也欢迎大家分享学习、使用鸿蒙轻内核的心得。