鸿蒙操作系统总用到的“微内核”到底是什么?一篇文章带你搞懂

本文探讨了鸿蒙操作系统中广泛使用的双向循环链表(LOS_DL_LIST)及其重要性。通过介绍链表的基本概念、功能接口、具体使用场景和调度队列中的应用,揭示了链表在降低系统复杂性和提高效率方面的关键作用。此外,文章还强调了内联函数在优化内核性能方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天公众号后台收到一位小友的惊喜问题:

“为何鸿蒙内核源码分析系列开篇就说 LOS_DL_LIST ?”

平常很少收到技术问题,大家都喜欢问老王鸿蒙认证问题,老王都还有点不习惯。

这个问题呢,是因为它在鸿蒙 LOS 内核中无处不在,在整个内核占了极大的比重,豪不夸张的说理解 LOS_DL_LIST 及相关函数是读懂鸿蒙内核的关键。

前后指针就像人的两只左右手一样灵活的指挥着系统精准的运行,越是深入分析内核源码,越能感受到内核开发者对 LOS_DL_LIST 非凡的驾驭能力,笔者仿佛看到了无数双手前后相连,拉起了一个个双向循环链表,把指针的高效能运用到了极致,这也许就是编程的艺术吧!

致敬鸿蒙内核开发者贡献了如此优秀的源码,鸿蒙内核源码可作为大学 C 语言, 操作系统,数据结构,汇编语言四门课的教学项目。

1. /** 
2. * @ingroup los_list 
3. * Structure of a node in a doubly linked list. 
4. */ 
5. typedef struct LOS_DL_LIST { 
6. struct LOS_DL_LIST *pstPrev; /**< Current node's pointer to the previous node */ 
7. struct LOS_DL_LIST *pstNext; /**< Current node's pointer to the next node */ 
8. } LOS_DL_LIST; 
9.
10.LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListInit(LOS_DL_LIST *list) 
11.{ 
12. list->pstNext = list; 
13. list->pstPrev = list; 
14.}

结构体很简单,就前后两个指向自己的指针,因简单才经典,因太简单才太不简单. 真的是无处不在吗?

答:是真的,看看这些使用它的源码吧,无处不在。

1、基本概念

双向链表是指含有往前和往后两个方向的链表,即每个结点中除存放下一个节点指针外,还增加一个指向其前一个节点的指针。

其头指针 head 是唯一确定的。从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点,这种数据结构形式使得双向链表在查找时更加方便,特别是大量数据的遍历。

由于双向链表具有对称性,能方便地完成各种插入、删除等操作,但需要注意前后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值