dnj*_*wja 0 atomic multiprocessor
我正在学习同步,现在我对原子操作的定义感到困惑。经过查找,只能得知原子操作是不可中断的操作。
那么,原子操作不是只对单处理器系统有效吗,因为对于多处理器系统,许多操作可以同时运行?
Wad*_*Wad 5
这个链接解释得非常完美(强调我的):
在多处理器系统上,确保原子性存在有点困难。仍然可以像在单处理器系统上一样使用锁(例如自旋锁),但仅使用单个指令或禁用中断将不能保证原子访问。您还必须确保系统中没有其他处理器或内核尝试访问您正在使用的数据。实现此目的的最简单方法是确保您使用的指令在总线上声明“LOCK”信号,这可以防止系统中的任何其他处理器同时访问内存。在 x86 处理器上,某些指令会自动锁定总线(例如“XCHG”),而其他指令则要求您在指令中指定“LOCK”前缀以实现此目的(例如“CMPXCHG”,您应将其写为“LOCK CMPXCHG op1, op2” ')。
归档时间:
7 年,10 月 前
查看次数:
1297 次
最近记录:
7 年,9 月 前