《Linux技术内幕》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)Moshe Bar著;王超译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2001
  • ISBN:7900637249
  • 页数:265 页
图书介绍:这是一本综合性地介绍有关Linux内核代码的功能和操作系统理论的高级指南。全书由公认的Linux专家编写,书中介绍了Linux(包括最新的2.4版本)内核的理论,Linux设计原理和进程模型以及专家级的建议,并介绍了一些深入的课题,包括影响系统性能的因素;内核优化的范例;不同的Linux版本之间的差异;避免繁忙服务器崩溃的策略。本书针对那些需要计划及实现功能强大的基于Linux解决方案的富有经验的Linux用户。对繁忙的专业人员来说,本书是目前最具眼光和最重要的参考指南。

第1章 开放源代码——实现一个现代操作系统 1

1.1 Linux的历史 1

1.2 Linux功能 3

1.3 Linux 2.4内核的新特性 3

第2章 编译内核 5

2.1 源代码树型结构 5

2.1.1 arch/目录 9

2.1.2 drivers/目录 9

2.1.3 fs/目录 9

2.1.4 include/目录 9

2.1.5 ipc/目录 10

2.1.6 init/目录 10

2.1.7 lib/目录 10

2.1.8 kernel/目录 10

2.1.9 mm/目录 11

2.1.10 net/目录 11

2.2 编译内核 11

2.3 GNU gcc编译器 12

2.4 编码约定 13

2.5 体系结构依赖性 13

第3章 Linux内核的基本功能 15

3.1 操作系统到底做什么 15

3.2 资源管理 15

3.3 CPU管理 16

3.4 内存加载等待时间 17

3.5 高速缓存(cache) 19

3.6 转向预测 19

3.7 软件问题 20

3.8 自锁(spinlocks)/互斥(mutexes) 20

3.9 设备处理 25

3.10 块设备处理 25

3.10.1 影响磁盘访问时间的因素——磁盘输入/输出操作的过程 25

3.10.2 磁盘的机械操作 26

3.10.3 RAID救援来了 26

3.11 字符设备处理 27

3.11.1 DMA操作 27

3.11.2 DMA寻址限制 27

3.11.3 DMA映射的类型 28

3.11.4 使用相容性DMA映射 28

3.11.5 DMA方向 29

3.11.6 使用流式DMA映射 30

3.12 中断处理 32

3.13 Linux时间保持功能 37

3.13.1 系统时钟 38

3.13.2 实时评价(Real-Time Profiling) 46

3.13.3 TOD(Time of Day)功能 48

3.14 系统的初始化和启动 49

3.14.1 启动时内核表格创建次序 50

3.14.2 启动时的硬件识别 50

3.14.3 关机 51

第4章 Linux进程模型 61

4.1 进程 61

4.2 创建子进程 63

4.3 线程 70

4.4 2.4线程化内核 72

4.5 性能限制 72

第5章 Linux虚拟内在管理程序 90

5.1 虚拟内存概念 90

5.2 交换 91

5.3 页面替换 91

5.4 Linux 2.4的实现 91

5.4.1 地址转换 92

5.5 Linux中的TLB 93

5.6 页面分配和解除分配 94

5.7 页面解除分配 95

5.8 最近最少使用(LRU)算法 96

5.9 交换和删除页面 96

5.10 换出页面 97

5.11 减小页面缓存器和缓冲区缓存器的容量 99

5.12 换出共享页面 99

5.13 换入页面(请求调页) 99

5.13.1 交换文件中的页面 100

5.13.2 交换文件中的共享页面 100

5.13.3 可执行映像页面 100

5.14 在Intel x86上超过4GB的寻址 100

5.15 改进虚存 102

5.16 实现页着色 102

第6章 Linux调度程序 127

6.1 调度类 128

6.2 线程 129

6.3 SMP调度程序试探法 130

6.4 内核抢先(preemption)和用户抢先 134

6.5 Linux方法的意义 135

6.6 改进调度程序 135

6.7 让CPU脱机或联机 135

6.8 CPU亲缘关系 136

6.9 基于指示的调度 138

第7章 信号处理 156

7.1 信号描述和缺省行为 158

7.2 同步信号 160

7.3 信号和中断——完美的一对 163

第8章 kHTTPd 170

8.1 控制kHTTPd 171

第9章 Linux系统调用 174

9.1 IA32上的系统调用和事件类型 174

9.2 中断 175

9.3 异常 175

9.3.1 异常作为Java中对象的一个例子 175

9.4 向量(vector) 176

9.5 Linux系统调用接口 178

9.5.1 更复杂的系统调用 179

9.5.2 用户空间系统调用代码库 179

9.6 跟踪系统调用 180

9.7 如何加入自己的系统调用 180

9.8 Linux/IA32内核系统调用列表 181

第10章 文件系统 188

10.1 逻辑卷管理程序(LVM) 188

10.2 Linux内核和文件系统的关系 190

10.3 文件系统控制操作的内核数据结构对象 190

10.3.1 由内核实例比的通用数据结构对象 191

10.4 缓冲区、高速缓存和存储器无用单元收集 191

10.5 Linux对i结点的使用 192

10.6 性能问题和优化策略 193

10.7 原始I/O 194

10.8 进程资源限制 194

10.9 基于盘区的存储单元分配(通用的) 195

10.10 基于块的存储单元分配(通用) 197

10.11 事务处理或数据库安全问题 197

10.12 日志的优点(和不记日志相比) 198

10.13 日志文件系统如何工作 199

10.14 元数据日志 199

10.15 可用的日志文件系统 201

10.16 IBM的JFS 202

10.16.1 主要的JFS数据结构和算法 202

10.16.2 标准的管理实用程序 203

10.17 启动时如何设置JFS 204

10.17.1 块分配映射表 204

10.17.2 i结点分配映射表 205

10.17.3 AG自由i结点列表 205

10.17.4 IAG自由列表 205

10.17.5 文件集分配映射表i结点 206

10.18 和其他文件系统相比,JFS的设计特征 206

10.19 JFS对B+树的进一步广泛使用 207

10.20 叶结点 208

10.21 内部结点 208

10.22 可变的块大小 208

10.23 目录组织 209

10.24 JFS对稀疏文件和稠密文件的支持 209

10.25 聚集和文件集 209

10.26 日志 210

10.27 逻辑卷管理程序概括 211

10.27.1 配置概念 211

10.27.2 例子 211

10.27.3 命令概述和概念 212

10.27.4 举一个LVM会话输出的例子 213

附录A 参考书目 241

A.1 论文和书目 241

附录B GNU许可证 249

B.1 GNU通用公共许可证 249

B.2 序言 249

附录C 逻辑卷管理程序概括 254

附录D 内核参数(V2.2.9) 260