脏缓存行和页面驱逐

时间:2015-11-12 05:16:06

标签: caching operating-system hardware x86-64 page-fault

当作为其一部分的页面被操作系统驱逐时,对尚未写回的脏缓存行(假设回写缓存)会发生什么。换句话说,当选择页面从主存储器中逐出时,页面的缓存行会发生什么。

一般的假设是,当页面从内存中逐出时,它足够冷,不能被缓存。但是,这会在较大的缓存中造成问题吗?如果说我们有足够的缓存行来容纳每页的1行?

1 个答案:

答案 0 :(得分:0)

缓存行不会直接发生任何事情。在操作系统中,我们必须始终承担更糟糕的可能性,甚至小缓存也可能面临您提出的方案。但是,操作系统不需要直接对缓存行做任何事情,正常的分页过程将处理这种情况。

当操作系统决定逐出页面时,它将首先将其内容写入磁盘(因为处理器会将页表条目标记为脏,表示页面已被写入)。在这样做的过程中,操作系统将读取整个页面中的值,包括脏缓存行,因此它们将被写回,至少写入磁盘。

接下来,作为驱逐页面的一部分,操作系统将使映射虚拟地址到物理地址的转换无效。即使高速缓存行仍然是脏的,过程(即程序)也不能再访问它们。完成此步骤后,操作系统会将不同的数据写入物理页面,此操作将使缓存行无效。最后,新重新调整用途的物理页面将映射到虚拟地址。