虚拟机现场数据的处理方法和装置制造方法

文档序号:6551900阅读:132来源:国知局
虚拟机现场数据的处理方法和装置制造方法
【专利摘要】本发明实施例提供一种虚拟机现场数据的处理方法和装置,该方法包括:待切入第一虚拟机时,判断宿主机的预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号;所述当前虚拟机号是在待切入第一虚拟机之前,在宿主机上运行完成的虚拟机所对应的虚拟机号;若是,则确定虚拟机专用寄存器内的当前值为切入所述第一虚拟机所需的第一现场数据;若否,将所述虚拟机专用寄存器内的当前值存储至所述预设空间内存储的虚拟机号所对应的虚拟机暂存空间;将所述第一虚拟机对应的虚拟机暂存空间内的第一现场数据恢复至所述虚拟机专用寄存器;通过本发明提供的虚拟机现场数据的处理方法和装置,优化了虚拟机的切换过程,提高了虚拟机切换速度。
【专利说明】虚拟机现场数据的处理方法和装置
【技术领域】
[0001]本发明实施例涉及计算机【技术领域】,尤其涉及一种虚拟机现场数据的处理方法和
>J-U ρ?α装直。
【背景技术】
[0002]随着云计算的应用,系统虚拟化得到了越来越快的发展,越来越多的架构尝试着增加虚拟化的支持,除了 Χ86架构之外,精简指令集架构(Micropr-ocessor withoutinterlocked piped stages,简称MIPS)也提出了一套硬件辅助虚拟化规范,MIPS架构下的系统虚拟化也得到了长足的发展。
[0003]MIPS架构硬件辅助虚拟化规范中提出了一种专门供虚拟机的额外模式,即专门供虚拟机运行的一种操作模式,在这种模式下拥有很多专供虚拟机使用的专用寄存器,可以称之为虚拟机专用寄存器,通过这种方式可以很大程度上提升虚拟机的运行速度。一般来说,切换虚拟机的方式如下:
[0004]当前时刻准备切入虚拟机,将当前时刻的物理CPU(Central Processing Unit,中央处理器)内部宿主机通用寄存器、部分宿主机控制寄存器中的数据保存至宿主机的暂存空间,并将该虚拟机运行所需的现场数据恢复至物理CPU ;举例来说,在当前时刻之前的上一时刻,该虚拟机在宿主机上运行过,且在运行过程中该虚拟机访问了寄存器(具体可以为通用寄存器、控制寄存器或专用寄存器),将该寄存器中的值进行了更新,例如更新了该虚拟机运行所需的文件的存放路径,为使该虚拟机在之后的运行过程中可使用正确的存放路径查找到上述运行所需的文件,则将寄存器中的值作为现场数据保存至虚拟机暂存空间;因此,在当前时刻准备切入虚拟机时,需要将虚拟机暂存空间存储的现场数据进行恢复;依次类推,在切入虚拟机之后,进行了该虚拟机的本次运行,且下一个时刻准备退出该虚拟机时,则将寄存器中的当前值(针对此次运行过程中产生的值)作为新的现场数据保存至虚拟机暂存空间,并将之前保存至宿主机暂存空间的寄存器值恢复到物理CPU中。
[0005]影响虚拟机切换速度主要是这些寄存器的保存和恢复,且在拥有硬件辅助虚拟化支持的情况下,由于增加了虚拟机专用寄存器,因此虚拟机切换时寄存器保存和恢复的开销进一步增大了,导致虚拟机切换速度的下降。

【发明内容】

[0006]本发明实施例提供一种虚拟机现场数据的处理方法和装置,用于优化虚拟机的切换过程,以提高虚拟机切换速度。
[0007]第一方面,本发明实施例提供一种虚拟机现场数据的处理方法,包括:
[0008]待切入第一虚拟机时,判断宿主机的预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号;所述当前虚拟机号是在待切入第一虚拟机之前,在宿主机上运行完成的虚拟机所对应的虚拟机号;
[0009]若是,则确定虚拟机专用寄存器内的当前值为切入所述第一虚拟机所需的第一现场数据;
[0010]若否,将所述虚拟机专用寄存器内的当前值存储至所述预设空间内存储的虚拟机号所对应的虚拟机暂存空间;
[0011]将所述第一虚拟机对应的虚拟机暂存空间内的第一现场数据恢复至所述虚拟机专用寄存器。
[0012]结合第一方面,在第一实施方式中,所述处理方法还包括:
[0013]当所述第一虚拟机待退出时,将所述第一虚拟机的虚拟机号作为新的所述当前虚拟机号,存储至所述宿主机的预设空间内;
[0014]并将运行所述第一虚拟机产生的更新后的第一现场数据作为新的当前值,保留至所述虚拟机专用寄存器中。
[0015]结合第一方面第一实施方式,在第二实施方式中,在判断宿主机的预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号之前,所述控制方法还包括:
[0016]将第一寄存器中的宿主机的现场数据存储至所述宿主机暂存空间;
[0017]将所述第一虚拟机对应的虚拟机暂存空间中的所述第二现场数据恢复至第二寄存器中。
[0018]结合第一方面第二实施方式,在第三实施方式中,所述控制方法还包括:
[0019]当所述第一虚拟机待退出时,将所述第二寄存器中更新后的值作为新的第二现场数据存储至所述第一虚拟机对应的虚拟机暂存空间中;
[0020]将所述宿主机暂存空间存储的所述宿主机当前现场数据恢复至所述第一寄存器。
[0021]结合第一方面第三实施方式,在第四实施方式中,所述第二寄存器为运行虚拟机过程中,所述虚拟机访问的通用寄存器和控制寄存器。
[0022]第二方面,本发明实施例提供一种虚拟机现场数据的处理装置,包括:
[0023]判断模块、第一存储模块和确定模块,所述确定模块与所述判断模块相连接,所述第一存储模块与所述判断模块相连接;
[0024]所述判断模块,用于待切入第一虚拟机时,判断宿主机的预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号;所述当前虚拟机号是在待切入第一虚拟机之前,在宿主机上运行完成的虚拟机所对应的虚拟机号;
[0025]所述确定模块,用于在所述判断模块判断所述宿主机的预设空间内存储的当前虚拟机号为所述第一虚拟机的虚拟机号时,确定虚拟机专用寄存器内的当前值为切入所述第一虚拟机所需的第一现场数据;
[0026]所述第一存储模块,用于在所述判断模块判断所述宿主机的预设空间内存储的当前虚拟机号不为所述第一虚拟机的虚拟机号时,将所述虚拟机专用寄存器内的当前值存储至所述预设空间内存储的虚拟机号所对应的虚拟机暂存空间;将所述第一虚拟机对应的虚拟机暂存空间内的第一现场数据恢复至所述虚拟机专用寄存器。
[0027]结合第二方面,在第一实施方式中,所述处理装置还包括第二存储模块,
[0028]所述第二存储模块,用于当所述第一虚拟机待退出时,将所述第一虚拟机的虚拟机号作为新的所述当前虚拟机号,存储至所述宿主机的预设空间内;
[0029]并将运行所述第一虚拟机产生的更新后的第一现场数据作为新的当前值,保留至所述虚拟机专用寄存器中。[0030]结合第二方面第一实施方式,在第二实施方式中,所述处理装置还包括第三存储模块
[0031]所述第三存储模块,用于将第一寄存器中的宿主机当前现场数据存储至所述宿主机暂存空间;
[0032]并将所述第一虚拟机对应的虚拟机暂存空间中的所述第二现场数据恢复至第二寄存器中。
[0033]结合第二方面第二实施方式,在第三实施方式中,所述处理装置还包括第四存储模块
[0034]所述第四存储模块,用于当所述第一虚拟机待退出时,将所述第二寄存器中更新后的值作为新的第二现场数据存储至所述第一虚拟机对应的虚拟机暂存空间中;
[0035]并将所述宿主机暂存空间存储的所述宿主机当前现场数据恢复至所述第一寄存器。
[0036]结合第二方面第三实施方式,在第四实施方式中,所述第二寄存器为运行虚拟机过程中,所述虚拟机访问的通用寄存器和控制寄存器。
[0037]本发明实施例提供的虚拟机现场数据的处理方法和装置,在待切入第一虚拟机时,通过判断宿主机的预设空间内存储的当前虚拟机号为第一虚拟机的虚拟机号,则可获知虚拟机专用寄存器中的当前值是可用于正确运行第一虚拟机所需的第一现场信息,即切入第一虚拟机之前,宿主机运行了第一虚拟机并将用于该第一虚拟机再次运行所需的第一现场数据未存储至虚拟机暂存空间,而是保留在虚拟机专用寄存器中,则在本次运行时,不需要从虚拟机暂存空间中将第一现场数据恢复至虚拟机专用寄存器,节省了虚拟机专用寄存器保存和恢复的开销,提高了虚拟机的切换速度。
【专利附图】

【附图说明】
[0038]图1为本发明虚拟机现场数据的处理方法实施例一的流程图;
[0039]图2为本发明虚拟机现场数据的处理方法实施例二的流程图;
[0040]图3为本发明虚拟机现场数据的处理装置实施例一的结构图;
[0041]图4为本发明虚拟机现场数据的处理装置实施例二的结构图。
【具体实施方式】
[0042]图1为本发明虚拟机现场数据的处理方法实施例一的流程图。如图1所示,本实施例的执行主体为虚拟机现场数据的处理装置,该处理装置可以采用硬件和/或软件的方式实现,具体的,本实施例的具体步骤如下:
[0043]S101、待切入第一虚拟机时,判断宿主机的预设空间内存储的当前虚拟机号是否为第一虚拟机的虚拟机号;若是,执行S102 ;若否,执行S103。
[0044]本实施例中,分配了宿主机内的一段存储空间作为上述预设空间,该预设空间用于存储前一个时刻宿主机上运行完成的虚拟机的虚拟机号,即上述当前虚拟机号是在待切入第一虚拟机之前,在宿主机上结束运行的虚拟机所对应的虚拟机号;则在当前时刻,宿主机准备切入的第一虚拟机时,该第一虚拟机可能是前一个时刻宿主机上运行完成的虚拟机,也可能不是,因此需要判断预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号。
[0045]上述前一时刻、当前时刻为相对概念;可以理解的,在实际应用中,在tl时刻运行完成虚拟机A,随后在t2时刻再次运行虚拟机B,则对t2时刻来说,tl为前一时刻,而t2即为当前时刻;随着时间的推移,在t3时刻虚拟机B运行完成,且在t4时刻运行了虚拟机C,则对t4时刻来说,t3为前一时刻,而t4即为当前时刻。
[0046]S102、确定虚拟机专用寄存器的当前值为切入第一虚拟机所需的第一现场数据。
[0047]上述现场数据用于在虚拟机第一次运行结束之后保证该虚拟机正确进行第二次运行,其中“第一次”和“第二次”为相对概念,即在tl时刻运行了虚拟机A,在t2时刻再次运行虚拟机A,则对于t2时刻来说,tl时刻运行的虚拟机过程为第一次运行,而t2时刻则为第二次运行;可以理解的,当t3时刻再次运行虚拟机A时,对于t3时刻来说,t2时刻则为第一次运行,t3时刻为第二次运行。
[0048]上述第一现场数据是第一虚拟机在第一次运行过程中,访问虚拟机专用寄存器产生的现场数据;该第一现场数据用于保证第一虚拟机在第二次运行过程中,涉及虚拟机专用寄存器的操作时,该第一虚拟机可正确运行;
[0049]由于在SlOl中判断出预设空间内存储的当前虚拟机号为第一虚拟机的虚拟机号,则说明宿主机在当前时刻之前,所运行的虚拟机即为该第一虚拟机,因此虚拟机专用寄存器内的当前值即为可保证第一虚拟机在当前时刻可正确运行的第一现场数据,也就是说,宿主机在当前时刻之前运行第一虚拟机之后,宿主机上无任何程序更改虚拟机专用寄存器的值,因此第一虚拟机在当前时刻再次在宿主机上运行时,虚拟机专用寄存器内的当前值即为第一虚拟机的正确运行不可缺少的第一现场数据。
[0050]通常宿主机上运行的每一个虚拟机在运行过程中都会对虚拟机专用寄存器、通用寄存器和控制寄存器进行访问,在每一个虚拟机结束运行时,各个寄存器中的值已发生改变,因此当虚拟机在结束运行时,各个寄存器中的值则作为该虚拟机的现场数据,且该虚拟机再次运行时,可根据这些现场数据正确运行;其中,当虚拟机在结束运行时,虚拟机专用寄存器中的值是第一现场数据,而作为非虚拟机专用寄存器的第二寄存器(如虚拟机访问过的通用寄存器、控制寄存器等)的值为所述的第二现场数据;也可以说,第一虚拟机在第一次运行结束后,若要正常进行第二次的运行,则该第一虚拟机所需要的现场数据至少包括作为第一现场数据的虚拟机专用寄存器中的值,和作为第二现场数据的第二寄存器(如虚拟机访问过的通用寄存器、控制寄存器等)的值。
[0051]S103、将虚拟机专用寄存器内的当前值存储至预设空间内存储的虚拟机号所对应的虚拟机暂存空间。
[0052]由于在SlOl中判断出预设空间内存储的当前虚拟机号不是第一虚拟机的虚拟机号,则说明宿主机在当前时刻之前,所运行的虚拟机即不为该第一虚拟机。
[0053]举例来说,在当前时刻之前,宿主机上运行了虚拟机B,则虚拟机B结束运行时,虚拟机专用寄存器中的值是针对该虚拟机B的第一现场数据,且预设空间内存储的虚拟机号为虚拟机B的虚拟机号,但在当前时刻需要运行作为上述第一虚拟机的虚拟机A,而虚拟机A在运行过程中会访问该虚拟机专用寄存器,因此为了防止运行虚拟机A的过程中修改了虚拟机专用寄存器中针对该虚拟机B的第一现场数据,导致虚拟机B再次运行时,不能根据正确的第一现场数据运行,因此将虚拟机专用寄存器内的当前值,即针对虚拟机B的第一现场数据存储至虚拟机B对应的虚拟机暂存空间。
[0054]S104、将第一虚拟机对应的虚拟机暂存空间内的第一现场数据恢复至虚拟机专用
寄存器。
[0055]需要补充说明的是,通过上述SlOl?S102或SlOl和S103,以确定了切入所述第一虚拟机所需的第一现场数据的同时,还将第一虚拟机对应的暂存空间中的第二现场数据恢复至第二现场数据,随后基于第一现场数据和第二现场数据,切入第一虚拟机。
[0056]举例来说,在当前时刻t3之前的t2时刻宿主机运行了虚拟机B,而在运行虚拟机B之前的tl时刻,宿主机运行完成了虚拟机A,则可以理解的,在tl时刻虚拟机专用寄存器中存储的是虚拟机A的第一现场数据,且虚拟机A对应的虚拟机暂存空间中存储了第二寄存器中的第二现场数据,则在t2时刻切入虚拟机B时,虚拟机现场数据的处理装置将虚拟机专用寄存器中存储的虚拟机A的第一现场数据存储至虚拟机A对应的虚拟机暂存空间中;因此在t3时刻再次运行作为第一虚拟机的虚拟机A时,则在虚拟机A对应虚拟机暂存空间中将t2时刻存储的第一现场数据恢复至虚拟机专用寄存器,同样的,将第二现场数据恢复至第二寄存器,则基于些现场数据在当前时刻正确运行虚拟机A。
[0057]需要补充的是,在t3时刻之前运行了虚拟机B,且在t3时刻切入作为第一虚拟机的虚拟机A时,该虚拟机A是首次运行,则虚拟机A对应的虚拟机暂存空间中存储的第一现场数据和第二现场数据具体为虚拟机A的初始化数据。
[0058]本实施例中,待切入第一虚拟机时,通过判断宿主机的预设空间内存储的当前虚拟机号为第一虚拟机的虚拟机号,则可获知虚拟机专用寄存器中的当前值是切入第一虚拟机所需的第一现场数据,即切入第一虚拟机之前,宿主机运行了第一虚拟机并将用于该第一虚拟机再次运行所需的第一现场数据未存储至虚拟机暂存空间,而是保留在虚拟机专用寄存器中,则在本次运行时,不需要从虚拟机暂存空间中将第一现场数据恢复至虚拟机专用寄存器,节省了虚拟机专用寄存器保存和恢复的开销,提高了虚拟机的切换速度。
[0059]图2为本发明虚拟机现场数据的处理方法实施例二的流程图。如图2所示,本实施例是在图1所示的实施例的基础上作出进一步的描述,具体的,本实施例包括的具体步骤为:
[0060]S201、将第一寄存器中的宿主机的现场数据存储至所述宿主机暂存空间。
[0061]上述第一寄存器为宿主机正常运行时访问的寄存器,第一寄存器具体包括通用寄存器、宿主机需访问的控制寄存器等;宿主机有用于自身运行的运行系统,而各种程序是在宿主机正常运行的基础上进行工作的,上述虚拟机也为其中的一种运行程序;宿主机的运行系统如同虚拟机的运行,在宿主机的运行系统正常运行过程中由于访问了第一寄存器,则在第一寄存器中写入、修改、更新了一些数据,则在宿主机运行虚拟机时,为了防止运行的虚拟机访问第一寄存器而更改了第一寄存器中的值,导致虚拟机结束运行后,宿主机无法进行自身的运行系统,则在切入第一虚拟机时,需对第一寄存器中的宿主机当前现场数据存储值宿主机暂存空间,例如在t3时刻需要切入虚拟机,此时第一寄存器中的值即为宿主机在t3时刻之前运行产生的现场数据,当t4时刻结束虚拟机后,即需要切换回宿主机的运行环境中,因此宿主机需根据之前t3时刻的宿主机的现场数据,正确切换回宿主机的运行环境;为了避免宿主机上的程序更改第一寄存器中的值,则在切入第一虚拟机时,需对第一寄存器中的宿主机当前现场数据存储值宿主机暂存空间;其中第一寄存器具体包括通用寄存器、宿主机需访问的控制寄存器等。
[0062]S202、将第一虚拟机对应的虚拟机暂存空间中的第二现场数据恢复至第二寄存器中。
[0063]由于第一虚拟机的正常运行是需要第二现场数据的,因此在切入第一虚拟机之前,需将第一虚拟机对应的虚拟机暂存空间中的第二现场数据恢复至第二寄存器中。
[0064]S203、判断宿主机的预设空间内存储的当前虚拟机号是否为第一虚拟机的虚拟机号;若是,执行S204 ;若否,执行S205。
[0065]S204、确定虚拟机专用寄存器内的当前值为切入所述第一虚拟机所需的第一现场数据。
[0066]执行上述S201?S204后,即已经为第一虚拟机的切入准备好第一现场数据和第二现场数据便可执行S207。
[0067]S205、将虚拟机专用寄存器内的当前值存储至预设空间内存储的虚拟机号所对应的虚拟机暂存空间;
[0068]S206、将第一虚拟机对应的虚拟机暂存空间内的第一现场数据恢复至虚拟机专用寄存器;
[0069]通过执行S201?S203和S205和S206,为第一虚拟机的切入准备好第一现场数据和第二现场数据,便可执行S207。
[0070]S207、根据第一现场数据和所述第二现场数据,切入第一虚拟机。
[0071]上述S203至S206可参考前述SlOl?S104。
[0072]S208、第一虚拟机待退出时,将第一虚拟机的虚拟机号作为新的当前虚拟机号,存储至宿主机的预设空间内。
[0073]S209、将运行第一虚拟机产生的更新后的第一现场数据作为新的当前值,保留在虚拟机专用寄存器中,并将第二寄存器中更新后的值作为新的第二现场数据存储至第一虚拟机对应的虚拟机暂存空间。
[0074]上述第一虚拟机结束本次运行之后,宿主机先开始运行自身的运行系统,随后可能会再次切入该第一虚拟机,若在这种情况下,再次切入的第一虚拟机可直接使用虚拟机专用寄存器中的当前值作为第一虚拟机再次正常运行所需的第一现场数据,因此在这种情况下,虚拟机专用寄存器中的值不需如现有技术中先保存至虚拟机暂存空间,随后再恢复至该虚拟机专用寄存器,从而可节省了对虚拟机专用寄存器进行保存和恢复的开销。
[0075]另外,第一虚拟机在运行过程中访问第二寄存器,即在该第一虚拟机待退出时,第二寄存器中的值相比于该第一虚拟机在本次切入时已发生更新;由于退出第一虚拟机后,宿主机的自身的运行系统及之后承载的非第一虚拟机会访问第二寄存器,因此为了保护供第一虚拟机再次正常运行所需的第二现场数据,因此将第二寄存器中更新后的值作为新的第二现场数据存储至第一虚拟机对应的虚拟机暂存空间中。
[0076]S210、将宿主机暂存空间存储的宿主机现场数据恢复至所述第一寄存器。
[0077]将第一虚拟机退出后,即宿主机开始运行自身的运行系统,为使宿主机正确的运行,需要将S201中存储至宿主机暂存空间的宿主机当前现场数据恢复至第一寄存器。
[0078]S211、退出第一虚拟机。
[0079]为使上述流程更为清楚,进行下述举例说明:[0080]在tl时刻运行虚拟机A,该虚拟机A可以为KVM(Kernel-based Virtual Machine,基于内核的虚拟机),虚拟机A在退出时将虚拟机专用寄存器中的一个字符a的数值定义为1,将第二寄存器中的字符b定义为2,其中“a = I”保留在虚拟机的专用寄存器中,且虚拟机A的虚拟机号缓存在上述预设空间内,该预设空间可以使用变量定义,而“b = 2”由第二寄存器保存至虚拟机A对应的虚拟机暂存空间中,随后恢复宿主机的运行环境;在作为当前时刻的t2时刻,虚拟机A作为第一虚拟机待切入,则执行S201、S202jf“b = 2”恢复至第二寄存器,并通过S203获知宿主机的预设空间内存储的虚拟机号为虚拟机A,则可知此时的虚拟机专用寄存中的第一现场数据可被此时的虚拟机A使用,则执行S204,进一步执行S207切入虚拟机A ;虚拟机A完成本次运行时,按照S208将虚拟机A的虚拟机号保存至宿主机的预设空间内;由于“a = I”更新为“a = 2”,则按照S209,将“a = 2”作为新的当前值,保留在虚拟机专用寄存器中,并将第二寄存器中更新后的值“b = 3”作为新的第二现场数据存储至虚拟机A对应的虚拟机暂存空间中;最后按照S210将宿主机暂存空间存储的宿主机当前现场数据恢复至第一寄存器,即将宿主机的运行环境恢复为t2时刻之前的状态,以使宿主机的状态保持准确正常;
[0081]若在t2时刻作为待切入的第一虚拟机为虚拟机B,则依次通过S201?S203,确定虚拟机专用寄存器中此时的“a = I”不能使虚拟机B正常运行,则需将虚拟机B对应的虚拟机暂存空间中第一现场数据、第二现场数据分别恢复至虚拟机专用寄存器和第二寄存器,但此时为了保证虚拟机专用寄存器中用于虚拟机A再次运行使用的“a = I”不被虚拟机B的第一现场数据覆盖,则执行S205、S206 ;随后当虚拟机B退出时,则虚拟机B作为第一虚拟机,切换虚拟机的控制装置继续按照S208?S211执行。
[0082]本实施例中,待切入第一虚拟机时,通过判断宿主机的预设空间内存储的当前虚拟机号为第一虚拟机的虚拟机号,则可获知虚拟机专用寄存器中的当前值是可用于正确运行第一虚拟机所需的第一现场信息,即切入第一虚拟机之前,宿主机运行了第一虚拟机并将用于该第一虚拟机再次运行所需的第一现场数据未存储至虚拟机暂存空间,而是保留在虚拟机专用寄存器中,则在本次运行时,不需要从虚拟机暂存空间中将第一现场数据恢复至虚拟机专用寄存器,节省了虚拟机专用寄存器保存和恢复的开销,提高了虚拟机的切换速度。
[0083]图3为本发明虚拟机现场数据的处理装置实施例一的结构图。如图3所示,本实施例中的切换虚拟机的控制装置包括:
[0084]判断模块31、第一存储模块32和确定模块33,其中确定模块33与判断模块31相连接,第一存储模块32与判断模块31相连接;
[0085]判断模块31用于待切入第一虚拟机时,判断宿主机的预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号;所述当前虚拟机号是在待切入第一虚拟机之前,在宿主机上运行完成的虚拟机所对应的虚拟机号;
[0086]所述确定模块33,用于在所述判断模块31判断所述宿主机的预设空间内存储的当前虚拟机号为所述第一虚拟机的虚拟机号时,确定虚拟机专用寄存器内的当前值为切入所述第一虚拟机所需的第一现场数据;
[0087]所述第一存储模块32,用于在所述判断模块判断所述宿主机的预设空间内存储的当前虚拟机号不为所述第一虚拟机的虚拟机号时,将所述虚拟机专用寄存器内的当前值存储至所述预设空间内存储的虚拟机号所对应的虚拟机暂存空间;
[0088]所述第一存储模块32将所述第一虚拟机对应的虚拟机暂存空间内的第一现场数据恢复至所述虚拟机专用寄存器。
[0089]本实施例中,待切入第一虚拟机时,通过判断宿主机的预设空间内存储的当前虚拟机号为第一虚拟机的虚拟机号,则可获知虚拟机专用寄存器中的当前值是切入第一虚拟机所需的第一现场数据,即切入第一虚拟机之前,宿主机运行了第一虚拟机并将用于该第一虚拟机再次运行所需的第一现场数据未存储至虚拟机暂存空间,而是保留在虚拟机专用寄存器中,则在本次运行时,不需要从虚拟机暂存空间中将第一现场数据恢复至虚拟机专用寄存器,节省了虚拟机专用寄存器保存和恢复的开销,提高了虚拟机的切换速度。
[0090]图4为本发明虚拟机现场数据的处理装置实施例二的结构图。如图4所示,该处理装置还包括:
[0091]第二存储模块34,用于当所述第一虚拟机待退出时,将所述第一虚拟机的虚拟机号作为新的所述当前虚拟机号,存储至所述宿主机的预设空间内;
[0092]并将运行所述第一虚拟机产生的更新后的第一现场数据作为新的当前值,保留至所述虚拟机专用寄存器中。
[0093]进一步的,处理装置还包括第三存储模块36,所述第三存储模块35还用于
[0094]将第一寄存器中的宿主机当前现场数据存储至所述宿主机暂存空间;
[0095]并将所述第一虚拟机对应的虚拟机暂存空间中的所述第二现场数据恢复至第二寄存器中。
[0096]进一步的,处理装置还包括第四存储模块36,用于
[0097]当所述第一虚拟机待退出时,将所述第二寄存器中更新后的值作为新的第二现场数据存储至所述第一虚拟机对应的虚拟机暂存空间中;
[0098]并将所述宿主机暂存空间存储的所述宿主机当前现场数据恢复至所述第一寄存器。
[0099]其中,上述第二寄存器为运行虚拟机过程中,所述虚拟机访问的通用寄存器和控制寄存器。
[0100]具体来说,虚拟机在一次运行过程中,不仅会对虚拟机专用寄存器访问,还会对作为第二寄存器的通用寄存器和控制寄存器等进行访问,在每一个虚拟机结束运行时,各个寄存器中的值已发生改变,因此当虚拟机在结束运行时,各个寄存器中的值则作为该虚拟机的现场数据,且该虚拟机再次运行时,可根据这些现场数据正确运行;其中,当虚拟机在结束运行时,虚拟机专用寄存器中的值是第一现场数据,而作为非虚拟机专用寄存器的第二寄存器(如虚拟机访问过的通用寄存器、控制寄存器等)的值为所述的第二现场数据;也可以说,第一虚拟机在第一次运行结束后,若要正常进行第二次的运行,则该第一虚拟机所需要的现场数据至少包括作为第一现场数据的虚拟机专用寄存器中的值,和作为第二现场数据的第二寄存器(如虚拟机访问过的通用寄存器、控制寄存器等)的值;当虚拟机结束运行时,也需要对第一现场数据和第二现场数据做出妥当的处理;因此,用于切入虚拟机和在虚拟机结束运行时控制虚拟机切出的切换模块37均与上述确定模块33、第一存储模块32、第二存储模块34、第三存储模块35和第四存储模块36相连。
[0101]本实施例中的各个模块对应执行上述各个方法实施例中的各个步骤,具体实施过程及效果请参照前述方法实施例,在此不再赘述。
[0102]本实施例中,待切入第一虚拟机时,切换虚拟机的控制装置通过判断宿主机的预设空间内存储的当前虚拟机号为第一虚拟机的虚拟机号,则可获知虚拟机专用寄存器中的当前值是可用于正确运行第一虚拟机所需的第一现场信息,即切入第一虚拟机之前,宿主机运行了第一虚拟机并将用于该第一虚拟机再次运行所需的第一现场数据未存储至虚拟机暂存空间,而是保留在虚拟机专用寄存器中,则在本次运行时,切换虚拟机的控制装置不需要从虚拟机暂存空间中将第一现场数据恢复至虚拟机专用寄存器,节省了虚拟机专用寄存器保存和恢复的开销,提高了虚拟机的切换速度。
[0103]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0104]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种虚拟机现场数据的处理方法,其特征在于,包括: 待切入第一虚拟机时,判断宿主机的预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号;所述当前虚拟机号是在待切入第一虚拟机之前,在宿主机上运行完成的虚拟机所对应的虚拟机号; 若是,则确定虚拟机专用寄存器内的当前值为切入所述第一虚拟机所需的第一现场数据; 若否,将所述虚拟机专用寄存器内的当前值存储至所述预设空间内存储的虚拟机号所对应的虚拟机暂存空间; 将所述第一虚拟机对应的虚拟机暂存空间内的第一现场数据恢复至所述虚拟机专用寄存器。
2.根据权利要求1所述的处理方法,其特征在于,还包括: 当所述第一虚拟机待退出时,将所述第一虚拟机的虚拟机号作为新的所述当前虚拟机号,存储至所述宿主机的预设空间内; 并将运行所述第一虚拟机产生的更新后的第一现场数据作为新的当前值,保留至所述虚拟机专用寄存器中。
3.根据权利要求2所述的处理方法,其特征在于,在判断宿主机的预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号之前,所述处理方法还包括: 将第一寄存器中的宿主机的现场数据存储至所述宿主机暂存空间; 将所述第一虚拟机对应的虚拟机暂存空间中的所述第二现场数据恢复至第二寄存器中。
4.根据权利要求3所述的处理方法,其特征在于,所述还包括: 当所述第一虚拟机待退出时,将所述第二寄存器中更新后的值作为新的第二现场数据存储至所述第一虚拟机对应的虚拟机暂存空间中; 将所述宿主机暂存空间存储的所述宿主机当前现场数据恢复至所述第一寄存器。
5.根据权利要求4所述的处理方法,其特征在于,所述第二寄存器为运行虚拟机过程中,所述虚拟机访问的通用寄存器和控制寄存器。
6.一种虚拟机现场数据的处理装置,其特征在于,包括: 判断模块、第一存储模块和确定模块,所述确定模块与所述判断模块相连接,所述第一存储模块与所述判断模块相连接; 所述判断模块,用于待切入第一虚拟机时,判断宿主机的预设空间内存储的当前虚拟机号是否为所述第一虚拟机的虚拟机号;所述当前虚拟机号是在待切入第一虚拟机之前,在宿主机上运行完成的虚拟机所对应的虚拟机号; 所述确定模块,用于在所述判断模块判断所述宿主机的预设空间内存储的当前虚拟机号为所述第一虚拟机的虚拟机号时,确定虚拟机专用寄存器内的当前值为切入所述第一虚拟机所需的第一现场数据; 所述第一存储模块,用于在所述判断模块判断所述宿主机的预设空间内存储的当前虚拟机号不为所述第一虚拟机的虚拟机号时,将所述虚拟机专用寄存器内的当前值存储至所述预设空间内存储的虚拟机号所对应的虚拟机暂存空间;将所述第一虚拟机对应的虚拟机暂存空间内的第一现场数据恢复至所述虚拟机专用寄存器。
7.根据权利要求6所述的处理装置,其特征在于,所述处理装置还包括第二存储模块, 所述第二存储模块,用于当所述第一虚拟机待退出时,将所述第一虚拟机的虚拟机号作为新的所述当前虚拟机号,存储至所述宿主机的预设空间内; 并将运行所述第一虚拟机产生的更新后的第一现场数据作为新的当前值,保留至所述虚拟机专用寄存器中。
8.根据权利要求7所述的处理装置,其特征在于,所述处理装置还包括第三存储模块, 所述第三存储模块,用于将第一寄存器中的宿主机当前现场数据存储至所述宿主机暂存空间; 并将所述第一虚拟机对应的虚拟机暂存空间中的所述第二现场数据恢复至第二寄存器中。
9.根据权利要求8所述的处理装置,其特征在于,所述处理装置还包括第四存储模块, 所述第四存储模块,用于当所述第一虚拟机待退出时,将所述第二寄存器中更新后的值作为新的第二现场数据存储至所述第一虚拟机对应的虚拟机暂存空间中; 并将所述宿主机暂存空间存储的所述宿主机当前现场数据恢复至所述第一寄存器。
10.根据权利要求9所述的处理装置,其特征在于,所述第二寄存器为运行虚拟机过程中,所述虚拟机访问的通用寄存器和控制寄存器。
【文档编号】G06F9/455GK104035811SQ201410309802
【公开日】2014年9月10日 申请日期:2014年7月1日 优先权日:2014年7月1日
【发明者】台运方, 蔡万伟, 刘奇, 张戈 申请人:龙芯中科技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1