【问题标题】:What happens to the cache on page fault?页面错误时缓存会发生什么?
【发布时间】:2013-09-19 02:35:01
【问题描述】:

在处理器中,如果内存中没有足够的空间来容纳所有正在运行的进程的页面,那么当操作系统替换页面时缓存会发生什么?是否需要在每次页面替换时刷新缓存?

提前感谢您的回复。

【问题讨论】:

    标签: caching memory-management operating-system processor


    【解决方案1】:

    我不能 100% 确定细节会发生什么,但缓存和虚拟内存使用分页 相似:都分为“页面”。

    同样的方式,在缺页时只需要替换一页,只需要一行 当缓存发生未命中时,需要更换缓存。缓存有 几个“页面”(行),但只会替换有问题的页面。

    还有其他我不知道是否参与此类替换的事情:缓存大小, 缓存一致性 - 直写/回写等。希望其他人能给你一个更详细的答案。

    【讨论】:

    • 如果内存中没有足够的页面,就有出错的风险。
    • 考虑一个只有两页的内存。 (操作系统占据第一个。)假设每个进程填满一个页面,操作系统必须在每次上下文切换时替换第二个物理页面。第二个物理页对应的缓存条目无效。
    • 在上下文切换的情况下,是的。但是我不确定在进程中出现页面错误的情况下会发生什么。
    【解决方案2】:

    当页面被换入时,内容会从磁盘读取到内存中。通常这是使用 DMA 完成的。所以真正的问题是,“缓存如何与 DMA 保持一致?”。您可以在每次访问时让 DMA 与缓存控制器对话,或者让操作系统手动管理缓存。见http://en.wikipedia.org/wiki/Direct_memory_access#Cache_coherency

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 2021-11-25
      • 2015-06-14
      相关资源
      最近更新 更多