日期:2014-05-16  浏览次数:20758 次

linux内核0.11学习笔记
linux0.11内核目录结构
linux
|
|--- boot 系统引导汇编程序
|
|--- fs 文件系统
|
|--- include 头文件(*.h)
|     |
|     |--- asm 与CPU体系结构相关的部分
|     |
|     |--- linux Linux内核专用部分
|     |
|     |--- sys 系统数据结构部分
|
|--- init 内核初始化程序
|
|--- kernel 内核进程调度、信号处理、系统调用等程序
|     |
|     |--- blk_drv 块设备驱动程序
|     |
|     |--- chr_drv 字符设备驱动程序
|     |
|     |--- math 数学协处理器仿真处理程序
|
|--- lib 内核库函数
|
|--- mm 内存管理程序
|
|--- tools 生成内核Image文件的工具程序

makefile文件,在Linux目录下,该文件是编译辅助工具软件make的参数配置文件。make工具软件的主要用途是通过识别哪些文件已被修改过,从而自动地决定在一个含有多个源程序文件的程序系统中哪些文件需要被重新编译。
boot目录中含有3个汇编语言文件,是内核源代码中最先编译的程序。这3个程序完成的主要功能是当计算机加电时引导内核启动,将内核代码加在到内存中,并做一些进入32位保护运行方式前的系统初始化工作。其中bootsect.s和setup.s程序需要使用as86软件来编译,使用的是as86的汇编语言格式,而head.s需要用GNU as来编译,使用的是AT&T格式的汇编语言。
bootsect.s程序是磁盘引导块程序,编译后会驻留在磁盘的第一个扇区中
setup.s程序主要用于读取机器的硬件配置参数,并把内核模块system移动到适当的内存位置处
head.s程序会编译链接在system模块的最前部分,主要进行硬件设备的探测设置和内存管理页面的初始设置工作。

fs文件目录系统
该目录中的程序可以划分成4个部分:高速缓冲区管理、低层文件操作、文件数据访问和文件高层函数。
文件系统,我们可以将它看成是内存告诉缓冲区的扩展部分。所有对文件系统中数据的访问,都需要首先读取到高速缓冲区中。fs目录中的程序主要用来管理高速缓冲区中缓冲块的使用分配和块设备上的文件系统。管理告诉缓冲区的程序是buffer.c,而其他程序则主要都是用于文件系统管理。
在file_table.c文件中,目前仅定义了一个文件句柄结构数组。ioctl.c文件将引用kernel/chr_dev/tty.c中的函数,实现字符设备的io控制功能。exec.c程序主要包含一个执行程序函数do_execve(),它是所有exec()函数簇中的主要函数。fcntl.c程序用于实现文件i/o控制的系统调用函数。read_write.c程序用于实现文件读/写和定位三个系统调用函数。stat.c程序中实现了两个获取文件状态的系统调用函数。open.c程序主要包含实现修改文件属性和创建于关闭文件的系统调用函数。

include头文件主目录
该目录总共有32个.h头文件。有关的描述在26页有讲。

内核初始化程序目录init
该目录下只有一个main.c文件。用于执行内核所有的初始化工作,然后移到用户模式创建新进程,并在控制台设备上运行shell程序。

kernel内核程序主目录
kernel/blk_dev块设备驱动程序子目录
kernel/chr_dev字符设备驱动程序子目录
kernel/math协处理器仿真和操作程序子目录
P27

lib内核库函数目录
P28

mm内存管理程序目录
P29

tools编译内核工具程序
P29。该目录下的build.c程序用于将Linux各个目录中被分别编译成生成的目标代码链接合并成一个可运行的内核映像文件image。