第八章 并行处理机和多处理机

  (2) 进程迁移引起的数据不一致性
  与共享数据时类似,进程迁移也可能引起数据的不一致性,图8.13说明进程迁移是怎样造成不一致性的。

  中有共享数据X的拷贝,而P2中没有该共享数据,进程对X进行了修改,如果采用了写回策略,暂时没有对内存中的数据进行修改,由于某种原因该进程迁移到了上运行,修改过的X'仍在中,运行时从内存中读取得到X,但是这个读到的X是"过时"的。
  或者中都有共享数据X的拷贝,修改了X,并采用写通过策略,所以同时内存中的X也修改成了X',由于某种原因该进程迁移到P1上,但这时中仍然是X。
由于以上两种原因,都造成了Cache的不一致性。
  (3)I/O传输造成的数据不一致性
  图8.14说明I/O传输是怎样造成数据不一致性的。
  绕过Cache的I/O操作也会产生不一致性问题。假设在处理机和处理机的本地高速缓存中有某一个数据X的拷贝,当I/O处理机将一个新的数据X'写入内存中时,这样就导致了内存和Cache之间的数据不一致性;或者假设C1和C2中都有X的拷贝,但是P1处理机在运行过程中修改了X的值,使之变为X',又假设P1采用写回策略,这样P1中C1的内容和内存中的内容是不一致的,这时候I/O处理机来了一个读X的请求,内存就直接把X的值传给了I/O部件,显然这个X是"过时"的。以上两种原因造成了Cache的不一致性。
  一种解决I/O操作引起的不一致性问题的方法是把I/O处理机()分别连接到私有高速缓存上,采用这种方法后,I/O处理机就能和CPU共享高速缓存了,只要能够保证各Cache之间以及Cache和内存之间的数据一致性,就能够保证I/O操作的一致性。

  为了解决Cache不一致性问题,提出了两类解决Cache不一致性问题的协议机制:监听协议和基于目录的协议。它们适合于不同的系统结构。下面就这两类协议进行讨论。