假设您有一个已完成的进程(现在不在内存中),但是在运行时,它使用了0x12345000物理地址(4KB页)。现在,MMU将0x12345000(物理)分配给刚刚启动的另一个进程。但是,也许您在缓存中(带有物理标记的)0x12345标记中包含先前处理的数据。这是一个一致性问题。如何解决?
但是缓存中剩余的数据来自上一个过程
是,这就是应该发生的事情。缓存只是跟踪物理内存中的内容。那是它唯一的工作。
如果操作系统不希望新进程看到该数据,则内核需要运行一些指令以将新数据存储到该页面,从而覆盖缓存和内存内容。
缓存对此过程透明;缓存中的数据是否仍然很热还是内核重用该物理页面时旧进程的数据是否已写回到RAM都没有关系。
((有关更多详细信息,请参见问题下方的评论)。