第1章Linux操作系统原理 1
1.1 Linux操作系统简介 1
1.1.1 Linux内核的构成 4
1.1.2 Linux操作系统的特征 5
1.2 Linux内核概述 6
1.2.1 Linux内核的版本 9
1.2.2研究Linux内核的意义 9
1.3 Linux运行的硬件基础 10
1.3.1i386寄存器和系统指令 10
1.3.2分段机制 15
1.3.3分页机制 23
1.4 Linux内核体系结构 26
1.4.1 Linux内核体系结构及模式 27
1.4.2 Linux内核源代码目录结构 28
1.4.3 Linux内核的编译 32
第2章 引导启动与初始化程序 36
2.1引导启动程序(boot) 36
2.1.1总体功能 36
2.1.2 bootsect.s文件 37
2.1.3 setup.s文件 42
2.1.4 head.s文件 47
2.2初始化程序(init ) 51
2.2.1概述 51
2.2.2 main.c文件 51
第3章 头文件 57
3.1 include/目录下的文件 57
3.2 a.out.h文件 57
3.3 const.h文件 61
3.4 ctype.h文件 62
3.5 errno.h文件 63
3.6 fcntl.h文件 64
3.7 signal.h文件 65
3.8 stdarg.h文件 67
3.9 stddef.h文件 68
3.10 string.h文件 68
3.11 termios.h文件 77
3.12 time.h文件 82
3.13 unistd.h文件 83
3.14 utime.h文件 89
3.15 include/asm目录下的文件 90
3.16 io.h文件 90
3.17 memory.h文件 91
3.18 segment.h文件 91
3.19 system.h文件 93
3.20 include/linux/目录下的文件 95
3.21 config.h文件 95
3.22 fdreg.h头文件 96
3.22.1功能描述 96
3.22.2代码注释 97
3.23 fs.h文件 99
3.24 hdreg.h文件 103
3.25 head.h文件 105
3.26 kemel.h文件 105
3.26.1功能描述 105
3.26.2代码注释 105
3.27 mm.h文件 106
3.28 sched.h文件 107
3.29 sys.h文件 112
3.30 tty.h文件 114
3.31 math emu.h文件 116
3.31.1功能描述 116
3.21.2代码注释 116
3.32 minix fs.h文件 120
3.33 timer.h文件 121
3.34 include/sys/目录下的文件 122
3.35 param.h文件 122
3.36 ptrace.h文件 122
3.37 resource.h文件 124
3.38 stat.h文件 125
3.39 time.h文件 126
3.40 times.h文件 127
3.41 types.h文件 128
3.42 utsname.h文件 129
3.43 wait.h文件 129
第4章 中断处理与系统调用 130
4.1总体功能 130
4.1.1中断处理 130
4.1.2系统调用 131
4.2重要数据结构 132
4.3 sys.h文件 132
4.4 unistd.h文件 134
4.5 IDT初始化——_set_gate 141
4.6 traps.c文件 141
4.7 sys.c文件 146
4.8 system_call.s文件 156
4.9 asm.s文件 162
4.10 ptrace.c文件 165
第5章 进程控制 172
5.1总体概述 172
5.2重要数据结构 174
5.2.1 task_struct 174
5.2.2 tss _struct 175
5.2.3 i387_struct 176
5.2.4 task union,init_task, current 176
5.2.5 sigaction 176
5.2.6 timer_list 176
5.3 fork.c文件 177
5.3.1功能描述 177
5.3.2代码注释 177
5.4 sched.c文件 180
5.4.1功能描述 181
5.4.2代码注释 181
5.5 signal.c文件 190
5.5.1功能描述 190
5.5.2代码注释 190
5.6 exit.c文件 195
5.6.1功能描述 195
5.6.2代码注释 195
5.7 vsprintf. c文件 203
5.8 printk.c文件 208
5.9 panic.c文件 209
第6章 字符设备驱动程序 210
6.1总体功能 210
6.1.1 Linux支持的终端设备类型 210
6.1.2 Linux字符设备驱动程序 212
6.1.3字符设备驱动程序功能 212
6.2重要数据结构 213
6.3 console.c文件 214
6.4 keyboard.s文件 238
6.5 pty.c文件 252
6.6 rs_io.s文件 253
6.7 serial.c文件 256
6.8 tty_ io.c文件 258
6.8.1功能描述 258
6.8.2代码注释 259
6.9 tty_ioctl.c文件 268
第7章 块设备驱动程序 276
7.1总体功能 276
7.1.1 Linux设备管理 276
7.1.2 Linux块设备驱动程序 277
7.1.3块设备驱动程序功能 278
7.2重要数据结构 279
7.3 blk.h文件 280
7.4 floppy.c文件 283
7.5 hd.c文件 293
7.5.1功能描述 293
7.5.2代码注释 294
7.6 Il_ rw_ blk.c文件 303
7.7 ramdisk.c文件 308
第8章 文件系统 311
8.1总体功能 311
8.1.1 VFS虚拟文件系统 312
8.1.2 Minix文件系统 312
8.1.3文件系统程序功能 313
8.2重要数据结构 314
8.3 buffer.c文件 317
8.3.1功能描述 317
8.3.2代码注释 318
8.4 inode.c文件 326
8.4.1功能描述 326
8.4.2代码注释 327
8.5 namei.c文件 332
8.5.1功能描述 332
8.5.2代码注释 333
8.6 super.c文件 342
8.6.1功能描述 342
8.6.2代码注释 342
8.7 file_table.c文件 349
8.8 block_dev.c文件 349
8.8.1功能描述 349
8.8.2代码注释 349
8.9 pipe.c文件 351
8.10 char_dev.c文件 354
8.11 read_write.c文件 358
8.12 open.c文件 360
8.13 exec.c文件 365
8.14 stat.c文件 372
8.15 fcntl.c文件 374
8.16 ioctl.c文件 376
8.17 select.c文件 377
8.18 Minix的bitmap.c文件 383
8.19 Minix的inode.c文件 387
8.20 Minix的truncate.c文件 391
8.21 Minix的namei.c文件 394
8.22 Minix的file_dev.c文件 411
8.23 Minix的minix_op.c文件 413
第9章 内存管理 415
9.1总体功能描述 415
9.1.1内存分页机制管理 415
9.1.2 Linux中内存的使用 417
9.2 memory.c文件 417
9.2.1功能描述 417
9.2.2代码分析 417
9.3 swap.c文件 429
第10章Linux内核编程环境 435
10.1建造工具介绍 435
10.1.1总体功能 435
10.1.2重要数据结构 435
10.1.3 build.c文件 436
10.2在Redhat 9下修改和编译Linux 0.95内核 439
10.2.1源代码中注释语句的修改 439
10.2.2源代码中makefile文件的修改 439
10.2.3源代码中align值的修改 440
10.2.4源代码中嵌入宏汇编程序的修改 440
10.2.5源代码中汇编程序C变量的修改 440
10.2.6在保护模式下调试显示函数 440
10.2.7编译Linux 0.95内核 441
10.3在Bochs上运行Linux 0.95系统 441
10.3.1创建磁盘映像文件 441
10.3.2访问磁盘映像文件 441
10.3.3创建文件系统 442
10.3.4在硬盘映像文件上建立根文件系统 442
10.3.5使用硬盘映像上的根文件系统运行Linux 0.95 443