第1章  概述 
1.1  Linux的诞生和发展 
UNIX操作系统的诞生 
MINIX操作系统 
GNU计划 
POSIX标准 
Linux操作系统的诞生 
Linux操作系统版本的变迁 
Linux名称的由来 
早期Linux系统开发的主要贡献者 
1.2内容综述 
1.3本章小结 
第2章  微型计算机组成结构 
2.1微型计算机组成原理 
2.2  I/O端口寻址和访问控制方式 
I/O端口和寻址 
接口访问控制 
2.3主存储器、BIOS和CMOS存储器 
主存储器 
基本输入/输出程序BIOS 
CMOS存储器 
2.4控制器和控制卡 
中断控制器 
DMA控制器 
定时/计数器 
键盘控制器 
串行控制卡 
显示控制 
软盘和硬盘控制器 
2.5本章小结 
第3章  内核编程语言和环境 
3.1  as86汇编器 
as86汇编语言语法 
as86汇编语言程序 
as86汇编语言程序的编译和链接 
as86和ld86使用方法和选项 
3.2  GNU as汇编 
编译as汇编语言程序 
as汇编语法 
指令语句、操作数和寻址 
区与重定位 
符号 
as汇编命令 
编写16位代码 
AS汇编器命令行选项 
3.3  C语言程序 
C程序编译和链接 
嵌入汇编 
圆括号中的组合语句 
寄存器变量 
内联函数 
3.4  C与汇编程序的相互调用 
C函数调用机制 
在汇编程序中调用C函数 
在C程序中调用汇编函数 
3.5  Linux 0.12目标文件格式 
目标文件格式 
Linux 0.12中的目标文件格式 
链接程序输出 
链接程序预定义变量 
System.map文件 
3.6  Make程序和Makefile文件 
Makefile文件内容 
Makefile文件中的规则 
Makefile文件示例 
make处理Makefile文件的方式 
Makefile中的变量 
让make自动推断命令 
隐含规则中的自动变量 
3.7本章小结 
第4章  80x86保护模式及其编程 
4.1  80x86系统寄存器和系统指令 
标志寄存器 
内存管理寄存器 
控制寄存器 
系统指令 
4.2保护模式内存管理 
内存寻址 
地址变换 
保护 
4.3分段机制 
段的定义 
段描述符表 
段选择符 
段描述符 
代码和数据段描述符类型 
系统描述符类型 
4.4分页机制 
页表结构 
页表项格式 
虚拟存储 
4.5保护 
段级保护 
访问数据段时的特权级检查 
代码段之间转移控制时的特权级检查 
页级保护 
组合页级和段级保护 
4.6中断和异常处理 
异常和中断向量 
中断源和异常源 
异常分类 
程序或任务的重新执行 
开启和禁止中断 
异常和中断的优先级 
中断描述符表 
IDT描述符 
异常与中断处理 
中断处理任务 
错误码 
4.7任务管理 
任务的结构和状态 
任务的执行 
任务管理数据结构 
任务切换 
任务链 
任务地址空间 
4.8保护模式编程初始化 
进入保护模式时的初始化操作 
模式切换 
4.9一个简单的多任务内核实例 
多任务程序结构和工作原理 
引导启动程序boot.s 
多任务内核程序head.s 
第5章  Linux内核体系结构 
5.1  Linux内核模式 
5.2  Linux内核系统体系结构 
5.3  Linux内核对内存的管理和使用 
物理内存 
内存地址空间概念 
内存分段机制 
内存分页管理 
CPU多任务和保护方式 
虚拟地址、线性地址和物理地址之间的关系 
用户申请内存的动态分配 
5.4中断机制 
中断操作原理 
80x86微机的中断子系统 
中断向量表 
Linux内核的中断处理 
标志寄存器的中断标志 
5.5  Linux的系统调用 
系统调用接口 
系统调用处理过程 
Linux系统调用的参数传递方式 
5.6系统时间和定时 
系统时间 
系统定时 
5.7  Linux进程控制 
任务数据结构 
进程运行状态 
进程初始化 
创建新进程 
进程调度 
终止进程 
5.8  Linux系统中堆栈的使用方法 
初始化阶段 
任务的堆栈 
任务内核态堆栈与用户态堆栈之间的切换 
5.9  Linux 0.12采用的文件系统 
5.10 Linux内核源代码的目录结构 
内核主目录linux 
引导启动程序目录boot 
文件系统目录fs 
头文件主目录include 
内核初始化程序目录init 
内核程序主目录kernel 
内核库函数目录lib 
内存管理程序目录mm 
编译内核工具程序目录tools 
5.11内核系统与应用程序的关系 
5.12  linux/Makefile文件 
功能描述 
代码注释 
5.13本章小结 
第6章  引导启动程序 
6.1总体功能 
6.2  bootsect.S程序 
功能描述 
代码注释 
其他信息 
6.3  setup.S程序 
功能描述 
代码注释 
其他信息 
6.4  head.s程序 
功能描述 
代码注释 
其他信息 
6.5本章小结 
第7章  初始化程序 
7.1  main.c程序 
功能描述 
代码注释 
其他信息 
7.2环境初始化工作 
7.3本章小结 
第8章  内核代码 
8.1总体功能 
中断处理程序 
系统调用处理相关程序 
其他通用类程序 
8.2  asm.s程序 
功能描述 
代码注释 
Intel保留中断向量的定义 
8.3  traps.c程序 
功能描述 
代码注释 
8.4  sys call.s程序 
功能描述 
代码注释 
其他信息 
8.5  mktime.c程序 
功能描述 
代码注释 
闰年的计算方法 
8.6  sched.c程序 
功能描述 
代码注释 
其他信息 
8.7  signal.c程序 
功能描述 
代码注释 
进程信号说明 
8.8  exit.c程序 
功能描述 
代码注释 
8.9  fork.c程序 
功能描述 
代码注释 
任务状态段信息 
8.10 sys.c程序 
功能描述 
代码注释 
8.11  vsprintf.c程序 
功能描述 
代码注释 
vsprintf()的格式字符串 
与当前版本的区别 
8.12  printk.c程序 
功能描述 
代码注释 
8.13  panic.c程序 
功能描述 
代码注释 
8.14本章小结 
第9章  块设备驱动程序 
9.1总体功能 
块设备请求项和请求队列 
块设备访问调度处理 
块设备操作方式 
9.2  blk.h文件 
功能描述 
代码注释 
9.3  hd.c程序 
功能描述 
代码注释 
其他信息 
9.4  ll_rw_blk.c程序 
功能描述 
代码注释 
9.5  ramdisk.c程序 
功能描述 
代码注释 
9.6  floppy.c程序 
功能描述 
代码注释 
其他信息 
第10章  字符设备驱动程序 
10.1总体功能 
终端驱动程序基本原理 
Linux支持的终端设备类型 
终端基本数据结构 
规范模式和非规范模式 
控制台终端和串行终端设备 
终端驱动程序接口 
10.2  keyboard.S程序 
功能描述 
代码注释 
其他信息 
10.3  console.c程序 
功能描述 
代码注释 
其他信息 
10.4  serial.c程序 
功能描述 
代码注释 
异步串行通信控制器UART 
10.5  rs_io.s程序 
功能描述 
代码注释 
10.6  tty_io.c程序 
功能描述 
代码注释 
控制字符VTIME、 VMIN 
10.7  tty_ioctl.c程序 
功能描述 
代码注释 
波特率与波特率因子 
第11章  数学协处理器 
11.1总体功能描述 
浮点数据类型 
数学协处理器功能和结构 
11.2  math_emulate.c程序 
功能描述 
代码注释 
11.3  error.c程序 
功能描述 
代码注释 
11.4  ea.c程序 
功能描述 
代码注释 
11.5  convert.c程序 
功能描述 
代码注释 
11.6  add.c程序 
功能描述 
代码注释 
11.7  compare.c程序 
功能描述 
代码注释 
11.8  get_put.c程序 
功能描述 
代码注释 
11.9  mul.c程序 
功能描述 
代码注释 
11.10 div.c程序 
功能描述 
代码注释 
第12章  文件系统 
12.1总体功能 
MINIX文件系统 
文件类型、属性和目录项 
高速缓冲区 
文件系统底层函数 
文件中数据的访问操作 
文件和目录管理系统调用 
360KB软盘中文件系统实例分析 
12.2  buffer.c程序 
功能描述 
代码注释 
12.3  bitmap.c程序 
功能描述 
代码注释 
12.4  truncate.c程序 
功能描述 
代码注释 
12.5  inode.c程序 
功能描述 
代码注释 
12.6  super.c程序 
功能描述 
代码注释 
12.7  namei.c程序 
功能描述 
代码注释 
12.8  file_table.c程序 
功能描述 
代码注释 
12.9  block_dev.c程序 
功能描述 
代码注释 
12.10 file_dev.c程序 
功能描述 
代码注释 
12.11 pipe.c程序 
功能描述 
代码注释 
12.12 char_dev.c程序 
功能描述 
代码注释 
12.13  read_write.c程序 
功能描述 
代码注释 
用户程序读写操作过程 
12.14  open.c程序 
功能描述 
代码注释 
12.15  exec.c程序 
功能描述 
代码注释 
其他信息 
12.16  stat.c程序 
功能描述 
代码注释 
12.17  fcntl.c程序 
功能描述 
代码注释 
12.18  ioctl.c程序 
功能描述 
代码注释 
12.19  select.c程序 
功能描述 
代码注释 
第13章  内存管理 
13.1总体功能 
内存分页管理机制 
Linux中物理内存的管理和分配 
Linux内核对线性地址空间的使用分配 
页面出错异常处理 
写时复制机制 
需求加载机制 
13.2  memory.c程序 
功能描述 
代码注释 
13.3  page.s程序 
功能描述 
代码注释 
页出错异常处理 
13.4  swap.c程序 
功能描述 
代码注释 
第14章  头文件 
14.1  include/目录下的文件 
14.2  a.out.h文件 
功能描述 
代码注释 
a.out执行文件格式 
14.3  const.h文件 
功能描述 
代码注释 
14.4  ctype.h文件 
功能描述 
代码注释 
14.5  errno.h文件 
功能描述 
代码注释 
14.6  fcntl.h文件 
功能描述 
代码注释 
14.7  signal.h文件 
功能描述 
文件注释 
14.8  stdarg.h文件 
功能描述 
代码注释 
14.9  stddef.h文件 
功能描述 
代码注释 
14.10 string.h文件 
功能描述 
代码注释 
14.11 termios.h文件 
功能描述 
代码注释 
控制字符TIME和MIN 
14.12  time.h文件 
功能描述 
代码注释 
14.13  unistd.h文件 
功能描述 
代码注释 
14.14  utime.h文件 
功能描述 
代码注释 
14.15  include/asm/目录下的文件 
14.16  io.h文件 
功能描述 
代码注释 
14.17  memory.h文件 
功能描述 
代码注释 
14.18  segment.h文件 
功能描述 
代码注释 
14.19  system.h文件 
功能描述 
代码注释 
14.20  include/linux/目录下的文件 
14.21  config.h文件 
功能描述 
代码注释 
14.22  fdreg.h头文件 
功能描述 
文件注释 
14.23  fs.h文件 
功能描述 
代码注释 
14.24  hdreg.h文件 
功能描述 
代码注释 
硬盘分区表 
14.25  head.h文件 
功能描述 
代码注释 
14.26  kernel.h文件 
功能描述 
代码注释 
14.27  mm.h文件 
功能描述 
代码注释 
14.28  sched.h文件 
功能描述 
代码注释 
14.29  sys.h文件 
功能描述 
代码注释 
14.30  tty.h文件 
功能描述 
代码注释 
14.31  include/sys/目录中的文件 
14.32  param.h文件 
功能描述 
代码注释 
14.33  resource.h文件 
功能描述 
代码注释 
14.34  stat.h文件 
功能描述 
代码注释 
14.35  time.h文件 
功能描述 
代码注释 
14.36  times.h文件 
功能描述 
代码注释 
14.37  types.h文件 
功能描述 
代码注释 
14.38  utsname.h文件 
功能描述 
代码注释 
14.39  wait.h文件 
功能描述 
代码注释 
第15章  库文件 
15.1  exit.c程序 
功能描述 
代码注释 
相关信息 
15.2  close.c程序 
功能描述 
代码注释 
15.3  ctype.c程序 
功能描述 
代码注释 
15.4  dup.c程序 
功能描述 
代码注释 
15.5  errno.c程序 
功能描述 
代码注释 
15.6  execve.c程序 
功能描述 
代码注释 
15.7  malloc.c程序 
功能描述 
代码注释 
15.8  open.c程序 
功能描述 
代码注释 
15.9  setsid.c程序 
功能描述 
代码注释 
15.10 string.c程序 
功能描述 
代码注释 
15.11 wait.c程序 
功能描述 
代码注释 
15.12 write.c程序 
功能描述 
代码注释 
第16章  建造工具 
16.1  build.c程序 
功能描述 
代码注释 
16.2  MINIX可执行文件头部数据结构 
第17章  实验环境设置与使用方法 
17.1  Bochs仿真软件系统 
设置Bochs系统 
配置文件*.bxrc 
17.2在Bochs中运行Linux 0.1x系统 
软件包中文件说明 
安装Bochs模拟系统 
运行Linux 0.1x系统 
17.3访问磁盘映像文件中的信息 
使用WinImage工具软件 
利用现有Linux系统 
17.4编译运行简单内核示例程序 
17.5利用Bochs调试内核 
运行Bochs调试程序 
定位内核中的变量或数据结构 
17.6创建磁盘映像文件 
利用Bochs软件自带的Image生成工具 
在Linux系统下使用dd命令创建Image文件 
利用WinImage创建DOS格式的软盘Image文件 
17.7制作根文件系统 
根文件系统和根文件设备 
创建文件系统 
Linux-0.12的Bochs配置文件 
在hdc.img上建立根文件系统 
使用硬盘Image上的根文件系统 
17.8在Linux 0.12系统中编译0.12内核 
17.9在Fedora系统中编译Linux 0.1 x内核 
修改Makefile文件 
修改汇编程序中的注释 
内存位置对齐语句align值的修改 
修改嵌入宏汇编程序 
C程序变量在汇编语句中的引用表示 
保护模式下调试显示函数 
17.10内核引导启动+根文件系统组成的集成盘 
集成盘制作原理 
集成盘的制作过程 
运行集成盘系统 
17.11利用GDB和Bochs调试内核源代码 
编译带gdbstub的Bochs系统 
编译带调试信息的Linux 0.1 x内核 
调试方法和步骤 
附录 
附录A  ASCII码表 
附录B  常用C0、 C1控制字符表 
附录C  常用转义序列和控制序列 
附录D  第1套键盘扫描码集 
参考文献