用户态qemu和KVM

用户态qemu和KVM

当在目标 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
    

    一个评论的例子:为 ARM 编写的原生 Android 代码如何在 x86 上运行

现在,对于更有趣的问题,它在理论上可行吗?

我不确定,但是关于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',需要进一步调查/询问。

相关内容