页面错误和脏页面

时间:2012-11-25 08:33:36

标签: caching memory-management tlb page-fault

我已经开始阅读有关CPU缓存的内容,我有两个问题:

1)假设CPU收到页面错误并将控制转移到内核处理程序。处理程序决定驱逐内存中标记为脏的帧。让我们说CPU缓存是用有效和修改位写回来的。现在,此帧的内存内容陈旧,缓存包含最新数据。内核如何强制缓存刷新?

2)页表条目(PTE)被标记为脏的方式如下:TLB有一个修改位,当CPU修改页面内容时设置该位。该位在上下文切换时被复制回PTE。如果我们得到页面错误,PTE可能是非脏的,但TLB条目可能已设置修改的位(它尚未被复制)。这种情况如何解决?

1 个答案:

答案 0 :(得分:1)

至于刷新缓存,这只是一个特权指令。操作系统调用指令,硬件开始刷新。有一条指令可以使所有值无效并在没有回写的情况下发出立即刷新的信号,还有另一条指令告诉硬件在刷新之前写回数据。在指令调用之后,硬件(高速缓存控制器和I / O)接管。还有一些特权指令告诉硬件刷新TLB。

我不确定你的第二个问题,因为我参加了一个操作系统课程已经有一段时间了,但我的理解是,如果发生页面错误,页面将首先被带入页面表。删除的任何页面都取决于可用空间以及使用的页面替换算法。在引入该页面之前,如果要替换的页面具有已修改的位集,则必须先将其写出,以便IO排队。如果未修改,则立即替换页面。 TLB的过程相同。如果设置了修改位,则在更换该页之前必须将其写回,以便IO排队等待,您只需等待。