Linux内核结构
扫描二维码
随时随地手机看文章
Linux内核结构
1、内核的子系统
(1) 系统调用接口SCI(System Call Interface):SCI层为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核空间的桥梁。
(2) 进程管理PM(Process Management):进程作为资源分配的基本单位而存在;进程调度。
(3) 虚拟文件系统VFS(Virtual File System):它是一种用于网络环境的分布式文件系统,是允许和操作系统使用不同的文件系统实现的接口。
(4) 内存管理MM(Memory Management):段转换过程是由逻辑地址(或称为虚拟地址)转换为线性地址;页转换过程则是将线性地址转换为物理地址。
(5) 网络协议栈(Network Stack)
(6) Arch:CPU。
(7) 设备驱动DD(Device Drivers):是连接硬件和内核之间的桥梁。
2、内核目录
arch
特定体系结构相关代码,内核所支持的每种架构的 CPU 的相 关目录集合,在 arch 目录下,有支持 arm 的目录、支持 x86 的目录和支持 mips 的目录等,如: arch/arm、 arch/x86 和 arch/mips 等。
block
块设备通用函数
crypto
常用加密和散列算法(如 AES、 SHA 等),还有一些压缩和 CRC 校验算法
Documentation
内核源码说明文档目录
drivers
设备驱动程序目录集合, drivers 里的某一子目录对应着内核中 的某一种驱动程序,如: drivers/char 为字符设备驱动程序、 drivers/block 为块设备驱动程序、 drivers/net 为网络设备驱动 程序、 drivers/usb 为 usb 总线设备驱动程序、 drivers/i2c 为 i2c 总线设备驱动程序等。
fs
Linux 支持的文件系统的代码(包括虚拟文件系统 VFS),每个 子目录对应一种文件系统,比如 fs/jffs2/、 fs/cramfs、 fs/ext2/。
include
内核的头文件目录,如:基本的头文件(存放在 include/linux 目录下)、各种驱动或功能部件的头文件(比如 include/media、 include/video/、 include/net)。
init
初始化代码而不是内核的引导代码。
ipc
包含了进程间的通信
kernel
核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;和处理器的相关代码放在 arch/*/kernel 目录下
lib
内核会用的库函数,比cstring.c等
mm
内核的内存管理相关的代码,如页式存储管理内存的分配和释放等
net
核心的网络所支持得部分代码,其中每个子目录对应于网络的一个方面
scripts
用于配置核心的脚本文件
security
安全、密匙方面的代码
sound
音频设备
3、管理脚本
(1)顶层Makefile:所有源代码子目录Makefile文件的核心,从总体上控制着内核的编译、连接。
(2)子目录Makefile:被上一层目录里的Makefile调用来编译当前目录的文件。
(3).config:配置文件,在配置内核时生成。所有Makefile文件(包括顶层和各级子目录)都是根据.config来决定使用哪些文件。
(4)Kconfig:一个文本形式的文件,其中主要作用是在内核配置(用makemenuconfig配置内核)时,作为配置选项。