编辑推荐
这本书帮你了解并行编程中涉及的问题,以及提供如何正确解决这些问题的方法。
内容简介
本书首先以霍金提出的两个理论物理限制为引子,解释了多核并行计算兴起的原因,并从硬件的角度阐述并行编程的难题。
接着,本书以常见的计数器为例,探讨其不同的实现方法及适用场景。在这些实现方法中,除了介绍常见的锁以外,本书还重点介绍了RCU的使用及其原理,以及实现RCU的基础:内存屏障。
最后,本书还介绍了并行软件的验证,以及并行实时计算等内容。本书适合于对并行编程有兴趣的大学生、研究生,以及需要对项目进行深度性能优化的软硬件工程师,特别值得一提的是,本书对操作系统内核工程师也很有价值。
作者简介
作者保罗·E·麦肯尼,IBM Linux技术中心工程师。目前专注于高性能、可扩放性、实时响应和能源效率的挑战,在无线电和互联网协议、系统管理、商务应用和实时系统方面有颇多成绩。
章节目录
版权信息
内容简介
声明
读者服务
作者序
推荐语
推荐序
译者序1
译者序2
第1章 如何使用本书
1.1 路线图
1.2 小问题
1.3 除本书之外的选择
1.4 示例源代码
1.5 这本书属于谁
第2章 简介
2.1 导致并行编程困难的历史原因
2.2 并行编程的目标
2.3 并行编程的替代方案
2.4 是什么使并行编程变得复杂
2.5 本章的讨论
第3章 硬件和它的习惯
3.1 概述
3.2 开销
3.3 硬件的免费午餐
3.4 对软件设计的启示
第4章 办事的家伙
4.1 脚本语言
4.2 POSIX多进程
4.3 原子操作
4.4 Linux内核中类似POSIX的操作
4.5 如何选择趁手的工具
第5章 计数
5.1 为什么并发计数不可小看
5.2 统计计数器
5.3 近似上限计数器
5.4 精确上限计数
5.5 特殊场合的并行计数
5.6 关于并行计数的讨论
第6章 对分割和同步的设计
6.1 分割练习
6.2 设计准则
6.3 同步粒度
6.4 并行快速路径
6.5 分割之外
6.6 分割、并行化与优化
第7章 锁
7.1 努力活着
7.2 锁的类型
7.3 锁在实现中的问题
7.4 基于锁的存在保证
7.5 锁:是英雄还是恶棍
7.6 总结
第8章 数据所有权
8.1 多进程
8.2 部分数据所有权和pthread线程库
8.3 函数输送
8.4 指派线程
8.5 私有化
8.6 数据所有权的其他用途
第9章 延后处理
9.1 引用计数
9.2 顺序锁
9.3 读-复制-修改(RCU)
9.4 如何选择
9.5 更新端怎么办
第10章 数据结构
10.1 从例子入手
10.2 可分割的数据结构
10.3 读侧重的数据结构
10.4 不可分割的数据结构
10.5 其他数据结构
10.6 微优化
10.7 总结
第11章 验证
11.1 简介
11.2 跟踪
11.3 断言
11.4 静态分析
11.5 代码走查
11.6 几率及海森堡BUG
11.7 性能评估
11.8 总结
第12章 形式验证
12.1 通用目的的状态空间搜索
12.2 特定目的的状态空间搜索
12.3 公理方法
12.4 SAT求解器
12.5 总结
第13章 综合应用
13.1 计数难题
13.2 使用RCU拯救并行软件性能
13.3 散列难题
第14章 高级同步
14.1 避免锁
14.2 内存屏障
14.3 非阻塞同步
第15章 并行实时计算
15.1 什么是实时计算
15.2 谁需要实时计算
15.3 谁需要并行实时计算
15.4 实现并行实时系统
15.5 实时VS.快速:如何选择
第16章 易于使用
16.1 简单是什么
16.2 API设计的Rusty准则
16.3 修整Mandelbrot集合
第17章 未来的冲突
17.1 曾经的CPU技术不代表未来
17.2 事务内存
17.3 硬件事务内存
17.4 并行函数式编程
附录A 重要问题
A.1 “After”的含义是什么
A.2 “并发”和“并行”之间的差异是什么
A.3 现在是什么时间
附录B 同步原语
B.1 组织和初始化
B.2 线程创建、销毁及控制
B.3 锁
B.4 每线程变量
B.5 性能
附录C 为什么需要内存屏障
C.1 缓存结构
C.2 缓存一致性协议
C.3 存储导致不必要的停顿
C.4 存储序列导致不必要的停顿
C.5 读和写内存屏障
C.6 内存屏障示例
C.7 特定的内存屏障指令
C.8 内存屏障是永恒的吗
C.9 对硬件设计者的建议
附录D 小问题答案
D.1 如何使用本书
D.2 简介
D.3 硬件和它的习惯
D.4 办事的家伙
D.5 计数
D.6 对分割和同步的设计
D.7 锁
D.8 数据所有权
D.9 延迟处理
D.10 数据结构
D.11 验证
D.12 形式验证
D.13 综合应用
D.14 高级同步
D.15 并行实时计算
D.16 易于使用
D.17 未来的冲突
D.18 重要问题
D.19 同步原语
D.20 为什么需要内存屏障
附录E 术语
附录F 感谢
F.1 评审者
F.2 硬件提供者
F.3 原始出处
F.4 图表作者
F.5 其他帮助
深入理解并行编程是2017年由电子工业出版社出版,作者[美]PaulE.Mckenney(保罗·E·麦肯尼)。
得书感谢您对《深入理解并行编程》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。