0 Comments

vCPU的运行(2)

发布于:2012-12-03  |   作者:广州网站建设  |   已聚集:人围观

该函数较长,执行的内容也比较重要,重要的部分如下。

1)在5232~5240行中,将虚拟APIC和vCPU的状态重置。这个操作通过调用kvm_lapic_reset和kvm_arch_vcpu_reset函数实现。广州网站建设

2)在5245~5270行中,正常情况下,将kvm_vcp->arch.mp_state的取值作为单机未运行的取值:KVM_MP_STATE_RUNNABLE;如果vCPU在VM中处于其他状态,则会出错。在运行中有一个循环,直到确认了vcpu_enter_guest函数执行完毕,即物理CPU进入了GUEST状态并且执行完成后,才会执行下一步操作。

3)在5273~5278行中,将检查本次执行的一些结果。如果CPU当前有挂起的定时器或者其他中断,则会保存该中断的现场。

4)在5286~5289行中,如果对当前执行的vCPU需要调度,会引用Linux的进程调度子程序进行一次任务调度。

在上面的执行流程中,最重要的执行在vcpu_enter_guest函数中,该函数实现了进入客户机并且执行具体指令的操作。

飞机