当在目标 x86(或只是目标 arch = 主机 arch)上运行目标 x86 的用户模式 qemu 时,qemu 会使用 KVM,将控制权直接转移到 CPU 还是会解释指令。
答案1
用户模式不使用 KVM 的一些间接证据:
用户态可执行文件
qemu-x86_64 --help
不显示--kvm
选项,而完整系统可执行文件则显示选项qemu-system-x86_64 --help
我们可以通过以下方式查看输入指令和二进制翻译指令:
qemu-x86_64 -d in_asm,out_asm hello.out
现在,对于更有趣的问题,它在理论上可行吗?
我不确定,但是关于gem5模拟器,它也有一个类似的用户模式(称为系统调用模拟),AMD 至少对这种可能性进行了一些认真的调查,他们得出的结论是这是可能的:http://www.m5sim.org/wiki/images/5/53/2015_ws_12_KVM-in-SE.pdf
实际上在 2014 年合并了一些东西:adbaa4dfde96d5aaf84adf0ae4989ef880aad726“kvm,x86:添加对 SE 模式执行的支持”。但是当我尝试 3ca404da175a66e0b958165ad75eb5f54cb5e772 时,它失败了KeyError: 'OsKernel'
,需要进一步调查/询问。