Linux 0.11是一个早期版本的Linux内核,由Linus Torvalds在1991年开发。这个版本虽然相对简单,但它已经包含了现代操作系统的许多核心概念和组件。以下是Linux 0.11源代码的目录结构和每个文件或目录的功能概述:
-
根目录 (
/
):- Makefile:用于编译整个内核的Makefile。
- README:项目的README文件,提供基本信息。
-
boot/:包含引导加载程序。
- bootsect.s:启动扇区的汇编代码,用于引导加载内核。
- setup.s:设置程序,用于初始化在加载内核之前所需的各种硬件和状态。
- head.s:内核启动的初始汇编代码。
-
fs/:文件系统相关代码。
- bitmap.c:处理磁盘上位图的代码。
- block_dev.c:块设备驱动程序接口。
- buffer.c:缓冲管理,用于管理文件系统的缓冲区。
- char_dev.c:字符设备驱动程序接口。
- exec.c:程序执行相关函数(如execve)。
- file_dev.c:文件设备操作接口。
- file_table.c:文件表的管理。
- inode.c:inode节点的处理逻辑。
- namei.c:文件名查找逻辑。
- open.c:文件打开和关闭逻辑。
- pipe.c:管道操作实现。
- read_write.c:文件读写操作。
- super.c:超级块处理。
- truncate.c:截断文件的实现。
-
include/:包含所有头文件。
- asm/:与CPU体系结构相关部分。
- linux/:Linux内核专用部分。
- sys/:系统数据结构部分。
-
init/:内核初始化代码。
- main.c:内核主程序。
-
kernel/:内核的核心功能,包括进程调度,信号处理,系统调用等。
- blk_drv/:块设备驱动程序。
- chr_drv/:字符设备驱动程序。
- math/:数学运算(如浮点运算)相关代码。
- sched.c:进程调度。
- sys.c:系统调用的实现。
- traps.c:异常处理逻辑。
-
lib/:内核库函数。
- ctype.c:字符类型判断函数。
- _exit.c:进程退出函数。
- malloc.c:内存分配函数。
- printf.c:格式化输出函数。
- string.c:字符串操作相关函数。
- vsprintf.c:带有变量参数的sprintf实现。
-
mm/:内存管理。
- memory.c:内存管理逻辑。
- page.s:内存分页相关的汇编代码。
-
tools/:内核构建和安装的辅助工具。
这个版本的Linux内核源代码结构相对较小,易于理解。它为今天的Linux内核和操作系统设计提供了基础。
mian函数调用关系图:
kernal函数调用关系图:
参考:用callgraph生成的函数调用关系图