RAM 在虚拟机中如何工作?

RAM 在虚拟机中如何工作?

我已经使用 VBox 设置了 Linux 虚拟机,主机操作系统是 Windows。我想了解虚拟机上的 RAM 如何运行。

  • 主机是否将客户机使用的 RAM 作为单一服务分配?
  • 或者,RAM 是由 Guest 直接分配的吗?

简而言之,主机是否将客户视为单个应用程序,或者客户系统直接将其需求分配给硬件?我没有学过计算机科学之类的东西,所以我对问题的理解如下:

  • 如果我在客系统做一个单一的计算,而主系统把客系统看成一个单一的服务,那么这个计算就是客系统当时产生的众多服务之一,我的计算就会有延迟。
  • 如果客户机直接连接 RAM,那么其他服务已经在 RAM 中分配,并且它们会发生波动,新的服务将会更快地被分配。

答案1

第一:RAM 的分配始终处于主机操作系统的最终控制之下。

除此之外,还得视情况而定。

使用简单的虚拟机管理程序,您只需告诉虚拟机管理程序每个 VM 获得多少 RAM,该数量将在 VM 启动时从主机系统上的可用 RAM 中扣除,并且只要 VM 正在运行,虚拟机管理程序就会“使用”该数量。在 VM 中运行的操作系统会像往常一样将 RAM 分配给进程和操作系统使用。旧版 Microsoft“虚拟 PC”曾广泛用于在 Windows 7 中运行“XP 模式”,它就是这样工作的。VirtualBox 也是如此。在这两种情况下,如果您为 VM 配置 1 GB RAM 并启动它,您的主机会突然少 1 GB 的“可用”RAM。它通常对 RAM 的使用效率不高,但实现起来很简单。

对于更复杂的虚拟机管理程序,分配给虚拟机的数量只是一个上限。客户操作系统将这么多的 RAM 视为“总的”,但在后台,就主机而言,客户认为是 RAM 的部分甚至大部分可能是虚拟的。对于 Windows 所称的客户机中的“空闲”或“归零”RAM 尤其如此 - 由于它没有感兴趣的内容,因此无需将其存储在任何地方。但即使客户机视为“正在使用”的 RAM 在主机中也可能是虚拟的,其内容位于页面文件或映射文件中。

客户操作系统继续像往常一样处理 RAM,但如果客户操作系统引用一些尚未实际存在的 RAM,则虚拟机管理程序可以向客户分配更多实际 RAM。(换句话说,似乎在客户机中没有页面错误的情况下工作的内存引用可能会导致主机中出现页面错误。)在总可用 RAM 和配置的限制范围内,虚拟机管理程序会调整客户操作系统中的 RAM 量,以尽量将其在主机中的页面错误率保持在较低水平。

这通常称为“精简配置”。它在虚拟机管理程序中实施起来更复杂,但可以更有效地利用主机的 RAM。

相关内容