linux内核设计与实现 pdf列出所有内核_openEuler内核系列Linux内核源码结构
作者:罗宇哲,中国科学院软件研究所智能软件研究中⼼
在上⼀期中,我们介绍了 Linux 内核发展的历史,也介绍了与其相关的 UNIX 和 GNU 的相关知识。从这⼀期开始,我们将介绍 Linux 内核的源码结构。我们将先根据 Linux 源码的⽬录结构进⾏分析,到本⽂章发布前,Linux 4.19 的最新版本为 Linux 4.19.94,我们将依据openEuler 开源社区源码并参考 Linux 4.19.94 版内核源码进⾏分析。
Linux 内核源码的⽬录结构分析
下图列出了截⾄⽂章发表前 openEuler 开源社区 kernel ⽬录下的⽬录结构[1]:
其中各个⽂件夹中源代码的功能如下表所⽰[2]:
⽬录/⽂件名源码功能简介
/Documentation说明⽂档,对每个⽬录的具体作⽤进⾏说明。
/arch不同 CPU 架构下的核⼼代码。其中的每⼀个⼦⽬录都代表 Linux ⽀持的 CPU 架构。
/block块设备通⽤函数。
/certs与证书相关。
/crypto常见的加密算法的 C 语⾔实现代码,譬如 crc32、md5、sha1 等。
/drivers内核中所有设备的驱动程序,其中的每⼀个⼦⽬录对应⼀种设备驱动。
/include内核编译通⽤的头⽂件。
/init内核初始化的核⼼代码。
/ipc内核中进程间的通信代码。
/
kernel内核的核⼼代码,此⽬录下实现了⼤多数 Linux 系统的内核函数。与处理器架构相关的内核代码在/kernel/$ARCH/kernel。
/lib内核共⽤的函数库,与处理器架构相关的库在/kernel/$ARCH/lib。
⽬录/⽂件名源码功能简介
/mm内存管理代码,譬如页式存储管理内存的分配和释放等。与具体处理器架构相关的内存管理代码位于/arch/$ARCH/mm⽬录下。
/net⽹络通信相关代码。
/samples⽰例代码。
/scripts⽤于内核配置的脚本⽂件,⽤于实现内核配置的图形界⾯。
/security安全性相关的代码。
/sound与⾳频有关的代码,包括与⾳频有关的驱动程序[3]。
/tools Linux 中的常⽤⼯具。
/usr该⽬录中的代码为内核尚未完全启动时执⾏⽤户空间代码提供了⽀持。
/virt此⽂件夹包含了虚拟化代码,它允许⽤户⼀次运⾏多个操作系统。
COPYING许可和授权信息。
CREDITS贡献者列表。
Kbuild内核设定脚本,可以对内核中的变量进⾏设定。
Kconfig配置哪些⽂件编译,那些⽂件不⽤编译[4]。
Makefile该⽂件将编译参数、编译所需的⽂件和必要的信息传给编译器。
⼆、结语
本期我们根据 openEuler 的⽬录,并参考 Linux ⽬录结构简要介绍了 openEuler kernel 中各个⼦⽬录的功能,下⼀期我们将结合 Linux 内核的 Kernel Map 介绍Linux 内核的基本功能和抽象层级。
参考资料
[1] [2] [3] [4]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论