linux内核源代码的目录结构
boot->系统引导
fs-〉文件系统
include
init
kenerl/blk_drv,chr_drv,sys
lib
mm
boot目录下有3个汇编文件,是内核源文件中最先被编译的程序。
主要功能是计算机上电时阴道内核启动,将内核代码加载到内存中,并作进入32位保护模式前的系统初始化工作。
bootsect.s,setup.s 需要as86来编译,使用的是as86汇编语言格式,head.s需要as编译,使用的是AT&T格式的汇编。
bootsect.s 磁盘引导块程序,编译后驻留在磁盘第一个扇区MBR。pc上电bios自检后,被bios加载到地址0x7c00处执行。
setup.s 读取机器的硬件配置参数,并把内核模块system移到合适的内存地址。
head.s 被编译连接在system模块的最前部分,做硬件探测工作,和内存管理的初始配置工作。
fs文件系统目录
包含了17个文件,诸如
buffer.c 对内存高速缓冲区的处理
file_table.c 定义了文件句柄
ioctrl.c 定义了io控制功能
exec.c exec函数簇
fcntl.c 文件i/o控制
open.c 修改,创建文件
char_dev.c 定义了字符设备读写函数
pipe.c 定义了管道读取
file_dev.c 文件读写函数
block_dev.c 块读写
truncate.c 删除文件时释放文件占用的设备空间
inode.c i节点操作
bitmap.c i节点和逻辑数据块
super.c 超级块
include头文件主目录
kernel目录下有12个代码文件
asm.s 处理系统硬件异常引起的中断,在中断处理过程中,分别调用traps.c的处理函数
exit.c 处理进程终止的调用
fork.c 使用了2个c函数:find_empty_process, copy_process
mktime.c 时间函数mktime()
panic.c 显示内核出错信息并停机
printk.c 内核专用打印函数printk
sched.c 调度
signal.c 信号处理
sys.c 很多系统函数
system_calls.c INT 0x80 调用的系统处理
vsprintf.c 字符串格式化函数