5 operating-systems virtualization process kernel
Vmware 是用户安装的软件。所以它应该在底层操作系统给定的用户空间中运行。然而,它运行的操作系统是完全可操作的,需要在内核模式下运行。那么它运行在哪里呢?
VMWare 提供了一大堆项目,Vinko Vrsalovic 已经指出VMWare ESX 确实是一个自己的操作系统。
通常,可以完全在用户空间中运行虚拟机监视器 (VMM),例如 VMWare Workstation、QEmu 或 Virtualbox。他们只需使用操作系统的磁盘或 CDROM 映像来运行,并通过解释所有指令和模拟设备访问来开始模拟 PC。然而,出于性能原因,虚拟化软件尽量避免模拟,因为在真实硬件上执行指令流比模拟它快得多。
几种方法用于加速虚拟化过程:
二进制重写:您的虚拟化操作系统执行操作系统内核和用户空间应用程序。对于用户空间应用程序,指令执行方面的限制与您的虚拟机监视器本身相同,因此在本机 CPU 上执行这些应用程序没有问题。然而,对于操作系统部分,您需要模拟底层 CPU 的行为,因为您的 VMM 本身无法这样做。您现在需要的是检测用户代码和内核代码之间的所有切换,以便您可以有效地在本机执行和仿真之间切换。VMWare 和 Qemu 在虚拟化操作系统执行时将二进制重写应用于虚拟化操作系统,从而捕获所有这些开关。
硬件辅助:随着 VMM(自 1970 年代以来一直存在)的日益普及,Intel 和 AMD 开始为其指令集提供硬件扩展,以简化 VMM 在用户空间中的实现。
内核扩展:VMWare 和 Qemu 还允许您在主机操作系统中安装设备驱动程序,使它们能够通过直接在内核模式下执行来加速内核代码的执行和设备访问。
直通设备驱动程序:设备 I/O 是另一个性能问题。通常,VMM 会实现一组虚拟设备,它们的行为与其现实世界中的设备相似。此模拟步骤会减慢 I/O,并且是虚拟化操作系统时的主要性能瓶颈。为了避免这种情况,VMM 还允许您在虚拟化来宾操作系统中安装一堆设备驱动程序,这些驱动程序知道来宾硬件,并允许直接将设备从主机操作系统传递到来宾,而无需模拟步骤。(然而,这仅在您在主机上运行一个操作系统实例时才有效,因为如果您将其传递给来宾,其他人将无法访问该设备)。
忽略像 VMWare ESX 这样的软件本身就是一个操作系统(修改后的 Linux 版本)这一事实,在另一个操作系统版本之上通常在内核空间和用户空间中运行,它为所有操作系统安装驱动程序(在内核空间中运行)。特权任务(网络、监控等)
归档时间: |
|
查看次数: |
2931 次 |
最近记录: |