linux内核源代码的目录结构
boot->系统引导
fs-〉文件系统
include
init
kenerl/blk_drv,chr_drv,sys
lib
mm
linux采用intel cpu的内存分页管理机制(1页4k物理内存),使用虚拟线形地址和实际物理地址映射的方法让同时执行的程序共同使用有限的内存。使用这种方法,每个执行中的程序可以使用比实际内存大得多的地址空间。
linux0.11虚拟地址空间是4G=64M*64, 每个任务(进程)有64M虚拟地址空间,最多64个任务.
每个虚拟地址空间,头部是代码区,紧接着数据区,尾部是堆栈区.
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 超级块
文件系统程序本身并不直接跟块设备的驱动打交道,而是通过高速缓冲区。
所有对文件系统中数据的访问,都需要首先读取到高速缓冲区.
Linux内核简单学习(3)
内容版权声明:除非注明,否则皆为本站原创文章。