正如上面介绍的两个设备模型所示,设备共享是有代价的。无论设别模拟是在管理程序还是在一个独立 VM 中的用户空间中执行,都存在开销。只要有多个客户操作系统需要共享这些设备,这个开销就是值得的。如果共享不是必须的,则有更有效的方法来共享这些设备。
因此,在最高层面上,设备透传就是向一个特定客户操作系统提供一种设备隔离,以便该设备能够被那个客户操作系统独占使用(见图 3)。但这种技术为什么有用?设备透传之所以有价值,原因有很多,其中两个最重要的原因是性能以及提供本质上不能共享的设备的专用权。
图 3. 管理程序内的设备透传
对于性能而言,使用设备透传可以获得近乎本机的性能。对于某些网络应用程序(或那些拥有高磁盘 I/O 的应用程序)来说,这种技术简直是完美的。这些网络应用程序没有采用虚拟化,原因是穿过管理程序(达到管理程序中的驱动程序或从管理程序到用户空间模拟)会导致竞争和性能降低。但是,当这些设备不能被共享时,也可以将它们分配到特定的客户机中。例如,如果一个系统包含多个视频适配器,则那些适配器可以被传递到特定的客户域中。
最后,可能有一些只有一个客户域使用的专用 PCE 设备,或者有一些不受管理程序支持因而应该被传递到客户机的设备。单独的 USB 端口可以与一个给定域隔离,一个串口(自身不是可共享的)可以与一个特定客户机隔离。