【问题标题】:What are the factors by which virtual memory is limited?限制虚拟内存的因素有哪些?
【发布时间】:2011-08-03 14:15:17
【问题描述】:

我所知道的是,虚拟内存的大小仅受地址行数的限制。但是在Operating System internals and design principals by William Stallings 中,我读到虚拟内存也受到辅助内存大小的限制。
1.如何?
2.交换(在主内存和辅助内存之间)是虚拟内存的必要条件吗?我的意思是,如果不允许交换,那么我们仍然可以将其称为虚拟内存,尽管好处会受到限制吗?
然后我有几个基于答案的后续问题。

编辑:


我想我一定是引用了书中的原话:

一种存储分配方案,其中 辅助存储器可以寻址为 虽然它是主内存的一部分。 程序可能使用的地址 参考记忆是有区别的 从内存系统的地址 用于识别物理存储 网站和程序生成的地址 被自动翻译成 对应的机器地址。 该 虚拟存储的大小受限制 的寻址方案 计算机系统和数量 辅助内存可用,而不是由 主存实际数量 地点。

“虚拟内存”和“虚拟存储的大小”这里有什么玩笑吗?

【问题讨论】:

    标签: operating-system virtual-memory


    【解决方案1】:

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

    这本书似乎(错误地)假设您不会分配您不打算使用的虚拟内存。因此,它警告说,用于交换的物理内存和硬盘限制了 可用 虚拟内存(当然,从您的进程的角度来看,对该资源池的其他要求也是如此 - 操作系统和其他进程)。

    在实践中,分配比实际使用更多的虚拟内存通常很有用,因为您可能希望,例如:

    • 为稀疏数组使用虚拟内存,您可以在其中直接索引到几个分散的地址,
    • 让页面错误在系统资源实际用完时失败,而不是通过尝试跟踪可用内存(请记住,这与其他进程等动态)或悲观限制来使您的代码复杂化,这意味着您无法积极利用您的系统功能
    • 让每个程序都能享受到相信它已被加载到编译它的地址的好处,因此它可以将绝对地址用于跳转指令等,而不是相对地址

    将其与您的具体问题联系起来:

    1.[虚拟内存也受二级内存大小限制]如何?

    再次强调,当内存(物理内存和交换内存)耗尽时,尝试使用更多将失败。

    2.交换(在主存和辅助内存之间)是虚拟内存的必要条件吗?

    这有点含糊……虚拟内存只能通过交换物理内存内容为新的内存需求腾出空间以及从辅助内存重新加载换出的内容来增加进程可以透明地使用的内存总量。但是,即使没有交换磁盘空间(因此没有交换),或者您还没有足够的内存需求来进行任何交换,进程仍然可以根据稀疏数组、巨大的堆栈/堆区域从虚拟寻址中受益有按需增长的空间等。

    我的意思是,如果不允许交换,那么我们仍然可以称它为虚拟内存,尽管好处会受到限制吗?

    也许吧。您仍然可以从虚拟寻址中受益,但这取决于您采用的术语是否将其归类为虚拟内存:有一个合理的论点认为“虚拟内存”意味着您假装拥有更多的物理 RAM,因此如果没有交换,您将不会即使您可能正在使用支持虚拟内存的虚拟寻址组件,也不符合条件。

    【讨论】:

    • 谢谢..这解释了我对虚拟内存的大部分疑虑。
    【解决方案2】:

    关于这本书的摘录,我可以看到你困惑的根源。我不得不通读几遍才能看到他在说什么。更清晰的解释可能是:虚拟内存是一种抽象,它允许程序分配内存而不受其运行系统的物理约束的影响。程序天真地访问虚拟内存;抽象(虚拟内存)区分直接映射到物理位置的虚拟内存位置和映射到辅助内存位置的虚拟内存位置。 或者,它可能完全不映射到任何地方,并且您手上有段错误。

    第 2 点肯定不是真的。虚拟内存就在那里,“可供”程序使用,无论它是否有物理支持。当他说受限于可用的辅助内存量时,我不太理解那部分。我们当然可以设计一个具有 100 gigashizzles 地址空间的虚拟内存层,这样就可以了。

    如果我为了清晰而牺牲了正确性,那么道歉。我的解释不是很学术,听起来你在学校,但你去了。无论如何,希望对您有所帮助。

    -tjw

    【讨论】:

    • 所以虚拟内存就是逻辑和物理地址空间的分离。诸如交换之类的事情使虚拟内存的使用更加有用,但它们不是虚拟内存本身的属性。我说的对吗?
    • @Dark 是的,实际的物理支持只是虚拟内存抽象的实现细节。我不会说这是物理和逻辑之间的分离,但它是一个间接层,允许用户程序不必自己管理这种分离的细节。
    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 2012-05-14
    • 2015-12-16
    • 2010-09-27
    • 2012-02-16
    • 2014-12-16
    • 2020-04-07
    相关资源
    最近更新 更多