Q: atomic operation definition and multiprocessor I'm learning about synchronization and now I'm confused about the definition of atomic operation. Through searching, I could only find out that atomic operation is uninterruptible operation. 
Then, won't the atomic operation only be valid for uni processor system since for multiprocessor system, many operation can be run simultaneously?

A: This link explains it pretty much perfectly (emphasis mine):

On multiprocessor systems, ensuring atomicity exists is a little
  harder. It is still possible to use a lock (e.g. a spinlock) the same
  as on single processor systems, but merely using a single instruction
  or disabling interrupts will not guarantee atomic access. You must
  also ensure that no other processor or core in the system attempts to
  access the data you are working with. The easiest way to achieve this
  is to ensure that the instructions you are using assert the 'LOCK'
  signal on the bus, which prevents any other processor in the system
  from accessing the memory at the same time. On x86 processors, some
  instructions automatically lock the bus (e.g. 'XCHG') while others
  require you to specify a 'LOCK' prefix to the instruction to achieve
  this (e.g. 'CMPXCHG', which you should write as 'LOCK CMPXCHG op1,
  op2').

