第1章 概述 1
1.1 Linux的诞生和发展 1
1.2 内容综述 8
1.3 本章小结 11
第2章 微型计算机组成结构 12
2.1 微型计算机组成原理 12
2.2 I/O端口寻址和访问控制方式 14
2.3 主存储器、BIOS和CMOS存储器 16
2.4 控制器和控制卡 17
2.5 本章小结 24
第3章 内核编程语言和环境 25
3.1 as86汇编器 25
3.2 GNU as汇编 31
3.3 C语言程序 41
3.4 C与汇编程序的相互调用 48
3.5 Linux 0.12目标文件格式 55
3.6 Make程序和Makefile文件 63
3.7 本章小结 68
第4章 80x86保护模式及其编程 69
4.1 80x86系统寄存器和系统指令 69
4.2 保护模式内存管理 74
4.3 分段机制 78
4.4 分页机制 86
4.5 保护 90
4.6 中断和异常处理 99
4.7 任务管理 107
4.8 保护模式编程初始化 115
4.9 一个简单的多任务内核实例 118
第5章 Linux内核体系结构 127
5.1 Linux内核模式 127
5.2 Linux内核系统体系结构 128
5.3 Linux内核对内存的管理和使用 129
5.4 中断机制 139
5.5 Linux的系统调用 143
5.6 系统时间和定时 145
5.7 Linux进程控制 146
5.8 Linux系统中堆栈的使用方法 154
5.9 Linux 0.12采用的文件系统 158
5.10 Linux内核源代码的目录结构 158
5.11 内核系统与应用程序的关系 164
5.12 linux/Makefile文件 165
5.13 本章小结 166
第6章 引导启动程序(boot) 167
6.1 总体功能 167
6.2 bootsect.S程序 169
6.3 setup.S程序 170
6.4 head.s程序 181
6.5 本章小结 185
第7章 初始化程序(init) 186
7.1 main.c程序 186
7.2 环境初始化工作 191
7.3 本章小结 193
第8章 内核代码(kernel) 194
8.1 总体功能 194
8.2 asm.s程序 197
8.3 traps.c程序 198
8.4 sys_call.s程序 199
8.5 mktime.c程序 203
8.6 sched.c程序 203
8.7 signal.c程序 209
8.8 exit.c程序 218
8.9 fork.c程序 218
8.10 sys.c程序 220
8.11 vsprintf.c程序 221
8.12 printk.c程序 223
8.13 panic.c程序 223
8.14 本章小结 224
第9章 块设备驱动程序(block driver) 225
9.1 总体功能 226
9.2 blk.h文件 229
9.3 hd.c程序 229
9.4 ll_rw_blk.c程序 241
9.5 ramdisk.c程序 241
9.6 floppy.c程序 243
第10章 字符设备驱动程序(char driver) 256
10.1 总体功能 256
10.2 keyboard.S程序 265
10.3 console.c程序 270
10.4 serial.c程序 277
10.5 rs io.s程序 282
10.6 tty_io.c程序 283
10.7 tty_ioctl.c程序 284
第11章 数学协处理器(math) 286
11.1 总体功能描述 286
11.2 math-emulate.c程序 293
11.3 error.c程序 294
11.4 ea.c程序 295
11.5 convert.c程序 296
11.6 add.c程序 296
11.7 compare.c程序 296
11.8 get_put.c程序 297
11.9 mul.c程序 297
11.10 div.c程序 297
第12章 文件系统(fs) 298
12.1 总体功能 298
12.2 buffer.c程序 312
12.3 bitmap.c程序 317
12.4 truncate.c程序 318
12.5 inode.c程序 318
12.6 super.c程序 320
12.7 namei.c程序 321
12.8 file_table.c程序 322
12.9 block_dev.c程序 322
12.10 file_dev.c程序 323
12.11 pipe.c程序 323
12.12 char_dev.c程序 324
12.13 read_write.c程序 325
12.14 open.c程序 327
12.15 exec.c程序 327
12.16 stat.c程序 334
12.17 fcntl.c程序 334
12.18 ioctl.c程序 335
12.19 select.c程序 335
第13章 内存管理(mm) 340
13.1 总体功能 340
13.2 memory.c程序 345
13.3 page.s程序 347
13.4 swap.c程序 348
第14章 头文件(include) 349
14.1 include/目录下的文件 349
14.2 a.out.h文件 350
14.3 const.h文件 355
14.4 ctype.h文件 355
14.5 errno.h文件 355
14.6 fcntl.h文件 356
14.7 signal.h文件 356
14.8 stdarg.h文件 356
14.9 stddef.h文件 356
14.10 string.h文件 357
14.11 termios.h文件 357
14.12 time.h文件 358
14.13 unistd.h文件 359
14.14 utime.h文件 359
14.15 include/asm/目录下的文件 359
14.16 io.h文件 359
14.17 memory.h文件 359
14.18 segment.h文件 359
14.19 system.h文件 360
14.20 include/linux/目录下的文件 361
14.21 config.h文件 361
14.22 fdreg.h头文件 362
14.23 fs.h文件 362
14.24 hdreg.h文件 363
14.25 head.h文件 363
14.26 kernel.h文件 364
14.27 math_emu.h文件 364
14.28 mm.h文件 364
14.29 sched.h文件 364
14.30 sys.h文件 365
14.31 tty.h文件 365
14.32 include/sys/目录中的文件 365
14.33 param.h文件 365
14.34 resource.h文件 366
14.35 stat.h文件 366
14.36 time.h文件 366
14.37 times.h文件 366
14.38 ltypes.h文件 366
14.39 utsname.h文件 367
14.40 wait.h文件 367
第15章 库文件(lib) 368
15.1 exit.c程序 369
15.2 close.c程序 369
15.3 ctype.c程序 369
15.4 dup.c程序 369
15.5 errno.c程序 369
15.6 execve.c程序 369
15.7 malloc.c程序 369
15.8 open.c程序 371
15.9 setsid.c程序 371
15.10 string.c程序 372
15.11 wait.c程序 372
15.12 write.c程序 372
第16章 建造工具(tools) 373
第17章 实验环境设置与使用方法 375
17.1 Bochs仿真软件系统 375
17.2 在Bochs中运行Linux 0.1x系统 379
17.3 访问磁盘映像文件中的信息 383
17.4 编译运行简单内核示例程序 385
17.5 利用Bochs调试内核 387
17.6 创建磁盘映像文件 393
17.7 制作根文件系统 396
17.8 在Linux 0.12系统上编译0.12内核 402
17.9 在Fedora系统下编译Linux 0.1X内核 403
17.10 内核引导启动+根文件系统组成的集成盘 406
17.11 利用GDB和Bochs调试内核源代码 410
参考文献 415
附录 417