C++多核高级编程PDF电子书下载
- 电子书积分:17 积分如何计算积分?
- 作 者:(美)休斯等著
- 出 版 社:北京:清华大学出版社
- 出版年份:2010
- ISBN:9787302222743
- 页数:561 页
第1章 新的体系结构 1
1.1 什么是多核 1
1.2 多核体系结构 2
1.3 软件开发人员眼中的多核体系结构 3
1.3.1 基本的处理器体系结构 4
1.3.2 CPU(指令集) 6
1.3.3 内存是关键 8
1.3.4 寄存器 10
1.3.5 cache 11
1.3.6 主存 12
1.4 总线连接 13
1.5 从单核到多核 13
1.5.1 多道程序设计和多处理 14
1.5.2 并行编程 14
1.5.3 多核应用程序的设计与实现 15
1.6 小结 15
第2章 4种有影响的多核设计 17
2.1 AMD Multicore Opteron 19
2.1.1 Opteron的直连和HyperTransport 19
2.1.2 系统请求接口和交叉开关 20
2.1.3 Opteron使用NUMA结构 21
2.1.4 cache以及多处理器Opteron 22
2.2 Sun UltraSparc T1多处理器 22
2.2.1 UltraSparc T1内核 24
2.2.2 Cross Talk与Crossbar 25
2.2.3 DDRAM控制器和L2 cache 25
2.2.4 UltraSparc T1、Sun和GNU gcc编译器 25
2.3 IBM Cell Broadband Engine 25
2.3.1 CBE与Linux 26
2.3.2 CBE内存模型 27
2.3.3 对操作系统隐藏 27
2.3.4 协处理器部件 28
2.4 Intel Core 2 Duo处理器 28
2.4.1 北桥和南桥 29
2.4.2 Intel的PCI Express 29
2.4.3 Core 2 Duo的指令集 29
2.5 小结 30
第3章 多核编程的挑战 33
3.1 什么是顺序模型 33
3.2 什么是并发 34
3.3 软件开发 35
3.3.1 挑战1:软件分解 38
3.3.2 挑战2:任务间通信 43
3.3.3 挑战3:多个任务或agent对数据或资源的并发访问 47
3.3.4 挑战4:识别并发执行的任务之间的关系 51
3.3.5 挑战5:控制任务之间的资源争夺 53
3.3.6 挑战6:需要多少个进程或线程 53
3.3.7 挑战7和挑战8:寻找可靠的、可重现的调试和测试 54
3.3.8 挑战9:与拥有多进程组件的设计的相关人员进行沟通 55
3.3.9 挑战10:在C++中实现多处理和多线程 56
3.4 C++开发人员必须学习新的库 56
3.5 处理器架构的挑战 57
3.6 小结 57
第4章 操作系统的任务 59
4.1 操作系统扮演什么角色 59
4.1.1 提供一致的接口 59
4.1.2 管理硬件资源和其他应用软件 60
4.1.3 开发人员与操作系统的交互 60
4.1.4 操作系统的核心服务 63
4.1.5 应用程序员的接口 66
程序概要4-1 70
程序概要4-2 74
4.2 分解以及操作系统的任务 75
4.3 隐藏操作系统的任务 77
4.3.1 利用C++抽象和封装的能力 77
4.3.2 POSIX API的接口类 78
4.4 小结 85
第5章 进程、C++接口类和谓词 87
5.1 多核是指多处理器 87
5.2 什么是进程 88
5.3 为什么是进程而不是线程 88
5.4 使用posix_spawn() 90
5.4.1 file_actions参数 91
5.4.2 attrp参数 92
5.4.3 简单的posix_spawn()示例 94
5.4.4 使用posix_spawn的guess_it 95
5.5 哪个是父进程,哪个是子进程 99
5.6 对进程的详细讨论 99
5.6.1 进程控制块 100
5.6.2 进程的剖析 101
5.6.3 进程状态 103
5.6.4 进程是如何被调度的 105
5.7 使用ps实用工具监视进程 107
5.8 设置和获得进程优先级 110
5.9 什么是上下文切换 112
5.10 进程创建中的活动 112
5.10.1 使用fork()函数调用 113
5.10.2 使用exec()系统调用系列 113
5.11 进程环境变量的使用 116
5.12 使用system()生成新的进程 117
5.13 删除进程 118
5.13.1 调用exit()和abort() 118
5.13.2 kill()函数 119
5.14 进程资源 119
5.14.1 资源的类型 120
5.14.2 设置资源限制的POSIX函数 121
5.15 异步进程和同步进程 124
5.16 wait()函数调用 125
5.17 谓词、进程和接口类 127
5.18 小结 131
第6章 多线程 133
6.1 什么是线程 133
6.1.1 用户级线程和内核级线程 134
6.1.2 线程上下文 136
6.1.3 硬件线程和软件线程 138
6.1.4 线程资源 138
6.2 线程和进程的比较 139
6.2.1 上下文切换 139
6.2.2 吞吐量 139
6.2.3 实体间的通信 139
6.2.4 破坏进程数据 140
6.2.5 删除整个进程 140
6.2.6 被其他程序重用 140
6.2.7 线程与进程的关键类似和差别 140
6.3 设置线程属性 142
6.4 线程的结构 143
6.4.1 线程状态 144
6.4.2 调度和线程竞争范围 145
6.4.3 调度策略和优先级 147
6.4.4 调度分配域 148
6.5 简单的线程程序 148
6.6 创建线程 150
6.6.1 向线程传递参数 151
6.6.2 结合线程 153
6.6.3 获得线程id 154
6.6.4 使用pthread属性对象 155
6.7 管理线程 159
6.7.1 终止线程 159
6.7.2 管理线程的栈 168
6.7.3 设置线程调度和优先级 171
6.7.4 设置线程的竞争范围 175
6.7.5 使用sysconf() 175
6.7.6 线程安全和库 177
6.8 扩展线程接口类 179
6.9 小结 187
第7章 并发任务的通信和同步 189
7.1 通信和同步 189
7.1.1 依赖关系 190
7.1.2 对任务依赖进行计数 193
7.1.3 什么是进程间通信 195
7.1.4 什么是线程间通信 215
7.2 对并发进行同步 223
7.2.1 同步的类型 224
7.2.2 同步对数据的访问 224
7.2.3 同步机制 230
7.3 线程策略方法 250
7.3.1 委托模型 251
7.3.2 对等模型 253
7.3.3 生产者-消费者模型 254
7.3.4 流水线模型 255
7.3.5 用于线程的SPMD和MPMD 256
7.4 工作的分解和封装 258
7.4.1 问题陈述 258
7.4.2 策略 258
7.4.3 观察 259
7.4.4 问题和解决方案 259
7.4.5 流水线的简单agent模型实例 260
7.5 小结 264
第8章 PADL和PBS:应用程序设计方法 265
8.1 为大规模多核处理器设计应用程序 265
8.2 什么是PADL 268
8.2.1 第5层:应用程序架构选择 271
8.2.2 第4层:PADL中的并发模型 281
8.2.3 第3层:PADL的实现模型 284
8.3 谓词分解结构 306
8.3.1 示例:Guess-My-Code游戏的PBS 307
8.3.2 将PBS、PADL和SDLC联系起来 307
8.3.3 对PBS进行编码 308
8.4 小结 308
第9章 对要求并发的软件系统进行建模 311
9.1 统一建模语言 311
9.2 对系统的结构进行建模 313
9.2.1 类模型 313
9.2.2 类的可视化 315
9.2.3 对属性和服务进行排序 320
9.2.4 类的实例的可视化 322
9.2.5 模板类的可视化 324
9.2.6 显示类与对象的关系 325
9.2.7 接口类的可视化 329
9.2.8 交互式对象的组织 331
9.3 UML与并发行为 332
9.3.1 协作对象 332
9.3.2 使用进程与线程的多任务与多线程 334
9.3.3 对象间的消息序列 335
9.3.4 对象的活动 337
9.3.5 状态机 339
9.4 整个系统的可视化 344
9.5 小结 345
第10章 并行程序的测试和逻辑容错 347
10.1 能否跳过测试 347
10.2 测试中必须检查的5个并发挑战 348
10.3 失效:缺陷与故障导致的结果 350
10.3.1 基本的测试类型 350
10.3.2 缺陷排除与缺陷存活 351
10.4 如何对并行程序实现缺陷排除 351
10.4.1 问题陈述 352
10.4.2 简单策略和粗解决方案模型 352
10.4.3 使用PADL第5层的修正的解决方案模型 352
10.4.4 agent解决方案模型的PBS 353
10.5 什么是标准软件工程测试 357
10.5.1 软件验证与确认 357
10.5.2 代码不能正常工作该怎么办 358
10.5.3 什么是逻辑容错 362
10.5.4 谓词异常和可能世界 367
10.5.5 什么是模型检测 368
10.6 小结 368
附录A 并发设计使用的UML 371
附录B 并发模型 379
附录C 线程管理的POSIX标准 393
附录D 进程管理的POSIX标准 535
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《全国职业院校工业机器人技术专业规划教材 工业机器人现场编程》(中国)项万明 2019
- 《编程超有趣 奇妙Python轻松学 第1辑》HelloCode人工智能国际研究组 2018
- 《我的第一套编程启蒙绘本 看事件 开始了》编程猫教研团队编绘 2019
- 《STEM教育丛书 麦昆机器人和Micro:bit图形化编程》张弛责任编辑;(中国)陈宝杰,沙靓雯 2019
- 《ROS机器人编程与SLAM算法解析指南》陶满礼 2020
- 《我的第一套编程启蒙绘本 123 序列来啦》编程猫教研团队编绘 2019
- 《高等院校计算机任务驱动教改教材 C语言编程思维 第2版》(中国)陈萌,鲍淑娣 2019
- 《我的第一套编程启蒙绘本 咦 什么在 循环》编程猫教研团队编绘 2019
- 《工业机器人离线编程与仿真》张明文,封家诚,王鑫主编 2019
- 《断陷湖盆比较沉积学与油气储层》赵永胜等著 1996
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《魔法销售台词》(美)埃尔默·惠勒著 2019
- 《看漫画学钢琴 技巧 3》高宁译;(日)川崎美雪 2019
- 《优势谈判 15周年经典版》(美)罗杰·道森 2018
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《海明威书信集:1917-1961 下》(美)海明威(Ernest Hemingway)著;潘小松译 2019
- 《迁徙 默温自选诗集 上》(美)W.S.默温著;伽禾译 2020
- 《上帝的孤独者 下 托马斯·沃尔夫短篇小说集》(美)托马斯·沃尔夫著;刘积源译 2017
- 《巴黎永远没个完》(美)海明威著 2017
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019