在处理器中,如果没有足够的空间在内存中保存所有正在运行的进程的页面,那么当操作系统替换页面时缓存会发生什么?是否需要在每次页面替换时刷新缓存?
提前感谢您的回复。
在处理器中,如果没有足够的空间在内存中保存所有正在运行的进程的页面,那么当操作系统替换页面时缓存会发生什么?是否需要在每次页面替换时刷新缓存?
提前感谢您的回复。
我不是 100% 确定细节会发生什么,但是使用分页的缓存和虚拟内存是相似的:两者都分为“页面”。
与在缺页时只需要替换一页的方式相同,当缓存发生未命中时,只需要替换缓存中的一行。缓存有几个“页面”(行),但只会替换有问题的页面。
还有其他一些我不知道是否参与此类替换的事情:缓存大小、缓存一致性 - 直写/回写等等。我希望其他人能给你一个更详细的答案。
当页面被换入时,内容会从磁盘读取到内存中。通常这是使用 DMA 完成的。所以真正的问题是,“缓存如何与 DMA 保持一致?”。您可以在每次访问时让 DMA 与缓存控制器对话,或者让操作系统手动管理缓存。请参阅http://en.wikipedia.org/wiki/Direct_memory_access#Cache_coherency。