重要的执行路径介绍 为了帮助读者了解 kvm 及 qemu-kvm 代码的主体结构,我们可以看一下代表一个 VCPU 的 qemu-kvm 线程的重要执行路径,如图三所示 : 在此图中,最左侧的执行路径是 qemu-kvm 的代码建立一个虚拟机的过程,起点是 pc_init_rhel620, 该函数的代码在 hw/pc.c 中,“rhel620”代表 qemu-kvm 对虚拟机的定义, hw/pc.c 中提供了多个虚拟机定义,“rhel620” 是保留选用的定义,“rhel620”定义采用“cpu64-rhel6” CPU 模型,支持最大 255 个虚拟CPU。一个 CPU 模型定义了虚拟的 CPU 所支持的特征列, qemu-kvm 定义的全部 CPU 模型在 sysconfigs/target/cpu-x86_64.conf 文件下。函数pc_init1 是 qemu-kvm 用户空间很关键的一个函数,其代码中需要创建虚拟机的 PC 硬件,如分配物理内存,加载 BIOS, 分配 IO 端口空间,创建平台设备,创建 VGA 设备等。 pc_init1 然后要做的工作就是为每个 VCPU 创建一个线程。
|