在这里插入代码片
# QEMU细节研究
(一)概述
QEMU是一个机器仿真工具,可以在运行该工具的机器上模拟指定数量的处理器体系结构。对于QEMU来说,需要模拟的体系结构称为Target,运行QEMU的机器称为Host。虚拟机(Target)代码到宿主机(Host)代码的动态转换是由QEMU中的TCG(Tiny
Code Generator,微型代码生成器)完成的。
因此,可以将仿真的虚拟机处理器(OS + USER
TOOLS)运行的代码称为Guest代码,QEMU通过提取Guest代码并将其转换为Host代码来实现虚拟机代码指定的功能。整个翻译任务由两部分组成:首先将目标代码块即TB(Translation
Block,翻译块)转换为TCG ops(一种与机器无关的中间符号),然后将TCG
ops转换为Host架构的主机代码。中间还涉及一些可选的优化过程。
(二)Codebase(代码库)
若想要通过扩展机器仿真器并将生成的代码迁移到远程节点中执行以实现新功能的添加,需要对QEMU代码库有一个清晰的理解。QEMU代码库有1300多个文件,这些文件被很好地组织成不同的特定部分。尽管代码组织得很好,但它的复杂性足以让任何新开发人员感到困惑。本节将介绍QEMU代码