内存屏障简略介绍

简介: 内存屏障简略介绍

内存屏障,也称内存栅栏,内存栅障,屏障指令等, 是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。

大多数现代计算机为了提高性能而采取乱序执行,这使得内存屏障成为必须。

语义上,内存屏障之前的所有写操作都要写入内存;内存屏障之后的读操作都可以获得同步屏障之前的写操作的结果。因此,对于敏感的程序块,写操作之后、读操作之前可以插入内存屏障。

大多数处理器提供了内存屏障指令:

完全内存屏障(full memory barrier)保障了早于屏障的内存读写操作的结果提交到内存之后,再执行晚于屏障的读写操作。

内存读屏障(read memory barrier)仅确保了内存读操作;

内存写屏障(write memory barrier)仅保证了内存写操作。

Windows API的内存屏障实现,下述同步函数使用适当的屏障来确保内存有序:

1、进出临界区(critical section)的函数

2、触发(signaled)同步对象的函数

3、’等待函数(Wait function)

4、互锁函数(Interlocked function) [1]

多线程编程:

多线程程序通常使用高层程序设计语言中的同步原语,如Java与.NET Framework,或者API如pthread或Windows API。因此一般不需要明确使用内存屏障。

内存可见性:

内存可见性问题,主要是高速缓存与内存的一致性问题。一个处理器上的线程修改了某数据,而在另一处理器上的线程可能仍然使用着该数据在专用cache中的老值,这就是可见性出了问题。解决办法是令该数据为volatile属性,或者读该数据之前执行内存屏障。

乱序执行与编译器重排序优化的比较

C与C++语言中,volatile关键字意图允许内存映射的I/O操作。这要求编译器对此的数据读写按照程序中的先后顺序执行,不能对volatile内存的读写重排序。因此关键字volatile并不保证是一个内存屏障。

对于Visual Studio 2003,编译器保证对volatile的操作是有序的,但是不能保证处理器的乱序执行。因此,可以使用InterlockedCompareExchange或InterlockedExchange函数。

对于Visual Studio 2005及以后版本,编译器对volatile变量的读操作使用acquire semantics,对写操作使用release semantics。 [1]

相关文章
|
存储 缓存 数据安全/隐私保护
Windows 命令提示符(CMD)操作(二):系统信息和管理
Windows 命令提示符(CMD)操作(二):系统信息和管理
|
内存技术
STM32F103 五个时钟源
STM32F103 五个时钟源
997 0
|
机器学习/深度学习 数据可视化
如何解决大语言模型的幻觉问题
如何解决大语言模型的幻觉问题
|
开发工具 Android开发
Android Studio resource linking failed
Android Studio resource linking failed
485 1
|
网络协议 Linux Shell
Linux下常用的端口转发工具
【7月更文挑战第27天】Linux下常用的端口转发工具
1260 14
|
机器学习/深度学习 存储 人工智能
生成式 AI 与 LangCHain(一)(1)
生成式 AI 与 LangCHain(一)
692 1
|
缓存 前端开发 关系型数据库
RPM与YUM
RPM与YUM
585 0
|
消息中间件 存储 Go
Golang微服务框架Kratos应用Pulsar消息队列
Apache Pulsar 是 Apache 软件基金会的顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。
378 1
|
NoSQL Java 关系型数据库
学成在线----day1
学成在线----day1
|
传感器 SQL 安全
瑞数信息《2023 API安全趋势报告》重磅发布: API攻击持续走高,Bots武器更聪明
如今API作为连接服务和传输数据的重要通道,已成为数字时代的新型基础设施,但随之而来的安全问题也日益凸显。为了让各个行业更好地应对API安全威胁挑战,瑞数信息作为国内首批具备“云原生API安全能力”认证的专业厂商,近年来持续输出API安全相关观点,为政企用户做好API安全防护提供参考指南。
483 0
瑞数信息《2023 API安全趋势报告》重磅发布: API攻击持续走高,Bots武器更聪明

热门文章

最新文章