linux内核中内存障碍的目的
发布时间:2020-12-13 22:57:54 所属栏目:Linux 来源:网络整理
导读:Robert Love说“set_task_state(task,state)将给定任务设置为给定状态.如果适用,它还提供内存屏障以强制在其他处理器上排序(这仅在SMP系统上需要)否则它相当于 task- state = state 我的问题是: 内存屏障如何强制在其他处理器上进行排序? 罗伯特的爱是什么
Robert Love说“set_task_state(task,state)将给定任务设置为给定状态.如果适用,它还提供内存屏障以强制在其他处理器上排序(这仅在SMP系统上需要)否则它相当于
task-> state = state 我的问题是: 罗伯特的爱是什么意思 – 为什么这需要? 如果是这样,SMP中的每个处理器是否都有不同的调度队列? 解决方法
为了挤出额外的性能,你的CPU会运行
Out of Order Execution,它可以按照与代码中给出的顺序不同的顺序运行操作.优化编译器可以更改操作的顺序以使代码更快.编译器编写者/内核类型必须注意不要改变期望(或至少符合规范,以便他们可以说你的期望是不对的)
这是一个例子 1: CPU1: task->state = someModifiedStuff 2: CPU1: changed = 1; 3: CPU2: if (changed) 4: CPU2: ... 如果我们没有设置状态的障碍,我们可以重新排序1和2. 屏障告诉系统,在某些时候,在1到2之间,它必须在移动之前使事情保持一致. 搜索“记忆障碍”,你会找到一些好的帖子:Memory Barriers Are Like Source Control Operations (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |