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