本篇关键词:、、、
下载 >> 离线文档.鸿蒙内核源码分析(百篇博客分析.挖透鸿蒙内核).pdf
基础知识相关篇为:
- v01.12 鸿蒙内核源码分析(双向链表) | 谁是内核最重要结构体
- v02.01 鸿蒙内核源码分析(内核概念) | 名不正则言不顺
- v03.02 鸿蒙内核源码分析(源码结构) | 宏观尺度看内核结构
- v04.01 鸿蒙内核源码分析(地址空间) | 内核如何看待空间
- v05.03 鸿蒙内核源码分析(计时单位) | 内核如何看待时间
- v06.01 鸿蒙内核源码分析(宏的使用) | 为什么被翻译成了宏
- v07.01 鸿蒙内核源码分析(钩子框架) | 万物皆可HOOK
- v08.04 鸿蒙内核源码分析(位图管理) | 一分钱被掰成八半使用
- v09.01 鸿蒙内核源码分析(POSIX) | 操作系统界的话事人
- v10.01 鸿蒙内核源码分析(main函数) | 要走了无数码农的第一次
鸿蒙内核源码注解分析
点击文件查看源码
-
kernel_liteos_a_note
-
kernel
- base
- core -> -> 这个core指的是与CPU core相关的文件
- los_bitmap.c -> -> 位图管理器有什么作用 ? 在内核常应用于哪些场景 ?
- los_process.c -> 鸿蒙内核源码分析(进程管理篇) -> 进程是内核的资源管理单元,它是如何管理 任务, 内存,文件的 ? 进程间是如何协作的 ?
- los_sortlink.c -> -> 排序链表的实现,它的应用场景是怎样的 ?
- los_swtmr.c -> -> 内核的定时器是如何实现和管理的 ?
- los_sys.c -> -> 几个跟tick相关的转化函数
- los_task.c -> 鸿蒙内核源码分析(Task管理篇) -> Task是内核调度的单元,它解决了什么问题 ? 如何调度 ?
- los_tick.c -> 鸿蒙内核源码分析(时钟管理篇) -> 是谁在一直触发调度 ? 硬时钟中断都干了些什么事?
- los_timeslice.c -> -> 进程和任务能一直占有CPU吗 ? 怎么合理的分配时间 ?
- ipc -> -> 进程间通讯有哪些方式 ? 请说出三种 ? 是如何实现的 ?
- los_event.c -> -> 事件解决了什么问题 ? 怎么管理的 ?
- los_futex.c -> -> futex 是Fast Userspace muTexes的缩写(快速用户空间互斥体),它有什么作用 ?
- los_ipcdebug.c -> -> 进程间通讯如何调试 ?
- los_mux.c -> -> 互斥量,有你没我的零和博弈, 为什么需要互斥量 ? 是如何实现的 ?
- los_queue.c -> -> 内核消息队列是如何实现的 ? 对长度和大小有限制吗 ?
- los_queue_debug.c -> -> 如何调试消息队列 ?
- los_sem.c -> -> 信号量解决了什么问题 ? 它的本质是什么 ?
- los_sem_debug.c -> -> 如何调试信号量 ?
- los_signal.c -> -> 信号解决了什么问题? 你知道哪些信号 ?
-
mem -> -> 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一
-
bestfit -> -> 动态内存管理的优点是按需分配,那缺点又是什么?
- los_memory.c -> -> 鸿蒙内核中动态内存池由哪三个部分组成 ?
- los_multipledlinkhead.c -> -> 什么是最佳适应算法? 是如何实现 ?
-
bestfit_little -> -> bestfit_little算法是在最佳适配算法的基础上加入slab机制形成的算法。
- los_heap.c -> -> slab算法机制是怎样的? 又是如何实现的 ?
- common -> ->
-
membox -> -> 静态内存池的优点是分配和释放效率高,无碎片, 那缺点呢 ?
- los_membox.c -> -> 静态内存有什么用? 是如何实现的?
-
bestfit -> -> 动态内存管理的优点是按需分配,那缺点又是什么?
- misc -> ->
-
kill_shellcmd.c -> -> shell命令kill的实现,熟悉的 kill 9 18 的背后发生了什么?
- los_misc.c -> ->
- los_stackinfo.c -> -> 栈有哪些信息 ? 如何检测栈是否异常 ?
- mempt_shellcmd.c -> -> 和内存相关的shell命令有哪些 ?
- swtmr_shellcmd.c -> -> 和软时钟相关的shell命令有哪些 ?
- sysinfo_shellcmd.c -> -> 和系统信息相关的shell命令有哪些 ?
- task_shellcmd.c -> -> 和任务相关的shell命令有哪些 ?
- vm_shellcmd.c -> -> 和虚拟内存相关的shell命令有哪些 ?
-
mp -> -> MP指支持多处理器的模块
- los_lockdep.c -> -> 死锁是怎么发生的 ? 如何检测死锁 ?
- los_mp.c -> -> 鸿蒙最大支持多少个CPU ? 它们是如何工作的? CPU之间是如何通讯的 ?
- los_percpu.c -> -> CPU有哪些信息 ?
- los_stat.c -> -> CPU的运行信息如何统计 ?
-
om -> ->
- los_err.c -> ->
-
sched/sched_sq -> ->
- los_priqueue.c -> 鸿蒙内核源码分析(调度队列篇) -> 为什么只有就绪状态才会有队列 ?
- los_sched.c -> 鸿蒙内核源码分析(调度机制篇) -> 哪些情况下会触发调度 ? 调度算法是怎样的 ?
-
vm -> 鸿蒙内核源码分析(内存规则篇) -> 什么是虚拟内存 ? 虚拟内存全景图是怎样的 ?
- los_vm_boot.c -> -> 开机阶段内存是如何初始化的 ?
- los_vm_dump.c -> -> 如何 dump 内存数据 ?
- los_vm_fault.c -> -> 为什么会缺页 ? 缺页怎么处理 ?
- los_vm_filemap.c -> -> 文件和内存是如何映射? 什么是 写时拷贝技术(cow) ?
- los_vm_iomap.c -> -> 设备和内存是如何映射 ?
- los_vm_map.c -> 鸿蒙内核源码分析(内存映射篇) -> 内核空间,用户空间,线性区是如何分配的,虚拟内存<-->物理内存是如何映射的 ?
- los_vm_page.c -> -> 什么是物理页框,哪些地方会用到它 ?
- los_vm_phys.c -> 鸿蒙内核源码分析(物理内存篇) -> 段页式管理,物理内存是如何分配和回收的 ?
- los_vm_scan.c -> -> LRU算法是如何运作的 ?
- los_vm_syscall.c -> -> 系统调用之内存, 用户进程如何申请内存 ? 底层发生了什么 ?
- oom.c -> -> 内存溢出是如何检测的 ?
- shm.c -> -> 共享内存是如何实现的 ?
-
common -> ->
- console.c -> -> 熟悉的控制台是如何实现的 ?
- hwi_shell.c -> -> 如何查询硬件中断 ?
- los_cir_buf.c -> -> 环形缓冲区的读写是如何实现的 ? 常用于什么场景下 ?
- los_config.c -> -> 内核有哪些配置信息 ?
- los_exc_interaction.c -> -> 任务出现异常如何检测 ?
- los_excinfo.c -> -> 异常有哪些信息 ? 如何记录异常信息 ?
- los_hilog.c -> -> 内核是如何封装日志的 ?
- los_magickey.c -> -> 魔法键有什么作用 ?
- los_printf.c -> -> 内核对 printf 做了哪些封装 ?
- los_rootfs.c -> -> 什么是根文件系统 ? 为什么需要它 ?
- los_seq_buf.c -> ->
- virtual_serial.c -> -> 如何实现访问串口如同访问文件一样方便 ?
-
extended -> ->
-
cppsupport -> ->
- los_cppsupport.c -> -> 对C++是如何支持的 ?
-
cpup -> ->
- cpup_shellcmd.c -> -> 如何实时查询系统CPU的占用率 ?
- los_cpup.c -> -> 内核如何做到实时统计CPU性能的 ?
-
dynload/src ->
- los_exec_elf.c -> -> 鸿蒙如何运行ELF ? 什么是腾笼换鸟技术 ?
- los_load_elf.c -> -> 鸿蒙如何动态加载 ELF ?
-
liteipc -> ->
- hm_liteipc.c -> -> 如何用文件的方式读取消息队列 ? liteipc和普通消息队列区别有哪些 ?
-
tickless -> ->
- los_tickless.c -> -> 新定时机制新在哪里 ? 它解决了哪些问题 ?
-
trace -> ->
- los_trace.c -> -> 如何实现跟踪 ? 内核在跟踪什么 ?
-
vdso -> -> 用户空间访问内核空间有哪些途径 ?
-
src -> ->
- los_vdso.c -> -> VDSO(Virtual Dynamically-linked Shared Object) 是如何实现的 ?
- los_vdso_text.S -> ->
-
usr -> ->
- los_vdso_sys.c -> ->
-
src -> ->
-
cppsupport -> ->
- user/src -> ->
- los_user_init.c -> ->
-
kernel
百文说内核 | 抓住主脉络
- 百文相当于摸出内核的肌肉和器官系统,让人开始丰满有立体感,因是直接从注释源码起步,在加注释过程中,每每有心得处就整理,慢慢形成了以下文章。内容立足源码,常以生活场景打比方尽可能多的将内核知识点置入某种场景,具有画面感,容易理解记忆。说别人能听得懂的话很重要! 百篇博客绝不是百度教条式的在说一堆诘屈聱牙的概念,那没什么意思。更希望让内核变得栩栩如生,倍感亲切。
- 与代码需不断
debug
一样,文章内容会存在不少错漏之处,请多包涵,但会反复修正,持续更新,v**.xx
代表文章序号和修改的次数,精雕细琢,言简意赅,力求打造精品内容。 - 百文在 < 鸿蒙研究站 | 开源中国 | 博客园 | 51cto | csdn | 知乎 | 掘金 > 站点发布,鸿蒙研究站 | weharmonyos 中回复 百文 可方便阅读。
按功能模块:
- 基础知识 >> 双向链表 | 内核概念 | 源码结构 | 地址空间 | 计时单位 | 宏的使用 | 钩子框架 | 位图管理 | POSIX | main函数 |
- 进程管理 >> 调度故事 | 进程控制块 | 进程空间 | 线性区 | 红黑树 | 进程管理 | Fork进程 | 进程回收 | Shell编辑 | Shell解析 |
- 任务管理 >> 任务控制块 | 并发并行 | 就绪队列 | 调度机制 | 任务管理 | 用栈方式 | 软件定时器 | 控制台 | 远程登录 | 协议栈 |
- 内存管理 >> 内存规则 | 物理内存 | 虚拟内存 | 虚实映射 | 页表管理 | 静态分配 | TLFS算法 | 内存池管理 | 原子操作 | 圆整对齐 |
- 通讯机制 >> 通讯总览 | 自旋锁 | 互斥锁 | 快锁使用 | 快锁实现 | 读写锁 | 信号量 | 事件机制 | 信号生产 | 信号消费 | 消息队列 | 消息封装 | 消息映射 | 共享内存 |
- 文件系统 >> 文件概念 | 文件故事 | 索引节点 | VFS | 文件句柄 | 根文件系统 | 挂载机制 | 管道文件 | 文件映射 | 写时拷贝 |
- 硬件架构 >> 芯片模式 | ARM架构 | 指令集 | 协处理器 | 工作模式 | 寄存器 | 多核管理 | 中断概念 | 中断管理 |
- 内核汇编 >> 编码方式 | 汇编基础 | 汇编传参 | 可变参数 | 开机启动 | 进程切换 | 任务切换 | 中断切换 | 异常接管 | 缺页中断 |
- 编译运行 >> 编译过程 | 编译构建 | GN语法 | 忍者无敌 | ELF格式 | ELF解析 | 静态链接 | 重定位 | 动态链接 | 进程映像 | 应用启动 | 系统调用 | VDSO |
- 调测工具 >> 模块监控 | 日志跟踪 | 系统安全 | 测试用例 |
- 前因后果 >> 总目录 | 源码注释 | 静态站点 | 参考手册 |
百万注源码 | 处处扣细节
-
百万汉字注解内核目的是要看清楚其毛细血管,细胞结构,等于在拿放大镜看内核。内核并不神秘,带着问题去源码中找答案是很容易上瘾的,你会发现很多文章对一些问题的解读是错误的,或者说不深刻难以自圆其说,你会慢慢形成自己新的解读,而新的解读又会碰到新的问题,如此层层递进,滚滚向前,拿着放大镜根本不愿意放手。
-
< gitee | github | coding | gitcode > 四大码仓推送 | 同步官方源码,鸿蒙研究站 | weharmonyos 中回复 百万 可方便阅读。
关注不迷路 | 代码即人生
据说喜欢点赞分享的,后来都成了大神。:)