1

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

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

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

4

1 回答 1

1

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

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

于 2012-11-25T09:38:10.843 回答