前言 1
目录 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/0体系结构 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
FIF0 648
System V IPC 651
第二十章程序的执行 667
可执行文件 668
可执行格式 680
执行字段 682
exec函数 684
附录一系统启动 689
附录二模块 696
附录三源码结构 705
参考书目 711
源代码索引 715
索引 757