一. Linux全局观
先来看一幅Linux kernel map:点击查看大图

这是makelinux网站提供的一幅非常经典的Linux内核图,涵盖了内核最为核心的方法. Linux除了驱动开发外,还有很多通用子系统,比如CPU, memory, file system等核心模块,即便不做底层驱动开发, 掌握这些模块对于加深理解整个系统运转机制还是很有帮助。
二. Kernel源码目录结构
简要列举Kernel源代码的常见目录:
| 目录 | 解释 | 部分子目录 | 
|---|---|---|
| kernel | 内核管理相关,进程调度等 | sched/fork等 | 
| fs | 文件子系统 | ext4/f2fs/fuse/debugfs/proc等 | 
| mm | 内存子系统 | |
| drivers | 设备驱动 | staging/cpufreq/gpu等 | 
| arch | 所有CPU体系结构相关的代码 | armm64/x86等 | 
| include | 头文件 | linux/uapi/asm_generic等 | 
| lib | 标准通用的C库 | |
| ipc | 进程间通信相关 | |
| init | 初始化过程(非系统引导阶段) | |
| block | 块设备驱动程序 | - | 
| crypto | 加密、解密、校验算法 | - | 
| Documentation | 说明文档 | - | 
三. 资料
- lxr.free-electrons:LXR(The Linux Cross Referencer),提供方便地kernel在线源码阅读。
 - makelinux.net:可快速跳转到linux kernel map所涉及的任一方法;
 
微信公众号 Gityuan | 微博 weibo.com/gityuan | 博客 留言区交流