虚拟机集成包内部是如何实现的?

虚拟机集成包内部是如何实现的?

如果我在虚拟机上安装了虚拟机附加包(例如 Microsoft Virtual PC 2007 的虚拟机附加包、Windows Virtual PC 上的集成组件以及 Oracle VM VirtualBox 上的客户机附加包),当我启用鼠标指针集成、窗口大小调整和文件夹共享等集成功能时,虚拟机后端会发生什么情况?换句话说,集成功能是如何在内部实现的?

对于鼠标指针集成,在 Virtual PC 中,启用集成功能后,鼠标移动速度会更快,并且在底部和右侧边缘,部分客户机光标在外部可见。禁用该功能后,光标移动速度会更慢。我怀疑启用集成后,光标实际上是主机操作系统的一部分,它会将命令发送给客户机。我听说在主机 PC 上安装集成软件会导致光标消失。我还知道共享文件夹是作为网络驱动器实现的。我说得对吗?

答案1

总的来说,它允许虚拟机管理程序以更优化的级别与客户操作系统进行交互。

指点设备

对于指点设备,虚拟机管理程序首先捕获鼠标光标在主机上显示的客户机操作窗口内的窗口位置。

然后,当您移动鼠标时,此移动必须转换为相对移动,就像在客户环境中发生的那样。然后再次转换此移动,以便可以通过客户操作系统的虚拟 USB 接口读取它。

然后,客人将收到该移动信号并将其转换为屏幕上实际的光标移动。

这个过程可能需要一点时间,所以你经常会有两个游标,一个是主机的,一个是客户机的。客户机通常会滞后一点。

请注意,鼠标通常是一种指点设备,涉及相对的运动。一些虚拟机管理程序支持使用虚拟平板电脑作为指点设备,因为它们支持绝对定位。这可以减少通常观察到的滞后。

在此处输入图片描述

安装集成包时,会在客户操作系统中安装一个特殊的设备驱动程序。此驱动程序能够更直接地与虚拟机管理程序进行通信。如何具体如何实现通信取决于供应商。不过这些细节应该与回答您的问题无关。

通过这种新的通信路径,虚拟机管理程序可以直接将任何光标移动直接传递到客户机上的驱动程序中。无需先转换回更通用的 USB 接口层。

共享文件夹

在访问主机上的文件系统资源时,您通常必须遵循与网络上的任何其他机器共享文件时相同的路径。您将创建一个共享文件夹,设置访问权限,然后在客户机上访问该文件夹并执行文件传输。

当您安装集成包时,虚拟机管理程序可以模拟网络上的存储设备,该存储设备会公开您可以在客户机中看到的作为共享文件夹的资源。

这是可能的,因为集成包可以再次安装一个与虚拟机管理程序直接通信的驱动程序。文件传输将直接通过 Virtual PC 传递到客户机中的驱动程序,而不是使用整个网络堆栈。

概括

存在许多其他集成功能,尤其是在其他虚拟机管理程序中。您经常会发现共享剪贴板等功能。这些功能的基础通常与上面描述的相同。虚拟机管理程序通过客户操作系统中的专用驱动程序建立直接数据交换通道。

虚拟机管理程序通常在硬件级别运行,驱动程序也允许它在操作系统级别运行。

相关内容