【问题标题】:Is Virtual memory infinite?虚拟内存是无限的吗?
【发布时间】:2011-07-07 10:02:09
【问题描述】:

我在一次采访中被问到虚拟内存是否是无限的?我回答说它不是无限的。然后面试官问了解释,我的建议是在windows中我们确实有手动的方式来配置虚拟内存到一定的限度。

我想知道虚拟内存是否真的是无限的?

【问题讨论】:

    标签: memory


    【解决方案1】:

    首先,忘记虚拟内存受机器上指针大小限制的想法。

    虚拟内存限制与寻址空间不同。您可以使用分页来寻址比基于指针的地址空间中可用的更多的虚拟内存。

    • 虚拟内存上限由 操作系统:例如,在 32 位 Windows 上 限制为 16TB,在 64 位上 Windows 的限制是 256TB。
    • 虚拟内存也受到物理限制 可用磁盘空间。

    有关解决各种误解的出色概述,请参阅以下内容:

    http://blogs.msdn.com/b/ericlippert/archive/2009/06/08/out-of-memory-does-not-refer-to-physical-memory.aspx

    【讨论】:

    • 是的@stusmith,我认为你是对的,你可以寻址比基于指针的可用内存更多的虚拟内存,这是使用虚拟内存的全部想法。
    • 虚拟内存不受磁盘空间的严格限制,可以分配但不能映射,即所谓的“预留虚拟内存”。请参阅msdn.microsoft.com/en-us/library/windows/desktop/… 和 MEM_RESERVE 了解说明。
    • 你好,如果是这样,为什么我仍然在具有足够磁盘空间的 4 GB 内存中出现内存不足错误?
    【解决方案2】:

    如果没有别的,那么虚拟内存将受到可用磁盘空间量的限制,遗憾的是,这远非无限。

    【讨论】:

      【解决方案3】:

      至少,虚拟内存的大小受到给定平台上指针大小的限制(除非它具有近/远指针和非平面内存模型)。例如,您不能使用单个 32 位指针寻址超过大约 2^32 (4GB) 的内存。

      在实践中,虚拟内存最终必须备份一些东西——比如磁盘上的页面文件——所以存储的大小实施了一个更实际的限制。

      【讨论】:

      • 对不起,那是错误的。例如,查找“PAE”(物理地址扩展)。
      • @stusmith :启用 PAE 的 Linux 内核要求 CPU 也支持 PAE。那么,是受限于计算机架构吧?
      • @logic_max:是的,但是 32 位 Intel 芯片能够支持 PAE。也许更好的说法是:它是[芯片支持、操作系统限制、磁盘空间]的最低值。通常最低值是磁盘空间。
      • @stusmith 我不认为 ARM、PowerPC、MIPS 或许多其他 CPU 具有 PAE。较旧的 x86 CPU 也没有。这个可怜的问题没有正确的答案。实际上,根据您的计数方式(对于系统,对于进程),答案是不同的,但仍然不是无限的。拒绝任何说它是无限的人。
      • 一切必须都由磁盘支持也是不正确的。一个大的 zero initialized 数组都可以由一页零支持(通常为 4-8k)。从任何地址读取的任何内容都将显示为零。在第一次写入页面时,会发生错误,然后分配页面(需要磁盘或内存)并重新映射。这可以允许大型稀疏数组。
      【解决方案4】:

      你说得对,不,它不是无限的。 可寻址虚拟内存受架构地址空间的限制。 如需更多信息,请参阅virtual memory。

      【讨论】:

        【解决方案5】:

        虚拟存储的大小受计算机系统的寻址方案和可用辅助内存的数量限制,而不是受主内存位置的实际数量限制。

        例如:- 即使您有 20 TB 的辅助内存,这并不意味着虚拟内存可以是 20 TB。它受您的计算机体系结构的限制。

        【讨论】:

          【解决方案6】:

          在大多数情况下,虚拟内存是 RAM 和可用硬盘空间的总和。因为和是可数的数,所以不可能是无穷大。

          【讨论】:

          • Virtual memory is the summation of RAM and available hard disk space in most cases 错误。 RAM 是物理内存,而不是虚拟内存
          • @raoul:我没有说 ram 是虚拟内存。
          • 你说的很清楚Virtual memory is the summation of RAM and available hard disk space in most cases。
          • @raoul:在大多数情况下,我的意思是virtual memory = RAM + HDD space。对不起,如果我的英语暗示别的东西。
          • 我知道你在说什么,但我告诉你这是错误的。
          猜你喜欢
          • 2015-12-16
          • 1970-01-01
          • 2014-12-16
          • 2012-05-14
          • 1970-01-01
          • 2013-01-12
          • 2018-07-09
          • 1970-01-01
          • 2020-04-07
          相关资源
          最近更新 更多