版块
论坛
喜欢
话题
应用
搜索
登录
注册
silan的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=15791
请教术语内存屏障,wmb()和rmb()(20分感谢)分数已给
在Linux下面对I/O进行操作,读和写的顺序都很重要,要在每个读写的操作之后都加上wmb()/rmb()吗?文档说编译器和CPU会对代码进行优化,然后造成对I/O操作的顺序和我们代码上的顺序不一致,这种自作聪明的优化可能会使我们得到非预期的结果。其间又提到了I/O操作有边缘效应...
全文
回复
(
7
)
2003-01-22 17:08
来自版块 -
LINUX&UNIX核心开发
◆
◆
表情
告诉我的粉丝
提 交
liming
:
These two function expand to nothing on x86
(2003-02-21 13:48)
回复
callmefire
:
这个问题涉及到cache和总线锁,一般用于smp
(2003-02-14 10:37)
回复
OS_Dev
:
当然是和cpu密切相关,尤其是cache部分! 不同的cpu处理不同的,x86就不存在这个问题。
(2003-01-31 00:37)
回复
silan
:
我还是不明白,这么说能否优化还是和硬件平台相关的?或者说对I/O的乱序操作是由于CPU的自身优化处理造成的,还是说编译器根据CPU的类型优化编译时产生的?如果Linux和我的驱动都是跑在X86平台上,是不是就不需要加rmb(),wmb()这些东东?
(2003-01-27 09:15)
回复
OS_Dev
:
X86下没有这个问题,这就是为什么萎软的文档没有这种说法的原因,因为windows只能跑x86。
(2003-01-24 10:29)
回复
silan
:
既然这种“优化”可能会产生错误,那是不是画蛇添足,甚至应该说是编译器自作聪明的bug?Window下的那些编译器好像就没有这种说法啊。能不能详细解释一下I/O操作的边际效应?对I/O操作的优化是不是也优化缓存到CPU寄存器/缓存?这不明摆着会有错误吗,为什么还要优化呢?谢谢
(2003-01-23 11:24)
回复
pengyc
:
摘自linux device driver 2nd edition: #include <asm/system.h> \"void rmb(void);\" \"void wmb(void);\" \&quo...
(2003-01-22 21:32)
回复
silan
加关注
写私信
0
关注
0
粉丝
251
帖子
返回顶部