【问题标题】:Why is virtual memory needed when we have logical memory?当我们有逻辑内存时,为什么需要虚拟内存?
【发布时间】:2017-05-07 14:07:44
【问题描述】:

这是我的理解:

逻辑内存:没有实际的逻辑内存空间。它包括CPU在执行进程时允许生成的地址。逻辑内存的页面映射到物理内存的帧(与页面大小相同)。

要执行一个进程,它的所有页面必须在开始执行之前加载到物理内存(即帧中)。进程执行后,释放帧。

我说的对吗?虚拟内存的工作方式有何不同?

【问题讨论】:

    标签: memory memory-management virtual-memory


    【解决方案1】:

    参考amd64架构的东西在:https://support.amd.com/TechDocs/24593.pdf page 54

    他们定义: 逻辑地址 分段地址空间内的地址(实际上不习惯使用该模式)。通过将段基地址添加到偏移量,可以将逻辑地址转换为线性地址。

    线性地址是程序员实际看到的地址是 64 位,因此比可用的物理内存要多得多。操作系统可以根据使用情况管理内存页面与硬盘的交换。程序员忽略了这一点。

    Physical Addresse 是程序员永远看不到的内存地址。 分页系统被委托在读取或写入内存之前将线性地址与物理地址相关联。

    与上述定义相比,您使用术语逻辑地址而不是线性(虚拟)地址。 并非所有帧都应加载。可以按需加载。

    虚拟内存是一种向程序员展示线性地址空间的技术,该地址空间很大(2^64 字节 = 16EBytes =~ 1000000 TB),而物理内存则受到更多限制,并根据需要将该内存映射到外部存储设备作为硬盘。

    【讨论】:

      【解决方案2】:

      我说的对吗?虚拟内存的工作方式有何不同?

      一点也不。

      地址转换分为三种:

      1. 物理 -> 直接物理地址
      2. 逻辑 -> 逻辑地址通过页表重新映射到物理地址
      3. 虚拟 -> 使用辅助存储模拟物理内存。

      除非还有逻辑记忆翻译,否则虚拟翻译不起作用。当存在未映射到物理页框的有效逻辑页时,虚拟转换将接管。在这种情况下,虚拟翻译会接管以在辅助存储中查找数据。

      在很大程度上,计算机文档将虚拟和逻辑混为一谈。在虚拟地址空间比物理地址空间大(例如 4GB 虚拟地址空间和 8MB 物理地址空间)的时代,这种混淆并不显着。

      现在,当物理内存增长到 GB 范围时,在保留逻辑翻译的同时,对虚拟翻译的需求正在减少。这意味着两者之间的区别正在变得显着。

      【讨论】:

        猜你喜欢
        • 2022-08-16
        • 2013-10-21
        • 2013-03-12
        • 2012-11-19
        • 2015-10-24
        • 2020-05-20
        • 2019-06-26
        • 2021-04-28
        • 2011-11-27
        相关资源
        最近更新 更多