前言
在查看Linux源码的时候,发现里面的代码都是按照目录整理好的。所以去查看了一下Linux源码的目录结构,主要转自知乎的一篇文章以及一篇别人的博客
Linux内核源码有几千万行,包含源文件和工程文件有48374个,这里顺便贴一下一个Linux在线源码
下面内核目录以linux-3.14内核作为讲解:
结构分析
/arch | arch是architecture的缩写。所有与体系结构相关的代码都在这个目录以include/asm-*/目录中。Linux支持的每种体系结构在arch目录下都有对应的目录,又进一步分解为boot,mm,kernel等子目录: --arm arm及与之相兼容体系结构的子目录 --boot 引导程序,以及在这种硬件平台上启动内核所使用的内存管理程序的实现。 --compressed 内核解压缩 --tools 生成压缩内核映像的程序 --kernel: 存放支持体系结构特有的诸如信号量处理和SMP之类特征的实现。 --lib: 存放体系结构特有的对诸如strlen和memcpy之类的通用函数的实现。 --mm: 存放体系结构特有的内存管理程序的实现。 除了这3个子目录以外,大多数体系结构在必要的情况下还有一个boot子目录,包括了在这种硬件平台上启动内核所使用的内存管理程序的实现。 |
---|---|
/block | 块设备通用函数 |
/crypto | 常见的加密算法的C语言实现代码,譬如crc32、md5、sha1等 |
/Documentation | 提供文档帮助。关于内核的一些说明信息,在这个目录下会有帮助手册。 |
/drivers | 内核中所有设备的驱动程序,其中的每一个子目录对应一种设备驱动 |
/firmware | 固件代码 |
/fs | Linux支持的文件系统代码,及各种类型的文件的操作代码。每个子目录都代表Linux支持的一种文件系统类型 |
/include | 内核编译通用的头文件 |
/init | 内核初始化的核心代码 |
/ipc | 内核中进程间的通信代码 |
/kernel | 内核的核心代码,此目录下实现了大多数Linux系统的内核函数。与处理器架构相关的内核代码在/kernel/$ARCH/kernel |
/lib | 内核共用的函数库,与处理器架构相关的库在/kernel/$ARCH/lib |
/mm | 内存管理代码,譬如页式存储管理内存的分配和释放等。与具体处理器架构相关的内存管理代码位于/arch/$ARCH/mm目录下 |
/net | 网络通信相关代码 |
/samples | 示例代码 |
/scripts | 用于内核配置的脚本文件,用于实现内核配置的图形界面 |
/security | 安全性相关的代码 |
/tools | Linux中的常用工具 |
/usr | 内核启动相关的代码 |
/virt | 内核虚拟机相关的代码 |