虚拟内存受限的因素有哪些?

我所知道的是,虚拟内存的大小仅受地址线数量的限制。但是在William Stallings的操作系统内部和设计原理中,我读到虚拟内存也受到辅助内存大小的限制。 1.如何? 2.交换(在主存储器和辅助存储器之间)虚拟存储器的必要条件?我的意思是,如果不允许交换,那么我们仍然可以称之为虚拟内存,虽然好处有限吗? 然后根据答案我很少跟进问题。 编辑: 我想我必须引用这本书的确切词语:   存储分配方案,其中   辅助存储器可以作为   虽然它是主要记忆的一部分。   程序可能使用的地址   参考记忆是有区别的   来自内存系统的地址   用于识别物理存储   站点和程序生成的地址   被自动翻译成   相应的机器地址。该   虚拟存储的大小受到限制   的解决方案   计算机系统和数量   二级内存可用而不是   实际的主存储数量   位置。 在“虚拟内存”和“虚拟存储大小”中是否存在某种文字播放?     
已邀请:
  虚拟存储的大小受到计算机系统的寻址方案和可用的辅助存储器的数量的限制,而不受主存储位置的实际数量的限制。 本书似乎(错误地)假设您不会分配您不打算使用的虚拟内存。因此,它警告用于交换的物理内存和硬盘限制了可用的虚拟内存(当然,从您的进程的角度来看,对该资源池的其他需求 - 操作系统和其他进程也是如此)。 实际上,分配比实际使用的虚拟内存更有用,因为您可能想要,例如: 将虚拟内存用于稀疏数组,直接索引到一些分散的地址, 当系统资源实际耗尽时,让页面错误失败,而不是通过某些尝试跟踪可用内存使代码变得复杂(请记住这对于其他进程是动态的)或者是悲观限制,这意味着您无法积极利用系统功能 让每个程序都享受到相信它已经被编译的地址加载的好处,所以它可以使用绝对地址来获取跳转指令等而不是相对 将其与您的具体问题联系起来:   1. [虚拟内存也受二级内存大小的限制]如何? 同样,它在某种意义上是有限的,当内存(物理和交换)耗尽时,尝试使用更多将会失败。   2.交换(在主存储器和辅助存储器之间)虚拟存储器的必要条件? 这有点模糊......虚拟内存只能通过交换物理内存内容来增加内存进程的总量,以便为新的内存需求腾出空间,并从二级内存重新加载换出的内容。但是,即使没有交换磁盘空间(因此没有交换),或者您还没有足够的内存需求进行任何交换,过程仍然可以从稀疏阵列,大堆栈/堆区域的虚拟寻址中受益有空间按需增长等。   我的意思是,如果不允许交换,那么我们仍然可以称之为虚拟内存,虽然好处有限吗? 也许。您仍然可以从虚拟寻址中受益,但这取决于您采用的术语是否归类为虚拟内存:有一个合理的论据,即“虚拟内存”意味着您假装拥有更多的物理内存,因此如果没有交换,您就不会即使您可能正在使用支持虚拟内存的虚拟寻址组件,也符合条件。     
关于这本书的摘录,我可以看到你困惑的根源。我不得不通读几次,看看他在说什么。更清楚的解释可能是:虚拟内存是一种抽象,它允许程序分配内存,而不会受到运行它的系统的物理约束的困扰。程序天真地访问虚拟内存;抽象(虚拟内存)区分直接映射到物理位置的虚拟内存位置和映射到辅助内存位置的虚拟内存位置。或者,它可以映射到绝对无处,你手上有一个段错误。 2号肯定不是真的。虚拟内存是“可用的”,供程序使用,无论它是否具有物理支持。当他说有限的......通过可用的二次存储器的数量时,我并不完全遵循这一部分。人们当然可以设计一个具有100千兆字节地址空间的虚拟内存层,这样就可以了。 如果我为了清晰起见交易正确,那么道歉。我的解释不是很学术,听起来像是在学校,但你去了。无论如何,希望有所帮助。 -tjw     

要回复问题请先登录注册