gpt4 book ai didi

linux - 如果在一台 x86 主机上运行 2 个 type-2 VMX hypervisor 会怎样?

转载 作者:可可西里 更新时间:2023-11-01 10:32:10 28 4
gpt4 key购买 nike

在Intel VMX操作中,首先需要调用VMXON(VMXON_REGION)来开启CPU中的VMX,然后是VMPTRLD(VMCS_REGION)
我的问题来了。
如果两个托管管理程序同时在一台 X86 主机上运行会怎样?第一个 VMXON 运行良好,但第二个 VMXON 将失败。
并且 2 个 hypervisor 可能会调用 VMPTRLD(VMCS_REGION_a)VMPTRLD(VMCS_REGION_b),CPU 中的当前 VMCS 已更改,它会导致另一个 hypervisor 崩溃还是它们可以共同 -彼此存在?
根据我对 SDM 的阅读,我认为它们不能共存,也许我又错过了一些重要的事情。

请帮助澄清这一点。

最佳答案

你是对的,英特尔 VT-x 的当前状态不允许并排并发运行两个独立的虚拟机监视器 (VMM)。它们会造成系统资源冲突,从而导致未定义的行为,包括虚拟机 (VM) 崩溃、挂起或重新启动,可能还有数据损坏。

例如,同时为不同的可视化解决方案加载内核驱动程序是不安全的,甚至不启动 VM。例如,我遇到过问题KVM 和 Virtualbox 或 KVM 和 Simics VMP 一起加载。

一个 VMM 不可能安全地阻止另一个 VMM 的加载或操作。一个 VMM 可靠地检测其他 VMM 的存在甚至是有问题的,因为 VMXON/VMXOFF 可以在操作系统 (OS) 操作期间动态完成,并且没有硬件资源可以充当互斥对象或虚拟化锁资源。

唯一适用于现代硬件的方法是让主机操作系统提供一个 API 来调解对底层虚拟化资源的请求(VMXON/VMXOFF、VMMPTRLD、VMLAUNCH/VMRESUME 等),并让所有 VMM 同意使用这个应用程序接口(interface)。此类功能适用于 Apple Mac OS X,最近也适用于 Microsoft Windows 系统。但是,有人可能会争辩说这些 API 在某种程度上限制了 VMM 作者。

关于linux - 如果在一台 x86 主机上运行 2 个 type-2 VMX hypervisor 会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50265861/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com