【摘要】:图3-3Intel VT-x的vCPU结构在具体实现中,VMM创建客户机时,首先要为客户机创建vCPU,然后再由VMM来调度运行。整个客户机的运行实际上可以看作是VMM调度不同的vCPU运行。vCPU描述符在创建之后,需要进一步初始化才能使用。vCPU的运行:vCPU创建并初始化好之后,就会被调度程序调度运行,调度程序会根据一定的策略算法来选择vCPU运行。对vCPU退出的处理是VMM进行CPU虚拟化的核心,例如模拟各种特权指令。
硬件虚拟化采用vCPU(virtual CPU,虚拟处理器)描述符来描述虚拟CPU。vCPU本质是一个结构体,以Intel VT-x为例,vCPU一般可以划分为两个部分:一个是VMCS结构(Virtual Machine Control Structure,虚拟机控制结构),其中存储的是由硬件使用和更新的内容,这主要是虚拟寄存器。一个是非VMCS结构,用于VMCS没有保存,而由VMM使用和更新的内容,主要是VMCS以外的部分。vCPU的结构如图3-3所示。
图3-3 Intel VT-x的vCPU结构
在具体实现中,VMM创建客户机时,首先要为客户机创建vCPU,然后再由VMM来调度运行。整个客户机的运行实际上可以看作是VMM调度不同的vCPU运行。vCPU的基本操作如下:
(1)vCPU的创建:创建vCPU实际上是创建vCPU描述符,由于vCPU描述符是一个结构体,因此创建vCPU描述符就是分配相应大小的内存。vCPU描述符在创建之后,需要进一步初始化才能使用。(www.xing528.com)
(2)vCPU的运行:vCPU创建并初始化好之后,就会被调度程序调度运行,调度程序会根据一定的策略算法来选择vCPU运行。
(3)vCPU的退出:和进程一样,vCPU作为调度单位不可能永远运行,总会因为各种原因退出,例如执行了特权指令、发生了物理中断等,这种退出在VT-x中表现为发生VM-Exit。对vCPU退出的处理是VMM进行CPU虚拟化的核心,例如模拟各种特权指令。
(4)vCPU的再运行:指VMM在处理完vCPU的退出后,会负责将vCPU投入再运行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。