补充链接脚本的注解

    百图画鸿蒙 + 百文说内核 + 百万注源码  => 挖透鸿蒙内核源码
    鸿蒙研究站 | http://weharmonyos.com (国内)
              | https://weharmony.github.io (国外)
    oschina | https://my.oschina.net/weharmony
    博客园 | https://www.cnblogs.com/weharmony/
    知乎 | https://www.zhihu.com/people/weharmonyos
    csdn | https://blog.csdn.net/kuangyufei
    51cto | https://harmonyos.51cto.com/column/34
    掘金 | https://juejin.cn/user/756888642000808
    公众号 | 鸿蒙研究站 (weharmonyos)
上级 22a4bdde
......@@ -20,7 +20,7 @@
* 具体微观代码级:这一级是具体到每一行代码的实现,到了用代码指令级的地步,这段代码是什么意思?为什么要这么设计?有没有更好的方案?[鸿蒙内核源码注解分析](https://gitee.com/weharmony/kernel_liteos_a_note) 试图从细微处去解释代码实现层,英文真的是天生适合设计成编程语言的人类语言,计算机的01码映射到人类世界的26个字母,诞生了太多的伟大奇迹。但我们的母语注定了很大部分人存在着自然语言层级的理解映射,希望内核注解分析能让更多爱好者节约时间成本,哪怕节约一分钟也是这件事莫大的意义。
### 四个维度解剖内核
为了全方位剖析内核,在`画图``写文``注源``成册` 四个方向做了努力,试图以`讲故事``画图表``写文档``拆源码`立体的方式表述内核。很喜欢易中天老师的一句话:研究方式不等于表述方式。底层技术并不枯燥,它可以很有意思,它就是我们生活中的场景。
为了全方位剖析内核,在 **画图****写文****注源****成册** 四个方向做了努力,试图以**讲故事****画图表****写文档****拆源码** 立体的方式表述内核。很喜欢易中天老师的一句话:研究方式不等于表述方式。底层技术并不枯燥,它可以很有意思,它可以是我们生活中的场景。
#### 一: 百图画鸿蒙 | 一图一主干 | 骨骼系统
* 如果把鸿蒙比作人,百图目的是要画出其骨骼系统。
......@@ -38,130 +38,130 @@
**基础知识**
* [v01.12 鸿蒙内核源码分析(双向链表) | 谁是内核最重要结构体](http://weharmonyos.com/blog/01.html)
* [v02.01 鸿蒙内核源码分析(内核概念) | 名不正则言不顺](http://weharmonyos.com/blog/02.html)
* [v03.02 鸿蒙内核源码分析(源码结构) | 宏观尺度看内核结构](http://weharmonyos.com/blog/03.html)
* [v04.01 鸿蒙内核源码分析(地址空间) | 内核如何看待空间](http://weharmonyos.com/blog/04.html)
* [v05.03 鸿蒙内核源码分析(计时单位) | 内核如何看待时间](http://weharmonyos.com/blog/05.html)
* [v06.01 鸿蒙内核源码分析(宏的使用) | 为什么被翻译成了宏 ](http://weharmonyos.com/blog/06.html)
* [v07.01 鸿蒙内核源码分析(钩子框架) | 万物皆可HOOK ](http://weharmonyos.com/blog/07.html)
* [v08.04 鸿蒙内核源码分析(位图管理) | 一分钱被掰成八半使用](http://weharmonyos.com/blog/08.html)
* [v09.01 鸿蒙内核源码分析(POSIX) | 操作系统界的话事人 ](http://weharmonyos.com/blog/09.html)
* [v10.01 鸿蒙内核源码分析(main函数) | 要走了无数码农的第一次 ](http://weharmonyos.com/blog/10.html)
* [v01.12 鸿蒙内核源码分析(双向链表) | 谁是内核最重要结构体](https://my.oschina.net/weharmony/blog/4572304)
* [v02.01 鸿蒙内核源码分析(内核概念) | 名不正则言不顺](https://my.oschina.net/weharmony/blog/4626852)
* [v03.02 鸿蒙内核源码分析(源码结构) | 宏观尺度看内核结构](https://my.oschina.net/weharmony/blog/4869137)
* [v04.01 鸿蒙内核源码分析(地址空间) | 内核如何看待空间](https://my.oschina.net/weharmony/blog/4626852)
* [v05.03 鸿蒙内核源码分析(计时单位) | 内核如何看待时间](https://my.oschina.net/weharmony/blog/4956163)
* [v06.01 鸿蒙内核源码分析(优雅的宏) | 编译器也喜欢复制粘贴 ](https://my.oschina.net/weharmony/blog/4626852)
* [v07.01 鸿蒙内核源码分析(钩子框架) | 万物皆可HOOK ](https://my.oschina.net/weharmony/blog/4626852)
* [v08.04 鸿蒙内核源码分析(位图管理) | 一分钱被掰成八半使用](https://my.oschina.net/weharmony/blog/4888467)
* [v09.01 鸿蒙内核源码分析(POSIX) | 操作系统界的话事人 ](https://my.oschina.net/weharmony/blog/4626852)
* [v10.01 鸿蒙内核源码分析(main函数) | 要走了无数码农的第一次 ](https://my.oschina.net/weharmony/blog/4626852)
**进程管理**
* [v11.04 鸿蒙内核源码分析(调度故事) | 大郎,该喝药了](http://weharmonyos.com/blog/11.html)
* [v12.03 鸿蒙内核源码分析(进程控制块) | 可怜天下父母心](http://weharmonyos.com/blog/12.html)
* [v13.01 鸿蒙内核源码分析(进程空间) | 有爱的地方才叫家 ](http://weharmonyos.com/blog/13.html)
* [v14.01 鸿蒙内核源码分析(线性区) | 人要有空间才能好好相处](http://weharmonyos.com/blog/14.html)
* [v15.01 鸿蒙内核源码分析(红黑树) | 众里寻他千百度 ](http://weharmonyos.com/blog/15.html)
* [v16.06 鸿蒙内核源码分析(进程管理) | 家家有本难念的经](http://weharmonyos.com/blog/16.html)
* [v17.05 鸿蒙内核源码分析(Fork进程) | 一次调用 两次返回](http://weharmonyos.com/blog/17.html)
* [v18.02 鸿蒙内核源码分析(进程回收) | 临终托孤的短命娃](http://weharmonyos.com/blog/18.html)
* [v19.03 鸿蒙内核源码分析(Shell编辑) | 两个任务 三个阶段](http://weharmonyos.com/blog/19.html)
* [v20.01 鸿蒙内核源码分析(Shell解析) | 应用窥伺内核的窗口](http://weharmonyos.com/blog/20.html)
* [v11.04 鸿蒙内核源码分析(调度故事) | 大郎,该喝药了](https://my.oschina.net/weharmony/blog/4634668)
* [v12.03 鸿蒙内核源码分析(进程控制块) | 可怜天下父母心](https://my.oschina.net/weharmony/blog/4937521)
* [v13.01 鸿蒙内核源码分析(进程空间) | 有爱的地方才叫家 ](https://my.oschina.net/weharmony/blog/4626852)
* [v14.01 鸿蒙内核源码分析(线性区) | 人要有空间才能好好相处](https://my.oschina.net/weharmony/blog/4626852)
* [v15.01 鸿蒙内核源码分析(红黑树) | 众里寻他千百度 ](https://my.oschina.net/weharmony/blog/4626852)
* [v16.06 鸿蒙内核源码分析(进程管理) | 家家有本难念的经](https://my.oschina.net/weharmony/blog/4574429)
* [v17.05 鸿蒙内核源码分析(Fork进程) | 一次调用 两次返回](https://my.oschina.net/weharmony/blog/5010301)
* [v18.02 鸿蒙内核源码分析(进程回收) | 临终托孤的短命娃](https://my.oschina.net/weharmony/blog/5017716)
* [v19.03 鸿蒙内核源码分析(Shell编辑) | 两个任务 三个阶段](https://my.oschina.net/weharmony/blog/5269307)
* [v20.01 鸿蒙内核源码分析(Shell解析) | 应用窥伺内核的窗口](https://my.oschina.net/weharmony/blog/5282207)
**任务管理**
* [v21.07 鸿蒙内核源码分析(任务控制块) | 内核最重要的概念](http://weharmonyos.com/blog/21.html)
* [v22.05 鸿蒙内核源码分析(并发并行) | 如何搞清楚它俩区分](http://weharmonyos.com/blog/22.html)
* [v23.03 鸿蒙内核源码分析(就绪队列) | 美好的事物永远值得等待](http://weharmonyos.com/blog/23.html)
* [v24.08 鸿蒙内核源码分析(调度机制) | 公平是相对的](http://weharmonyos.com/blog/24.html)
* [v25.05 鸿蒙内核源码分析(任务管理) | 如何管理任务池](http://weharmonyos.com/blog/25.html)
* [v26.03 鸿蒙内核源码分析(用栈方式) | 谁来提供程序运行场地](http://weharmonyos.com/blog/26.html)
* [v27.02 鸿蒙内核源码分析(软件定时器) | 内核最高级任务竟是它](http://weharmonyos.com/blog/27.html)
* [v28.01 鸿蒙内核源码分析(控制台) | 一个让很多人模糊的概念](http://weharmonyos.com/blog/28.html)
* [v29.01 鸿蒙内核源码分析(远程登录) | 内核如何接待远方的客人](http://weharmonyos.com/blog/29.html)
* [v30.01 鸿蒙内核源码分析(协议栈) | 正在制作中 ... ](http://weharmonyos.com/blog/30.html)
* [v21.07 鸿蒙内核源码分析(任务控制块) | 内核最重要的概念](https://my.oschina.net/weharmony/blog/4915543)
* [v22.05 鸿蒙内核源码分析(并发并行) | 如何搞清楚它俩区分](https://my.oschina.net/weharmony/blog/4940329)
* [v23.03 鸿蒙内核源码分析(就绪队列) | 美好的事物永远值得等待](https://my.oschina.net/weharmony/blog/4606916)
* [v24.08 鸿蒙内核源码分析(调度机制) | 公平是相对的](https://my.oschina.net/weharmony/blog/4623040)
* [v25.05 鸿蒙内核源码分析(任务管理) | 如何管理任务池](https://my.oschina.net/weharmony/blog/4603919)
* [v26.03 鸿蒙内核源码分析(用栈方式) | 谁来提供程序运行场地](https://my.oschina.net/weharmony/blog/4893388)
* [v27.02 鸿蒙内核源码分析(软件定时器) | 内核最高级任务竟是它](https://my.oschina.net/weharmony/blog/4951625)
* [v28.01 鸿蒙内核源码分析(控制台) | 一个让很多人模糊的概念](https://my.oschina.net/weharmony/blog/5356308)
* [v29.01 鸿蒙内核源码分析(远程登录) | 内核如何接待远方的客人](https://my.oschina.net/weharmony/blog/5375838)
* [v30.01 鸿蒙内核源码分析(协议栈) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
**内存管理**
* [v31.02 鸿蒙内核源码分析(内存规则) | 内存管理到底在管什么](http://weharmonyos.com/blog/31.html)
* [v32.04 鸿蒙内核源码分析(物理内存) | 真实的可不一定精彩](http://weharmonyos.com/blog/32.html)
* [v33.04 鸿蒙内核源码分析(虚拟内存) | 虚拟的也是真实的](http://weharmonyos.com/blog/33.html)
* [v34.03 鸿蒙内核源码分析(虚实映射) | 映射是伟大的发明](http://weharmonyos.com/blog/34.html)
* [v35.02 鸿蒙内核源码分析(页表管理) | 映射关系保存在哪](http://weharmonyos.com/blog/35.html)
* [v36.03 鸿蒙内核源码分析(静态分配) | 很简单的一位小朋友](http://weharmonyos.com/blog/36.html)
* [v37.01 鸿蒙内核源码分析(TLFS算法) | 用图解读TLFS原理 ](http://weharmonyos.com/blog/37.html)
* [v38.01 鸿蒙内核源码分析(内存池管理) | 如何高效切割合并内存块 ](http://weharmonyos.com/blog/38.html)
* [v39.04 鸿蒙内核源码分析(原子操作) | 谁在守护指令执行的完整性](http://weharmonyos.com/blog/39.html)
* [v40.01 鸿蒙内核源码分析(圆整对齐) | 正在制作中 ... ](http://weharmonyos.com/blog/40.html)
* [v31.02 鸿蒙内核源码分析(内存规则) | 内存管理到底在管什么](https://my.oschina.net/weharmony/blog/4698384)
* [v32.04 鸿蒙内核源码分析(物理内存) | 真实的可不一定精彩](https://my.oschina.net/weharmony/blog/4842408)
* [v33.04 鸿蒙内核源码分析(内存概念) | RAM & ROM & Flash](https://my.oschina.net/weharmony/blog/4652284)
* [v34.03 鸿蒙内核源码分析(虚实映射) | 映射是伟大的发明](https://my.oschina.net/weharmony/blog/4694841)
* [v35.02 鸿蒙内核源码分析(页表管理) | 映射关系保存在哪](https://my.oschina.net/weharmony/blog/4692156)
* [v36.03 鸿蒙内核源码分析(静态分配) | 很简单的一位小朋友](https://my.oschina.net/weharmony/blog/4646802)
* [v37.01 鸿蒙内核源码分析(TLFS算法) | 图表解读TLFS原理 ](https://my.oschina.net/weharmony/blog/5522610)
* [v38.01 鸿蒙内核源码分析(内存池管理) | 如何高效切割合并内存块 ](https://my.oschina.net/weharmony/blog/5524095)
* [v39.04 鸿蒙内核源码分析(原子操作) | 谁在守护指令执行的完整性](https://my.oschina.net/weharmony/blog/4955290)
* [v40.01 鸿蒙内核源码分析(圆整对齐) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
**通讯机制**
* [v41.04 鸿蒙内核源码分析(通讯总览) | 内核跟人一样都喜欢八卦](http://weharmonyos.com/blog/41.html)
* [v42.08 鸿蒙内核源码分析(自旋锁) | 死等丈夫归来的贞洁烈女](http://weharmonyos.com/blog/42.html)
* [v43.05 鸿蒙内核源码分析(互斥锁) | 有你没她 相安无事](http://weharmonyos.com/blog/43.html)
* [v44.02 鸿蒙内核源码分析(快锁使用) | 用户态负责快锁逻辑](http://weharmonyos.com/blog/44.html)
* [v45.02 鸿蒙内核源码分析(快锁实现) | 内核态负责快锁调度](http://weharmonyos.com/blog/45.html)
* [v46.01 鸿蒙内核源码分析(读写锁) | 内核如何实现多读单写](http://weharmonyos.com/blog/46.html)
* [v47.05 鸿蒙内核源码分析(信号量) | 谁在解决任务间的同步](http://weharmonyos.com/blog/47.html)
* [v48.07 鸿蒙内核源码分析(事件机制) | 多对多任务如何同步](http://weharmonyos.com/blog/48.html)
* [v49.05 鸿蒙内核源码分析(信号生产) | 年过半百 活力十足](http://weharmonyos.com/blog/49.html)
* [v50.03 鸿蒙内核源码分析(信号消费) | 谁让CPU连续四次换栈运行](http://weharmonyos.com/blog/50.html)
* [v51.03 鸿蒙内核源码分析(消息队列) | 进程间如何异步传递大数据](http://weharmonyos.com/blog/51.html)
* [v52.02 鸿蒙内核源码分析(消息封装) | 剖析LiteIpc(上)进程通讯内容](http://weharmonyos.com/blog/52.html)
* [v53.01 鸿蒙内核源码分析(消息映射) | 剖析LiteIpc(下)进程通讯机制](http://weharmonyos.com/blog/53.html)
* [v54.01 鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式](http://weharmonyos.com/blog/54.html)
* [v41.04 鸿蒙内核源码分析(通讯总览) | 内核跟人一样都喜欢八卦](https://my.oschina.net/weharmony/blog/4947398)
* [v42.08 鸿蒙内核源码分析(自旋锁) | 死等丈夫归来的贞洁烈女](https://my.oschina.net/weharmony/blog/4944129)
* [v43.05 鸿蒙内核源码分析(互斥锁) | 有你没她 相安无事](https://my.oschina.net/weharmony/blog/4945465)
* [v44.02 鸿蒙内核源码分析(快锁使用) | 用户态负责快锁逻辑](https://my.oschina.net/weharmony/blog/5446656)
* [v45.02 鸿蒙内核源码分析(快锁实现) | 内核态负责快锁调度](https://my.oschina.net/weharmony/blog/5452186)
* [v46.01 鸿蒙内核源码分析(读写锁) | 内核如何实现多读单写](https://my.oschina.net/weharmony/blog/5460434)
* [v47.05 鸿蒙内核源码分析(信号量) | 谁在解决任务间的同步](https://my.oschina.net/weharmony/blog/4949720)
* [v48.07 鸿蒙内核源码分析(事件机制) | 多对多任务如何同步](https://my.oschina.net/weharmony/blog/4950956)
* [v49.05 鸿蒙内核源码分析(信号生产) | 年过半百 活力十足](https://my.oschina.net/weharmony/blog/5022149)
* [v50.03 鸿蒙内核源码分析(信号消费) | 谁让CPU连续四次换栈运行](https://my.oschina.net/weharmony/blog/5027224)
* [v51.03 鸿蒙内核源码分析(消息队列) | 进程间如何异步传递大数据](https://my.oschina.net/weharmony/blog/4952961)
* [v52.02 鸿蒙内核源码分析(消息封装) | 剖析LiteIpc(上)进程通讯内容](https://my.oschina.net/weharmony/blog/5421867)
* [v53.01 鸿蒙内核源码分析(消息映射) | 剖析LiteIpc(下)进程通讯机制](https://my.oschina.net/weharmony/blog/5436744)
* [v54.01 鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式](https://my.oschina.net/weharmony/blog/5412148)
**文件系统**
* [v55.02 鸿蒙内核源码分析(文件概念) | 为什么说一切皆是文件](http://weharmonyos.com/blog/55.html)
* [v56.04 鸿蒙内核源码分析(文件故事) | 用图书管理说文件系统](http://weharmonyos.com/blog/56.html)
* [v57.06 鸿蒙内核源码分析(索引节点) | 谁是文件系统最重要的概念](http://weharmonyos.com/blog/57.html)
* [v58.02 鸿蒙内核源码分析(VFS) | 文件系统的话事人](http://weharmonyos.com/blog/58.html)
* [v59.04 鸿蒙内核源码分析(文件句柄) | 你为什么叫句柄](http://weharmonyos.com/blog/59.html)
* [v60.07 鸿蒙内核源码分析(根文件系统) | 谁先挂到`/`谁就是老大](http://weharmonyos.com/blog/60.html)
* [v61.05 鸿蒙内核源码分析(挂载机制) | 谁根逐流不掉队](http://weharmonyos.com/blog/61.html)
* [v62.05 鸿蒙内核源码分析(管道文件) | 如何降低数据流动成本](http://weharmonyos.com/blog/62.html)
* [v63.03 鸿蒙内核源码分析(文件映射) | 正在制作中 ... ](http://weharmonyos.com/blog/63.html)
* [v64.01 鸿蒙内核源码分析(写时拷贝) | 正在制作中 ... ](http://weharmonyos.com/blog/64.html)
* [v55.02 鸿蒙内核源码分析(文件概念) | 为什么说一切皆是文件](https://my.oschina.net/weharmony/blog/5152858)
* [v56.04 鸿蒙内核源码分析(文件故事) | 用图书管理说文件系统](https://my.oschina.net/weharmony/blog/5165752)
* [v57.06 鸿蒙内核源码分析(索引节点) | 谁是文件系统最重要的概念](https://my.oschina.net/weharmony/blog/5168716)
* [v58.02 鸿蒙内核源码分析(VFS) | 文件系统的话事人](https://my.oschina.net/weharmony/blog/5211662)
* [v59.04 鸿蒙内核源码分析(文件句柄) | 你为什么叫句柄](https://my.oschina.net/weharmony/blog/5253251)
* [v60.07 鸿蒙内核源码分析(根文件系统) | 谁先挂到`/`谁就是老大](https://my.oschina.net/weharmony/blog/5177087)
* [v61.05 鸿蒙内核源码分析(挂载机制) | 谁根逐流不掉队](https://my.oschina.net/weharmony/blog/5172566)
* [v62.05 鸿蒙内核源码分析(管道文件) | 如何降低数据流动成本](https://my.oschina.net/weharmony/blog/5258434)
* [v63.03 鸿蒙内核源码分析(文件映射) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/5200946)
* [v64.01 鸿蒙内核源码分析(写时拷贝) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
**硬件架构**
* [v65.01 鸿蒙内核源码分析(芯片模式) | 回顾芯片行业各位大佬](http://weharmonyos.com/blog/65.html)
* [v66.03 鸿蒙内核源码分析(ARM架构) | ARMv7 & Cortex(A|R|M)](http://weharmonyos.com/blog/66.html)
* [v67.01 鸿蒙内核源码分析(指令集) | CICS PK RICS](http://weharmonyos.com/blog/67.html)
* [v68.01 鸿蒙内核源码分析(协处理器) | CPU的好帮手 ](http://weharmonyos.com/blog/68.html)
* [v69.05 鸿蒙内核源码分析(工作模式) | 角色不同 责任不同](http://weharmonyos.com/blog/69.html)
* [v70.06 鸿蒙内核源码分析(寄存器) | 世界被它们玩出了花](http://weharmonyos.com/blog/70.html)
* [v71.03 鸿蒙内核源码分析(多核管理) | 并发真正的基础](http://weharmonyos.com/blog/71.html)
* [v72.05 鸿蒙内核源码分析(中断概念) | 海公公的日常工作](http://weharmonyos.com/blog/72.html)
* [v73.04 鸿蒙内核源码分析(中断管理) | 没中断太可怕](http://weharmonyos.com/blog/73.html)
* [v65.01 鸿蒙内核源码分析(芯片模式) | 回顾芯片行业各位大佬](https://my.oschina.net/weharmony/blog/4626852)
* [v66.03 鸿蒙内核源码分析(ARM架构) | ARMv7 & Cortex(A|R|M)](https://my.oschina.net/weharmony/blog/4952034)
* [v67.01 鸿蒙内核源码分析(指令集) | CICS PK RICS](https://my.oschina.net/weharmony/blog/4952034)
* [v68.01 鸿蒙内核源码分析(协处理器) | CPU的好帮手 ](https://my.oschina.net/weharmony/blog/5511638)
* [v69.05 鸿蒙内核源码分析(工作模式) | 角色不同 责任不同](https://my.oschina.net/weharmony/blog/4965052)
* [v70.06 鸿蒙内核源码分析(寄存器) | 世界被它们玩出了花](https://my.oschina.net/weharmony/blog/4969487)
* [v71.03 鸿蒙内核源码分析(多核管理) | 并发真正的基础](https://my.oschina.net/weharmony/blog/4952034)
* [v72.05 鸿蒙内核源码分析(中断概念) | 海公公的日常工作](https://my.oschina.net/weharmony/blog/4992750)
* [v73.04 鸿蒙内核源码分析(中断管理) | 没中断太可怕](https://my.oschina.net/weharmony/blog/4995800)
**内核汇编**
* [v74.01 鸿蒙内核源码分析(编码方式) | 机器指令是如何编码的 ](http://weharmonyos.com/blog/74.html)
* [v75.03 鸿蒙内核源码分析(汇编基础) | CPU上班也要打卡](http://weharmonyos.com/blog/75.html)
* [v76.04 鸿蒙内核源码分析(汇编传参) | 如何传递复杂的参数](http://weharmonyos.com/blog/76.html)
* [v77.01 鸿蒙内核源码分析(可变参数) | 正在制作中 ... ](http://weharmonyos.com/blog/77.html)
* [v78.01 鸿蒙内核源码分析(开机启动) | 正在制作中 ... ](http://weharmonyos.com/blog/78.html)
* [v79.01 鸿蒙内核源码分析(进程切换) | 正在制作中 ... ](http://weharmonyos.com/blog/79.html)
* [v80.03 鸿蒙内核源码分析(任务切换) | 看汇编如何切换任务](http://weharmonyos.com/blog/80.html)
* [v81.05 鸿蒙内核源码分析(中断切换) | 系统因中断活力四射](http://weharmonyos.com/blog/81.html)
* [v82.06 鸿蒙内核源码分析(异常接管) | 社会很单纯 复杂的是人](http://weharmonyos.com/blog/82.html)
* [v83.01 鸿蒙内核源码分析(缺页中断) | 正在制作中 ... ](http://weharmonyos.com/blog/83.html)
* [v74.01 鸿蒙内核源码分析(编码方式) | 机器指令是如何编码的 ](https://my.oschina.net/weharmony/blog/5516143)
* [v75.03 鸿蒙内核源码分析(汇编基础) | CPU上班也要打卡](https://my.oschina.net/weharmony/blog/4920361)
* [v76.04 鸿蒙内核源码分析(汇编传参) | 如何传递复杂的参数](https://my.oschina.net/weharmony/blog/4927892)
* [v77.01 鸿蒙内核源码分析(链接脚本) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
* [v78.01 鸿蒙内核源码分析(内核启动) | 从汇编到main()](https://my.oschina.net/weharmony/blog/5531612)
* [v79.01 鸿蒙内核源码分析(进程切换) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
* [v80.03 鸿蒙内核源码分析(任务切换) | 看汇编如何切换任务](https://my.oschina.net/weharmony/blog/4988628)
* [v81.05 鸿蒙内核源码分析(中断切换) | 系统因中断活力四射](https://my.oschina.net/weharmony/blog/4990948)
* [v82.06 鸿蒙内核源码分析(异常接管) | 社会很单纯 复杂的是人](https://my.oschina.net/weharmony/blog/4973016)
* [v83.01 鸿蒙内核源码分析(缺页中断) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
**编译运行**
* [v84.02 鸿蒙内核源码分析(编译过程) | 简单案例说透中间过程](http://weharmonyos.com/blog/84.html)
* [v85.03 鸿蒙内核源码分析(编译构建) | 编译鸿蒙防掉坑指南](http://weharmonyos.com/blog/85.html)
* [v86.04 鸿蒙内核源码分析(GN语法) | 如何构建鸿蒙系统](http://weharmonyos.com/blog/86.html)
* [v87.03 鸿蒙内核源码分析(忍者无敌) | 忍者的特点就是一个字](http://weharmonyos.com/blog/87.html)
* [v88.04 鸿蒙内核源码分析(ELF格式) | 应用程序入口并非main](http://weharmonyos.com/blog/88.html)
* [v89.03 鸿蒙内核源码分析(ELF解析) | 敢忘了她姐俩你就不是银](http://weharmonyos.com/blog/89.html)
* [v90.04 鸿蒙内核源码分析(静态链接) | 一个小项目看中间过程](http://weharmonyos.com/blog/90.html)
* [v91.04 鸿蒙内核源码分析(重定位) | 与国际接轨的对外发言人](http://weharmonyos.com/blog/91.html)
* [v92.01 鸿蒙内核源码分析(动态链接) | 正在制作中 ... ](http://weharmonyos.com/blog/92.html)
* [v93.05 鸿蒙内核源码分析(进程映像) | 程序是如何被加载运行的](http://weharmonyos.com/blog/93.html)
* [v94.01 鸿蒙内核源码分析(应用启动) | 正在制作中 ... ](http://weharmonyos.com/blog/94.html)
* [v95.06 鸿蒙内核源码分析(系统调用) | 开发者永远的口头禅](http://weharmonyos.com/blog/95.html)
* [v96.01 鸿蒙内核源码分析(VDSO) | 正在制作中 ... ](http://weharmonyos.com/blog/96.html)
* [v84.02 鸿蒙内核源码分析(编译过程) | 简单案例说透中间过程](https://my.oschina.net/weharmony/blog/5064209)
* [v85.03 鸿蒙内核源码分析(编译构建) | 编译鸿蒙防掉坑指南](https://my.oschina.net/weharmony/blog/5135157)
* [v86.04 鸿蒙内核源码分析(GN语法) | 如何构建鸿蒙系统](https://my.oschina.net/weharmony/blog/5137565)
* [v87.03 鸿蒙内核源码分析(忍者无敌) | 忍者的特点就是一个字](https://my.oschina.net/weharmony/blog/5139034)
* [v88.04 鸿蒙内核源码分析(ELF格式) | 应用程序入口并非main](https://my.oschina.net/weharmony/blog/5030288)
* [v89.03 鸿蒙内核源码分析(ELF解析) | 敢忘了她姐俩你就不是银](https://my.oschina.net/weharmony/blog/5048746)
* [v90.04 鸿蒙内核源码分析(静态链接) | 一个小项目看中间过程](https://my.oschina.net/weharmony/blog/5049918)
* [v91.04 鸿蒙内核源码分析(重定位) | 与国际接轨的对外发言人](https://my.oschina.net/weharmony/blog/5055124)
* [v92.01 鸿蒙内核源码分析(动态链接) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
* [v93.05 鸿蒙内核源码分析(进程映像) | 程序是如何被加载运行的](https://my.oschina.net/weharmony/blog/5060359)
* [v94.01 鸿蒙内核源码分析(应用启动) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
* [v95.06 鸿蒙内核源码分析(系统调用) | 开发者永远的口头禅](https://my.oschina.net/weharmony/blog/4967613)
* [v96.01 鸿蒙内核源码分析(VDSO) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
**调测工具**
* [v97.01 鸿蒙内核源码分析(模块监控) | 正在制作中 ... ](http://weharmonyos.com/blog/97.html)
* [v98.01 鸿蒙内核源码分析(日志跟踪) | 正在制作中 ... ](http://weharmonyos.com/blog/98.html)
* [v99.01 鸿蒙内核源码分析(系统安全) | 正在制作中 ... ](http://weharmonyos.com/blog/99.html)
* [v100.01 鸿蒙内核源码分析(测试用例) | 正在制作中 ... ](http://weharmonyos.com/blog/100.html)
* [v97.01 鸿蒙内核源码分析(模块监控) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
* [v98.01 鸿蒙内核源码分析(日志跟踪) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
* [v99.01 鸿蒙内核源码分析(系统安全) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
* [v100.01 鸿蒙内核源码分析(测试用例) | 正在制作中 ... ](https://my.oschina.net/weharmony/blog/4626852)
**前因后果**
* [v101.03 鸿蒙内核源码分析(总目录) | 精雕细琢 锤炼精品](http://weharmonyos.com/blog/101.html)
* [v102.05 鸿蒙内核源码分析(源码注释) | 每天死磕一点点](http://weharmonyos.com/blog/102.html)
* [v103.05 鸿蒙内核源码分析(静态站点) | 码农都不爱写注释和文档](http://weharmonyos.com/blog/103.html)
* [v104.01 鸿蒙内核源码分析(参考手册) | 阅读内核源码必备工具](http://weharmonyos.com/blog/104.html)
* [v101.03 鸿蒙内核源码分析(总目录) | 精雕细琢 锤炼精品](https://my.oschina.net/weharmony/blog/4626852)
* [v102.05 鸿蒙内核源码分析(源码注释) | 每天死磕一点点](https://my.oschina.net/weharmony/blog/4686747)
* [v103.05 鸿蒙内核源码分析(静态站点) | 码农都不爱写注释和文档](https://my.oschina.net/weharmony/blog/5042657)
* [v104.01 鸿蒙内核源码分析(参考手册) | 阅读内核源码必备工具](https://my.oschina.net/weharmony/blog/5346868)
#### 三: 百万注内核 | 处处扣细节 | 细胞血管
* 百万汉字注解内核目的是要看清楚其毛细血管,细胞结构,等于在拿放大镜看内核。内核并不神秘,带着问题去源码中找答案是很容易上瘾的,你会发现很多文章对一些问题的解读是错误的,或者说不深刻难以自圆其说,你会慢慢形成自己新的解读,而新的解读又会碰到新的问题,如此层层递进,滚滚向前,拿着放大镜根本不愿意放手。
......@@ -198,6 +198,7 @@
### 四大码仓发布 | 源码同步官方
内核注解同时在 [gitee](https://gitee.com/weharmony/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) | [gitcode](https://gitcode.net/kuangyufei/kernel_liteos_a_note) 发布,并与官方源码按月保持同步,同步历史如下:
* `2022/05/09` -- 标准库(musl , newlib) 目录调整
* `2022/04/16` -- 任务调度模块有很大更新
* `2022/03/23` -- 新增各CPU核自主管理中断, 定时器模块较大调整
* `2022/02/18` -- 官方无代码更新, 只有测试用例的完善
......@@ -282,5 +283,5 @@
![](https://weharmonyos.oss-cn-hangzhou.aliyuncs.com/resources/common/so1so.png)
据说喜欢点赞分享的,后来都成了大神。:)
据说喜欢 **点赞 + 分享** 的,后来都成了大神。:)
......@@ -127,7 +127,7 @@ OsGetArgsAddr:
bx lr
#endif
reset_vector: //鸿蒙开机代码
reset_vector: //内核启动入口
/* clear register TPIDRPRW */
mov r0, #0 //r0 = 0
mcr p15, 0, r0, c13, c0, 4 //复位线程标识符寄存器TPIDRPRW , 不复位将导致系统不能启动
......
......@@ -466,7 +466,7 @@ STATIC INLINE struct Vnode *OsProcessExecVnodeGet(const LosProcessCB *processCB)
extern UINTPTR __user_init_entry; ///< 第一个用户态进程(init)的入口地址 查看 LITE_USER_SEC_ENTRY
extern UINTPTR __user_init_bss; ///< 查看 LITE_USER_SEC_BSS ,赋值由liteos.ld完成
extern UINTPTR __user_init_end; ///< init 进程的用户空间初始化结束地址
extern UINTPTR __user_init_load_addr;///< init进程的加载地址
extern UINTPTR __user_init_load_addr;///< init 进程的加载地址 ,由链接器赋值
extern UINT32 OsSystemProcessCreate(VOID);
extern VOID OsProcessNaturalExit(LosProcessCB *processCB, UINT32 status);
extern VOID OsProcessCBRecycleToFree(VOID);
......
......@@ -92,7 +92,7 @@ SECTIONS
{
/DISCARD/ : { *(.comment .note) } //过滤掉所有输入文件的 .comment .note
.ram_vectors TEXT_BASE : { //内核代码段开始位置
.ram_vectors TEXT_BASE : { //内核中断向量区开始位置,此处用 TEXT_BASE 宏有误导嫌疑, 因为真正的(.text)并不在此 @notethinking
__ram_vectors_vma = .; //定位到当前位置,即TEXT_BASE处
KEEP (*(.vectors)) //告诉链接器 强制保留所有输入文件中的 .vectors
} > ram //中断向量是开机代码的位置 , 可翻看 鸿蒙内核源码分析(开机启动篇) (中断管理篇)
......
......@@ -39,11 +39,11 @@ INCLUDE board.ld // > ram 指放入ram这个地址范围中, ram在board.ld中
SECTIONS
{
//节地址是指该节的VMA地址。如果改地未明确指定,连接器会在考虑严格对齐情况下,首先按照region参数分配内存,其次根据当前位置计数器向下分地址。
_start = .; //特殊符号.指示当前位置计数器 此处刚开始表示为 0
_start = .; //特殊符号 .表示当前位置计数器,即紧挨着中断向量结束的位置
.set_sysinit_set : {
__start_set_sysinit_set = ABSOLUTE(.);
KEEP (*(.set_sysinit_set))//在连接命令行内使用了选项–gc-sections后,连接器可能将某些它认为没用的section过滤掉
__stop_set_sysinit_set = ABSOLUTE(.);//此时就有必要强制连接器保留一些特定的 section,可用KEEP()关键字达此目的。
__start_set_sysinit_set = ABSOLUTE(.); //
KEEP (*(.set_sysinit_set))//所有输入文件中的 .set_sysinit_set 链接到此
__stop_set_sysinit_set = ABSOLUTE(.);//定位结束 .set_sysinit_set 区结束位置
} > ram
.got ALIGN(0x4) : { *(.got.plt) *(.got) } > ram
......@@ -61,7 +61,7 @@ SECTIONS
__text_start = .; //当前位置为 __text_start 开始位置
*(.text* .sram.text.glue_7* .gnu.linkonce.t.*) //*(.text)
} > ram
//重定向代码 Relocation ,包括 代码区和数据区的重定位
.rel.text : { *(.rel.text) *(.rel.text.*) *(.rel.gnu.linkonce.t*) } > ram
.rela.text : { *(.rela.text) *(.rela.text.*) *(.rela.gnu.linkonce.t*) } > ram
.rel.data : { *(.rel.data) *(.rel.data.*) *(.rel.gnu.linkonce.d*) } > ram
......@@ -85,11 +85,11 @@ SECTIONS
.rel.dyn : { *(.rel.dyn) } > ram
.dummy_post_text : {
__text_end = .;
__text_end = .; //代码区结束位置
} > ram
.rodata ALIGN(0x1000) : {
__rodata_start = .;
__rodata_start = .; // 只读数据区开始位置
__kernel_init_level_0 = ABSOLUTE(.);
KEEP(*( SORT (.rodata.init.kernel.0.*)));
__kernel_init_level_1 = ABSOLUTE(.);
......@@ -112,9 +112,9 @@ SECTIONS
KEEP(*( SORT (.rodata.init.kernel.9.*)));
__kernel_init_level_10 = ABSOLUTE(.);
*(.rodata .rodata.* .gnu.linkonce.r.*)
__exc_table_start = .;
__exc_table_start = .; //异常表开始位置
KEEP(*(__exc_table))
__exc_table_end = .;
__exc_table_end = .; //异常表结束位置
} > ram
/*
......@@ -124,31 +124,31 @@ SECTIONS
*/
.dummy_post_rodata : {
_hdf_drivers_start = .;
KEEP(*(.hdf.driver))
KEEP(*(.hdf.driver)) // 统一驱动框架也放在了只读区
_hdf_drivers_end = .;
__rodata_end = .;
__rodata_end = .; //数据只读区结束
} > ram
.data ALIGN(0x1000) : {
/* writable data */
__ram_data_start = .;
__vdso_data_start = LOADADDR(.data);
KEEP(*(.data.vdso.datapage))
. = ALIGN(0x1000);
KEEP(*(.data.vdso.text))
. = ALIGN(0x1000);
__vdso_text_end = .;
__ram_data_start = .; //可写入数据开始位置
__vdso_data_start = LOADADDR(.data); // vdso区 (virtual dynamic shared object)开始位置
KEEP(*(.data.vdso.datapage)) //vdso由数据区+代码区两部分组成, 可翻看 鸿蒙内核源码分析(vdso篇)
. = ALIGN(0x1000);//vdso 的特性是 代码在内核区, 但运行却在用户区
KEEP(*(.data.vdso.text))//vdso 的代码区
. = ALIGN(0x1000);//按4K对齐,因啥要按4K对齐,因为需要页表映射,而一页为4K
__vdso_text_end = .;//vdso区结束位置
*(.data .data.* .gnu.linkonce.d.*)
. = ALIGN(0x4);
KEEP(*( SORT (.liteos.table.*)));
} > ram
.ctors : ALIGN(0x4) {
.ctors : ALIGN(0x4) { //constructor属性 全局构造
__ctor_list__ = .;
KEEP (*(.ctors .init_array))
__ctor_end__ = .;
} > ram
.dtors : ALIGN(0x4) {
.dtors : ALIGN(0x4) { //destructor属性 全局析构
__dtor_list__ = .;
KEEP (*(.dtors .fini_array))
__dtor_end__ = .;
......@@ -159,10 +159,10 @@ SECTIONS
* but not aligned to the next section necessarily.
*/
.dummy_post_data : {
__ram_data_end = .;
__ram_data_end = .; //可写入数据区结束
} > ram
.user_init USER_INIT_VM_START : ALIGN(0x1000) {//开始地址设为 USER_INIT_VM_START
//这里指的是 init 应用程度的位置
.user_init USER_INIT_VM_START : ALIGN(0x1000) {//开始地址设为 USER_INIT_VM_START = 0x1000000;
. = ALIGN(0x4);
__user_init_load_addr = LOADADDR(.user_init);//应用程序的加载地址
__user_init_entry = .;//应用程序的入口地址
......@@ -173,20 +173,20 @@ SECTIONS
__user_init_data = .;//设置数据段开始位置 __user_init_data
KEEP(libuserinit.O (.user.data))
. = ALIGN(0X4);
__user_init_bss = .;//将当前位置给__user_init_bss
__user_init_bss = .;//init 进程的 bss开始位置
KEEP(libuserinit.O (.user.bss))
. = ALIGN(0x1000);
__user_init_end = .;
__user_init_end = .; //init 进程结束位置
} > user_ram AT > ram
__user_init_size = __user_init_end - __user_init_entry;
__user_init_size = __user_init_end - __user_init_entry; //计算init进程占用大小
/* uninitialized data (in same segment as writable data) */
/* uninitialized data (in same segment as writable data) | 未初始化数据 */
.bss : {
. = ALIGN(0x800); //当前位置按 0x800对齐
__int_stack_start = .; //将当前位置给__int_stack_start
__int_stack_start = .; //内核栈开始位置
*(.int_stack);
. = ALIGN(0x4);
. = ALIGN(0x4);//4字节对齐
KEEP(*(.bss.prebss.*))
. = ALIGN(0x8);
__bss_start = .; //将当前位置给__bss_start,将所有的目标*(.bss .bss.*) .. 链接到 .bss中
......@@ -201,8 +201,8 @@ SECTIONS
_end = .;
/* mmu temp page table(sys aviliable mem is start with __bss_end) */
. = ALIGN(0x4000);
__mmu_ttlb_begin = .;
__mmu_ttlb_begin = .;//临时页表开始位置
/* Strip unnecessary stuff */
/DISCARD/ 0 : { *(.comment .note) } > ram
/DISCARD/ 0 : { *(.comment .note) } > ram //过滤不需要的块
}
git add -A
git commit -m ' 完善链接脚本的注解
git commit -m ' 补充链接脚本的注解
百图画鸿蒙 + 百文说内核 + 百万注源码 => 挖透鸿蒙内核源码
鸿蒙研究站 | http://weharmonyos.com (国内)
| https://weharmony.github.io (国外)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册