假设一个进程创建了一块大小为 2 个整数(64 位/8 字节)的共享内存。
共享内存不仅可供进程的线程使用,还可供系统上有权访问该共享内存的其他进程使用。
据推测,第一个进程中的共享内存将通过虚拟地址空间进行寻址,因此当对第 1 个整数执行原子操作(cmp 交换)时,将使用第一个处理的上下文中的虚拟地址。
如果另一个进程同时对第一个整数执行某种原子操作,它也将使用自己的虚拟地址空间。
那么什么系统实际上执行到实际物理地址的转换,并且从非常一般的 POV 来看,CPU 在这种情况下如何提供原子性保证?