|
|
本篇关键词:、、、
|
|
|
本篇关键词:**LiteOS-A** 、、、
|
|
|
|
|
|
[![](https://gitee.com/weharmonyos/resources/raw/master/index/03.png)](http://weharmonyos.com/blog/03.html)
|
|
|
[![](https://weharmonyos.oss-cn-hangzhou.aliyuncs.com/resources/index/03.png)](http://weharmonyos.com/blog/03.html)
|
|
|
|
|
|
|
|
|
[下载 >> 离线文档.鸿蒙内核源码分析(百篇博客分析.挖透鸿蒙内核).pdf](http://weharmonyos.com/resources/pdf/鸿蒙内核源码分析(百篇博客分析.挖透鸿蒙内核).zip)
|
|
|
[下载 >> 离线文档.鸿蒙内核源码分析(百篇博客分析.挖透鸿蒙内核).pdf](https://weharmonyos.oss-cn-hangzhou.aliyuncs.com/resources/pdf/鸿蒙内核源码分析(百篇博客分析.挖透鸿蒙内核).zip)
|
|
|
|
|
|
基础知识相关篇为:
|
|
|
|
... | ... | @@ -12,148 +12,102 @@ |
|
|
* [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)
|
|
|
* [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)
|
|
|
|
|
|
|
|
|
### **[鸿蒙内核源码注解分析](https://gitee.com/weharmony/kernel_liteos_a_note)**
|
|
|
|
|
|
**点击文件查看源码**
|
|
|
|
|
|
- [kernel_liteos_a_note](https://gitee.com/weharmony/kernel_liteos_a_note/)
|
|
|
* [kernel](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/)
|
|
|
+ [base](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/)
|
|
|
+ [core](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/) -> []() -> 这个core指的是与CPU core相关的文件
|
|
|
+ [los_bitmap.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/los_bitmap.c) -> []() -> 位图管理器有什么作用 ? 在内核常应用于哪些场景 ?
|
|
|
+ [los_process.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/los_process.c) -> [鸿蒙内核源码分析(进程管理篇)](https://blog.csdn.net/kuangyufei/article/details/108595941) -> 进程是内核的资源管理单元,它是如何管理 任务, 内存,文件的 ? 进程间是如何协作的 ?
|
|
|
+ [los_sortlink.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/los_sortlink.c) -> []() -> 排序链表的实现,它的应用场景是怎样的 ?
|
|
|
+ [los_swtmr.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/los_swtmr.c) -> []() -> 内核的定时器是如何实现和管理的 ?
|
|
|
+ [los_sys.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/los_sys.c) -> []() -> 几个跟tick相关的转化函数
|
|
|
+ [los_task.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/los_task.c) -> [鸿蒙内核源码分析(Task管理篇)](https://blog.csdn.net/kuangyufei/article/details/108661248) -> Task是内核调度的单元,它解决了什么问题 ? 如何调度 ?
|
|
|
+ [los_tick.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/los_tick.c) -> [鸿蒙内核源码分析(时钟管理篇)](https://blog.csdn.net/kuangyufei/article/details/108603468) -> 是谁在一直触发调度 ? 硬时钟中断都干了些什么事?
|
|
|
+ [los_timeslice.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/core/los_timeslice.c) -> []() -> 进程和任务能一直占有CPU吗 ? 怎么合理的分配时间 ?
|
|
|
+ [ipc](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/) -> []() -> 进程间通讯有哪些方式 ? 请说出三种 ? 是如何实现的 ?
|
|
|
+ [los_event.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/los_event.c) -> []() -> 事件解决了什么问题 ? 怎么管理的 ?
|
|
|
+ [los_futex.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/base/los_futex.c) -> []() -> futex 是Fast Userspace muTexes的缩写(快速用户空间互斥体),它有什么作用 ?
|
|
|
+ [los_ipcdebug.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/base/los_ipcdebug.c) -> []() -> 进程间通讯如何调试 ?
|
|
|
+ [los_mux.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/los_mux.c) -> []() -> 互斥量,有你没我的零和博弈, 为什么需要互斥量 ? 是如何实现的 ?
|
|
|
+ [los_queue.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/los_queue.c) -> []() -> 内核消息队列是如何实现的 ? 对长度和大小有限制吗 ?
|
|
|
+ [los_queue_debug.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/los_queue_debug.c) -> []() -> 如何调试消息队列 ?
|
|
|
+ [los_sem.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/los_sem.c) -> []() -> 信号量解决了什么问题 ? 它的本质是什么 ?
|
|
|
+ [los_sem_debug.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/los_sem_debug.c) -> []() -> 如何调试信号量 ?
|
|
|
+ [los_signal.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/ipc/los_signal.c) -> []() -> 信号解决了什么问题? 你知道哪些信号 ?
|
|
|
+ [mem](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/) -> []() -> 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一
|
|
|
+ [bestfit](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/bestfit/) -> []() -> 动态内存管理的优点是按需分配,那缺点又是什么?
|
|
|
+ [los_memory.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/bestfit/los_memory.c) -> []() -> 鸿蒙内核中动态内存池由哪三个部分组成 ?
|
|
|
+ [los_multipledlinkhead.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/bestfit/los_multipledlinkhead.c) -> []() -> 什么是最佳适应算法? 是如何实现 ?
|
|
|
+ [bestfit_little](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/bestfit_little/) -> []() -> bestfit_little算法是在最佳适配算法的基础上加入slab机制形成的算法。
|
|
|
+ [los_heap.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/bestfit/los_heap.c) -> []() -> slab算法机制是怎样的? 又是如何实现的 ?
|
|
|
+ [common](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/common/) -> []() ->
|
|
|
+ [membox](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/membox/) -> []() -> 静态内存池的优点是分配和释放效率高,无碎片, 那缺点呢 ?
|
|
|
+ [los_membox.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mem/membox/los_membox.c) -> []() -> 静态内存有什么用? 是如何实现的?
|
|
|
+ [misc](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/) -> []() ->
|
|
|
+ [kill_shellcmd.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/kill_shellcmd.c) -> []() -> shell命令kill的实现,熟悉的 kill 9 18 的背后发生了什么?
|
|
|
+ [los_misc.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/los_misc.c) -> []() ->
|
|
|
+ [los_stackinfo.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/los_stackinfo.c) -> []() -> 栈有哪些信息 ? 如何检测栈是否异常 ?
|
|
|
+ [mempt_shellcmd.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/mempt_shellcmd.c) -> []() -> 和内存相关的shell命令有哪些 ?
|
|
|
+ [swtmr_shellcmd.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/swtmr_shellcmd.c) -> []() -> 和软时钟相关的shell命令有哪些 ?
|
|
|
+ [sysinfo_shellcmd.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/sysinfo_shellcmd.c) -> []() -> 和系统信息相关的shell命令有哪些 ?
|
|
|
+ [task_shellcmd.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/task_shellcmd.c) -> []() -> 和任务相关的shell命令有哪些 ?
|
|
|
+ [vm_shellcmd.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/misc/vm_shellcmd.c) -> []() -> 和虚拟内存相关的shell命令有哪些 ?
|
|
|
+ [mp](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mp/) -> []() -> MP指支持多处理器的模块
|
|
|
+ [los_lockdep.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mp/los_lockdep.c) -> []() -> 死锁是怎么发生的 ? 如何检测死锁 ?
|
|
|
+ [los_mp.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mp/los_mp.c) -> []() -> 鸿蒙最大支持多少个CPU ? 它们是如何工作的? CPU之间是如何通讯的 ?
|
|
|
+ [los_percpu.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mp/los_percpu.c) -> []() -> CPU有哪些信息 ?
|
|
|
+ [los_stat.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/mp/los_stat.c) -> []() -> CPU的运行信息如何统计 ?
|
|
|
+ [om](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/om/) -> []() ->
|
|
|
+ [los_err.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/om/los_err.c) -> []() ->
|
|
|
+ [sched/sched_sq](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/sched/sched_sq/) -> []() ->
|
|
|
+ [los_priqueue.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/sched/sched_sq/los_priqueue.c) -> [鸿蒙内核源码分析(调度队列篇)](https://blog.csdn.net/kuangyufei/article/details/108626671) -> 为什么只有就绪状态才会有队列 ?
|
|
|
+ [los_sched.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/sched/sched_sq/los_sched.c) -> [鸿蒙内核源码分析(调度机制篇)](https://blog.csdn.net/kuangyufei/article/details/108705968) -> 哪些情况下会触发调度 ? 调度算法是怎样的 ?
|
|
|
+ [vm](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/) -> [鸿蒙内核源码分析(内存规则篇)](https://blog.csdn.net/kuangyufei/article/details/109437223) -> 什么是虚拟内存 ? 虚拟内存全景图是怎样的 ?
|
|
|
+ [los_vm_boot.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_boot.c) -> []() -> 开机阶段内存是如何初始化的 ?
|
|
|
+ [los_vm_dump.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_dump.c) -> []() -> 如何 dump 内存数据 ?
|
|
|
+ [los_vm_fault.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_fault.c) -> []() -> 为什么会缺页 ? 缺页怎么处理 ?
|
|
|
+ [los_vm_filemap.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_filemap.c) -> []() -> 文件和内存是如何映射? 什么是 写时拷贝技术(cow) ?
|
|
|
+ [los_vm_iomap.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_iomap.c) -> []() -> 设备和内存是如何映射 ?
|
|
|
+ [los_vm_map.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_map.c) -> [鸿蒙内核源码分析(内存映射篇)](https://blog.csdn.net/kuangyufei/article/details/109032636) -> 内核空间,用户空间,线性区是如何分配的,虚拟内存<-->物理内存是如何映射的 ?
|
|
|
+ [los_vm_page.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_page.c) -> []() -> 什么是物理页框,哪些地方会用到它 ?
|
|
|
+ [los_vm_phys.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_phys.c) -> [鸿蒙内核源码分析(物理内存篇)](https://blog.csdn.net/kuangyufei/article/details/111765600) -> 段页式管理,物理内存是如何分配和回收的 ?
|
|
|
+ [los_vm_scan.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_scan.c) -> []() -> LRU算法是如何运作的 ?
|
|
|
+ [los_vm_syscall.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/los_vm_syscall.c) -> []() -> 系统调用之内存, 用户进程如何申请内存 ? 底层发生了什么 ?
|
|
|
+ [oom.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/oom.c) -> []() -> 内存溢出是如何检测的 ?
|
|
|
+ [shm.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/base/vm/shm.c) -> []() -> 共享内存是如何实现的 ?
|
|
|
+ [common](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/) -> []() ->
|
|
|
+ [console.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/console.c) -> []() -> 熟悉的控制台是如何实现的 ?
|
|
|
+ [hwi_shell.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/hwi_shell.c) -> []() -> 如何查询硬件中断 ?
|
|
|
+ [los_cir_buf.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_cir_buf.c) -> []() -> 环形缓冲区的读写是如何实现的 ? 常用于什么场景下 ?
|
|
|
+ [los_config.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_config.c) -> []() -> 内核有哪些配置信息 ?
|
|
|
+ [los_exc_interaction.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_exc_interaction.c) -> []() -> 任务出现异常如何检测 ?
|
|
|
+ [los_excinfo.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_excinfo.c) -> []() -> 异常有哪些信息 ? 如何记录异常信息 ?
|
|
|
+ [los_hilog.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_hilog.c) -> []() -> 内核是如何封装日志的 ?
|
|
|
+ [los_magickey.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_magickey.c) -> []() -> 魔法键有什么作用 ?
|
|
|
+ [los_printf.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_printf.c) -> []() -> 内核对 printf 做了哪些封装 ?
|
|
|
+ [los_rootfs.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_rootfs.c) -> []() -> 什么是根文件系统 ? 为什么需要它 ?
|
|
|
+ [los_seq_buf.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/los_seq_buf.c) -> []() ->
|
|
|
+ [virtual_serial.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/common/virtual_serial.c) -> []() -> 如何实现访问串口如同访问文件一样方便 ?
|
|
|
+ [extended](https://gitee.com/weharmony/kernel_liteos_a_note/kernel/extended/tree/master/) -> []() ->
|
|
|
+ [cppsupport](https://gitee.com/weharmony/kernel_liteos_a_note/kernel/extended/tree/master/cppsupport/) -> []() ->
|
|
|
+ [los_cppsupport.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/cppsupport/los_cppsupport.c) -> []() -> 对C++是如何支持的 ?
|
|
|
+ [cpup](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/cpup/) -> []() ->
|
|
|
+ [cpup_shellcmd.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/cpup/cpup_shellcmd.c) -> []() -> 如何实时查询系统CPU的占用率 ?
|
|
|
+ [los_cpup.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/cpup/los_cpup.c) -> []() -> 内核如何做到实时统计CPU性能的 ?
|
|
|
+ [dynload/src](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/dynload/src/) []() ->
|
|
|
+ [los_exec_elf.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/dynload/src/los_exec_elf.c) -> []() -> 鸿蒙如何运行ELF ? 什么是腾笼换鸟技术 ?
|
|
|
+ [los_load_elf.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/dynload/src/los_load_elf.c) -> []() -> 鸿蒙如何动态加载 ELF ?
|
|
|
+ [liteipc](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/liteipc/) -> []() ->
|
|
|
+ [hm_liteipc.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/liteipc/hm_liteipc.c) -> []() -> 如何用文件的方式读取消息队列 ? liteipc和普通消息队列区别有哪些 ?
|
|
|
+ [tickless](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/tickless/) -> []() ->
|
|
|
+ [los_tickless.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/tickless/los_tickless.c) -> []() -> 新定时机制新在哪里 ? 它解决了哪些问题 ?
|
|
|
+ [trace](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/trace/) -> []() ->
|
|
|
+ [los_trace.c](https://gitee.com/weharmony/kernel_liteos_a_notetree/master/kernel/extended/los_trace.c) -> []() -> 如何实现跟踪 ? 内核在跟踪什么 ?
|
|
|
+ [vdso](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/vdso/) -> []() -> 用户空间访问内核空间有哪些途径 ?
|
|
|
+ [src](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/vdso/src/) -> []() ->
|
|
|
+ [los_vdso.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/vdso/src/los_vdso.c) -> []() -> VDSO(Virtual Dynamically-linked Shared Object) 是如何实现的 ?
|
|
|
+ [los_vdso_text.S](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/vdso/src/los_vdso_text.S) -> []() ->
|
|
|
+ [usr](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/vdso/usr/) -> []() ->
|
|
|
+ [los_vdso_sys.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/extended/vdso/usr/los_vdso_sys.c) -> []() ->
|
|
|
+ [user/src](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/user/src/) -> []() ->
|
|
|
+ [los_user_init.c](https://gitee.com/weharmony/kernel_liteos_a_note/tree/master/kernel/user/src/los_user_init.c) -> []() ->
|
|
|
### LiteOS-A 内核
|
|
|
`OpenHarmony LiteOS-A` 内核是基于 `Huawei LiteOS` 内核演进发展的新一代内核,`Huawei LiteOS`是面向`IoT`领域构建的轻量级物联网操作系统。在`IoT`产业高速发展的潮流中,`OpenHarmony LiteOS-A`内核能够带给用户小体积、低功耗、高性能的体验以及统一开放的生态系统能力,新增了丰富的内核机制、更加全面的`POSIX`标准接口以及统一驱动框架`HDF`(OpenHarmony Driver Foundation)等,为设备厂商提供了更统一的接入方式,为`OpenHarmony`的应用开发者提供了更友好的开发体验。
|
|
|
|
|
|
### 架构图
|
|
|
**( 图一 )**
|
|
|
![](https://weharmonyos.oss-cn-hangzhou.aliyuncs.com/resources/3/LiteOS-A.png)
|
|
|
|
|
|
### 百篇博客目录
|
|
|
**( 图二 )**
|
|
|
![](https://weharmonyos.oss-cn-hangzhou.aliyuncs.com/resources/common/cate.png)
|
|
|
|
|
|
### 源码结构
|
|
|
**( 图三 )**
|
|
|
```
|
|
|
/kernel/liteos_a
|
|
|
├── apps # 用户态的init和shell应用程序
|
|
|
├── arch # 体系架构的目录,如arm等
|
|
|
│ └── arm # arm架构代码
|
|
|
├── bsd # freebsd相关的驱动和适配层模块代码引入,例如USB等
|
|
|
├── compat # 内核接口兼容性目录
|
|
|
│ └── posix # posix相关接口
|
|
|
├── drivers # 内核驱动
|
|
|
│ └── char # 字符设备
|
|
|
│ ├── mem # 访问物理IO设备驱动
|
|
|
│ ├── quickstart # 系统快速启动接口目录
|
|
|
│ ├── random # 随机数设备驱动
|
|
|
│ └── video # framebuffer驱动框架
|
|
|
├── 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映射管理
|
|
|
├── syscall # 系统调用
|
|
|
├── testsuites # 单元测试用例
|
|
|
├── tools # 构建工具及相关配置和代码
|
|
|
└── zzz # 中文注解版新增目录
|
|
|
```
|
|
|
**解读**
|
|
|
* **kernel** :是最重要的模块,包括了百篇博客中的 **进程管理** 、**任务管理** 、**内存管理** 、**通讯机制** 四大核心模块。
|
|
|
* **arch** :开机代码就在此,包括了所有内核汇编代码,管理处理器,协处理器,中断控制器等核心硬件实现代码,包括了百篇博客中的 **硬件架构**、**内核汇编** 两个大模块。
|
|
|
* **fs** :文件系统可比作内核的数据库,保存永久/临时性数据,文件系统因技术的更新,各个公司的利益保护等等诸多原因,呈现百花齐放,多达几十种, 通过加入虚拟层`vfs`统一对外部模块提供访问各文件系统服务,这些文件系统可分成以下四种,
|
|
|
* 磁盘文件系统,包括 `fat`、`ntfs`、`ext4`、`zfs` ...
|
|
|
* 闪存文件系统,包括 `jffs2`、`yaffs` ...
|
|
|
* 内存文件系统,包括 `proc`、`ramfs`、`tmpfs`
|
|
|
* 网络文件系统,包括`nfs` (Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,是一种分布式文件系统,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由Sun公司开发,于1984年发布。
|
|
|
|
|
|
### 百文说内核 | 抓住主脉络
|
|
|
|
|
|
* 百文相当于摸出内核的肌肉和器官系统,让人开始丰满有立体感,因是直接从注释源码起步,在加注释过程中,每每有心得处就整理,慢慢形成了以下文章。内容立足源码,常以生活场景打比方尽可能多的将内核知识点置入某种场景,具有画面感,容易理解记忆。说别人能听得懂的话很重要! 百篇博客绝不是百度教条式的在说一堆诘屈聱牙的概念,那没什么意思。更希望让内核变得栩栩如生,倍感亲切。
|
|
|
* 与代码需不断`debug`一样,文章内容会存在不少错漏之处,请多包涵,但会反复修正,持续更新,`v**.xx` 代表文章序号和修改的次数,精雕细琢,言简意赅,力求打造精品内容。
|
|
|
* 百文在 < 鸿蒙研究站 | 开源中国 | 博客园 | 51cto | csdn | 知乎 | 掘金 > 站点发布,**鸿蒙研究站 | weharmonyos** 中回复 **百文** 可方便阅读。
|
|
|
* ![](https://gitee.com/weharmonyos/resources/raw/master/common/cate.png)
|
|
|
* 百文在 < 鸿蒙研究站 | 开源中国 | 博客园 | 51cto | csdn | 知乎 | 掘金 > 站点发布,百篇博客系列目录如下。
|
|
|
* ![](https://weharmonyos.oss-cn-hangzhou.aliyuncs.com/resources/common/cate.png)
|
|
|
|
|
|
按功能模块:
|
|
|
|
|
|
* 基础知识 >> [双向链表](http://weharmonyos.com/blog/01.html) | [内核概念](http://weharmonyos.com/blog/02.html) | [源码结构](http://weharmonyos.com/blog/03.html) | [地址空间](http://weharmonyos.com/blog/04.html) | [计时单位](http://weharmonyos.com/blog/05.html) | [宏的使用](http://weharmonyos.com/blog/06.html) | [钩子框架](http://weharmonyos.com/blog/07.html) | [位图管理](http://weharmonyos.com/blog/08.html) | [POSIX](http://weharmonyos.com/blog/09.html) | [main函数](http://weharmonyos.com/blog/10.html) |
|
|
|
* 进程管理 >> [调度故事](http://weharmonyos.com/blog/11.html) | [进程控制块](http://weharmonyos.com/blog/12.html) | [进程空间](http://weharmonyos.com/blog/13.html) | [线性区](http://weharmonyos.com/blog/14.html) | [红黑树](http://weharmonyos.com/blog/15.html) | [进程管理](http://weharmonyos.com/blog/16.html) | [Fork进程](http://weharmonyos.com/blog/17.html) | [进程回收](http://weharmonyos.com/blog/18.html) | [Shell编辑](http://weharmonyos.com/blog/19.html) | [Shell解析](http://weharmonyos.com/blog/20.html) |
|
|
|
* 任务管理 >> [任务控制块](http://weharmonyos.com/blog/21.html) | [并发并行](http://weharmonyos.com/blog/22.html) | [就绪队列](http://weharmonyos.com/blog/23.html) | [调度机制](http://weharmonyos.com/blog/24.html) | [任务管理](http://weharmonyos.com/blog/25.html) | [用栈方式](http://weharmonyos.com/blog/26.html) | [软件定时器](http://weharmonyos.com/blog/27.html) | [控制台](http://weharmonyos.com/blog/28.html) | [远程登录](http://weharmonyos.com/blog/29.html) | [协议栈](http://weharmonyos.com/blog/30.html) |
|
|
|
* 内存管理 >> [内存规则](http://weharmonyos.com/blog/31.html) | [物理内存](http://weharmonyos.com/blog/32.html) | [虚拟内存](http://weharmonyos.com/blog/33.html) | [虚实映射](http://weharmonyos.com/blog/34.html) | [页表管理](http://weharmonyos.com/blog/35.html) | [静态分配](http://weharmonyos.com/blog/36.html) | [TLFS算法](http://weharmonyos.com/blog/37.html) | [内存池管理](http://weharmonyos.com/blog/38.html) | [原子操作](http://weharmonyos.com/blog/39.html) | [圆整对齐](http://weharmonyos.com/blog/40.html) |
|
|
|
* 通讯机制 >> [通讯总览](http://weharmonyos.com/blog/41.html) | [自旋锁](http://weharmonyos.com/blog/42.html) | [互斥锁](http://weharmonyos.com/blog/43.html) | [快锁使用](http://weharmonyos.com/blog/44.html) | [快锁实现](http://weharmonyos.com/blog/45.html) | [读写锁](http://weharmonyos.com/blog/46.html) | [信号量](http://weharmonyos.com/blog/47.html) | [事件机制](http://weharmonyos.com/blog/48.html) | [信号生产](http://weharmonyos.com/blog/49.html) | [信号消费](http://weharmonyos.com/blog/50.html) | [消息队列](http://weharmonyos.com/blog/51.html) | [消息封装](http://weharmonyos.com/blog/52.html) | [消息映射](http://weharmonyos.com/blog/53.html) | [共享内存](http://weharmonyos.com/blog/54.html) |
|
|
|
* 文件系统 >> [文件概念](http://weharmonyos.com/blog/55.html) | [文件故事](http://weharmonyos.com/blog/56.html) | [索引节点](http://weharmonyos.com/blog/57.html) | [VFS](http://weharmonyos.com/blog/58.html) | [文件句柄](http://weharmonyos.com/blog/59.html) | [根文件系统](http://weharmonyos.com/blog/60.html) | [挂载机制](http://weharmonyos.com/blog/61.html) | [管道文件](http://weharmonyos.com/blog/62.html) | [文件映射](http://weharmonyos.com/blog/63.html) | [写时拷贝](http://weharmonyos.com/blog/64.html) |
|
|
|
* 硬件架构 >> [芯片模式](http://weharmonyos.com/blog/65.html) | [ARM架构](http://weharmonyos.com/blog/66.html) | [指令集](http://weharmonyos.com/blog/67.html) | [协处理器](http://weharmonyos.com/blog/68.html) | [工作模式](http://weharmonyos.com/blog/69.html) | [寄存器](http://weharmonyos.com/blog/70.html) | [多核管理](http://weharmonyos.com/blog/71.html) | [中断概念](http://weharmonyos.com/blog/72.html) | [中断管理](http://weharmonyos.com/blog/73.html) |
|
|
|
* 内核汇编 >> [编码方式](http://weharmonyos.com/blog/74.html) | [汇编基础](http://weharmonyos.com/blog/75.html) | [汇编传参](http://weharmonyos.com/blog/76.html) | [可变参数](http://weharmonyos.com/blog/77.html) | [开机启动](http://weharmonyos.com/blog/78.html) | [进程切换](http://weharmonyos.com/blog/79.html) | [任务切换](http://weharmonyos.com/blog/80.html) | [中断切换](http://weharmonyos.com/blog/81.html) | [异常接管](http://weharmonyos.com/blog/82.html) | [缺页中断](http://weharmonyos.com/blog/83.html) |
|
|
|
* 编译运行 >> [编译过程](http://weharmonyos.com/blog/84.html) | [编译构建](http://weharmonyos.com/blog/85.html) | [GN语法](http://weharmonyos.com/blog/86.html) | [忍者无敌](http://weharmonyos.com/blog/87.html) | [ELF格式](http://weharmonyos.com/blog/88.html) | [ELF解析](http://weharmonyos.com/blog/89.html) | [静态链接](http://weharmonyos.com/blog/90.html) | [重定位](http://weharmonyos.com/blog/91.html) | [动态链接](http://weharmonyos.com/blog/92.html) | [进程映像](http://weharmonyos.com/blog/93.html) | [应用启动](http://weharmonyos.com/blog/94.html) | [系统调用](http://weharmonyos.com/blog/95.html) | [VDSO](http://weharmonyos.com/blog/96.html) |
|
|
|
* 调测工具 >> [模块监控](http://weharmonyos.com/blog/97.html) | [日志跟踪](http://weharmonyos.com/blog/98.html) | [系统安全](http://weharmonyos.com/blog/99.html) | [测试用例](http://weharmonyos.com/blog/100.html) |
|
|
|
* 前因后果 >> [总目录](http://weharmonyos.com/blog/101.html) | [源码注释](http://weharmonyos.com/blog/102.html) | [静态站点](http://weharmonyos.com/blog/103.html) | [参考手册](http://weharmonyos.com/blog/104.html) |
|
|
|
|基础知识|进程管理|任务管理|内存管理
|
|
|
|:-:|:-:|:-:|:-:|
|
|
|
[双向链表](http://weharmonyos.com/blog/01.html)<br>[内核概念](http://weharmonyos.com/blog/02.html)<br>[源码结构](http://weharmonyos.com/blog/03.html)<br>[地址空间](http://weharmonyos.com/blog/04.html)<br>[计时单位](http://weharmonyos.com/blog/05.html)<br>[优雅的宏](http://weharmonyos.com/blog/06.html)<br>[钩子框架](http://weharmonyos.com/blog/07.html)<br>[位图管理](http://weharmonyos.com/blog/08.html)<br>[POSIX](http://weharmonyos.com/blog/09.html)<br>[main函数](http://weharmonyos.com/blog/10.html)<br>|[调度故事](http://weharmonyos.com/blog/11.html)<br>[进程控制块](http://weharmonyos.com/blog/12.html)<br>[进程空间](http://weharmonyos.com/blog/13.html)<br>[线性区](http://weharmonyos.com/blog/14.html)<br>[红黑树](http://weharmonyos.com/blog/15.html)<br>[进程管理](http://weharmonyos.com/blog/16.html)<br>[Fork进程](http://weharmonyos.com/blog/17.html)<br>[进程回收](http://weharmonyos.com/blog/18.html)<br>[Shell编辑](http://weharmonyos.com/blog/19.html)<br>[Shell解析](http://weharmonyos.com/blog/20.html)<br>|[任务控制块](http://weharmonyos.com/blog/21.html)<br>[并发并行](http://weharmonyos.com/blog/22.html)<br>[就绪队列](http://weharmonyos.com/blog/23.html)<br>[调度机制](http://weharmonyos.com/blog/24.html)<br>[任务管理](http://weharmonyos.com/blog/25.html)<br>[用栈方式](http://weharmonyos.com/blog/26.html)<br>[软件定时器](http://weharmonyos.com/blog/27.html)<br>[控制台](http://weharmonyos.com/blog/28.html)<br>[远程登录](http://weharmonyos.com/blog/29.html)<br>[协议栈](http://weharmonyos.com/blog/30.html)<br>|[内存规则](http://weharmonyos.com/blog/31.html)<br>[物理内存](http://weharmonyos.com/blog/32.html)<br>[内存概念](http://weharmonyos.com/blog/33.html)<br>[虚实映射](http://weharmonyos.com/blog/34.html)<br>[页表管理](http://weharmonyos.com/blog/35.html)<br>[静态分配](http://weharmonyos.com/blog/36.html)<br>[TLFS算法](http://weharmonyos.com/blog/37.html)<br>[内存池管理](http://weharmonyos.com/blog/38.html)<br>[原子操作](http://weharmonyos.com/blog/39.html)<br>[圆整对齐](http://weharmonyos.com/blog/40.html)<br>|
|
|
|
|通讯机制|文件系统|硬件架构|内核汇编
|
|
|
[通讯总览](http://weharmonyos.com/blog/41.html)<br>[自旋锁](http://weharmonyos.com/blog/42.html)<br>[互斥锁](http://weharmonyos.com/blog/43.html)<br>[快锁使用](http://weharmonyos.com/blog/44.html)<br>[快锁实现](http://weharmonyos.com/blog/45.html)<br>[读写锁](http://weharmonyos.com/blog/46.html)<br>[信号量](http://weharmonyos.com/blog/47.html)<br>[事件机制](http://weharmonyos.com/blog/48.html)<br>[信号生产](http://weharmonyos.com/blog/49.html)<br>[信号消费](http://weharmonyos.com/blog/50.html)<br>[消息队列](http://weharmonyos.com/blog/51.html)<br>[消息封装](http://weharmonyos.com/blog/52.html)<br>[消息映射](http://weharmonyos.com/blog/53.html)<br>[共享内存](http://weharmonyos.com/blog/54.html)<br>|[文件概念](http://weharmonyos.com/blog/55.html)<br>[文件故事](http://weharmonyos.com/blog/56.html)<br>[索引节点](http://weharmonyos.com/blog/57.html)<br>[VFS](http://weharmonyos.com/blog/58.html)<br>[文件句柄](http://weharmonyos.com/blog/59.html)<br>[根文件系统](http://weharmonyos.com/blog/60.html)<br>[挂载机制](http://weharmonyos.com/blog/61.html)<br>[管道文件](http://weharmonyos.com/blog/62.html)<br>[文件映射](http://weharmonyos.com/blog/63.html)<br>[写时拷贝](http://weharmonyos.com/blog/64.html)<br>|[芯片模式](http://weharmonyos.com/blog/65.html)<br>[ARM架构](http://weharmonyos.com/blog/66.html)<br>[指令集](http://weharmonyos.com/blog/67.html)<br>[协处理器](http://weharmonyos.com/blog/68.html)<br>[工作模式](http://weharmonyos.com/blog/69.html)<br>[寄存器](http://weharmonyos.com/blog/70.html)<br>[多核管理](http://weharmonyos.com/blog/71.html)<br>[中断概念](http://weharmonyos.com/blog/72.html)<br>[中断管理](http://weharmonyos.com/blog/73.html)<br>|[编码方式](http://weharmonyos.com/blog/74.html)<br>[汇编基础](http://weharmonyos.com/blog/75.html)<br>[汇编传参](http://weharmonyos.com/blog/76.html)<br>[链接脚本](http://weharmonyos.com/blog/77.html)<br>[内核启动](http://weharmonyos.com/blog/78.html)<br>[进程切换](http://weharmonyos.com/blog/79.html)<br>[任务切换](http://weharmonyos.com/blog/80.html)<br>[中断切换](http://weharmonyos.com/blog/81.html)<br>[异常接管](http://weharmonyos.com/blog/82.html)<br>[缺页中断](http://weharmonyos.com/blog/83.html)<br>|
|
|
|
|编译运行|调测工具
|
|
|
[编译过程](http://weharmonyos.com/blog/84.html)<br>[编译构建](http://weharmonyos.com/blog/85.html)<br>[GN语法](http://weharmonyos.com/blog/86.html)<br>[忍者无敌](http://weharmonyos.com/blog/87.html)<br>[ELF格式](http://weharmonyos.com/blog/88.html)<br>[ELF解析](http://weharmonyos.com/blog/89.html)<br>[静态链接](http://weharmonyos.com/blog/90.html)<br>[重定位](http://weharmonyos.com/blog/91.html)<br>[动态链接](http://weharmonyos.com/blog/92.html)<br>[进程映像](http://weharmonyos.com/blog/93.html)<br>[应用启动](http://weharmonyos.com/blog/94.html)<br>[系统调用](http://weharmonyos.com/blog/95.html)<br>[VDSO](http://weharmonyos.com/blog/96.html)<br>|[模块监控](http://weharmonyos.com/blog/97.html)<br>[日志跟踪](http://weharmonyos.com/blog/98.html)<br>[系统安全](http://weharmonyos.com/blog/99.html)<br>[测试用例](http://weharmonyos.com/blog/100.html)<br>|
|
|
|
|
|
|
### 百万注源码 | 处处扣细节
|
|
|
|
|
|
* 百万汉字注解内核目的是要看清楚其毛细血管,细胞结构,等于在拿放大镜看内核。内核并不神秘,带着问题去源码中找答案是很容易上瘾的,你会发现很多文章对一些问题的解读是错误的,或者说不深刻难以自圆其说,你会慢慢形成自己新的解读,而新的解读又会碰到新的问题,如此层层递进,滚滚向前,拿着放大镜根本不愿意放手。
|
|
|
* [< 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) 四大码仓推送 | 同步官方源码,**鸿蒙研究站 | weharmonyos** 中回复 **百万** 可方便阅读。
|
|
|
* [< 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) 四大码仓推送 | 同步官方源码。
|
|
|
|
|
|
[![](https://gitee.com/weharmony/kernel_liteos_a_note/widgets/widget_card.svg?colors=393222,ebdfc1,fffae5,d8ca9f,393222,a28b40)](https://gitee.com/weharmony/kernel_liteos_a_note)
|
|
|
### 关注不迷路 | 代码即人生
|
|
|
|
|
|
![](https://gitee.com/weharmonyos/resources/raw/master/common/so1so.png)
|
|
|
![](https://weharmonyos.oss-cn-hangzhou.aliyuncs.com/resources/common/so1so.png)
|
|
|
|
|
|
据说喜欢点赞分享的,后来都成了大神。:)
|
|
|
据说喜欢 **点赞 + 分享** 的,后来都成了大神。:)
|
|
|
|
|
|
|