虚拟机监视器、虚拟机系统及其时钟分配使用方法

文档序号:6613841
专利名称:虚拟机监视器、虚拟机系统及其时钟分配使用方法
技术领域
本发明涉及一种计算机虚拟化技术,特别是一种虚拟机监视器、虚拟机系 统及其时钟分配^f吏用方法。
背景技术
使用虚拟化技术可以在同 一硬件平台上同时运行多个客户操作系统
(Guest Operation System, GOS )和多个虚拟的CPU。
目前的计算机中的时间是由六种时钟硬件提供的,而这些时钟硬件又都基 于固定频率的晶体振荡器来提供时钟方波信号输入。不同的操作系统可以根据 自己的需要选择合适的时钟硬件作为自己的计时器。 现有的六种时钟^_件如下所示,包括
高精度事件计时器(High Precision Event Timer, HPET),其是高精度的 时钟,可以提供最多32个计时器,并且精度和效率都比其它时钟高;
实时时钟(Real Time Clock, RTC),通过主板上的电池来供电的,以便在 PC机断电后仍然能够继续保持时间,其也称作CMOS计时器;
可编程时间间隔计时器(Programmable Interval Timer, PIT),通过O号中 断请求(Interrupt R叫uest, IRQ)产生周期性的时钟中断信号;
电源管理时钟(Power Manager Time, PMT);
局部先进可编程中断控制器向量表计时器(Local apic Vector Table Timer, LVTT);和
时间戳计数器(Time Stamp Counter, TSC ),其为不断增加的计数器,在 CPU的每个时钟信号到来时加1,可通过汇编指令读取TSC的值,利用CPU 的TSC,操作系统通常可以得到更为精准的时间度量。
在现有的虚拟机系统中,虛拟机监视器(Vitual Machine Monitor, VMM) 虛拟上述的所有的时钟硬件后,所有的GOS共享这些虚拟的时钟。
5由于VMM中这些时钟是虚拟的,所以存在着计时不准,时间延迟的缺点, 所以在虚拟机系统中给GOS提供精确的时钟成为了虛拟机系统一个急待解决 的问题。

发明内容
本发明实施例的目的是提供一种虚拟机监视器、虚拟机系统及其时钟分配 使用方法,给虚拟机系统的GOS提供精确的时钟。
为了实现上述目的,本发明的一个实施例提供一种虚拟机系统的时钟分配 使用方法,包括如下步骤
分配真实时钟资源给客户操作系统,并保存所述客户才喿作系统与所述真实 时钟资源的对应关系;
拦截所述客户操作系统对虚拟时钟资源的访问操作;
根据所述对应关系,将所述访问操作发送给对应的真实时钟资源,进行写 操作,或将所述真实时钟资源的中断注射到所述客户操作系统中对应客户操作 系统的虚拟CPU的局部先进可编程中断控制器。
本发明的另外一个实施例还提供一种虛拟机监视器,包括
截获模块,用于截获客户操作系统对虚拟时钟资源的访问操作;
对应关系设置及保存模块,用于给所述客户操作系统分配不同的真实时钟 资源,并保存所述客户操作系统与所述真实时钟资源的对应关系;
转发模块,用于根据所述对应关系,将截获的所述客户4喿作系统对所述虛 拟时钟资源的访问操作发送给所述真实时钟资源中对应的真实时钟资源;
第 一 中断注射模块,用于根据所述对应关系将所述真实时钟资源的中断注 射到所述客户操作系统中对应客户操作系统的虛拟CPU的局部先进可编程中 断控制器。
本发明的另一实施例还提供一种虚拟机系统,包括客户操作系统、虚拟机 监视器和真实时钟资源,其中,所述虚拟机监视器包括
对应关系设置及保存模块,用于给所述客户操作系统分配不同的真实时钟 资源,并保存所述客户操作系统与所述真实时钟资源的对应关系;
转发模块,用于根据所述对应关系,将截获的所述客户操作系统对所述虚第 一 中断注射模块,用于根据所述对应关系将所述真实时钟资源的中断注 射到所述客户搡作系统中对应客户操作系统的虚拟CPU的局部先进可编程中 断控制器。
本发明的 一个或多个实施例至少具有以下有益效果
由于虛拟机监视器为客户操作系统分配不同的真实时钟资源,并保存客户
操作系统与真实时钟资源的对应关系,所以客户操作系统对虛拟时钟资源的访
问操作会被虛拟机监视器转发给真实时钟资源,进而由真实时钟资源为客户操
作系统提供精确的时钟服务,进而解决了现有技术中由虛拟时钟导致的计时不 准确的问题。


图1为本发明第一实施例的方法的流程示意图2为本发明第一实施例的虛拟机系统的结构示意图3为本发明第二实施例的方法的流程示意图4为本发明第三实施例的方法的流程示意图。
具体实施例方式
本发明实施例的虛拟机监视器、虚拟机系统及其时钟分配使用方法,预先 给虛拟机系统中的GOS分配真实硬件时钟资源,进而在GOS进行时钟读写操 作时,VMM对对应的真实硬件时钟资源进行相应处理。
下面结合附图对本发明不同的实施例进行进一步详细说明。
<第一实施例>
在背景技术中已经提到,HPET是高精度的时钟,其可以提供最多32个 计时器,并且精度和效率都比其它时钟高,因此,在本发明的第一实施例中使 用HPET中的计时器作为GOS的时钟。
如图1所示,本发明的第一实施例的虚拟机系统的时钟分配使用方法包括 如下步骤
时钟分配步骤ll,虚拟机监视器给GOS分配不同的真实HPET的计时器,并保存GOS与HPET计时器的对应关系;
时钟使用步骤12, GOS对虛拟的TSC以外的虛拟时钟资源的内存映射输 入输出(Memory Map Input and Output, MMIO)访问才喿作净皮VMM拦截后, 根据GOS与HPET计时器的对应关系,将MMIO访问操作发送给对应的HPET 计时器,对HPET计时器进行写操作或将真实HPET计时器的中断注射到对应 GOS的虚拟CPU的局部先进可编程中断控制器。
利用CPU的TSC,操作系统通常可以得到更为精准的时间度量,因此, 本发明第 一 实施例的方法还包括
步骤13, GOS对虚拟的TSC的访问操作被VMM拦截后,VMM通过rdtscll 指令读取真实CPU的TSC后,将其注射到对应GOS的虛拟CPU的局部先进 可编程中断控制器。
其中步骤11中保存的GOS与HPET计时器的对应关系可通过内存的偏移 地址或是其它参数来表现。
本发明第 一实施例的虚拟机系统包括一个或多个GOS, VMM和真实时钟 资源,其中,如图2所示,该VMM中包括
对应关系设置及保存模块,用于给GOS分配不同的真实HPET的计时器, 并保存对应的GOS与HPET计时器的对应关系;
截获模块,用于截获GOS对虚拟的TSC以外的虚拟时钟资源的MMIO 访问操作;
转发模块,用于根据GOS与HPET计时器的对应关系,将截获的MMIO 访问操作发送给对应的HPET计时器;
第一中断注射模块,用于将真实HPET计时器的中断注射到对应GOS的 虚拟CPU的局部先进可编程中断控制器。
当然,在利用CPU的TSC,使操作系统通常可以得到更为精准的时间度 量的情况下,本发明的VMM中还包括TSC获取模块和第二中断注射模块, 其中-.
该截获模块截获GOS对虚拟的TSC的访问操作;
该TSC获取模块用于通过rdtscll指令读取真实CPU的TSC;
该第二中断注射模块用于将真实CPU的TSC注射到对应GOS的虛拟CPU的局部先进可编程中断控制器。 <第二实施例>
在本发明的第一实施例中使用HPET中的计时器作为GOS的时钟,但真 实的时钟资源还包括RTC、 PIT、 PMT和LVTT等,因此,在本发明的第二实 施例中,以使用HPET、 RTC、 PIT、 PMT和LVTT作为GOS的时钟进行详细 说明。
如图3所示,本发明的第二实施例的虛拟机系统的时钟分配使用方法包括 如下步骤
步骤21,虚拟机监视器给GOS分配HPET、 RTC、 PIT、 PMT和LVTT, 并保存对应的GOS与HPET、 RTC、 PIT、 PMT和LVTT的对应关系;
步骤22, GOS对虚拟的TSC以外的虚拟时钟资源的内存映射输入输出 (Memory Map Input and Output, MMIO )访问操作被VMM拦截后,根据GOS 与HPET、 RTC、 PIT、 PMT和LVTT的对应关系,将MMIO访问才喿作发送给 HPET、 RTC、 PIT、 PMT或LVTT,对HPET、 RTC、 PIT、 PMT或LVTT进 行写操作,或将HPET、 RTC、 PIT、 PMT或LVTT的中断注射到对应GOS的 虚拟CPU的局部先进可编程中断控制器。
由于利用CPU的TSC,操作系统通常可以得到更为精准的时间度量,因 此,本发明第二实施例的方法还包括
步骤23 , GOS对虚拟的TSC的访问操作被VMM拦截后,VMM通过rdtscll 指令读取真实CPU的TSC后,将其注射到对应GOS的虚拟CPU的局部先进 可编程中断控制器。
由于HPET、 RTC、 PIT、 PMT和LVTT这些真实时钟资源之间的精度的 不同,在分配时可以将精度较高的真实时钟资源分配给优先级较高的GOS, 如那些对时间比较的敏感的GOS (如windows )或应用可以分配HPET,而其 他要求相对较低的可以分配RTC、 PIT、 PMT或LVTT。
然而,在使用HPET、 RTC、 PIT、 PMT和LVTT这些真实时钟资源时, 由于一个GOS使用HPET时,会向偏移量为0x10的寄存器执行写操作,停止 主板上真实的RTC和PIT的工作,所以在本发明的第二实施例中,还包括
步骤24, VMM拦截GOS对HPET的偏移量为0x10的寄存器的写操作。拦截该操作后,RTC和PIT就不会停止工作,而可以为其他GOS提供真 实时钟资源。

是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机所
可读取存储介质中,该程序在执行时,包括如下步骤
步骤21,虚拟机监视器给GOS分配HPET、 RTC、 PIT、 PMT和LVTT, 并保存对应的GOS与HPET、 RTC、 PIT、 PMT和LVTT的对应关系;
步骤22, GOS对虚拟的TSC以外的虚拟时钟资源的内存映射输入输出 (Memory Map Input and Output, MMIO )访问操作被VMM拦截后,根据GOS 与HPET、 RTC、 PIT、 PMT和LVTT的对应关系,将MMIO访问操作发送给 HPET、 RTC、 PIT、 PMT或LVTT,对HPET、 RTC、 PIT、 PMT或LVTT进 行写操作,或将HPET、 RTC、 PIT、 PMT或LVTT的中断注射到对应GOS的 虚拟CPU的局部先进可编程中断控制器。
由于利用CPU的TSC,操作系统通常可以得到更为精准的时间度量,因 此,本发明第二实施例的方法还包括
步骤23,GOS对虚拟的TSC的访问操作被VMM拦截后,VMM通过rdtscll 指令读取真实CPU的TSC后,将其注射到对应GOS的虚拟CPU的局部先进 可编程中断控制器。
由于HPET、 RTC、 PIT、 PMT和LVTT这些真实时钟资源之间的精度的 不同,在分配时可以将精度较高的真实时钟资源分配给优先级较高的GOS, 如那些对时间比较的敏感的GOS (如windows )或应用可以分配HPET,而其 他要求相对较低的可以分配RTC、 PIT、 PMT或LVTT。
然而,在使用HPET、 RTC、 PIT、 PMT和LVTT这些真实时钟资源时, 由于一个GOS使用HPET时,会向偏移量为0x10的寄存器执行写操作,停止 主板上真实的RTC和PIT的工作,所以在本发明的第二实施例中,还包括
步骤24, VMM拦截GOS对HPET的偏移量为0x10的寄存器的写操作。
拦截该操作后,RTC和PIT就不会停止工作,而可以为其他GOS提供真 实时钟资源。
所述的存储介质,如ROM/RAM、磁碟、光盘等。
10本发明第二实施例的虚拟机系统包括一个或多个GOS, VMM和真实时钟 资源,其中,该VMM中包括
对应关系设置及保存模块,用于给GOS分配不同的HPET、 RTC、 PIT、 PMT和LVTT,并保存对应的GOS与HPET、 RTC、 PIT、 PMT和LVTT的对 应关系;
第一截获模块,用于截获GOS对虚拟的TSC以外的虚拟时钟资源的 MMIO访问才喿作;
转发模块,用于根据GOS与HPET、 RTC、 PIT、 PMT和LVTT的对应关 系,将截获的MMIO访问才喿作发送给对应的HPET、 RTC、 PIT、 PMT或LVTT;
第一中断注射模块,用于根据对应关系将HPET、 RTC、 PIT、 PMT或LVTT 的中断注射到对应GOS的虚拟CPU的局部先进可编程中断控制器;
拦截模块,用于拦截GOS对偏移量为0x10的寄存器的写操作。
当然,在利用CPU的TSC,使操作系统通常可以得到更为精准的时间度 量的情况下,本发明的VMM中还包括TSC获取模块和第二中断注射模块, 其中
该第一截获模块还用于截获GOS对虚拟的TSC的访问操作; 该TSC获取模块用于通过rdtscll指令读取真实CPU的TSC; 该第二中断注射模块用于将真实CPU的TSC注射到对应GOS的虚拟CPU 的局部先进可编程中断控制器。 <第三实施例>
在本发明的第一实施例和第二实施例中分别使用HPET中的计时器和真 实时钟资源作为GOS的时钟,在本发明的第三实施例中,以使用HPET的计 时器、RTC、 PIT、 PMT和LVTT作为GOS的时钟进行详细说明。
为方便说明,在此,将HPET的计时器、RTC、 PIT、 PMT和LVTT命名
为第三时钟资源。
如图4所示,本发明的第三实施例的虚拟机系统的时钟分配使用方法包括 如下步骤
时钟分配步骤31 ,虚拟机监视器给GOS分配HPET的计时器、RTC、 PIT、 PMT或LVTT,并保存对应的GOS与HPET的计时器、RTC、 PIT、 PMT和LVTT的对应关系;
时钟使用步骤32, GOS对虚拟的TSC以外的虛拟时钟资源的内存映射输 入输出(Memory Map Input and Output, MMIO )访问才喿作寻皮VMM拦截后, 根据GOS与HPET的计时器、RTC、 PIT、 PMT和LVTT的对应关系,将MMIO 访问操作发送给对应的HPET的计时器、RTC、 PIT、 PMT或LVTT,对HPET 的计时器、RTC、 PIT、 PMT或LVTT进行写操作,或将HPET的计时器、RTC、 PIT、 PMT或LVTT的中断注射到对应GOS的虚拟CPU的局部先进可编程中 断控制器。
由于利用CPU的TSC,操作系统通常可以得到更为精准的时间度量,因 此,本发明第三实施例的方法还包括
步骤33,GOS对虚拟的TSC的访问操作被VMM拦截后,VMM通过rdtscll 指令读取真实CPU的TSC后,将其注射到对应GOS的虛拟CPU的局部先进 可编程中断控制器。
与第二实施例类似,第三实施例的方法也包括VMM拦截GOS对HPET 的偏移量为0x10的寄存器的写操作的步骤。
由于HPET、 RTC、 PIT、 PMT和LVTT这些真实时钟资源之间的精度的 不同,在分配时可以将精度较高的真实时钟资源分配给优先级较高的GOS, 如那些对时间比4交的壽丈感的GOS (如windows)或应用可以分配HPET,而其 他要求相对较低的可以分配RTC、 PIT、 PMT或LVTT。
本发明第三实施例的虛拟机系统包括一个或多个GOS, VMM和真实时钟 资源,其中,该VMM中包括
对应关系设置及保存模块,用于给GOS分配HPET的计时器、RTC、 PIT、 PMT和LVTT,并保存对应的GOS与HPET的计时器、RTC、 PIT、 PMT和 LVTT的对应关系;
截获模块,用于截获GOS对虚拟的TSC以外的虚拟时钟资源的MMIO 访问操作;
转发模块,用于根据GOS与HPET的计时器、RTC、 PIT、 PMT和LVTT 的对应关系,将截获的MMIO访问操作发送给对应的HPET的计时器、RTC、 PIT、 PMT或LVTT;第 一 中断注射模块,用于根据所述对应关系将HPET的计时器、RTC、 PIT、 PMT或LVTT的中断注射到对应GOS的虛拟CPU的局部先进可编程中断控 制器;
拦截模块,用于拦截GOS对偏移量为0x10的寄存器的写操作。
当然,在利用CPU的TSC,使操作系统通常可以得到更为精准的时间度
量的情况下,本发明的VMM中还包括TSC获取模块和第二中断注射模块,
其中
该截获^^莫块还用于截获GOS对虚拟的TSC的访问4喿作;
该TSC获取模块用于通过rdtscll指令读取真实CPU的TSC;
该第二中断注射模块用于将真实CPU的TSC注射到对应GOS的虚拟CPU 的局部先进可编程中断控制器。
以上所述仅是本发明的实施方式,应当指出,对于本技术领域的普通技术 人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些 改进和润饰也应^L为本发明的保护范围。
1权利要求
1. 一种虚拟机系统的时钟分配使用方法,其特征在于,包括如下步骤分配真实时钟资源给客户操作系统,并保存所述客户操作系统与所述真实时钟资源的对应关系;拦截所述客户操作系统对虚拟时钟资源的访问操作;根据所述对应关系,将所述访问操作发送给对应的真实时钟资源,进行写操作,或将所述真实时钟资源的中断注射到所述客户操作系统中对应客户操作系统的虚拟CPU的局部先进可编程中断控制器。
2. 根据权利要求1所述的方法,其特征在于,所述方法还包括步骤 读取真实CPU的时间戳计数器;将所述时间戳计数器注射到所述客户操作系统的虚拟CPU的局部先进可 编程中断控制器。
3. 根据权利要求2所述的方法,其特征在于,所述读取真实CPU的时间 戳计数器具体为通过rdtsdl指令读取真实CPU的时间戳计数器。
4. 根据权利要求l、 2或3所述的方法,其特征在于,所述真实时钟资源 为以下三种情况之一高精度事件计时器中的计时器;或高精度事件计时器、实时时钟、可编程时间间隔计时器、电源管理时钟和 局部先进可编程中断控制器向量表计时器;或高精度事件计时器中的计时器、实时时钟、可编程时间间隔计时器、电源 管理时钟和局部先进可编程中断控制器向量表计时器。
5. 根据权利要求4所述的方法,其特征在于,所述真实时钟资源为实时 时钟或可编程时间间隔计时器其中之一时,该方法还包括步骤拦截所述客户操作系统对所述高精度事件计时器的偏移量为0x10的寄存 器的写搡作。
6. —种虛拟机监视器,包括截获模块,用于截获客户操作系统对虛拟时钟资源的访问操作; 其特征在于,还包括对应关系设置及保存模块,用于给所述客户操作系统分配不同的真实时钟资源,并保存所述客户操作系统与所述真实时钟资源的对应关系;转发模块,用于根据所述对应关系,将截获的所述客户操作系统对所述虛拟时钟资源的访问操作发送给所述真实时钟资源中对应的真实时钟资源;第 一 中断注射模块,用于根据所述对应关系将所述真实时钟资源的中断注射到所述客户操作系统中对应客户操作系统的虚拟CPU的局部先进可编程中断控制器。
7. 根据权利要求6所述的虛拟机监视器,其特征在于,所述虚拟机监视 器还包括第二中断注射模块,用于将真实CPU的时间戳计数器注射到所述客户操 作系统的虚拟CPU的局部先进可编程中断控制器。
8. 根据权利要求6或7所述的虛拟机监视器,其特征在于,所述真实时 钟资源为以下三种情况之一高精度事件计时器中的计时器;或高精度事件计时器、实时时钟、可编程时间间隔计时器、电源管理时钟和 局部先进可编程中断控制器向量表计时器;或高精度事件计时器中的计时器、实时时钟、可编程时间间隔计时器、电源 管理时钟和局部先进可编程中断控制器向量表计时器。
9. 根据权利要求8所述的虛拟机监视器,其特征在于,所述真实时钟资 源为实时时钟和可编程时间间隔计时器其中之一时,还包括拦截模块,用于拦截所述客户操作系统对高精度事件计时器的偏移量为 0xl0的寄存器的写操作。
10. —种虚拟机系统,包括客户操作系统、虚拟机监视器和真实时钟资源, 其特征在于,所述虚拟机监视器包括对应关系设置及保存模块,用于给所述客户操作系统分配不同的真实时钟 资源,并保存所述客户操作系统与所述真实时钟资源的对应关系;转发模块,用于根据所述对应关系,将截获的所述客户操作系统对所述虚 拟时钟资源的访问操作发送给所述真实时钟资源中对应的真实时钟资源;第一中断注射模块,用于根据所述对应关系将所述真实时钟资源的中断注射到所述客户操作系统中对应客户操作系统的虚拟CPU的局部先进可编程中断控制器。
11. 根据权利要求10所述的虚拟机系统,其特征在于,所述虛拟机监视 器还包括第二中断注射模块,用于将真实CPU的时间戳计数器注射到所述客户操 作系统的虚拟CPU的局部先进可编程中断控制器。
12. 根据权利要求10或11所述的虚拟机系统,其特征在于,所述真实时 钟资源为以下三种情况之一高精度事件计时器中的计时器;或高精度事件计时器、实时时钟、可编程时间间隔计时器、电源管理时钟和 局部先进可编程中断控制器向量表计时器;或高精度事件计时器中的计时器、实时时钟、可编程时间间隔计时器、电源 管理时钟和局部先进可编程中断控制器向量表计时器。
13. 根据权利要求12所述的虚拟机监视器,其特征在于,所述真实时钟 资源为实时时钟和可编程时间间隔计时器其中之一时,还包括拦截模块,用于拦截所述客户操作系统对高精度事件计时器的偏移量为 0xl0的寄存器的写操作。
全文摘要
本发明公开了一种虚拟机监视器、虚拟机系统及其时钟分配使用方法,其中该方法包括步骤分配真实时钟资源给客户操作系统,并保存所述客户操作系统与所述真实时钟资源的对应关系;拦截所述客户操作系统对虚拟时钟资源的访问操作;根据所述对应关系,将所述访问操作发送给对应的真实时钟资源,进行写操作,或将所述真实时钟资源的中断注射到所述客户操作系统中对应客户操作系统的虚拟CPU的局部先进可编程中断控制器。本发明给客户操作系统提供了精确的时钟。
文档编号G06F9/445GK101441498SQ200710177659
公开日2009年5月27日 申请日期2007年11月19日 优先权日2007年11月19日
发明者伟 宋 申请人:联想(北京)有限公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1