前言 1
第一章 绪论 9
Linux与其他类Unix内核的比较 10
硬件的依赖性 13
Linux版本 15
操作系统基本概念 15
Unix文件系统概述 20
Unix内核概述 26
第二章 存储器寻址 41
存储器地址 41
硬件中的分段 42
Linux中的分段 47
硬件中的分页 51
Linux中的分页 62
第三章 进程 79
进程、轻量级进程和线程 79
进程描述符 80
进程切换 96
创建进程 106
撤销进程 113
第四章 中断和异常 116
中断信号的作用 117
中断和异常 118
中断和异常处理程序的嵌套执行 128
初始化中断描述符表 129
异常处理 131
中断处理 134
软中断、tasklet及下半部分 152
从中断和异常返回 163
第五章 内核同步 168
内核控制路径 168
什么时候同步是不必要的 169
同步原语 170
对内核数据结构的同步访问 190
避免竞争条件的实例 196
第六章 定时测量 199
硬时钟 199
Linux计时体系结构 202
CPU的分时(time-sharing) 208
更新时间和日期 209
更新系统统计数 210
软定时器(Software Timer) 212
与定时测量相关的系统调用 219
第七章 存储器管理 223
页框管理 223
存储器区管理 245
非连续存储器区管理 262
第八章 进程地址空间 269
进程的地址空间 270
内存描述符 271
线性区 275
缺页异常处理程序 291
创建和删除进程的地址空间 304
堆的管理 306
第九章 系统调用 309
POSIX API和系统调用 309
系统调用处理程序及服务例程 310
内核封装例程 322
第十章 信号 324
信号的作用 324
产生信号 334
传递信号 338
与信号处理相关的系统调用 349
第十一章 进程调度 354
调度策略 354
调度算法 358
与调度相关的系统调用 373
第十二章 虚拟文件系统 377
虚拟文件系统(VFS)的作用 377
VFS的数据结构 383
文件系统类型 400
文件系统安装 403
路径名查找 412
VFS系统调用的实现 421
文件加锁 426
第十三章 管理I/O设备 433
I/O体系结构 433
设备文件 443
设备驱动程序 447
块设备驱动程序 455
字符设备驱动程序 478
第十四章 磁盘高速缓存 480
页高速缓存 482
缓冲区高速缓存 487
第十五章 访问文件 503
读写文件 503
存储器映射 519
直接I/O传送 529
第十六章 对换:释放内存的方法 534
什么是对换 535
对换区 537
对换高速缓存 551
传送对换页 554
换出页 557
换入页 562
回收页框 564
第十七章 Ext2和Ext3文件系统 579
Ext2的一般特征 579
Ext2磁盘数据结构 582
Ext2的内存数据结构 589
创建Ext2文件系统 593
Ext2的方法 595
管理Ext2磁盘空间 597
Ext3文件系统 606
第十八章 网络 614
主要的网络数据结构 615
与网络相关的系统调用 624
向网卡发送包 633
从网卡接收包 634
第十九章 进程通信 638
管道 639
FIFO 648
System V IPC 651
第二十章 程序的执行 667
可执行文件 668
可执行格式 680
执行字段 682
exec函数 684
附录一 系统启动 689
附录二 模块 696
附录三 源码结构 705
参考书目 711
源代码索引 715
索引 757