搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
多处理器编程的艺术
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111268055
  • 作      者:
    (美)Maurice Herlihy,(以)Nir Shavit著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2009
收藏
编辑推荐
  目前,多处理器的编程技术受到广泛关注,多处理器编程要求理解新型计算原理、算法及编程工具;至今很少有人能够精通这门编程艺术。
  现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的算法技术。本书所涵盖的多处理器编程关键问题将使在校学生以及相关技术人员受益匪浅。
  本书特色
  ·循序渐进地讲述共享存储器多线程编程的基础知识。
  ·详细解释当今多处理器硬件对并发程序设计的支持方式。
  ·全面考察主流的并发数据结构及其关键设计要素。
  ·从简单的锁机制到最新的事务内存系统,独立、完整地阐述了同步技术。
  ·利用Java并发工具包编写的可完全执行的Java实例。
  ·附录提供了采用其他程序设计语言和包(如C#、C及C++的PThreads库)进行编程的相关背景知识以及硬件基础知识。
展开
作者简介
  Maurice Herlihy,哈佛大学的数学学士和麻省理工学院的计算机科学博士,目前为美国布朗大学计算机科学系教授,曾工作于卡内基-梅隆大学和DEC剑桥实验室。他是美国ACM会士,2003年分布式计算Dijkstra奖获得者。
展开
内容介绍
  《多处理器编程的艺术》从原理和实践两个方面全面阐述了多处理器编程的指导原则,包含编制高效的多处理器程序所必备的算法技术。此外,附录提供了采用其他程序设计语言包(如C#、C及C++的PThreads库)进行编程的相关背景知识以及硬件基础知识。《多处理器编程的艺术》适合作为高等院校计算机及相关专业高年级本科生及研究生的教材,同时也可作为相关技术人员的参考书。
  目前,多处理器的编程技术受到广泛关注,多处理器编程要求理解新型计算原理、算法及编程工具;至今很少有人能够精通这门编程艺术。
  现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的算法技术。《多处理器编程的艺术》所涵盖的多处理器编程关键问题将使在校学生以及相关技术人员受益匪浅。
展开
精彩书摘
  第1章 引言
  计算机产业正在经历着一场重大的结构重组和巨变,在没有其他变革之前,这个过程无疑将会继续进行。主要的芯片制造商,至少是现在,都纷纷放弃尝试研制速度更快的处理器。虽然摩尔定律仍旧适用:每年集成在同样大小空间中的晶体管数越来越多,然而,由于散热问题难于解决,它们的时钟速度无法继续得到提高。取而代之的做法是,制造商开始转向“多核”系统结构的研制,由多个处理器(多核)共享硬件高速缓存直接进行通信。通过将多个处理器同时分配给单一任务以获得更高的并行性,从而提高计算的效率。
  多处理器系统结构的普及对计算机软件的发展带来了深刻的影响。直至今日以前,技术的进步意味着时钟速度的提升,时钟本身的加速导致了软件执行效率的提高。今天,这种搭便车的现象已不复存在,技术的进步不再指时钟速度的提升而是指并行度的提升,并行问题已经成为现代计算机科学的主要挑战。
  本书着重讲述共享存储器通信方式下的多处理器编程技术。通常称这样的系统为共享存储器的多处理器,现在称之为多核。在各种规模的多处理器系统中都存在着不同的编程挑战——对于小规模的系统来说,需要协调单个芯片内的多个处理器对同一个共享存储单元的访问,对于大规模系统来说,需要协调一台超级计算机中各个处理器之间的数据路由。其次,现代计算机系统所固有的异步特征也给多处理器编程带来了挑战:在没有任何警示的情形下,系统的活动可以被各种不同的事件中止或延迟,例如中断、抢占、cache缺失和系统故障等。这种延迟现象本身是无法预测的,时延的长短也是不确定的:cache缺失可以造成不到十条指令执行时间的时延,页故障可能造成几百万条指令执行时间的时延,而操作系统抢占则会导致多达上亿条指令执行时间的时延。
展开
目录
出版者的话
译者序
前言
第1章 引言
1.1 共享对象和同步
1.2 生活实例
1.3 生产者—消费者问题
1.4 读者—写者问题
1.5 并行的困境
1.6 并行程序设计
1.7 本章注释
1.8 习题
第一部分 原理
第2章 互斥
2.1 时间
2.2 1临界区
2.3 双线程解决方案
2.4 过滤锁
2.5 公平性
2.6 Bakery算法
2.7 有界时间戳
2.8 存储单元数量的下界
2.9 本章注释
2.10 习题
第3章 并发对象
3.1 并发性与正确性
3.2 顺序对象
3.3 静态一致性
3.4 顺序一致性
3.5 可线性化性
3.6 形式化定义
3.7 演进条件
3.8 Java存储器模型
3.9 评析
3.10 本章注释
3.11 习题
第4章 共享存储器基础
4.1 寄存器空间
4.2 寄存器构造
4.3 原子快照
4.4 本章注释
4.5 习题
笫5章 同步原子操作的相对能力
5.1 一致数
5.2 原子寄存器
5.3 一致性协议
5.4 FIFO队列
5.5 多重赋值对象
5.6 读—改—写操作
5.7 Common2RMW操作
5.8 compareAndSet()操作
5.9 本章注释
5.10 习题
第6章 一致性的通用性
6.1 引言
6.2 通用性
6.3 一种通用的无锁构造
6.4 一种通用的无等待构造
6.5 本章注释
6.6 习题

第二部分 实践
第7章 自旋锁与争用
7.1 实际问题
7.2 测试—设置锁
7.3 再论基于TAS的自旋锁
7.4 指数后退
7.5 队列锁
7.6 时限队列锁
7.7 复合锁
7.8 层次锁
7.9 由一个锁管理所有的锁
7.10 本章注释
7.11 习题
笫8章 管程和阻塞同步
8.1 引言
8.2 管程锁和条件
8.3 读者—写者锁
8.4 我们的可重入锁
8.5 信号量
8.6 本章注释
8.7 习题
第9章 链表:锁的作用
9.1 引言
9.2 基于链表的集合
9.3 并发推理
9.4 粗粒度同步
9.5 细粒度同步
9.6 乐观同步
9.7 惰性同步
9.8 非阻塞同步
9.9 讨论
9.1 0本章注释
9.1 1习题
笫10章 并行队列和ABA问题
10.1 引言
10.2 队列
10.3 部分有界队列
10.4 完全无界队列
10.5 无锁的无界队列
10.6 内存回收和ABA问题
10.7 双重数据结构
10.8 本章注释
10.9 习题
第11章 并发栈和消除
11.1 引言
11.2 无锁的无界栈
11.3 消除
11.4 后退消除栈
11.5 本章注释
11.6 习题
第12章计数、排序和分布式协作
12.1 引言
12.2 共享计数
12.3 软件组合
12.4 静态一致池和计数器
12.5 计数网
12.6 衍射树
12.7 并行排序
12.8 排序网
12.9 样本排序
12.10 分布式协作
12.11 本章注释
12.12 习题
第13章 并发哈希和固有并行
13.1 引言
13.2 封闭地址哈希集
13.3 无锁哈希集
13.4 开放地址哈希集
13.5 本章注释
13.6 习题
第14章 跳表和平衡查找
14.1 引言
14.2 顺序跳表
14.3 基于锁的并发跳表
14.4 无锁并发跳表
14.5 并发跳表
14.6 本章注释
14.7 习题
第15章 优先级队列
15.1 引言
15.2 基于数组的有界优先级队列
15.3 基于树的有界优先级队列
15.4 基于堆的无界优先级队列
15.5 基于跳表的无界优先级队列
15.6 本章注释
15.7 习题
笫16章 异步执行、调度和工作分配
16.1 引言
16.2 并行分析
16.3 多处理器的实际调度
16.4 工作分配
16.5 工作窃取双端队列
16.6 本章注释
16.7 习题
第17章 障碍
17.1 引言
17.2 障碍实现
17.3 语义换向障碍
17.4 组合树障碍
17.5 静态树障碍
17.6 终止检测障碍
17.7 本章注释
17.8 习题
第18章 事务内存
18.1 引言
18.2 事务和原子性
18.3 软事务内存
18.4 硬事务内存
18.5 本章注释
18.6 习题

第三部分 附录
附录A软件基础
附录B硬件基础
参考文献
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证