Caching 页面错误和脏页

Caching 页面错误和脏页,caching,memory-management,tlb,page-fault,Caching,Memory Management,Tlb,Page Fault,我已经开始阅读有关CPU缓存的内容,我有两个问题: 1) 假设CPU接收到一个页面错误,并将控制权转移给内核处理程序。处理程序决定退出内存中标记为脏的帧。假设CPU缓存是用有效位和修改位写回的。现在,此帧的内存内容已过时,缓存包含最新数据。内核如何强制缓存刷新 2) 页面表条目(PTE)被标记为脏的方式如下:TLB有一个修改位,该位在CPU修改页面内容时设置。此位被复制回PTE on上下文开关。如果出现页面错误,PTE可能是非脏的,但TLB条目可能具有修改后的位集(尚未复制回)。这种情况是如何解

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

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


2) 页面表条目(PTE)被标记为脏的方式如下:TLB有一个修改位,该位在CPU修改页面内容时设置。此位被复制回PTE on上下文开关。如果出现页面错误,PTE可能是非脏的,但TLB条目可能具有修改后的位集(尚未复制回)。这种情况是如何解决的?

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


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

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


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

CPU缓存的构建不会影响功能。如果它在没有他们的情况下工作,它就必须和他们一起工作(除非有比赛条件)。@JanDvorak:我同意。但我想了解它是如何与它们一起工作的。CPU缓存是为了不影响功能而构建的。如果它在没有他们的情况下工作,它就必须和他们一起工作(除非有比赛条件)。@JanDvorak:我同意。但我想知道它是如何与他们合作的。谢谢你的回答。您在第一段中讨论的说明的说明操作码是什么?invd是0F 08(无写回)wbinvd是0F 09(带写回)谢谢您的回答。您在第一段中讨论的指令的指令操作码是什么?invd是0F 08(无写回)wbinvd是0F 09(带写回)