Chinaunix首页 | 论坛 | 博客
  • 博客访问: 692330
  • 博文数量: 192
  • 博客积分: 1875
  • 博客等级: 上尉
  • 技术积分: 2177
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 23:21
个人简介

有时候,就是想窥视一下不知道的东东,因为好奇!

文章分类

全部博文(192)

文章存档

2024年(8)

2023年(3)

2020年(1)

2019年(1)

2018年(1)

2017年(2)

2016年(69)

2015年(53)

2014年(14)

2013年(1)

2012年(5)

2011年(25)

2010年(9)

分类: LINUX

2011-02-11 23:13:19

p { margin-bottom: 0.21cm; }

                                          优化和内存屏障

1.面临的问题:

      当使用优化的编译器时,编译器可能重新安排汇编语言指令以使寄存器以最优的方式使用。CPU通常并行地执行若干条指令,且可能重新安排内存访问。这样可以极大地加速程序的执行。而处理同步时,必须避免指令重排。


2.问题的解决方式:

      优化屏障(optimization barrier)原语保证编译程序不会混淆放在原语操作之前的汇编语言指令和放在原语操作之后的汇编语言指令。

Linux内核中优化屏障就是barrier() 宏。


内存屏障(memory barrier)原语,确保在原语之后的操作开始执行之前,原语之前的操作已经完成。

Linux内核中使用的6个屏障原语:

     mb()                适用于MPUP的内存屏障

     rmb()              适用于MPUP的读内存屏障

     wmb()             适用于MPUP的写内存屏障

     smp_mb()       仅适用于MP的内存屏障

     smp_rmb()     仅适用于MP的读内存屏障

     smp_wmb()    仅适用于MP的写内存屏障



阅读(1283) | 评论(0) | 转发(0) |
0

上一篇:原子操作

下一篇:自旋锁

给主人留下些什么吧!~~