2012-11-25 50 views
1

我开始阅读关于CPU的缓存和我有两个问题:页面错误和脏页

1)可以说CPU接收到缺页和转让控制权交给内核处理器。处理程序决定驱逐内存中被标记为脏的帧。可以说CPU高速缓存写回的有效位和修改位。现在,这个帧的内存内容是陈旧的,并且缓存包含最新的数据。内核如何强制高速缓存刷新?

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

+0

CPU高速缓存的构建不会影响功能。如果它没有它们,它必须与它们一起工作(除非有竞争条件)。 –

+0

@JanDvorak:我同意。但我想了解它如何与他们合作。 – Bruce

回答

1

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

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

+0

感谢您的回答。你在第一段中提到的指令的指令操作码是什么? – Bruce

+1

invd是0F 08(无回写)wbinvd是0F 09(带回写) – BoredBlazer