LOCK前缀作用于单个指令上,它对中断没有任何影响,因为中断只能在指令之间产生。LOCK前缀的真正作用是保持对系统总线的控制,直到整条指令执行完毕。它在一条指令多次访问内存的时候相当有用。 比如一个共享计数器,我们需要对它进行原子递增操作,需要做如下工作:
在x86体系结构中,这个递增操作可以在单个指令中完成,因此中断不会对该递增操作产生影响。但是该指令有两次内存访问操作,读和写,另外一个CPU或者核(core)可能同时对该计数器进行递增操作。如果另外一个CPU/核(core)在第1步完成后,第3步完成前读取该计数器的值,那么两个CPU/核(core)都使用被修改之前的计数器值并对其进行递增操作。这样就出现了错误的情况。 |
X86中的LOCK命令
最新推荐文章于 2024-06-22 11:30:00 发布