【问题标题】:caches vs paging缓存与分页
【发布时间】:2011-05-24 15:53:55
【问题描述】:

所以我在上计算机体系结构课程,我想我很难区分缓存和页面。

我能想到的唯一解释是,页面是操作系统欺骗程序的方式,它在指定的内存区域中完成所有工作,而高速缓存是硬件欺骗正在读取的操作系统的方式从一个指定的内存区域,实际上不是。

操作系统是否指示它需要一个“新页面”的硬件,还是由操作系统处理试图读取当前缓存“页面”的“超出范围”的地址(因为缺少更好的术语)。

我是在正确的轨道上还是我完全疯了?

【问题讨论】:

    标签: caching operating-system terminology paging


    【解决方案1】:

    缓存和页面是正交的概念。

    高速缓存是一种高速“内存”,其作用是最大限度地减少对大型低速“内存”的访问次数。在最一般的意义上,高速“内存”可能是您的硬盘,用于缓存从 Web 获取的网页(低速“内存”)。当然,在计算机体系结构的上下文中,“缓存”一词更可能是指用于加速访问较慢 RAM 或磁盘的物理 RAM。

    页面,OTOH,只是 RAM 或磁盘内容的管理单位。

    这两个概念在实现虚拟内存系统时结合在一起。一个进程可以分配 500 MB 的内存。这可能比可用于进程的物理 RAM 更多,因此操作系统会在磁盘上分配称为页的块,这将在进程的地址空间中保存某些逻辑页的内容。

    当进程访问其地址空间中的某个位置,并且关联的页面当前没有映射到物理内存中时,CPU 会发出一个页面错误信号,并且操作系统会在进程处于此状态时通过从磁盘获取页面来做出响应暂停状态。一旦页面被映射,进程就会恢复并能够访问该内存位置,就好像它一直都在那里一样。

    虚拟内存是一种诱使进程认为它拥有大量 RAM 的常见观点,但这并不是唯一考虑这一点的方法。您还可以将进程的地址空间视为逻辑存储在磁盘页面上,操作系统辅助映射到 RAM 只是缓存这些页面内容的一种方式,这样进程就不会持续访问硬盘驱动器。从这个意义上说,缓存和分页虚拟内存在逻辑上是一回事。请记住,虽然这个观点可能有助于理解这两个概念之间的关系,但它并不完全准确,因为完全可以在没有虚拟内存的情况下运行,只需物理内存(事实上,大多数嵌入式系统运行这样)。

    【讨论】:

    • 好的,我想我已经想到,基本上一个页面驻留在缓存“集合”中(假设集合关联缓存,其中有多个缓存块)。因此,当程序向操作系统调用地址并且它超出“范围”时,操作系统会将地址调用到缓存中,这会导致未命中,然后强制它从主内存中获取它,但是什么我收集你的意思是页面通常驻留在 RAM 上,但程序定义而不是硬件定义......我认为这有帮助!非常感谢。
    • 那么这是否意味着如果 RAM 上不存在页面,并且发生页面错误,它会从逻辑上从缓存中获取它,或者仍然会有磁盘访问? (缓存不会“预测”接下来需要哪个页面,对吧?)
    • 在虚拟内存的上下文中,RAM 页面和后备存储(磁盘页面)之间没有缓存。物理 RAM 本质上充当了驻留在磁盘上的页面的缓存。如果发生页面错误,它就会出现在你的盘片上(或者这些天可能是 SSD 芯片)。
    • 我忘了提一点,在很多操作系统上,文件系统缓存(通常称为页面缓存)是使用与虚拟内存子系统相同的机制实现的,例如将 RAM 分页到页面文件实际上与将用户打开的文件的缓存部分刷新到磁盘没有区别。
    【解决方案2】:

    我认为分页是将指令数据从磁盘或辅助内存带到主存,而缓存是将指令数据从主存带到 CPU

    【讨论】:

    • 您在发帖前阅读了接受的答案吗? :) 你认为你的添加了什么新东西或者解释得更好吗?如果可以,请改进您的答案。谢谢。
    猜你喜欢
    • 2021-09-30
    • 2015-08-05
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 2014-03-13
    • 2020-03-08
    相关资源
    最近更新 更多