全部博文(370)
分类: 虚拟化
2011-10-23 15:25:16
现代的 x86 的架构使得可以扩展 Xen 支持未经修改的客户端。在 xen 3.x 系列之前只支持半虚拟化。更新的版本允许运行 Hardware Virtual Machine (HVM) 客户端。
一个未经修改的 OS 不支持 Xen 的分离硬件驱动。这意味着 Xen 必须模拟一些东西使得客户端可以支持。一小部分设备可以这么做,使用qemu。
HVM 客户机和半虚拟化的客户机有几个不同点,在启动时,一个半虚拟化客户机以保护模式启动,某些包含启动信息的内存页由 hypervisor 映射,但是一个 HVM 客户机从实模式启动,从一个模拟的 BIOS 获得配置信息。
如果一个 HVM 客户机要使用 xen 特定特性的优点,它需要使用 cpuid 指令来访问一个虚拟机特定的寄存器并访问 hypercall 页。然后可以和半虚拟化的客户机类似那样通过调用在 hypercall 页中一个偏移来发布 hypercall,然后使用比如 vmcall 指令来转移到 hypercall。