gpt4 book ai didi

虚拟化 CPU 仿真

转载 作者:行者123 更新时间:2023-12-02 05:06:19 28 4
gpt4 key购买 nike

我对虚拟机的 CPU 虚拟化有疑问。我无法理解即时到 native 代码翻译与陷阱和模拟翻译之间的区别。

据我所知,在第一种情况下,假设我从不同的平台模拟二进制代码,如果我有 x86 CPU,代码将转换为等效的 x86 指令。现在,在陷阱和模拟方法中,虚拟机从客户操作系统接收 ISA 调用并将其转换为主机操作系统的等效 ISA 调用。

为什么我们需要从 ISA 转换到 ISA?假设我在 Windows 主机上运行 Ubuntu 客户机。 Ubuntu ISA 调用与 Windows ISA 调用不同吗?我知道 guest 无法访问主机上的系统 ISA,只有监视器可以做到这一点。但为什么需要转换为 Host ISA? ISA 也依赖于操作系统?

最佳答案

当从一个 ISA 运行代码到另一个 ISA 时,例如在 x86 CPU 上运行 M68K 代码,使用“即时到 native ”转换(通常称为 JIT 编译/转换)。这绝不是虚拟化,而是仿真。

陷阱和模拟是一种在非特权环境中运行“特权”代码的方法(例如:将内核作为应用程序运行)。它的工作方式是您开始执行特权代码,一旦它尝试执行特权指令(例如 x86 中的 lidt),主机操作系统就会发出陷阱。在该陷阱的处理程序中,您可以模拟该特定的特权指令,然后让 guest 内核继续执行。这样做的好处是您将达到接近 CPU 仿真的 native 速度。

但是,仅模拟 ISA 只是模拟完整系统的“小”部分。 MMU 的仿真/虚拟化要正确并快速运行要复杂得多。

关于虚拟化 CPU 仿真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16247813/

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