前言
第1章概述1
1.1 Linux的诞生和发展1
1.1.1 UNIX、MINIX、GNU和POSIX1
1.1.2 Linux操作系统的诞生和版本的变迁1
1.2 内容综述3
1.3 本章小结5
1.4 习题6
第2章Linux内核体系结构7
2.1 Linux内核模式和体系结构7
2.2 Linux中断机制9
2.3 Linux系统定时10
2.4 Linux内核进程控制11
2.4.1 任务数据结构11
2.4.2 进程运行状态11
2.4.3 进程初始化12
2.4.4 创建新进程14
2.4.5 进程调度14
2.4.6 终止进程15
2.5 Linux内核对内存的使用方法16
2.6 Linux系统中堆栈的使用方法19
2.6.1 初始化阶段19
2.6.2 任务的堆栈20
2.6.3 内核态与用户态堆栈之间的切换21
2.7 Linux内核源代码的目录结构21
2.7.1 引导启动程序目录boot22
2.7.2 文件系统目录fs22
2.7.3 头文件主目录include23
2.7.4 内核初始化程序目录init23
2.7.5 内核程序主目录kernel24
2.7.6 内核库函数目录lib25
2.7.7 内存管理程序目录mm26
2.7.8 编译内核工具程序目录tools26
2.8 内核系统与用户程序的关系26
2.9 Linux内核的编译实验环境26
2.10 linux/Makefile文件28
2.11 本章小结34
2.12 习题35
第3章内核引导启动程序36
3.1 总体功能描述36
3.2 程序分析37
3.2.1 bootsect.s程序37
3.2.2 setup.s程序44
3.2.3 head.s程序52
3.3 本章小结60
3.4 习题60
第4章内核初始化过程61
4.1 main.c程序分析61
4.2 本章小结68
4.3 习题69
第5章进程调度与系统调用70
5.1 总体功能描述70
5.1.1 中断处理程序70
5.1.2 系统调用处理相关程序71
5.2 程序分析72
5.2.1 asm.s程序72
5.2.2 traps.c程序77
5.2.3 systemcall.s程序83
5.2.4 mktime.c程序91
5.2.5 sched.c程序92
5.2.6 signal.c程序103
5.2.7 exit.c程序108
5.2.8 fork.c程序112
5.2.9 sys.c程序117
5.2.10 vsprintf.c程序122
5.2.11 printk.c程序127
5.2.12 panic.c程序128
5.3 本章小结129
5.4 习题129
第6章输入输出系统——块设备驱动程序130
6.1 总体功能描述130
6.1.1 块设备请求项和请求队列130
6.1.2 块设备操作方式132
6.2 程序分析133
6.2.1 blk.h文件133
6.2.2 hd.c程序136
6.2.3 llrwblk.c程序149
6.2.4 ramdisk.c程序154
6.2.5 floppy.c程序157
6.3 本章小结170
6.4 习题170
第7章输入输出系统——字符设备驱动程序171
7.1 总体功能描述171
7.1.1 终端驱动程序基本原理171
7.1.2 终端基本数据结构172
7.1.3 规范模式和非规范模式174
7.1.4 控制台驱动程序175
7.1.5 串行终端驱动程序176
7.1.6 终端驱动程序接口177
7.2 程序分析177
7.2.1 keyboard.S程序177
7.2.2 console.c程序191
7.2.3 serial.c程序210
7.2.4 rsio.s程序213
7.2.5 tty_io.c程序216
7.2.6 tty_ioctl.c程序225
7.3 本章小结230
7.4 习题230
第8章数学协处理器231
8.1 mathemulation.c程序分析231
8.2 本章小结232
8.3 习题232
第9章文件系统233
9.1 总体功能描述233
9.1.1 MINIX文件系统233
9.1.2 高速缓冲区237
9.1.3 文件系统底层函数237
9.1.4 文件中数据的访问操作237
9.2 程序分析239
9.2.1 buffer.c程序239
9.2.2 bitmap.c程序251
9.2.3 inode.c程序255
9.2.4 super.c程序264
9.2.5 namei.c程序272
9.2.6 filetable.c程序292
9.2.7 blockdev.c程序292
9.2.8 filedev.c程序295
9.2.9 pipe.c程序297
9.2.10 chardev.c程序300
9.2.11 readwrite.c程序303
9.2.12 truncate.c程序306
9.2.13 open.c程序307
9.2.14 exec.c程序312
9.2.15 stat.c程序322
9.2.16 fcntl.c程序323
9.2.17 ioctl.c程序325
9.3 本章小结326
9.4 习题326
第10章内存管理328
10.1 总体功能描述328
10.1.1 内存分页管理机制328
10.1.2 Linux中内存的管理和分配331
10.1.3 写时复制机制332
10.2 程序分析332
10.2.1 memory.c程序332
10.2.2 page.s程序345
10.3 本章小结346
10.4 习题346
第11章包含文件347
11.1 程序分析347
11.1.1 include/目录下的文件347
11.1.2 a.out.h文件347
11.1.3 const.h文件356
11.1.4 ctype.h文件356
11.1.5 errno.h文件357
11.1.6 fcntl.h文件359
11.1.7 signal.h文件360
11.1.8 stdarg.h文件362
11.1.9 stddef.h文件363
11.1.10 string.h文件363
11.1.11 termios.h文件372
11.1.12 time.h文件379
11.1.13 unistd.h文件380
11.1.14 utime.h文件385
11.1.15 incl