据QEMU官方介绍文档:
当用作虚拟器时,QEMU 通过直接在主机 CPU 上执行来宾代码来实现接近本机的性能。
我的问题是这种行为与我们称为虚拟机管理程序的程序(例如 VirtualBox、KVM 等)有何不同?他们不是也在“主机CPU”上运行“来宾代码”吗?他们还会在哪里运行它?
更新:
如果出现下图(来源)是正确的,那么事实证明 QEMU 运行应用程序(而不是像虚拟机管理程序这样的整个操作系统),但在不同架构类型之间执行转换(例如,为 ARM 编写的程序可以在 x86 上运行)
鉴于上述情况,运行的情况是:
a) 针对特定架构的完整操作系统(例如ARM)
b) 在具有不同架构的主机上(例如 amd64)
两者需要共存
QEMU(执行跨架构映射)
和
KVM(充当硬件管理程序)
需要吗?
答案1
您引用的段落应与文档中的前一段进行对比:
当用作机器模拟器时,QEMU 可以在另一台机器(例如您自己的 PC)上运行为一台机器(例如 ARM 板)制作的操作系统和程序。通过使用动态翻译,它取得了非常好的性能。
该文档强调了用作模拟器的 QEMU 与用作虚拟器的 QEMU 之间的区别,模拟器速度较慢,因为它涉及翻译二进制代码。
从图表来看,它是不完整的。 QEMU 用途广泛,可以单独使用来模拟完整系统,运行来宾操作系统,或者虚拟化完整系统,再次运行来宾操作系统,或者在主机操作系统中模拟或虚拟化 CPU,仅运行来宾应用程序。它还可用于模拟与 KVM 一起使用的设备。