03_内核源码组织架构
一、Linux内核特征
- Linux内核组织形式为整体式结构
- 进程调度方式简单而有效
- 支持内核线程(或称为守护进程)
- 支持多种平台的虚拟内存管理
- 虚拟文件系统
- 模块机制
- 增加系统调用
- 面向对象
二、Linux内核五大子系统

三、系统数据结构
在Linux内核中使用频率较高的数据结构:
- task_struct:代表一个进程数据结构指针形成一个task数组
- mm_struct:代表进程的虚拟内存
- inode:代表虚拟文件系统中的文件、目录等对应的索引节点
四、Linux内核源码组织
- Linux内核版本有两种:稳定版与开发版。
- Linux内核版本号由3组数字组成,第一组数字:目前发布的内核主版本;第二组数字:偶数为稳定版本,奇数为开发中版本;第三组数字:错误修补次数。
源码目录解析:
| 序号 | 文件夹 | 释义 |
|---|---|---|
| 01 | arch | 不同平台体系 |
| 02 | block | 块设备驱动 |
| 03 | certs | 与认证和签名 |
| 04 | crypto | 内核常用加密、压缩算法 |
| 05 | Documentation | 描述模块功能和协议规范 |
| 06 | drivers | 驱动程序(USB总线、PCI总线、显卡驱动) |
| 07 | firmware | 二进制固件 |
| 08 | fs | 虚拟文件系统代码 |
| 09 | include | 内核源码依赖绝大部分头文件 |
| 10 | init | 内核初始化代码,联系到内存各组件入口 |
| 11 | ipc | 进程间通信实现:共享内存、信号量、管道等 |
| 12 | kernel | 内核核心代码,包括进程管理、IRQ、时间等 |
| 13 | lib | C标准库的子集 |
| 14 | mm | 内存管理相关实现 |
| 15 | net | 网络协议代码:TCP、ipv6、wifi、以太网实现等 |
| 16 | samples | 内核实例代码 |
| 17 | scripts | 编译和配置内核所需脚本 |
| 18 | security | 内核安全模型相关代码:selinux |
| 19 | sound | 声卡驱动源码 |
| 20 | tools | 与内核交互 |
| 21 | usr | 用户打包和压缩内核的实现源码 |
| 22 | virt | /kvm虚拟化目录相关支持实现 |
| 23 | COPYING | 许可和授权信息 |
| 24 | CREDITS | 贡献者列表 |
| 25 | Kbuild | 内核设定脚本 |
| 26 | Kconfig | 开发人员配置内核时所需 |
| 27 | MAINTAINERS | 目前维护者列表 |
| 28 | Makefile | 编译内核主要文件 |
| 29 | README | 编译内核信息 |
| 30 | REPORTING-BUGS | 如何报告问题的信息 |

浙公网安备 33010602011771号