书籍详情
Linux 内核完全剖析
作者:赵炯 编著
出版社:机械工业出版社
出版时间:2006-01-01
ISBN:9787111180326
定价:¥79.00
购买这本书可以去
内容简介
本书是一本有关Linux操作系统内核基本工作原理的入门读物。本书介绍了Linux系统的发展历史,然后介绍了PC机的硬件组成结构、编制内核使用的汇编语言和C语言扩展部分,并且重点说明了80x86处理器在保护模式下运行的编程方法,接着详细介绍了Linux内核源代码目录树组织结构,并依据该组织结构对所有内核程序和文件进行了注释和详细说明。本书对早期Linux操作系统内核(vo.11)全部代码文件进行了详细的剖析,旨在让读者在尽量短的时间内对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux系统打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中首先以Linux源代码版本的变迁为主线,简要介绍了Linux系统的发展历史,同时着重说明了各个内核版本之间的主要区别和改进方面,给出了选择O.11版内核源代码作为研究对象的原因。然后概要介绍了PC机的硬件组成结构、编制内核使用的汇编语言和C语言扩展部分,并且重点说明了80x86处理器在保护模式下运行的编程方法。接着详细介绍了Linux内核源代码目录树组织结构,并依据该组织结构对所有内核程序和文件进行了注释和详细说明。为了加深读者对内核工作原理的理解,书中最后一章给出了围绕Linux0.11系统的多个试验。试验中使用的相关程序均可从本书配套网站(www.oldlinux.org)上下载。本书适合作为高校计算机专业学生学习操作系统课程的辅助和实践教材,也适合Linux爱好者作为学习内核工作原理的自学参考书籍,还可供一般技术人员作为开发嵌入式系统的参考书使用。
作者简介
赵炯,上海同济大学计算机通信专业毕业,多年从事操作系统,计算机网络和系统软件的研究工作,具有很高的学术水平。2004年编写的《Linux内核完全注释》一书,一年内印刷4次,在各大计算机排行榜始终名列前茅,并被《中华读书报》评为“2004年度十大电脑图书”之一。
目录
序
第1章 概述
1.1 Linux的诞生和发展
1.1.1 UNIX操作系统的诞生
1.1.2 MINIX操作系统
1.1.3 GNU计划
1.1.4 POSIX标准
1.1.5 Linux操作系统的诞生
1.1.6 Linux操作系统的版本的变迁
1.1.7 Linux名称的由来
1.1.8 早期Linux系统开发的主要贡献者
1.2 内容综述
第2章 微型计算机组成结构
2.1 微型计算机组成原理
2.2 I/O端口寻址和访问控制方式
2.2.1 I/O端口和寻址
2.2.2 接口访问控制
2.3 主存储器、BIOS和CMOS存储器
2.3.1 主存储器
2.3.2 基本输入/输出程序BIOS
2.3.3 CMOS存储器
2.4 控制器和控制卡
2.4.1 中断控制器
2.4.2 DMA控制器
2.4.3 定时/计数器
2.4.4 键盘控制器
2.4.5 串行控制卡
2.4.6 显示控制
2.4.7 软盘和硬盘控制器
第3章 内核编程语言和环境
3.1 as86汇编器
3.1.1 as86汇编语言语法
3.1.2 as86汇编语言程序
3.1.3 as86汇编语言程序的编译和链接
3.1.4 as86和ld86使用方法和选项
3.2 GNU as汇编
3.2.1 编译as汇编语言程序
3.2.2 as汇编语法
3.2.3 指令语名、操作数和寻址
3.2.4 区与重定位
3.2.5 符号
3.2.6 as汇编命令
3.2.7 编写16位代码
3.2.8 as汇编器命令行选项
3.3 C语言程序
3.3.1 C程序编译和链接
3.3.2 嵌入汇编
3.3.3 圆括号中的组合语名
3.3.4 寄存器变量
3.3.5 内联函数
3.4 C与汇编程序的相互调用
3.4.1 C函数调用机制
3.4.2 在汇编程序中调用C函数
3.4.3 在C程序中调用汇编函数
3.5 Linux 0.11目标文件格式
3.5.1 目标文件格式
3.5.2 Linux 0.11中的目标文件格式
3.5.3 链接程序输出
3.5.4 链接程序预定义变量
3.5.5 System.map文件
3.6 Make程序和Makefile文件
第4章 80X86保护模式及其编程
4.1 80X86系统寄存器和系统指令
4.1.1 标志寄存器
4.1.2 内存管理寄存器
4.1.3 控制寄存器
4.1.4 系统指令
4.2 保护模式内存管理
4.2.1 内存寻址
4.2.2 地址变换
4.2.3 保护
4.3 分段机制
4.3.1 段的定义
4.3.2 段描述符表
4.3.3 段选择符
4.3.4 段描述符
4.3.5 代码和数据段描述符类型
4.3.6 系统描述符类型
4.4 分页机制
4.4.1 页表结构
4.4.2 页表项格式
4.4.3 虚拟存储
4.5 保护
4.5.1 段级保护
4.5.2 访问数据段时的特权级检查
4.5.3 代码段之间转移控制的时特权级检查
4.5.4 页级保护
4.5.5 组合页级和段级保护
4.6 中断和异常处理
4.6.1 异常和中断向量
4.6.2 中断源和异常源
4.6.3 异常分类
4.6.4 程序或任务的重新执行
4.6.5 开启和禁止中断
4.6.6 异常和中断的优先级
4.6.7 中断描述符表
4.6.8 IDT描述符
4.6.9 异常与中断处理
4.6.10 中断处理任务
4.6.11 错误码
4.7 任务管理
4.7.1 任务的结构和状态
4.7.2 任务的执行
4.7.3 任务管理数据结构
4.7.4 任务切换
4.7.5 任务链
4.7.6 任务地址空间
4.8 保护模式编程初始化
4.8.1 进入保护模式时的初始化操作
4.8.2 模式切换
4.9 一个简单的多任务内核实例
4.9.1 多任务程序结构和工作原理
4.9.2 引导启动程序boot.s
4.9.3 多任务内核程序head.s
第5章 Linux内核体结构
5.1 Linux内核模式
5.2 Linux内核系统体系结构
5.3 Linux内核对内存的管理和使用
5.3.1 物理内存
5.3.2 内存地址空间概念
5.3.3 内存分段机制
5.3.4 内存分页管理
5.3.5 CPU多任务和保护方式
5.3.6 虚拟地址、线性地址和物理村址之间的关系
5.3.7 用户申请内存的动态分配
5.4 Linux系统的中断机制
5.4.1 中操作原理
5.4.2 80X86微机的中断子系统
5.4.3 中断向量表
5.4.4 Linux内核的中断处理
5.4.5 标志寄存器扣断标志
5.5 Linux的系统调用
5.5.1 系统调用接口
5.5.2 系统调用处理过程
5.5.3 Linux系统调用的参数传递方式
5.6 系统时间和定时
5.6.1 系统时间
5.6.2 系统定时
5.7 Linux进程控制
5.7.1 任务数据结构
5.7.2 进程运行状态
5.7.3 进程初始化
5.7.4 创建新进程
5.7.5 进程调度
5.7.6 终止进程
5.8 Linux系统中堆栈的使用方法
5.8.1 初始化阶段
5.8.2 任务的堆栈
5.8.3 任务内核态堆栈与用户态堆栈之间的切换
5.9 Linux 0.11采用的文件系统
5.10 Linux 内核源代码的目录结构
5.10.1 内核主目录linux
5.10.2 引导启动程序目录boot
5.10.3 文件系统目录fs
5.10.4 头文件主目录include
5.10.5 内核初始化程序目录init
5.10.6 内核程序主目录kernel
5.10.7 内核库函数目录lib
5.10.8 内存管理程序目录mrn
5.10.9 编译内核工具程序目录tools
5.11 内核系统与应用程序的关系
5.12 linux/Makefile文件
5.12.1 功能描述
5.12.2 代码注释
第6章 引导启动程序
6.1 总体功能
6.2 bootsect.s程序
6.2.1 功能描述
6.2.2 代码注释
6.2.3 其他信息
6.3 setup.s程序
6.3.1 功能描述
6.3.2 代码注释
6.3.3 其他信息
6.4 head.s程序
6.4.1 功能描述
6.4.2 代码注释
6.4.3 其他信息
第7章 初始化程序
7.1 main.c程序
7.1.1 功能描述
7.1.2 代码注释
7.1.3 其他信息
7.2 环境初始化工作
第8章 内核代码
8.1 总体功能
8.1.1 中断处理程序
8.1.2 系统调用处理相关程序
8.1.3 其他通用类程序
8.2 Makefile文件
8.2.1 功能简介
8.2.2 文件注释
8.3 asm.s程序
8.3.1 功能描述
8.3.2 代码注释
8.3.3 Intel保留中断向量的定义
8.4 traps.c程序
8.4.1 功能描述
8.4.2 代码注释
8.5 system-call.s程序
8.5.1 功能描述
8.5.2 代码注释
8.5.3 其他信息
8.6 mktime.c程序
8.6.1 功能描述
8.6.2 代码注释
8.6.3 闰年的计算方法
8.7 sched.c程序
8.7.1 功能描述
8.7.2 代码注释
8.7.3 其他信息
8.8 signal.c程序
8.8.1 功能描述
8.8.2 代码注释
8.8.3 进程信号说明
8.9 exit.c程序
8.9.1 功能描述
8.9.2 代码注释
8.10 fork.c程序
8.10.1 功能描述
8.10.2 代码注释
8.10.3 任务状态段信息
8.11 sys.c程序
8.11.1功能描述
8.11.2 代码注释
8.12 vsprintf.c程序
8.12.1 功能描述
8.12.2 代码注释
8.12.3 vsprintf()的格式字符串
8.12.4 与当前版本的区别
8.13 printk.c程序
8.13.1 功能描述
8.13.2 代码注释
8.14 panic.c程序
8.14.1 功能描述
8.14.2 代码注释
第9章块设计驱动程序
9.1 总体功能
9.1.1 块设备请求项和请求队列
9.1.2 块设备操作方式
9.2 Makefile文件
9.2.1 功能描述
9.2.2 代码注释
9.3 blk.h文件
9.3.1 功能描述
9.3.2 代码注释
9.4 hd.c程序
9.4.1 功能描述
9.4.2 代码注释
9.4.3 其他信息
9.5 ll_rw_blk.c程序
9.5.1 功能描述
9.5.2 代码注释
9.6 ramdisk.c程序
9.6.1 功能描述
9.6.2 代码注释
9.7 floppy.c程序
9.7.1 功能描述
9.7.2 代码注释
9.7.3 其他信息
第10章 字符设备驱动程序
10.1 总体功能
10.1.1 终端驱动程序基本原理
10.1.2 Linux支持的终端设备类型
10.1.3 终端基本数据结构
10.1.4 规范模式和非规范模式
10.1.5 控制台终端和串行终端设备
10.1.6 终端驱动程序接口
10.2 Makefile文件
10.2.1 功能描述
10.2.2 代码注释
10.3 keyboard.S程序
10.3.1 功能描述
10.3.2 代码注释
10.3.3 其他信息
10.4 comsole.c程序
10.4.1 功能描述
10.4.2 代码注释
10.4.3 其他信息
10.5 serial.c程序
10.5.1 功能描述
10.5.2 代码注释
10.5.3 异步串行通信控制器UART
10.6 rs_io.s程序
10.6.1 功能描述
10.6.2 代码注释
10.7 tty_io.c程序
10.7.1 功能描述
10.7.2 代码注释
10.8 tty_ioctl.c程序
10.8.1 功能描述
10.8.2 代码注释
10.8.3 波特率与波特率因子
第11章 数学协处理器
11.1 Makefile文件
11.1.1 功能描述
11.1.2 代码注释
11.2 math_emulate.c程序
11.2.1 功能描述
11.2.2 代码注释
第12章 文件系统
12.1 总体功能
12.1.1 MINIX文件系统
12.1.2 文件类型、属性和目录项
12.1.3 高速缓冲区
12.1.4 文件系统底层函数
12.1.5 文件中数据的访问操作
12.1.6 文件和目录管理系统调用
12.1.7 360 KB软盘中文件系统实例分析
12.2 Makefile文件
12.2.1 功能描述
12.2.2 代码注释
12.3 bufer.c程序
12.3.1 功能描述
12.3.2 代码注释
12.4 bitmap.c程序
12.4.1 功能描述
12.4.2 代码注释
12.5 truncte.c程序
12.5.1 功能描述
12.5.2 代码注释
12.6 inoe.c程序
12.6.1 功能描述
12.6.2 代码注释
12.7 super.c程序
12.7.1 功能描述
12.7.2 代码注释
12.8 namei.c程序
12.8.1 功能描述
12.8.2 代码注释
12.9 file_table.c程序
12.9.1 功能描述
12.9.2 代码注释
12.10 block_dev.c程序
12.10.1 功能描述
12.10.2 代码注释
12.11 file_dev.c程序
12.11.1 功能描述
12.11.2 代码注释
12.12 pipe.c程序
12.12.1 功能描述
12.12.2 代码注释
12.13 char_dev.c程序
12.13.1 功能描述
12.13.2 代码注释
12.14 read_write.c程序
12.14.1 功能描述
12.14.2 代码注释
12.14.3 用户程序读写操作过程
12.15 ope.c程序
12.15.1 功能描述
12.15.2 代码注释
12.16 exec.c程序
12.16.1 功能描述
12.16.2 代码注释
12.17 stat.c程序
12.17.1 功能描述
12.17.2 代码注释
12.18 fcntl.c程序
12.18.1 功能描述
12.18.2 代码注释
12.19 ioctl.c程序
12.19.1 功能描述
12.19.2 代码注释
第13章 内存管理
13.1 总体功能
13.1.1 内存分页管理机制
13.1.2 Linux中物理内存的管理和分配
13.1.3 Linux内核对线性地址空间的使用分配
13.1.4 页面出错异常处理
13.1.5 写时复制(copy on write)机制
13.1.6 需求加载(Load on demand)机制
13.2 Makefile文件
13.2.1 功能描述
13.2.2 代码注释
13.3 memory.c程序
13.3.1 功能描述
13.3.2 代码注释
13.4 page.s程序
13.4.1 功能描述
13.4.2 代码注释
13.4.3 页出错异处理
第14章 头文件
14.1 include/目录下的文件
14.2 a.out.h文件
14.2.1 功能描述
14.2.2 代码注释
14.2.3 a.out执行文件格式
14.3 const.h文件
14.3.1 功能描述
14.3.2 代码注释
14.4 ctype.h文件
14.4.1 功能描述
14.4.2 代码注释
14.5 erno.h文件
14.5.1 功能描述
14.5.2 代码注释
14.6 fcntl.h文件
14.6.1 功能描述
14.6.2 代码注释
14.7 signal.h文件
14.7.1 功能描述
14.7.2 文件注释
14.8 stdarg.h文件
14.8.1 功能描述
14.8.2 代码注释
14.9 stddef.h文件
14.9.1 功能描述
14.9.2 代码注释
14.10 string.h文件
14.10.1 功能描述
14.10.2代码注释
14.11 termios.h文件
14.11.1 功能描述
14.11.2 代码注释
14.11.3 控制字符TIME、MIN
14.12 time.h文件
14.12.1 功能描述
14.12.2 代码注释
14.13 unistd.h文件
14.13.1 功能描述
14.13.2 代码注释
14.14 utime.h文件
14.14.1 功能描述
14.14.2 代码注释
14.15 include/asm/目录下的文件
14.16 io.h文件
14.16.1 功能描述
14.16.2 代码注释
14.17 memory.h文件
14.17.1 功能描述
14.17.2 代码注释
14.18 segment.h文件
14.18.1 功能描述
14.18.2 代码注释
14.19 system.h文件
14.19.1 功能描述
14.19.2 代码注释
14.20 include/linux/目录下的文件
14.21 config.h文件
14.21.1 功能描述
14.21.2 代码注释
14.22 fdreg.h头文件
14.22.1 功能描述
14.22.2 文件注释
14.23 fs.h文件
14.23.1 功能描述
14.23.2 代码注释
14.24 hdreg.h文件
14.24.1 功能描述
14.24.2 代码注释
14.24.3 硬盘分区表
14.25 head.h文件
14.25.1 功能描述
14.25.2 代码注释
14.26 kernel.h文件
14.26.1 功能描述
14.26.2 代码注释
14.27 mm.h文件
14.27.1 功能描述
14.27.2 代码注释
14.28 sched.h文件
14.28.1 功能描述
14.28.2 代码注释
14.29 sys.h文件
14.29.1 功能描述
14.29.2 代码注释
14.30 try.h文件
14.30.1 功能描述
14.30.2 代码注释
14.31 include/sys/目录中的文件
14.32 stat.h文件
14.32.1 功能描述
14.32.2 代码注释
14.33 times.h文件
14.33.1 功能描述
14.33.2 代码注释
14.34 types.h文件
14.34.1 功能描述
14.34.2 代码注释
14.35 utsname.h文件
14.35.1 功能描述
14.35.2 代码注释
14.36 wait.h文件
14.36.1 功能描述
14.36.2 代码注释
第15章 库文件
15.1 Makefile文件
15.1.1 功能描述
15.1.2 代码注释
15.2 exit.c程序
15.2.1 _功能描述
15.2.2 代码注释
15.2.3 相关信息
15.3 close.c程序
15.3.1 功能描述
15.3.2 代码注释
15.4 ctype.c程序
15.4.1 功能描述
15.4.2 代码注释
15.5 dup.c程序
15.5.1 功能描述
15.5.2 代码注释
15.6 errno.c程序
15.6.1 功能描述
15.6.2 代码注释
15.7 execve.c程序
15.7.1功能描述
15.7.2 代码注释
15.8 malloc.c程序
15.8.1 功能描述
15.8.2 代码注释
15.9 open.c程序
15.9.1 功能描述
15.9.2 代码注释
15.10 setsid.c程序
15.10.1 功能描述
15.10.2 代码注释
15.11 string.c程序
15.11.1 功能描述
15.11.2 代码注释
15.12 wait.c程序
15.12.1 功能描述
15.12.2 代码注释
15.13 write.c程序
15.13.1 功能描述
15.13.2 代码注释
第16章 建造工具
16.1 build.c程序
16.1.1 功能概述
16.1.2 代码注释
16.2 MINIX可执行文件头部数据结构
第17章 实验环境设置与使用方法
17.1 Bochs仿真软件系统
17.1.1 设置Bochs系统
17.1.2 配置文件*.bxrc
17.2 在Bochs中运行Linux0.1x系统
17.2.1 软件包中文件说明
17.2.2 运行Linux0.1x系统
17.3 访问磁盘映像文件中的信息
17.3.1 使用WinImage工具软件
17.3.2 利用现有Linux系统
17.4 编译运行简单内核示例程序
17.5 利用Bochs调试内核
17.5.1 运行Bochs调配试程序
17.5.2 定位内核中的变理或数据结构
17.6 创建磁盘映像文件
17.6.1 利用Bochs软件自带的Image生成工具
17.6.2 在Linux系统下使用dd命令创建Image文件
17.6.3 利用WinImage创建DOS格式的软盘Image文件
17.7 制作根文件系统
17.7.1 根据文件系统和根文件设备
17.7.2 创建文件系统
17.7.3 Linux-0.11的Bochs配置文件
17.7.4 在hdc.img上建立根文件系统
17.7.5 使用硬盘Image上的根文件系统
17.8 在Linux0.11系统中编译0.11内核
17.9 在Redhat Linux 9系统中编译Linux0.11内核
17.9.1 修改makefile文件
17.9.2 修改汇编程序中的注释
17.9.3 内存位置对齐语句align值的修改
17.9.4 修改嵌入宏汇编程序
17.9.5 C程序变量在汇编语句中的引用表示
17.9.6 保护模式下调试显示函数
17.10 内核引导启动+根文件系统组成的集成盘
17.10.1 集成盘制作原理
17.10.2 集成盘的制作过程
17.10.3 运行集成盘系统
17.11 从硬盘启动:利用shoelace引导软件
17.11.1 shoelace程序设置路径
17.11.2 设置过程
17.11.3 问题和解决方法
17.12 利用GDB和Bochs调试内核源代码
17.12.1 编译带gdbstub的Bochs系统
17.12.2 编译带调试信息的Linux0.11内核
17.12.3 调试方法和步骤
附录
附录A 内核数据结构
附录B ASCII码表
附录C 常用C0、C1控制字符表
附录D 常用转义序列和控制序列
附录E 第1套键盘扫描码集
索引
参考文献
第1章 概述
1.1 Linux的诞生和发展
1.1.1 UNIX操作系统的诞生
1.1.2 MINIX操作系统
1.1.3 GNU计划
1.1.4 POSIX标准
1.1.5 Linux操作系统的诞生
1.1.6 Linux操作系统的版本的变迁
1.1.7 Linux名称的由来
1.1.8 早期Linux系统开发的主要贡献者
1.2 内容综述
第2章 微型计算机组成结构
2.1 微型计算机组成原理
2.2 I/O端口寻址和访问控制方式
2.2.1 I/O端口和寻址
2.2.2 接口访问控制
2.3 主存储器、BIOS和CMOS存储器
2.3.1 主存储器
2.3.2 基本输入/输出程序BIOS
2.3.3 CMOS存储器
2.4 控制器和控制卡
2.4.1 中断控制器
2.4.2 DMA控制器
2.4.3 定时/计数器
2.4.4 键盘控制器
2.4.5 串行控制卡
2.4.6 显示控制
2.4.7 软盘和硬盘控制器
第3章 内核编程语言和环境
3.1 as86汇编器
3.1.1 as86汇编语言语法
3.1.2 as86汇编语言程序
3.1.3 as86汇编语言程序的编译和链接
3.1.4 as86和ld86使用方法和选项
3.2 GNU as汇编
3.2.1 编译as汇编语言程序
3.2.2 as汇编语法
3.2.3 指令语名、操作数和寻址
3.2.4 区与重定位
3.2.5 符号
3.2.6 as汇编命令
3.2.7 编写16位代码
3.2.8 as汇编器命令行选项
3.3 C语言程序
3.3.1 C程序编译和链接
3.3.2 嵌入汇编
3.3.3 圆括号中的组合语名
3.3.4 寄存器变量
3.3.5 内联函数
3.4 C与汇编程序的相互调用
3.4.1 C函数调用机制
3.4.2 在汇编程序中调用C函数
3.4.3 在C程序中调用汇编函数
3.5 Linux 0.11目标文件格式
3.5.1 目标文件格式
3.5.2 Linux 0.11中的目标文件格式
3.5.3 链接程序输出
3.5.4 链接程序预定义变量
3.5.5 System.map文件
3.6 Make程序和Makefile文件
第4章 80X86保护模式及其编程
4.1 80X86系统寄存器和系统指令
4.1.1 标志寄存器
4.1.2 内存管理寄存器
4.1.3 控制寄存器
4.1.4 系统指令
4.2 保护模式内存管理
4.2.1 内存寻址
4.2.2 地址变换
4.2.3 保护
4.3 分段机制
4.3.1 段的定义
4.3.2 段描述符表
4.3.3 段选择符
4.3.4 段描述符
4.3.5 代码和数据段描述符类型
4.3.6 系统描述符类型
4.4 分页机制
4.4.1 页表结构
4.4.2 页表项格式
4.4.3 虚拟存储
4.5 保护
4.5.1 段级保护
4.5.2 访问数据段时的特权级检查
4.5.3 代码段之间转移控制的时特权级检查
4.5.4 页级保护
4.5.5 组合页级和段级保护
4.6 中断和异常处理
4.6.1 异常和中断向量
4.6.2 中断源和异常源
4.6.3 异常分类
4.6.4 程序或任务的重新执行
4.6.5 开启和禁止中断
4.6.6 异常和中断的优先级
4.6.7 中断描述符表
4.6.8 IDT描述符
4.6.9 异常与中断处理
4.6.10 中断处理任务
4.6.11 错误码
4.7 任务管理
4.7.1 任务的结构和状态
4.7.2 任务的执行
4.7.3 任务管理数据结构
4.7.4 任务切换
4.7.5 任务链
4.7.6 任务地址空间
4.8 保护模式编程初始化
4.8.1 进入保护模式时的初始化操作
4.8.2 模式切换
4.9 一个简单的多任务内核实例
4.9.1 多任务程序结构和工作原理
4.9.2 引导启动程序boot.s
4.9.3 多任务内核程序head.s
第5章 Linux内核体结构
5.1 Linux内核模式
5.2 Linux内核系统体系结构
5.3 Linux内核对内存的管理和使用
5.3.1 物理内存
5.3.2 内存地址空间概念
5.3.3 内存分段机制
5.3.4 内存分页管理
5.3.5 CPU多任务和保护方式
5.3.6 虚拟地址、线性地址和物理村址之间的关系
5.3.7 用户申请内存的动态分配
5.4 Linux系统的中断机制
5.4.1 中操作原理
5.4.2 80X86微机的中断子系统
5.4.3 中断向量表
5.4.4 Linux内核的中断处理
5.4.5 标志寄存器扣断标志
5.5 Linux的系统调用
5.5.1 系统调用接口
5.5.2 系统调用处理过程
5.5.3 Linux系统调用的参数传递方式
5.6 系统时间和定时
5.6.1 系统时间
5.6.2 系统定时
5.7 Linux进程控制
5.7.1 任务数据结构
5.7.2 进程运行状态
5.7.3 进程初始化
5.7.4 创建新进程
5.7.5 进程调度
5.7.6 终止进程
5.8 Linux系统中堆栈的使用方法
5.8.1 初始化阶段
5.8.2 任务的堆栈
5.8.3 任务内核态堆栈与用户态堆栈之间的切换
5.9 Linux 0.11采用的文件系统
5.10 Linux 内核源代码的目录结构
5.10.1 内核主目录linux
5.10.2 引导启动程序目录boot
5.10.3 文件系统目录fs
5.10.4 头文件主目录include
5.10.5 内核初始化程序目录init
5.10.6 内核程序主目录kernel
5.10.7 内核库函数目录lib
5.10.8 内存管理程序目录mrn
5.10.9 编译内核工具程序目录tools
5.11 内核系统与应用程序的关系
5.12 linux/Makefile文件
5.12.1 功能描述
5.12.2 代码注释
第6章 引导启动程序
6.1 总体功能
6.2 bootsect.s程序
6.2.1 功能描述
6.2.2 代码注释
6.2.3 其他信息
6.3 setup.s程序
6.3.1 功能描述
6.3.2 代码注释
6.3.3 其他信息
6.4 head.s程序
6.4.1 功能描述
6.4.2 代码注释
6.4.3 其他信息
第7章 初始化程序
7.1 main.c程序
7.1.1 功能描述
7.1.2 代码注释
7.1.3 其他信息
7.2 环境初始化工作
第8章 内核代码
8.1 总体功能
8.1.1 中断处理程序
8.1.2 系统调用处理相关程序
8.1.3 其他通用类程序
8.2 Makefile文件
8.2.1 功能简介
8.2.2 文件注释
8.3 asm.s程序
8.3.1 功能描述
8.3.2 代码注释
8.3.3 Intel保留中断向量的定义
8.4 traps.c程序
8.4.1 功能描述
8.4.2 代码注释
8.5 system-call.s程序
8.5.1 功能描述
8.5.2 代码注释
8.5.3 其他信息
8.6 mktime.c程序
8.6.1 功能描述
8.6.2 代码注释
8.6.3 闰年的计算方法
8.7 sched.c程序
8.7.1 功能描述
8.7.2 代码注释
8.7.3 其他信息
8.8 signal.c程序
8.8.1 功能描述
8.8.2 代码注释
8.8.3 进程信号说明
8.9 exit.c程序
8.9.1 功能描述
8.9.2 代码注释
8.10 fork.c程序
8.10.1 功能描述
8.10.2 代码注释
8.10.3 任务状态段信息
8.11 sys.c程序
8.11.1功能描述
8.11.2 代码注释
8.12 vsprintf.c程序
8.12.1 功能描述
8.12.2 代码注释
8.12.3 vsprintf()的格式字符串
8.12.4 与当前版本的区别
8.13 printk.c程序
8.13.1 功能描述
8.13.2 代码注释
8.14 panic.c程序
8.14.1 功能描述
8.14.2 代码注释
第9章块设计驱动程序
9.1 总体功能
9.1.1 块设备请求项和请求队列
9.1.2 块设备操作方式
9.2 Makefile文件
9.2.1 功能描述
9.2.2 代码注释
9.3 blk.h文件
9.3.1 功能描述
9.3.2 代码注释
9.4 hd.c程序
9.4.1 功能描述
9.4.2 代码注释
9.4.3 其他信息
9.5 ll_rw_blk.c程序
9.5.1 功能描述
9.5.2 代码注释
9.6 ramdisk.c程序
9.6.1 功能描述
9.6.2 代码注释
9.7 floppy.c程序
9.7.1 功能描述
9.7.2 代码注释
9.7.3 其他信息
第10章 字符设备驱动程序
10.1 总体功能
10.1.1 终端驱动程序基本原理
10.1.2 Linux支持的终端设备类型
10.1.3 终端基本数据结构
10.1.4 规范模式和非规范模式
10.1.5 控制台终端和串行终端设备
10.1.6 终端驱动程序接口
10.2 Makefile文件
10.2.1 功能描述
10.2.2 代码注释
10.3 keyboard.S程序
10.3.1 功能描述
10.3.2 代码注释
10.3.3 其他信息
10.4 comsole.c程序
10.4.1 功能描述
10.4.2 代码注释
10.4.3 其他信息
10.5 serial.c程序
10.5.1 功能描述
10.5.2 代码注释
10.5.3 异步串行通信控制器UART
10.6 rs_io.s程序
10.6.1 功能描述
10.6.2 代码注释
10.7 tty_io.c程序
10.7.1 功能描述
10.7.2 代码注释
10.8 tty_ioctl.c程序
10.8.1 功能描述
10.8.2 代码注释
10.8.3 波特率与波特率因子
第11章 数学协处理器
11.1 Makefile文件
11.1.1 功能描述
11.1.2 代码注释
11.2 math_emulate.c程序
11.2.1 功能描述
11.2.2 代码注释
第12章 文件系统
12.1 总体功能
12.1.1 MINIX文件系统
12.1.2 文件类型、属性和目录项
12.1.3 高速缓冲区
12.1.4 文件系统底层函数
12.1.5 文件中数据的访问操作
12.1.6 文件和目录管理系统调用
12.1.7 360 KB软盘中文件系统实例分析
12.2 Makefile文件
12.2.1 功能描述
12.2.2 代码注释
12.3 bufer.c程序
12.3.1 功能描述
12.3.2 代码注释
12.4 bitmap.c程序
12.4.1 功能描述
12.4.2 代码注释
12.5 truncte.c程序
12.5.1 功能描述
12.5.2 代码注释
12.6 inoe.c程序
12.6.1 功能描述
12.6.2 代码注释
12.7 super.c程序
12.7.1 功能描述
12.7.2 代码注释
12.8 namei.c程序
12.8.1 功能描述
12.8.2 代码注释
12.9 file_table.c程序
12.9.1 功能描述
12.9.2 代码注释
12.10 block_dev.c程序
12.10.1 功能描述
12.10.2 代码注释
12.11 file_dev.c程序
12.11.1 功能描述
12.11.2 代码注释
12.12 pipe.c程序
12.12.1 功能描述
12.12.2 代码注释
12.13 char_dev.c程序
12.13.1 功能描述
12.13.2 代码注释
12.14 read_write.c程序
12.14.1 功能描述
12.14.2 代码注释
12.14.3 用户程序读写操作过程
12.15 ope.c程序
12.15.1 功能描述
12.15.2 代码注释
12.16 exec.c程序
12.16.1 功能描述
12.16.2 代码注释
12.17 stat.c程序
12.17.1 功能描述
12.17.2 代码注释
12.18 fcntl.c程序
12.18.1 功能描述
12.18.2 代码注释
12.19 ioctl.c程序
12.19.1 功能描述
12.19.2 代码注释
第13章 内存管理
13.1 总体功能
13.1.1 内存分页管理机制
13.1.2 Linux中物理内存的管理和分配
13.1.3 Linux内核对线性地址空间的使用分配
13.1.4 页面出错异常处理
13.1.5 写时复制(copy on write)机制
13.1.6 需求加载(Load on demand)机制
13.2 Makefile文件
13.2.1 功能描述
13.2.2 代码注释
13.3 memory.c程序
13.3.1 功能描述
13.3.2 代码注释
13.4 page.s程序
13.4.1 功能描述
13.4.2 代码注释
13.4.3 页出错异处理
第14章 头文件
14.1 include/目录下的文件
14.2 a.out.h文件
14.2.1 功能描述
14.2.2 代码注释
14.2.3 a.out执行文件格式
14.3 const.h文件
14.3.1 功能描述
14.3.2 代码注释
14.4 ctype.h文件
14.4.1 功能描述
14.4.2 代码注释
14.5 erno.h文件
14.5.1 功能描述
14.5.2 代码注释
14.6 fcntl.h文件
14.6.1 功能描述
14.6.2 代码注释
14.7 signal.h文件
14.7.1 功能描述
14.7.2 文件注释
14.8 stdarg.h文件
14.8.1 功能描述
14.8.2 代码注释
14.9 stddef.h文件
14.9.1 功能描述
14.9.2 代码注释
14.10 string.h文件
14.10.1 功能描述
14.10.2代码注释
14.11 termios.h文件
14.11.1 功能描述
14.11.2 代码注释
14.11.3 控制字符TIME、MIN
14.12 time.h文件
14.12.1 功能描述
14.12.2 代码注释
14.13 unistd.h文件
14.13.1 功能描述
14.13.2 代码注释
14.14 utime.h文件
14.14.1 功能描述
14.14.2 代码注释
14.15 include/asm/目录下的文件
14.16 io.h文件
14.16.1 功能描述
14.16.2 代码注释
14.17 memory.h文件
14.17.1 功能描述
14.17.2 代码注释
14.18 segment.h文件
14.18.1 功能描述
14.18.2 代码注释
14.19 system.h文件
14.19.1 功能描述
14.19.2 代码注释
14.20 include/linux/目录下的文件
14.21 config.h文件
14.21.1 功能描述
14.21.2 代码注释
14.22 fdreg.h头文件
14.22.1 功能描述
14.22.2 文件注释
14.23 fs.h文件
14.23.1 功能描述
14.23.2 代码注释
14.24 hdreg.h文件
14.24.1 功能描述
14.24.2 代码注释
14.24.3 硬盘分区表
14.25 head.h文件
14.25.1 功能描述
14.25.2 代码注释
14.26 kernel.h文件
14.26.1 功能描述
14.26.2 代码注释
14.27 mm.h文件
14.27.1 功能描述
14.27.2 代码注释
14.28 sched.h文件
14.28.1 功能描述
14.28.2 代码注释
14.29 sys.h文件
14.29.1 功能描述
14.29.2 代码注释
14.30 try.h文件
14.30.1 功能描述
14.30.2 代码注释
14.31 include/sys/目录中的文件
14.32 stat.h文件
14.32.1 功能描述
14.32.2 代码注释
14.33 times.h文件
14.33.1 功能描述
14.33.2 代码注释
14.34 types.h文件
14.34.1 功能描述
14.34.2 代码注释
14.35 utsname.h文件
14.35.1 功能描述
14.35.2 代码注释
14.36 wait.h文件
14.36.1 功能描述
14.36.2 代码注释
第15章 库文件
15.1 Makefile文件
15.1.1 功能描述
15.1.2 代码注释
15.2 exit.c程序
15.2.1 _功能描述
15.2.2 代码注释
15.2.3 相关信息
15.3 close.c程序
15.3.1 功能描述
15.3.2 代码注释
15.4 ctype.c程序
15.4.1 功能描述
15.4.2 代码注释
15.5 dup.c程序
15.5.1 功能描述
15.5.2 代码注释
15.6 errno.c程序
15.6.1 功能描述
15.6.2 代码注释
15.7 execve.c程序
15.7.1功能描述
15.7.2 代码注释
15.8 malloc.c程序
15.8.1 功能描述
15.8.2 代码注释
15.9 open.c程序
15.9.1 功能描述
15.9.2 代码注释
15.10 setsid.c程序
15.10.1 功能描述
15.10.2 代码注释
15.11 string.c程序
15.11.1 功能描述
15.11.2 代码注释
15.12 wait.c程序
15.12.1 功能描述
15.12.2 代码注释
15.13 write.c程序
15.13.1 功能描述
15.13.2 代码注释
第16章 建造工具
16.1 build.c程序
16.1.1 功能概述
16.1.2 代码注释
16.2 MINIX可执行文件头部数据结构
第17章 实验环境设置与使用方法
17.1 Bochs仿真软件系统
17.1.1 设置Bochs系统
17.1.2 配置文件*.bxrc
17.2 在Bochs中运行Linux0.1x系统
17.2.1 软件包中文件说明
17.2.2 运行Linux0.1x系统
17.3 访问磁盘映像文件中的信息
17.3.1 使用WinImage工具软件
17.3.2 利用现有Linux系统
17.4 编译运行简单内核示例程序
17.5 利用Bochs调试内核
17.5.1 运行Bochs调配试程序
17.5.2 定位内核中的变理或数据结构
17.6 创建磁盘映像文件
17.6.1 利用Bochs软件自带的Image生成工具
17.6.2 在Linux系统下使用dd命令创建Image文件
17.6.3 利用WinImage创建DOS格式的软盘Image文件
17.7 制作根文件系统
17.7.1 根据文件系统和根文件设备
17.7.2 创建文件系统
17.7.3 Linux-0.11的Bochs配置文件
17.7.4 在hdc.img上建立根文件系统
17.7.5 使用硬盘Image上的根文件系统
17.8 在Linux0.11系统中编译0.11内核
17.9 在Redhat Linux 9系统中编译Linux0.11内核
17.9.1 修改makefile文件
17.9.2 修改汇编程序中的注释
17.9.3 内存位置对齐语句align值的修改
17.9.4 修改嵌入宏汇编程序
17.9.5 C程序变量在汇编语句中的引用表示
17.9.6 保护模式下调试显示函数
17.10 内核引导启动+根文件系统组成的集成盘
17.10.1 集成盘制作原理
17.10.2 集成盘的制作过程
17.10.3 运行集成盘系统
17.11 从硬盘启动:利用shoelace引导软件
17.11.1 shoelace程序设置路径
17.11.2 设置过程
17.11.3 问题和解决方法
17.12 利用GDB和Bochs调试内核源代码
17.12.1 编译带gdbstub的Bochs系统
17.12.2 编译带调试信息的Linux0.11内核
17.12.3 调试方法和步骤
附录
附录A 内核数据结构
附录B ASCII码表
附录C 常用C0、C1控制字符表
附录D 常用转义序列和控制序列
附录E 第1套键盘扫描码集
索引
参考文献
猜您喜欢