声明
摘要
第1章 绪论
1.1 研究背景
1.2 相关工作
1.2.1 内核地址空间竞争研究
1.2.2 高并发共享队列研究
1.2.3 生产者消费者编程模型
1.3 研究内容
1.4 论文组织
第2章 基本知识与问题研究
2.1.1 Linux地址空间组织
2.1.2 地址空间操作及其同步
2.1.3 虚拟内存密集型程序性能分析
2.2 多线程共享队列的特征与问题
2.2.1 细粒度锁对FIFO队列的影响
2.3.1 SPMC虚拟内存模型
2.3.2 DetMP编程模型及其局限性
2.4 Pthreads线程库介绍
2.4.1 Pthreads介绍
2.4.2 线程管理
2.4.3 互斥量
2.4.4 条件变量与同步
2.5 本章小结
第3章 PMthreads设计和实现
3.1 概述
3.2 Pthreads线程模型特征
3.3 PMthreads线程模型特征
3.3.1 地址空间隔离
3.3.2 共享变量特征
3.3.3 堆分配器特征
3.3.4 私有栈特征
3.4 地址空间隔离引起的问题
3.4.1 无法保持共享变量语义
3.4.2 现有堆分配器无法适用
3.4.3 无法支持Pthreads接口
3.5.1 设备驱动实现
3.5.2 全局数据共享过程
3.6 堆分配器实现
3.6.2 堆分配效率提升
3.6.3 子堆空间组织与分配释放
3.7 Pthreads接口与同步算法
3.7.1 线程管理
3.7.2 互斥量管理
3.7.3 条件变量管理
3.7.4 barrier管理
3.8 线程模型的优势
3.9 本章小结
第4章 基于PMthreads的流式编程模型-PMPL
4.1 概述
4.2 PMPL的设计实现
4.2.1 space提前分配
4.2.2 通道池建立
4.2.3 通道的生产者消费者设定
4.2.4 PMPL接口及其使用
4.2.5 PMPL的可编程性
4.3 本章小结
第5章 实验与评估
5.1 实验配置和测试应用
5.2 PMthreads性能评估
5.2.1 时间性能评估
5.2.2 可伸缩性评估
5.2.3 虚拟内存密集型应用性能分析
5.2.4 IAmalloc性能评估
5.2.5 perf数据分析
5.2.6 PMthreads对NUMA访问的影响
5.2.7 PMthreads缺陷分析
5.3 PMPL性能评估
5.3.1 测试程序介绍
5.3.2 支持现有应用的可行性
5.3.3 几种版本下的性能比较
5.4 本章小结
第6章 总结与展望
参考文献
致谢
在读期间发表的学术论文与取得的研究成果