# kernel_liteos_a_note **Repository Path**: weharmony/kernel_liteos_a_note ## Basic Information - **Project Name**: kernel_liteos_a_note - **Description**: 精读鸿蒙内核源码,百万汉字注解分析; 百篇博客深入解剖,挖透内核地基工程. 定期同步官方源码,输出覆盖主流站点. 鸿蒙研究站 | 每天死磕一点点 => weharmonyos.com 做一个专注而靠谱的技术站,持续更新中 ... - **Primary Language**: C - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: http://weharmonyos.com - **GVP Project**: No ## Statistics - **Stars**: 2404 - **Forks**: 584 - **Created**: 2020-10-15 - **Last Updated**: 2025-11-09 ## Categories & Tags **Categories**: harmonyos-guide **Tags**: 百万汉字注解, 百篇博客分析, 挖穿内核地基, 精读鸿蒙源码 ## README **中文注解鸿蒙轻内核 | [kernel_liteos_a_note](https://gitee.com/weharmony/kernel_liteos_a_note)** 是在 **OpenHarmony** 的 [kernel_liteos_a](https://gitee.com/openharmony/kernel_liteos_a) 基础上给内核源码加上中文注解的版本,同步官方代码迭代推进 ## 为何要精读内核源码? * 码农的学职生涯,都应精读一遍内核源码。以浇筑好计算机知识大厦的地基,地基纵深的坚固程度,很大程度能决定未来大厦能盖多高。那为何一定要精读细品呢? * 因为内核代码本身并不太多,都是浓缩的精华,精读是让各个知识点高频出现,不孤立成点状记忆,没有足够连接点的知识点是很容易忘的,点点成线,线面成体,连接越多,记得越牢,如此短时间内容易结成一张高浓度,高密度的系统化知识网,训练大脑肌肉记忆,驻入大脑直觉区,想抹都抹不掉,终生携带,随时调取。跟骑单车一样,一旦学会,即便多年不骑,照样跨上就走,从从容容,游刃有余 ## 致敬鸿蒙轻内核开发者 * 感谢开放原子开源基金会,致敬鸿蒙轻内核开发者提供了如此优秀的源码,一了多年的夙愿,津津乐道于此。从内核一行行的代码中能深深感受到开发者各中艰辛与坚持,及鸿蒙生态对未来的价值。可以毫不夸张的说鸿蒙轻内核源码可作为大学:C语言,数据结构,操作系统,汇编语言,计算机系统结构,计算机组成原理,微机接口 七门课程的教学项目。如此宝库,不深入研究实在是暴殄天物,于心不忍,坚信鸿蒙大势所趋,未来可期,其必定成功,也必然成功,誓做其坚定的追随者和传播者 ## 与内核的缘 * 因大学时阅读 linux 2.6 内核痛并快乐的经历,一直有个心愿,对底层基础技术进行一次系统性的整理,方便自己随时翻看,同时让更多对底层感兴趣的小伙伴减少时间,加速对计算机系统级的理解,而不至于过早的放弃。奈想法很美好,现实很骨感,多年一直没有行动,基本要放弃这件事了。恰逢 2020/9/10 鸿蒙正式开源,重新激活了多年的心愿,就有那么点如黄河之水一发不可收拾了 * 今年已是第五年,中间断断续续的,时间无法稳定投入,有就多做,没就少做,但从未放弃,一步一脚印,慢慢往前拱,坚持做对的事,方向对,速度没那么重要,时间会给答案。除了注解,也写写画画了不少,百篇内核文章分析1.0版 完成了80篇左右,[详见 => 鸿蒙轻内核源码分析](https://my.oschina.net/weharmony) ## 怎么看AI * 随着ChatGPT,尤其DeepSeek的横空出世,除了震撼还是震撼!!!一度怀疑继续注解内核这件事有没有继续的必要,继续在鸿蒙生态上投入本就不多的时间是不是一种浪费,有没有意义。因为不管是写代码还是注释,AI好像都干的比你好,这种想法持续了半年左右,直到AI越用越多,发现其中的问题,能理性的看待AI的作用。AI是很好的助手,它固然能替代很多简单重复的工作,但替代不了系统级理解思维力,替代不了全局性连贯的文档表达力,这是AI时代最重要的两种能力 * AI让知识平权化,使强者恒强,弱者消亡,跟汽车替代马车类似,没有本质的区别,只有马车夫才担心没了赶马车的机会。汽车扩大了活动半径诞生了马车时代没有的场景,AI同样扩大了认知范畴,同样会诞生新场景、新机会。AI是利剑,别跟它比锋利,聚焦在怎么用好它才是重点 ## 待办事项 * (已完成)第三遍重新注释内核,借助AI,更省时,更高效,思路更顺,理解更透 * (进行中)重写 **百篇内核文章分析2.0版** ## 四大码仓发布 | 源码同步官方 内核注解同时在 [gitee](https://gitee.com/weharmony/kernel_liteos_a_note) | [gitcode](https://gitcode.net/kuangyufei/kernel_liteos_a_note) | [github](https://github.com/kuangyufei/kernel_liteos_a_note) | [coding](https://weharmony.coding.net/public/harmony/kernel_liteos_a_note/git/files) 发布,并与官方源码保持同步,同步历史如下: * `2025/11/09` -- 同步最新代码,一些小修改 * `2025/07/02` -- 同步最新代码,对 epoll,process,mem 模块有少量修改 * `2025/02/22` -- 同步官方几处小改,同时后续将会参考deepseek注解做精做强 * `2024/04/13` -- 官方几处小修正 * `2024/03/04` -- 官方修改很小 * `2023/11/24` -- 几处小的修改 * `2023/10/11` -- 近五个月官方很少更新 * `2023/05/26` -- BUILD.gn 相关 * `2023/04/10` -- 调度算法优化,加入deadline * `2023/03/01` -- 增加网络容器和容器限额功能 * `2023/02/13` -- 支持proc/self目录 * `2023/01/14` -- 同步官方代码,支持PID容器 * `2022/11/01` -- 删除 PLATFORM_QEMU_ARM_VIRT_CA7 侵入内核的所有代码 * `2022/09/21` -- 主线代码没有变化,只完善了测试用例 * `2022/07/18` -- 开机代码微调 * `2022/06/03` -- 增加 jffs2 编译选项 * `2022/05/09` -- 标准库(musl , newlib) 目录调整 * `2022/04/16` -- 任务调度模块有很大更新 * `2022/03/23` -- 新增各CPU核自主管理中断, 定时器模块较大调整 * `2022/02/18` -- 官方无代码更新, 只有测试用例的完善 * `2022/01/20` -- 同步官方代码,本次官方对测试用例和MMU做了较大调整 * `2021/12/20` -- 增加`LMS`模块,完善`PM,Fat Cache` * `2021/11/12` -- 加入`epoll`支持,对`shell`模块有较大调整,微调`process`,`task`,更正单词拼写错误 * `2021/10/21` -- 增加性能优化模块`perf`,优化了文件映射模块 * `2021/09/14` -- `common`,`extended`等几个目录结构和Makefile调整 * `2021/08/19` -- 各目录增加了`BUILD。gn`文件,文件系统部分文件调整 * `2021/07/15` -- 改动不大,新增`blackbox`,`hidumper`,对一些宏规范化使用 * `2021/06/27` -- 对文件系统/设备驱动改动较大,目录结构进行了重新整理 * `2021/06/08` -- 对编译构建,任务,信号模块有较大的改动 * `2021/05/28` -- 改动不大,主要针对一些错误单词拼写纠正 * `2021/05/13` -- 对系统调用,任务切换,信号处理,异常接管,文件管理,`shell`做了较大更新,代码结构更清晰 * `2021/04/21` -- 官方优化了很多之前吐槽的地方,点赞 * `2020/09/16` -- 中文注解版起点 ## 关于 zzz 目录 中文加注版比官方版无新增文件,只多了一个`zzz`的目录,里面放了一些加注所需文件,它与内核代码无关,可以忽略它,取名`zzz`是为了排在最后,减少对原有代码目录级的侵入,`zzz` 的想法源于微信中名称为`AAA`的那帮朋友,你的微信里应该也有他们熟悉的身影吧 :-) ``` /kernel/liteos_a_note ├── apps # 用户态的init和shell应用程序 ├── arch # 体系架构的目录,如arm等 │ └── arm # arm架构代码 ├── bsd # freebsd相关的驱动和适配层模块代码引入,例如USB等 ├── compat # 内核接口兼容性目录 │ └── posix # posix相关接口 ├── drivers # 内核驱动 │ └── char # 字符设备 │ ├── mem # 访问物理IO设备驱动 │ ├── quickstart # 系统快速启动接口目录 │ ├── random # 随机数设备驱动 │ └── video # framebuffer驱动框架 ├── figures # 内核架构图 ├── fs # 文件系统模块,主要来源于NuttX开源项目 │ ├── fat # fat文件系统 │ ├── jffs2 # jffs2文件系统 │ ├── include # 对外暴露头文件存放目录 │ ├── nfs # nfs文件系统 │ ├── proc # proc文件系统 │ ├── ramfs # ramfs文件系统 │ └── vfs # vfs层 ├── kernel # 进程、内存、IPC等模块 │ ├── base # 基础内核,包括调度、内存等模块 │ ├── common # 内核通用组件 │ ├── extended # 扩展内核,包括动态加载、vdso、liteipc等模块 │ ├── include # 对外暴露头文件存放目录 │ └── user # 加载init进程 ├── lib # 内核的lib库 ├── net # 网络模块,主要来源于lwip开源项目 ├── platform # 支持不同的芯片平台代码,如Hi3516DV300等 │ ├── hw # 时钟与中断相关逻辑代码 │ ├── include # 对外暴露头文件存放目录 │ └── uart # 串口相关逻辑代码 ├── security # 安全特性相关的代码,包括进程权限管理和虚拟id映射管理 ├── shell # 接收用户输入的命令,内核去执行 ├── syscall # 系统调用 ├── testsuilts # 测试套件 ├── tools # 构建工具及相关配置和代码 └── zzz # 中文注解版新增目录 ``` ## 特此感谢 感谢过程中(**统计至 2025/11/09**)无私赞助的 **29** 位热心朋友,有企事业单位职工,有在校学生,有行业内资深大佬,也有非专业的纯粹爱好者,在此一并谢过,作者将带着这份温暖继续前行。 [ >> 进入了解](./zzz/donate/donate.md)