我知道QEMU通常使用所谓的动态转换技术:它将目标机器的指令转换为微操作,然后通过Tiny Code Generator(TCG)将这些微操作转换为主机指令。那是: 目标指令 - >微操作 微操作 - > TCG - >主持人的指示
但是,如果目标和主机的架构相同,则两者都是x86,理论上它不需要使用TCG进行转换,因为指令集是相同的。在这种情况下,QEMU仍然使用TCG吗?
答案 0 :(得分:0)
从我读到的on this blog:qemu在这种情况下可以使用KVM
KVM是Linux内核中的虚拟化功能,它允许像qemu这样的程序直接在主机CPU上安全地执行访客代码。这只有在主机CPU支持目标体系结构时才有可能;今天,这只意味着x86-on-x86虚拟化。
答案 1 :(得分:0)
除了罗宾的回答:
重要的是要记住,除非您在命令行中指定,否则QEMU
将始终默认使用TCG
进行翻译。
例如,下面的命令行参数将以 TCG模式启动QEMU,即使主机和目标架构相同,在我的情况下,它是 x86_64
./qemu-system-x86_64 -m 10G -machine pc-i440fx-2.5 -drive file=~/ubuntu16.04.server.qcow2,format=qcow2
如果QEMU启动的命令是这样的 -
./qemu-system-x86_64 -m 10G -machine pc-i440fx-2.5 -accel kvm -drive file=~/ubuntu16.04.server.qcow2,format=qcow2
其中明确规定加速器选择 kvm ,只有这样才能在KVM模式下启动QEMU。
但是,如果目标和主机arhcitecture相同,则可以允许QEMU以KVM模式运行(如果这是您想要的),而不是TCG模式。