Understanding the Linux virtual memory manager

副标题:无

作   者:(爱尔兰)Mel Gorman著;白洛,李俊奎,刘森林译

分类号:

ISBN:9787810777308

微信扫一扫,移动浏览光盘

简介

  Linux在国内的普及还不成熟,而关于内核方面的中文资料却又都偏向大而全,细节部分描述得相当不够。这些书籍往往由于篇幅问题而仅仅选择性地讲解内核源代码,不少读者无法真正吃透内核的实际实现方式,存在看不下去或不能理解等问题。还有的书籍代码注释较为粗略,省去了很多内核实现细节,初、中级水平的读者阅读起来也有困难。而另有一部分内核书籍由于时代久远,很多系统调用方面,特别是与硬件相关的代码使读者产生不少疑问,对于中、高级内核开发人员以及在较新内核版本下进行开发的人员就略显不足了。   一次较为偶然的机会我在网络上发现这一至宝,在它还是草稿版的时候就得到LinuxCN网站的关注。但由于种种原因一直没有和大家见面。后来痛定思痛,觉得这样一本好书不能为中国众多Linux爱好者学习实为可惜,终于克服种种困难翻译该书完整正式版,希望能给大家带来一定的帮助。   在众多Linux内核分析的书籍中,本书的特点非常鲜明:   (1) 本书问世以前,基本上没有一套关于Linux 虚拟内存(Virtual Memory,VM)的完整文档。文档的匮乏直接导致VM只能被很少一部分内核开发人员所完全理解。极少或根本没有任何信息对这种实现的理论基础进行描述。   (2) 本书试图弥补内存管理理论和在Linux中具体实现之间的差距,并且将两个部分结合起来,是当今最能够充分理解Linux VM的运行机制以及将理论和实现联系在一起的书籍。本书不是以讲述理论为目标,而是先讲述理论,再结合Linux的实现深入剖析其细节。   (3) 本书以相对独立于硬件的角度阐述Linux VM。   (4) 函数调用图和系统架构图一目了然,思路清晰。读者可以快速地掌握系统总体架构。   (5) 在附录里面包含了对VM的详细注释。读者能够更简单地弄清楚VM的实现过程,对VM系统的运行机制更加得心应手。   (6) 在剖析2.4内核的基础上还分析2.6内核中VM的新特性。紧跟世界Linux内核发展进度。   本书内容涵盖物理内存、页表管理、进程地址空间、引导内存分配器、物理页面分配、非连续内存分配、Slab分配器、高端内存管理、页面帧回收、交换管理、共享内存虚拟文件系统等部分。   本书的翻译工作主要由白洛、李俊奎、刘森林完成。参与少量翻译工作的还有黄静、张申、贺虎、查志勇、吕志华、夏玉、倪晓雷、vbar、newface、hs_guanqi。黄忠霖教授完成了本书的审校工作。   翻译过程中,我的家人、朋友和同学给了我莫大的支持和鼓励。感谢我的家人、朋友和同学。感谢黄忠霖教授的谆谆指导和辛勤工作。感谢LinuxCN的热心网友们。感谢所有关心和热爱Linux的人们。   由于本人才疏学浅,翻译中不免有少量错误和遗漏,望各位读者批评指正。共同学习,共同进步。   本书读者主要针对高等院校师生、研究机构科研人员、Linux内核开发人员、应用开发人员及系统管理人员,以及任何对VM或内核子系统运行机制感兴趣的爱好者。   不要错过这本书,你会发现它有多神奇。

目录

第1章简介

1.1开始启程2

1.2管理源码4

1.3浏览代码9

1.4阅读代码11

1.5提交补丁12

第2章描述物理内存

2.1节点14

2.2管理区16

2.3管理区初始化21

2.4初始化mem_map21

2.5页面22

2.6页面映射到管理区26

2.7高端内存26

2.82.6中有哪些新特性27

第3章页表管理

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.102.6中有哪些新特性44

第4章进程地址空间

4.1线性地址空间50

4.2地址空间的管理52

4.3进程地址空间描述符53

4.4内存区域57

4.5异常处理72

4.6缺页中断74

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

4.82.6中有哪些新特性82

第5章引导内存分配器

5.1表示引导内存映射88

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

5.3初始化bootmem_data89

5.4分配内存90

5.5释放内存91

5.6销毁引导内存分配器91

5.72.6中有哪些新特性93

第6章物理页面分析

6.1管理空闲块94

6.2分配页面96

6.3释放页面98

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

6.5进程标志位101

6.6防止碎片102

6.72.6中有哪些新特性102

第7章非连续内存分配

7.1描述虚拟内存区105

7.2分配非连续区域106

7.3释放非连续内存108

7.42.6中有哪些新特性109

第8章slab分配器

8.1高速缓存113

8.2slabs124

8.3对象131

8.4指定大小的高速缓存133

8.5per瞔pu 对象高速缓存135

8.6初始化slab分配器137

8.7伙伴分配器接口138

8.82.6中有哪些新特性138

第9章高端内存管理

9.1管理pkmap地址空间140

9.2映射高端内存页面141

9.3解除页面映射143

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

9.5弹性缓冲区144

9.6紧急池146

9.72.6中有哪些新特性147

第10章页面帧回收

10.1页面替换策略150

10.2页面高速缓存151

10.3lru链表156

10.4收缩所有的高速缓存159

10.5换出进程页面161

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

10.72.6中有哪些新特性162

第11章交换管理

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.102.6中有哪些新特性179

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

12.1初始化虚拟文件系统181

12.2使用shmem函数182

12.3在tmpfs中创建文件184

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

12.5tmps中的文件操作188

12.6tmpfs中的索引节点操作188

12.7建立共享区189

12.8system v ipc189

12.92.6中有哪些新特性192

第13章内存溢出管理

13.1检查可用内存193

13.2确定oom状态194

13.3选择进程194

13.4杀死选定的进程195

13.5是这样吗?195

13.62.6中有哪些新特性195

第14章结束语

附录a介绍

附录b描述物理内存

b.1初始化管理区201

b.2页面操作214

附录c页表管理

c.1初始化页表219

c.2遍历页表227

附录d进程地址空间

d.1进程内存描述符232

d.2创建内存区域239

d.3查找内存区域285

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

d.5缺页中断304

d.6页面相关的磁盘i/o330

附录e启动内存分配

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

e.2分配内存372

e.3释放内存381

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

附录f物理页面分配

f.1分配页面391

f.2分配辅助函数402

f.3释放页面404

f.4释放辅助函数409

附录g不连续内存分配

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

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

附录hslab分配器

h.1高速缓存控制427

h.2slabs446

h.3对象452

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

h.5per瞔pu 对象高速缓存469

h.6初始化slab分配器476

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

附录i高端内存管理

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

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

i.3解除页面映射485

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

i.5弹性缓冲区488

i.6紧急池495

附录j页面帧回收

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

j.2lru链表操作510

j.3重填充inactive_list514

j.4从lru链表回收页面515

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

j.6换出进程页面525

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

附录k交换管理

k.1查找空闲项543

k.2交换高速缓存548

k.3交换区i/o555

k.4激活一个交换区564

k.5禁止一个交换区575

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

l.1初始化shmfs591

l.2在tmpfs中创建文件596

l.3tmpfs中的文件操作600

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

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

l.6交换空间交互633

l.7建立共享区639

l.8system v ipc642

附录m内存溢出管理

m.1确定可用内存650

m.2检查oom并从中恢复652

参考文献


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Understanding the Linux virtual memory manager
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon