硬件与 C/C++ 内存模型:原子操作、缓存一致性与内存序

课程介绍

课程从进程与线程、数据竞争、原子变量与互斥锁开始,结合机器指令说明同步操作,再讨论线程通信、编译优化与指令重排。

硬件部分涉及流水线、乱序执行、缓存、顺序一致性、x86 与 ARM/Power 的访存次序及 MESI 协议。后续进入 C/C++ 内存模型与内存序,通过相关实例联系语言层规则和硬件行为。当前分享包含 88 个视频,按 8 个原始章节整理。

网盘说明:本课程为夸克网盘资源。

课程目录

第1章 课程内容及相关说明
[1.1]–课程内容及相关说明

第2章 进程和线程
[2.1]–认识进程和线程
[2.2]–C语言对线程的支持
[2.3]–C语言编译器的选择
[2.4]–用C标准库函数创建线程
[2.5]–并行和并发

第3章 数据竞争
[3.1]–多线程数据竞争的例子
[3.2]–数据竞争是如何产生的

第4章 原子操作和锁
[4.1]–原子操作和原子变量
[4.2]–互斥锁
[4.3]–执行原子操作的机器指令
[4.4]–用机器指令实现原子操作的例子
[4.5]–用机器指令实现互斥锁的例子

第5章 线程通信及相关问题
[5.1]–一个线程间通信的例子
[5.2]–编译优化和指令重排
[5.3]–原子操作的神奇效应

第6章 流水线、乱序执行和缓存
[6.1]–什么是编排顺序
[6.2]–流水线
[6.3]–乱序执行
[6.4]–指令的执行和引退
[6.5]–存写缓冲器
[6.6]–缓存

第7章 硬件内存模型
[7.1]–多处理器系统和顺序一致性
[7.2]–顺序一致的执行
[7.3]–特别练习7-1
[7.4]–顺序一致性模型的访存次序
[7.5]–偏序和全序
[7.6]–顺序一致性存在单一全序
[7.7]–x86处理器的指令重排
[7.8]–x86处理器上的存全序TSO
[7.9]–x86的内存屏障指令MFENCE
[7.10]–x86-tso的访存次序(一)
[7.11]–x86-tso的访存次序(二)
[7.12]–x86-tso的访存次序(三)
[7.13]–x86-tso的访存次序(四)
[7.14]–x86-tso的访存次序(五)
[7.15]–x86-tso的访存次序(六)
[7.16]–x86访存次序的总结
[7.17]–多处理器和缓存一致性
[7.18]–MESI协议
[7.19]–MESI协议的状态转化
[7.20]–arm/power的访存次序(一)
[7.21]–arm/power的访存次序(二)
[7.22]–arm/power的访存次序(三)
[7.23]–arm/power的访存次序(四)
[7.24]–如何阻止指令重排
[7.25]–避免数据竞争的顺序一致性
[7.26]–x86平台上的同步操作指令
[7.27]–SC-DRF的实例
[7.28]–特别练习7-2

第8章 C/C++内存模型
[8.1]–C/C++内存模型简介
[8.2]–C语言的表达式
[8.3]–表达式的例子
[8.4]–表达式的功能
[8.5]–求值、值计算和副作用
[8.6]–前序、后序和序列点
[8.7]–特别练习8-1
[8.8]–无序和不确定顺序
[8.9]–冲突和数据竞争
[8.10]–原子操作库
[8.11]–一个多线程数据竞争的例子
[8.12]–用原子操作解决数据竞争的例子
[8.13]–C/C++内存模型的核心思想
[8.14]–原子操作的附加属性(同步和访存次序)
[8.15]–通过原子操作施加指定的访存次序
[8.16]–通过原子操作施加内存同步
[8.17]–前发
[8.18]–同步操作及其分类
[8.19]–原子操作的线程间同步
[8.20]–依赖前序
[8.21]–线程间前发
[8.22]–可见副作用
[8.23]–再论前序和前发
[8.24]–松散的原子操作
[8.25]–原子变量的修改次序
[8.26]–原子操作的一致性规则
[8.27]–顺序一致性的原子操作
[8.28]–实例解析一
[8.29]–实例解析二
[8.30]–实例解析三
[8.31]–实例解析四
[8.32]–实例解析五
[8.33]–实例解析六
[8.34]–对原子操作函数的附加说明
[8.35]–C语言对原子类型的支持:存取的顺序一致性语义
[8.36]–C语言对原子类型的支持:复合赋值的顺序一致性语义
[8.37]–C语言对原子类型的支持:递增和递减的顺序一致性语义
[8.38]–C语言对原子类型的支持:不使用标准库函数的线程同步

资源下载
下载价格35 学币
赞助终身VIP免费
常见问题
学币是什么?
1学币 = 1元人民币,可通过每日签到或赞助VIP获得!
如何购买更优惠?
推荐赞助VIP,赞助VIP后再购买超划算-购买会有折扣!(季/年VIP折扣购买,终身VIP免费)
资源能分享给别人吗?
本站资源仅限用于学习和研究目的,不得用于商业或者非法用途,否则,一切后果请用户自负!
遇到问题怎么办?
遇到问题直接点击页面右下角消息按钮联系客服反馈,会在第一时间处理!
0
显示验证码
没有账号?注册  忘记密码?