Qemu源代码流程

时间:2013-03-18 19:29:09

标签: qemu

我正在构建一个项目,其中我必须提取在qemu-kvm之上运行的虚拟机脏的页面。我下载了qemu源代码但由于源代码非常大而无法理解这一点那么请给我关于源代码处理和弄脏页面的指导。

2 个答案:

答案 0 :(得分:4)

同意源代码很大且难以掌握。

最近有类似的问题,我在那里发布了一个图表,我想提请你注意,也许是作为一个很好的探索起点:

Question on QEMU code flow

答案 1 :(得分:3)

我同意QEMU源代码太大且难以理解。下面的链接简要介绍了QEMU的运行方式以及QEMU的基本功能。

在此链接中,该人员对QEMU功能,QEMU结构,流程进行了详细研究。 PDF随附详细说明。他谈到vl.c(主文件),目标代码,TCG,动态翻译,代码库,执行开始等。

Documentation on QEMU

编辑:文档中的一些要点:

开始执行: /中对研究重要的主要C文件是; /vl.c、/cpus.c、/execall.c、/exec.c、/cpu-exec.c。执行开始的“主要”功能是 在/vl.c中定义。该文件中的功能设置了虚拟机环境 根据给定的虚拟机规范(例如ram的大小) 设备,CPU数量等。从主功能开始,在虚拟机之后 设置后,执行会通过/cpus.c、/exec-all.c、/exec.c, /cpu-exec.c。

仿真硬件: 可以在以下位置找到模拟虚拟机中所有虚拟硬件的代码: / hw /。 QEMU模拟了大量的硬件,但是详细 这项研究不需要了解如何仿真硬件。

特定的访客(目标): 当前在QEMU中模拟的处理器体系结构是: Alpha,ARM,Cris, i386,M68K,PPC,Sparc,Mips,MicroBlaze,S390X和SH4。特定于代码 将TB转换为TCG op所需的这些架构 / target-xyz /,其中xyz可以是上述任何给定的体系结构名称。因此 在/ target-i386 /中可以找到特定于i386的代码。这部分可以称为 TCG的前端。

特定于主机(TCG): 放置了用于从TCG操作生成主机代码的主机特定代码 在/ tcg /中。在TCG内可以找到/ xyz /,其中xyz可以是i386,sparc等 包含将TCG ops转换为特定于体系结构的代码的代码。这部分 可以称为TCG的后端。

/vl.c::主仿真器循环,虚拟机已设置且CPU被执行。

/target-xyz/translate.c:提取的访客代码(特定于访客 ISA)转换为架构 独立的TCG行动

/tcg/tcg.c: TCG的主要代码。

/ tcg / * / tcg-target.c:将TCG操作转换为主机的代码 代码(特定于主机的ISA)。

/cpu-exec.c :/cpu-exec.c中的函数cpu-exec()找到了 下一个翻译块(TB)(如果找不到) 进行呼叫以生成下一个TB, 最后执行生成的代码。