linux内核源码组织结构
内核特征
- 组织形式为整体式结构
- 进程调度方式简单有效
- 支持内核线程(守护进程)
- 支持多种平台的虚拟内存管理
- 虚拟文件系统
- 模块机制
- 增加系统调用
- 面向对象
好处
- 提升研发水平
- 开发操作系统
- 计算机领域研究
- 性能优化
系统结构
- 所处位置
- 子系统间关系
- 数据结构
- task_struct: task数组(一个进程数据结构指针)
- mm_struct: 进程的虚拟内存
- inode: 索引节点
内核源码目录组织结构
- 三组数字:内核主版本.稳定版本(或者开发版本).错误修补次数
例如:Linux 3.6.34
第一组数字:3,主版本号
第二组数字:6,次版本号,稳定版本(偶数稳定版本,奇数开发版本)
第三组数字:修订次数
目录说明
- arch: 不同平台体系相关代码
- block:块设备驱动
- certs: 认证 签名相关代码
- crypto:内核常用加密、压缩算法等代码
- Documentation: 描述模块功能和协议规范代码
- Drivers: 驱动程序(USB总线、PCI总线、显卡驱动等)
- firmware: 主要是一些二进制固件
- fs: 虚拟文件系统代码
- include: 内核源码依赖 绝大部分头文件
- init: 内核初始化代码, 内存各组件入口
- ipc: 进程间通信实现,如共享内存、信号量、匿名管道等
- kernel: 内核核心代码,包括进程管理、IRQ、时间等
- lib: C标准库子集
- mm: 内存管理相关实现
- net: 网络协议代码,如TCP、IPv6、WiFi、以太网实现等
- samples: 内核实例代码
- scripts:编译和配置内核所需的脚本;perl bash等
- security: 内核安全模型相关的代码, 如selinux等
- sound:声卡驱动源码
- tools: 与内核交互
- usr: 用户打包和压缩内核的实现源码
- virt: /kvm虚拟化目录相关支持实现
- COPYING: 许可授权信息
- CREDITS: 贡献者列表
- Kbuild: 内核设定的脚本
- Kconfig:开发人员配置内核时所需要的
- MAINTAINERS: 目前维护者列表
- Makefile: 编译内核的主要文件
- README:编译内核信息,提供给开发者
技术参考
https://ke.qq.com/webcourse/3294666/103425320#taid=11011136509068746&vid=5285890814923270596