《深入理解Linux虚拟内存管理》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(爱尔兰)戈尔曼(Gorman,M.)著;白洛等译
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2006
  • ISBN:7810777300
  • 页数:660 页
图书介绍:本书介绍分析、浏览以及管理源代码的方法,讨论Linux中VM的理论基础、运行机制、实现细节以及在2.6内核中引入的新特性等。

第1章 简介 2

1.1 开始启程 2

1.2 管理源码 4

1.3 浏览代码 9

1.4 阅读代码 11

1.5 提交补丁 12

第2章 描述物理内存 14

2.1 节点 14

2.2 管理区 16

2.4 初始化mem_map 21

2.3 管理区初始化 21

2.5 页面 22

2.6 页面映射到管理区 26

2.7 高端内存 26

2.8 2.6中有哪些新特性 27

第3章 页表管理 30

3.1 描述页目录 30

3.2 描述页表项 33

3.3 页表项的使用 34

3.4 页表项的转换和设置 36

3.5 页表的分配和释放 36

3.6 内核页表 37

3.7 地址和struct page之间的映射 39

3.8 转换后援缓冲区(TLB) 40

3.9 一级CPU高速缓存管理 41

3.10 2.6中有哪些新特性 44

第4章 进程地址空间 50

4.1 线性地址空间 50

4.2 地址空间的管理 52

4.3 进程地址空间描述符 53

4.4 内存区域 57

4.5 异常处理 72

4.6 缺页中断 74

4.7 复制到用户空间/从用户空间复制 81

4.8 2.6中有哪些新特性 82

第5章 引导内存分配器 88

5.1 表示引导内存映射 88

5.2 初始化引导内存分配器 89

5.3 初始化bootmem_data 89

5.4 分配内存 90

5.5 释放内存 91

5.6 销毁引导内存分配器 91

5.7 2.6中有哪些新特性 93

6.1 管理空闲块 94

第6章 物理页面分析 94

6.2 分配页面 96

6.3 释放页面 98

6.4 获得空闲页面(GFP)标志位 99

6.5 进程标志位 101

6.6 防止碎片 102

6.7 2.6中有哪些新特性 102

第7章 非连续内存分配 105

7.1 描述虚拟内存区 105

7.2 分配非连续区域 106

7.3 释放非连续内存 108

7.4 2.6中有哪些新特性 109

第8章 Slab分配器 113

8.1 高速缓存 113

8.2 Slabs 124

8.3 对象 131

8.4 指定大小的高速缓存 133

8.5 per-CPU对象高速缓存 135

8.6 初始化slab分配器 137

8.7 伙伴分配器接口 138

8.8 2.6中有哪些新特性 138

9.1 管理PKMap地址空间 140

第9章 高端内存管理 140

9.2 映射高端内存页面 141

9.3 解除页面映射 143

9.4 原子性的映射高端内存页面 143

9.5 弹性缓冲区 144

9.6 紧急池 146

9.7 2.6中有哪些新特性 147

第10章 页面帧回收 150

10.1 页面替换策略 150

10.2 页面高速缓存 151

10.3 LRU链表 156

10.4 收缩所有的高速缓存 159

10.5 换出进程页面 161

10.6 页面换出守护程序(kswapd) 162

10.7 2.6中有哪些新特性 162

第11章 交换管理 166

11.1 描述交换区 166

11.2 映射页表项到交换项 169

11.3 分配一个交换槽 170

11.4 交换区高速缓存 171

11.5 从后援存储器读取页面 174

11.6 向后援存储器写页面 174

11.7 读/写交换区域的块 175

11.8 激活一个交换区 177

11.9 禁止一个交换区 178

11.10 2.6中有哪些新特性 179

第12章 共享内存虚拟文件系统 181

12.1 初始化虚拟文件系统 181

12.2 使用shmem函数 182

12.3 在tmpfs中创建文件 184

12.4 虚拟文件中的缺页中断 186

12.5 tmps中的文件操作 188

12.6 tmpfs中的索引节点操作 188

12.8 System V IPC 189

12.7 建立共享区 189

12.9 2.6中有哪些新特性 192

第13章 内存溢出管理 193

13.1 检查可用内存 193

13.2 确定OOM状态 194

13.3 选择进程 194

13.4 杀死选定的进程 195

13.5 是这样吗? 195

13.6 2.6中有哪些新特性 195

B.1 初始化管理区 201

附录B 描述物理内存 201

附录A 介绍 201

第14章 结束语 201

B.2 页面操作 214

附录C 页表管理 219

C.1 初始化页表 219

C.2 遍历页表 227

附录D 进程地址空间 232

D.1 进程内存描述符 232

D.2 创建内存区域 239

D.3 查找内存区域 285

D.4 对内存区域上锁和解锁 291

D.5 缺页中断 304

D.6 页面相关的磁盘I/O 330

附录E 启动内存分配 370

E.1 初始化引导内存分配器 370

E.2 分配内存 372

E.3 释放内存 381

E.4 释放引导内存分配器 383

附录F 物理页面分配 391

F.1 分配页面 391

F.2 分配辅助函数 402

F.3 释放页面 404

F.4 释放辅助函数 409

附录G 不连续内存分配 411

G.1 分配一块非连续的区域 411

G.2 释放一块非连续区域 420

附录H Slab分配器 427

H.1 高速缓存控制 427

H.2 Slabs 446

H.3 对象 452

H.4 指定大小的高速缓存 466

H.5 Per-CPU对象高速缓存 469

H.6 初始化Slab分配器 476

H.7 与伙伴分配器的接口 477

附录I 高端内存管理 479

I.1 映射高端内存页面 479

I.2 自动映射高端内存页面 484

I.3 解除页面映射 485

I.4 自动解除高端内存页面映射 487

I.5 弹性缓冲区 488

I.6 紧急池 495

附录J 页面帧回收 500

J.1 页面高速缓存操作 500

J.2 LRU链表操作 510

J.3 重填充inactive_list 514

J.4 从LRU链表回收页面 515

J.5 收缩所有高速缓存 522

J.6 换出进程页面 525

J.7 页面交换守护程序 536

附录K 交换管理 543

K.1 查找空闲项 543

K.2 交换高速缓存 548

K.3 交换区I/O 555

K.4 激活一个交换区 564

K.5 禁止一个交换区 575

L.1 初始化shmfs 591

附录L 共享内存虚拟文件系统 591

L.2 在tmpfs中创建文件 596

L.3 tmpfs中的文件操作 600

L.4 tmpfs中的索引节点操作 613

L.5 虚拟文件中的缺页中断 622

L.6 交换空间交互 633

L.7 建立共享区 639

L.8 System V IPC 642

附录M 内存溢出管理 650

M.1 确定可用内存 650

M.2 检查OOM并从中恢复 652