同步操作将从 WeHarmony/kernel_liteos_a_note 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
百万汉字注解 >> 精读内核源码,中文注解分析, 深挖地基工程,大脑永久记忆,四大码仓每日同步更新< Gitee | Github | CSDN | Coding >
百篇博客分析 >> 故事说内核,问答式导读,生活式比喻,表格化说明,图形化展示,多站点每日同步更新< OSCHINA | CSDN | WeHarmony >
kernel_liteos_a_note 是在鸿蒙官方开源项目 kernel_liteos_a 基础上给源码加上中文注解的版本,目前几大核心模块加注已基本完成, 整体加注完成70%
linux 2.6
内核痛苦经历,一直有个心愿,如何让更多对内核感兴趣的同学减少阅读时间,加速对计算机系统级的理解,而不至于过早的放弃.但因过程种种,多年一直没有行动,基本要放弃这件事了. 恰逢 2020/9/10
鸿蒙正式开源,重新激活了多年的心愿,就有那么点一发不可收拾了. :|P感谢开放原子开源基金会,鸿蒙内核开发者提供了如此优秀的源码,一了多年的夙愿,津津乐道于此.精读内核源码当然是件很困难的事,时间上要以月甚至年为单位,但正因为很难才值得去做! 干困难事,必有所得. 专注聚焦,必有所获.
致敬内核开发者,从内核一行行的代码中能深深体会到开发者各中艰辛与坚持,及鸿蒙生态对未来的价值,可以毫不夸张的说鸿蒙内核源码可作为大学C语言,数据结构,操作系统,汇编语言 四门课程的教学项目.如此宝库,不深入研究实在是暴殄天物,于心不忍,注者坚信鸿蒙大势所趋,未来可期,是其坚定的追随者和传播者.
因鸿蒙内核6W+代码量,本身只有较少的注释, 中文注解以不对原有代码侵入为前提,源码中所有英文部分都是原有注释,所有中文部分都是中文版的注释,尽量不去增加代码的行数,不破坏文件的结构,试图把知识讲透彻,注释多类似以下的方式:
在每个模块的.c文件开始位置先对模块功能做整体的介绍,例如异常接管模块注解如图所示:
注解过程中查阅了很多的资料和书籍,在具体代码处都附上了参考链接.
而函数级注解会详细到重点行,甚至每一行, 例如申请互斥锁的主体函数,不可谓不重要,而官方注释仅有一行,如图所示
另外画了一些字符图方便理解,直接嵌入到头文件中,比如虚拟内存的全景图,因没有这些图是很难理解虚拟内存是如何管理的.
注者认为理解内核可分三个层级:
普通概念映射级: 这一级不涉及专业知识,用大众所熟知的公共认知就能听明白是个什么概念,也就是说用一个普通人都懂的概念去诠释或者映射一个他们从没听过的概念.说别人能听得懂的话这很重要!!! 一个没学过计算机知识的卖菜大妈就不可能知道内核的基本运作了吗? 不一定!,在系列篇中试图用 鸿蒙内核源码分析(总目录)之故事篇 去引导这一层级的认知,希望能卷入更多的人来关注基础软件,尤其是那些资本大鳄,加大对基础软件的投入.
专业概念抽象级: 对抽象的专业逻辑概念具体化认知, 比如虚拟内存,老百姓是听不懂的,学过计算机的人都懂,具体怎么实现的很多人又都不懂了,但这并不妨碍成为一个优秀的上层应用程序员,因为虚拟内存已经被抽象出来,目的是要屏蔽上层对它的现实认知.试图用 鸿蒙内核源码分析(总目录)百篇博客 去拆解那些已经被抽象出来的专业概念, 希望能卷入更多对内核感兴趣的应用软件人才流入基础软件生态, 应用软件咱们是无敌宇宙,但基础软件却很薄弱.
具体微观代码级: 这一级是具体到每一行代码的实现,到了用代码指令级的地步,这段代码是什么意思?为什么要这么设计? 鸿蒙内核源码注解分析 试图从细微处去解释代码实现层,英文真的是天生适合设计成编程语言的人类语言,计算机的01码映射到人类世界的26个字母,诞生了太多的伟大奇迹.但我们的母语注定了很大部分人存在着自然语言层级的理解映射,希望对鸿蒙内核源码注解分析能让更多爱好者快速的理解内核,共同进步.
给 鸿蒙内核源码加注释 过程中,整理出以下文章.
(调度故事篇) | 通俗易懂故事说内核 < CSDN | OSCHINA >
(内存主奴篇) | 紫禁城的主子和奴才如何相处? < CSDN | OSCHINA >
(CPU篇) | 内核是如何描述CPU的 ?< CSDN | OSCHINA >
(并发并行篇) | 内核如何管理多个CPU?< CSDN | OSCHINA >
(调度机制篇) | 任务是如何被调度执行的?< CSDN | OSCHINA >
(调度队列篇) | 就绪队列对调度的作用< CSDN | OSCHINA >
(任务管理篇) | 任务是内核调度的单元< CSDN | OSCHINA >
(时钟任务篇) | 调度最大的动力来自哪里?< CSDN | OSCHINA >
(进程管理篇) | 进程是内核资源管理单元< CSDN | OSCHINA >
(线程概念篇) | 是谁在不断的折腾CPU?< CSDN | OSCHINA >
(进程概念篇) | 进程都管理了哪些资源?< CSDN | OSCHINA >
(消息队列篇) | 进程间如何异步解耦传递大数据 ? < CSDN | OSCHINA >
(事件控制篇) | 任务间一对多和多对多的同步方案 < CSDN | OSCHINA >
(信号量篇) | 信号量解决任务同步问题 < CSDN | OSCHINA >
(进程通讯篇) | 九大通讯方式一网打尽 < CSDN | OSCHINA >
(互斥锁篇) | 互斥锁比自旋锁丰满许多 < CSDN | OSCHINA >
(自旋锁篇) | 汇编到令人心碎的自旋锁 < CSDN | OSCHINA >
(物理内存篇) | 伙伴算法是在卖标准猪肉块吗?< CSDN | OSCHINA >
(内存规则篇) | 内存管理到底在管什么?< CSDN | OSCHINA >
(内存映射篇) | 什么是内存最重要的实现基础 ?< CSDN | OSCHINA >
(内存汇编篇) | 什么是虚拟内存的实现基础?< CSDN | OSCHINA >
(内存分配篇) | 内存有哪些分配方式?< CSDN | OSCHINA >
(内存管理篇) | 虚拟内存全景图是怎样的?< CSDN | OSCHINA >
(内存主奴篇) | 紫禁城的主子和奴才如何相处?< CSDN | OSCHINA >
(时间管理篇) | Tick是操作系统的基本时间单位 < CSDN | OSCHINA >
(原子操作篇) | 是哪两条汇编指令在为原子操作保驾护航 ? < CSDN | OSCHINA >
(定时器机制篇) | 内核最高优先级任务是谁???< CSDN | OSCHINA >
(汇编传参篇) | 汇编如何传递复杂的参数?< CSDN | OSCHINA >
(汇编基础篇) | CPU在哪里打卡上班 ?< CSDN | OSCHINA >
(用栈方式篇) | 栈是构建底层运行的基础< CSDN | OSCHINA >
(位图管理篇) | 为何进程和线程都是32个优先级?< CSDN | OSCHINA >
(源码结构篇) | 内核500问你能答对多少?< CSDN | OSCHINA >
(源码注释篇) | 精读内核源码 深挖地基工程< CSDN | OSCHINA >
(双向链表篇) | 谁是内核最重要结构体?< CSDN | OSCHINA >
感谢 OSCHINA
,CSDN
,华为开发者论坛
, 51CTO
, 电子发烧友
,以及其他小伙伴通过自己的公众号对系列文章的转载和推荐,无以为报,唯有不断的深挖内核地基,输出更多文章,错漏之处请多见谅,会持续完善源码注解和文档内容,精雕细琢,尽全力打磨精品内容。文章输出站点:
CSDN | 开源中国 | 51CTO | 头条号 | WeHarmony | 公众号
搜索 @note_pic
可查看绘制的全部字符图
搜索 @note_why
是尚未看明白的地方,有看明白的,请Pull Request完善
搜索 @note_thinking
是一些的思考和建议
搜索 @note_#if0
是由第三方项目提供不在内核源码中定义的极为重要结构体,为方便理解而添加的。
搜索 @note_good
是给源码点赞的地方
Fork 本仓库 >> 新建 Feat_xxx 分支 >> 提交代码注解 >> 新建 Pull Request
各大站点搜 "鸿蒙内核源码分析" ,快速找到组织.
百万汉字注解 >> 精读内核源码,中文注解分析, 深挖地基工程,大脑永久记忆,四大码仓每日同步更新< Gitee | Github | CSDN | Coding >
百篇博客分析 >> 故事说内核,问答式导读,生活式比喻,表格化说明,图形化展示,多站点每日同步更新< OSCHINA | CSDN | WeHarmony >
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。