教育教学

相关链接:

教室安排

课程信息

当前位置: 首页 > 教育教学 > 研究生教育 > 课程信息

并发数据结构与多核编程  091M5026H

学期:2016-2017学年秋 | 课程属性:专业普及课 | 任课教师:林惠民等
课程编号: 091M5026H 课时: 40 学分: 2.0
课程属性: 专业普及课 主讲教师:林惠民等
英文名称: Concurrent Data Structures and Multicore Programming

教学目的、要求

本课程从原理和实践两方面阐述了面向多核系统的程序设计方法。原理部分(前6章)涵盖并发程序设计的基本原理,重点是介绍经典的互斥问题、并发程序的正确性概念、共享存储器性质以及同步原语等并发程序设计的主要问题。实践部分(7-16章)讲述并发编程的具体方法,重点是分析并发程序的性能,讨论各种类型的同步模式,包括粗粒度锁、细粒度锁及无锁结构,以及并发数据结构的各种实现方法。通过本课程的学习,使学生掌握多核系统编程的基本思想,理解同步原语的表达能力和特性, 熟悉分析和设计各类并发数据结构和并发算法的方法,并能够应用于编程实践中。

预修课程

离散数学、计算机系统结构、Java编程语言

教 材

教材:Maurice Herlihy, Nir Shavit. 《多处理器编程的艺术》 影印版.修订版, 机械工业出版社, 2011.

主要内容

第一章 引言 
1.1共享对象和同步 
1.2 生活实例 
1.3 生产者-消费者问题
1.4 读者-写者问题 
1.5 并行的困境 
1.6 并行程序设计 
第二章 互斥 
2.1 时间 
2.2临界区 
2.3双线程解决方案 
2.4 过滤锁
2.5 公平性 
2.6 Bakery算法 
2.8 存储单元数量的下界 
第三章 并发对象 
3.1 并发性与正确性 
3.2 顺序对象 
3.3 静态一致性 
3.4 顺序一致性 
3.5 可线性化性 
3.6形式化定义 
3.7 演进条件 
3.8 Java存储模型 
3.9 评析 
第四章 共享存储器基础 
4.1 寄存器空间 
4.2 寄存器构造 
4.3 原子快照 
第五章 同步原子操作的相对能力 
5.1一致数 
5.2原子寄存器 
5.3一致性协议 
5.4 FIFO队列 
5.5多重赋值对象 
5.6读-改-写操作 
5.7 Common2 RMW操作 
5.8 CompareAndSet()操作 
第六章 达成共识的通用构造 
6.1引言 
6.2通用性 
6.3 一种通用的无锁构造 
6.4 一种通用的无等待构造 
第七章 自旋锁与争用 
7.1实际问题 
7.2 测试-设置锁 
7.3 再论基于TAS的自旋锁 
7.4 指数后退 
7.5 队列锁 
7.6 时限队列锁 
第八章 管程和阻塞同步 
8.1引言 
8.2 管程锁和条件 
8.3 读者-写者锁 
8.4 我们的可重入锁 
8.5 信号量 
第九章 链表:锁的作用 
9.1 引言 
9.2 基于链表的集合 
9.3并发推理 
9.4粗粒度同步 
9.5细粒度同步 
9.6 乐观同步 
9.7 惰性同步 
9.8 非阻塞同步	
第十章 并行队列和ABA问题 
10.1引言 
10.2队列 
10.3部分有界队列 
10.4完全无界队列 
10.5 无锁的无界队列 
10.6 内存回收和ABA问题 
第十一章 并发栈和消除 
11.1 引言 
11.2 无锁的无界栈 
11.3 消除 
11.4 后退消除栈 
第十二章 计数、排序和分布式协作 
12.1 引言 
12.2 共享计数 
12.3 软件组合 
12.4 静态一致池和计数器 
12.5 计数网 
12.6 衍射树
第十三章 并发哈希和固有并行 
13.1 引言 
13.2 封闭地址哈希集 
13.3 无锁哈希集 
13.4 开放地址哈希集 
第十六章 异步执行、调度和工作分配 
16.1 引言 
16.2 并行分析 
16.3 多处理器的实际调度 
16.4 工作分配 
16.5 工作窃取双端队列 

参考文献

授课时间: 星期四, 第5、6、7节
授课地点: 教1-209
授课周次: 2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17

版权所有©中国科学院大学

地址:北京市怀柔区雁栖湖东路1号 邮编:101408