访问主板附加设备的方法、 虚拟机管理器及计算机 【技术领域】
本发明涉及计算机领域, 特别是指一种虚拟机环境下的访问主板附加设备的方 法、 虚拟机管理器及计算机。背景技术
现有的虚拟化平台, 如图 1 所示, 包括硬件平台、 运行在硬件平台上的虚拟机管理 器 VMM(Virtual Machine Manager) 以及运行在虚拟机管理器 VMM 上的主操作系统 (HOST OS) 及至少一个客户操作系统 (Guest OS) ; 其中, 硬件平台包括有主板以及主板上设备, 其 中主板上设备如 CPU、 内存等各种支持操作系统运行的计算机硬件 ; 在 Guest OS 运行过程 中, 会频繁访问中断控制器和时钟这样的主板附加设备, Guest OS 对中断控制器和时钟的 访问均会被虚拟机管理器 VMM 拦截, 由虚拟机管理器实现 Guest OS 对中断控制器和时钟的 访问。 在这种机制下, Guest OS 频繁地访问中断控制器和时钟, 会造成 Guest OS 的不正 常退出, 即 VMEXIT, 从 NO-HOST 模式切换到 HOST 模式 ; 模式切换需要耗费很多 CPU 时间, 造 成虚拟机系统的整体性能下降。
发明人在实现本发明的过程, 发现现有技术中存在如下问题 :
现有技术中, 由虚拟机管理器实现 Guest OS 对中断控制器和时钟的频繁访问过程 中, 容易出现 Guest OS 非正常退出, 造成虚拟机系统的整体性能下降。
发明内容 本发明要解决的技术问题是提供一种避免 Guest OS 非正常退出的访问主板附加 设备的方法、 虚拟机管理器及计算机。
为解决上述技术问题, 本发明的实施例提供一种访问主板附加设备的方法, 包 括:
获取客户操作系统对所述客户操作系统需要的主板附加设备的访问 ;
将所述访问定向到一硬件设备, 由所述硬件设备完成所述访问 ; 其中, 所述主板附 加设备是所述硬件设备通过虚拟机管理器模拟的主板附加设备。
优选的, 所述通过虚拟机管理器模拟主板附加设备的过程包括 :
通过虚拟机管理器为所述主板附加设备分配物理内存 ;
通过虚拟机管理器建立所述物理内存与所述客户操作系统的虚拟内存之间的内 存映射 ;
所述硬件设备完成所述访问的步骤具体为 :
所述硬件设备根据所述内存映射完成所述访问。
优选的, 所述通过虚拟机管理器为所述主板附加设备分配物理内存的步骤具体 为:
根据所述客户操作系统被创建时需要的主板附加设备的数量, 通过虚拟机管理器
为所述主板附加设备分配物理内存。
优选的, 所述通过虚拟机管理器建立所述物理内存与所述客户操作系统的虚拟内 存之间的内存映射的步骤包括 :
获取所述虚拟机管理器为所述主板附加设备分配的物理内存的大小及所述物理 内存在整个内存中的位置 ;
根据所述物理内存的大小及所述位置, 建立所述物理内存与所述客户操作系统的 虚拟内存之间的内存映射。
优选的, 所述主板附加设备包括 : 高级可编程中断控制器 APIC 和高精度时钟 HPET。
本发明的实施例还提供一种虚拟机管理器, 包括 :
获取模块, 用于获取客户操作系统对所述客户操作系统需要的主板附加设备的访 问;
定向模块, 用于将所述访问定向到一硬件设备, 由所述硬件设备完成所述访问 ; 其 中, 所述主板附加设备是所述硬件设备模拟的主板附加设备 ;
内存处理模块, 用于完成所述硬件设备模拟所述主板附加设备时的内存处理。
优选的, 所述内存处理模块包括 :
分配模块, 用于为所述主板附加设备分配物理内存 ;
映射模块, 用于建立所述物理内存与所述客户操作系统的虚拟内存之间的内存映 射;
所述硬件设备根据所述内存映射完成所述访问。
优选的, 所述映射模块包括 :
获取子模块, 用于获取为所述主板附加设备分配的物理内存的大小以及所述物理 内存在整个物理内存中的位置 ;
映射子模块, 用于根据所述物理内存的大小及所述位置, 建立所述物理内存与所 述客户操作系统的虚拟内存之间的内存映射。
本发明的实施例还提供一种硬件设备, 包括 : 插槽, 用于与所述主板上的插槽对应 插接 ; 还包括 :
模拟模块, 用于通过虚拟机管理器模拟客户操作系统需要的主板附加设备 ;
处理模块, 用于完成所述虚拟机管理器重定向的所述客户操作系统对所述主板附 加设备的访问。
优选的, 所述模拟模块包括 :
申请模块, 用于向所述虚拟机管理器申请所述主板附加设备需要的物理内存 ;
创建模块, 用于创建所述主板附加设备, 并将所述物理内存分配给创建的所述主 板附加设备。
优选的, 所述处理模块具体用于根据所述主板附加设备被分配的物理内存与所述 客户操作系统的虚拟内存之间的映射, 完成所述虚拟机管理器重定向的所述客户操作系统 对所述主板附加设备的访问。
本发明的实施例还提供一种计算机, 包括 : 硬件平台, 具有主板 ; 虚拟机管理器, 运行在所述硬件平台上 ; 主操作系统和至少一个客户操作系统, 运行在所述虚拟机管理器上; 还包括 :
硬件设备, 与所述主板上的插槽对应插接, 用于模拟客户操作系统需要的主板附 加设备 ;
所述虚拟机管理器具体用于获取所述客户操作系统对所述客户操作系统需要的 主板附加设备的访问, 并将所述访问定向到所述硬件设备, 由所述硬件设备完成所述访问。
本发明的上述技术方案的有益效果如下 :
上述方案中, 通过硬件设备模拟主板附加设备, 如中断控制器和时钟, 通过该硬件 设备完成 Guest OS 对该中断控制器和时钟的访问, 由于硬件设备可以直接访问该中断控制 器和时钟被分配的物理内存, 不再需要虚拟机管理器 VMM 动态访问, 可以满足 Guest OS 对 中断控制器和时钟的频繁访问的需求, 不会再出现 Guest OS 非正常退出的情况。 附图说明
图 1 为虚拟机系统架构示意图 ;
图 2 为本发明的实施例访问主板附加设备的方法流程图 ;
图 3 为图 2 所示方法在计算机中的具体实现过程图 ;
图 4 本发明的实施例虚拟机管理器的具体结构图。具体实施方式
为使本发明要解决的技术问题、 技术方案和优点更加清楚, 下面将结合附图及具 体实施例进行详细描述。
本发明针对现有技术中, 通过虚拟机管理器处理客户操作系统对中断控制器和时 钟的频率访问, 容易出现 Guest OS 非正常退出的问题, 提供一种可以避免 Guest OS 非正常 退出的访问主板附加设备的方法、 虚拟机管理器及计算机。
如图 2 所示, 本发明的实施例提供一种访问主板附加设备的方法, 包括 :
步骤 21, 获取客户操作系统对所述客户操作系统需要的主板附加设备的访问 ;
步骤 22, 将所述访问定向到一硬件设备, 由所述硬件设备完成所述访问 ; 其中, 所 述主板附加设备是所述硬件设备通过虚拟机管理器模拟的主板附加设备。
其中, 该主板附加设备如可以是 : 客户操作系统频繁访问的中断控制器和时钟, 特 别是指 : 高级可编程中断控制器 APIC(Advanced ProgrammableInterrupt Controller) 和 高精度时钟 HPET(High Performace Event Timers)。
本发明的上述实施例通过硬件设备模拟主板附加设备, 如中断控制器和时钟, 通 过该硬件设备完成 Guest OS 对该中断控制器和时钟的访问, 由于硬件设备可以直接访问 该中断控制器和时钟被分配的物理内存, 不再需要虚拟机管理器 VMM 动态访问, 可以满足 Guest OS 对中断控制器和时钟的频繁访问的需求, 不会再出现 Guest OS 非正常退出的情 况。
其中, 上述步骤 22 中, 通过虚拟机管理器模拟主板附加设备的过程包括 :
步骤 221, 通过虚拟机管理器为所述主板附加设备分配物理内存 ;
步骤 222, 通过虚拟机管理器建立所述物理内存与所述客户操作系统的虚拟内存 之间的内存映射 ;相应的, 上述步骤 22 中, 所述硬件设备完成所述访问的步骤具体为 :
所述硬件设备根据所述内存映射完成对所述主板附加设备的访问。
进一步的, 步骤 221 可以具体为 : 根据所述客户操作系统被创建时, 需要的主板附 加设备的数量, 通过虚拟机管理器为所述主板附加设备分配物理内存。
步骤 222 可具体包括 :
获取虚拟机管理器为所述主板附加设备分配的物理内存的大小及所述物理内存 在整个内存中的位置 ;
根据所述物理内存的大小及所述位置, 建立所述物理内存与所述客户操作系统的 虚拟内存之间的内存映射。
如图 3 所示, 下面再结合具体的附图说明上述方法的实现过程 :
硬件设备向虚拟机管理器申请内存空间, 作为模拟高级可编程中断控制器 APIC 和高精度时钟 HPET 的空间 ;
虚拟机管理器为该硬件设备系统分配相关内存空间 ;
虚拟机管理器 VMM 在每个 VM(Guest OS) 创建的时候, 申请需要模拟的 APIC 和 HPET 的数目 ;
硬件设备创建相应的 APIC 和 HPET ; 通过 IO 内存汇报 APIC 和 HPET 所占用内存的位置。 虚拟机管理器 VMM 建立 Guest OS 的物理内存和硬件设备模拟的 IO 内存的内存映射; 硬件设备根据所述内存映射完成客户操作系统对 APIC 和 HPET 的访问。
本发明的上述实施例通过硬件设备模拟中断控制器和时钟, 虚拟机管理器 VMM 将 中断控制器和时钟内存重新映射, 这样 Guest OS 访问中断控制器和时钟的时候, 就不会产 生非正常退出的情况, 提高系统性能的同时, 还提供时间的准确性。
如图 4 所示, 本发明的实施例还提供一种虚拟机管理器 40(VMM), 包括 :
获取模块 41, 用于获取客户操作系统对所述客户操作系统需要的主板附加设备的 访问 ;
定向模块 42, 用于将所述访问定向到一硬件设备, 由所述硬件设备完成所述访问 ; 其中, 所述主板附加设备是所述硬件设备模拟的主板附加设备 ;
内存处理模块 43, 用于完成所述硬件设备模拟所述主板附加设备时的内存处理。
其中, 内存处理模块 43 可具体包括 :
分配模块 431, 用于为所述主板附加设备分配物理内存 ;
映射模块 432, 用于建立所述物理内存与所述客户操作系统的虚拟内存之间的内 存映射 ;
所述硬件设备根据所述内存映射完成所述访问。
所述映射模块 432 包括 :
获取子模块, 用于获取为所述主板附加设备分配的物理内存的大小以及所述物理 内存在整个物理内存中的位置 ;
映射子模块, 用于根据所述物理内存的大小及所述位置, 建立所述物理内存与所 述客户操作系统的虚拟内存之间的内存映射。
该虚拟机管理器为硬件设备提供内存分配和分存映射, 使硬件设备可以模拟客户 操作系统频率访问的中断控制器和时钟, 使客户操作系统对中断控制器和时钟的频繁访问 可以通过硬件实现, 不再需要虚拟机管理器 VMM 动态访问, 可以满足 Guest OS 对中断控制 器和时钟的频繁访问的需求, 不会再出现 Guest OS 非正常退出的情况, 在提高系统性能的 同时, 提高时间准确性。
另外, 本发明的实施例还提供一种硬件设备, 包括 : 插槽, 用于与所述主板上的插 槽对应插接 ; 该硬件设备还包括 :
模拟模块, 用于通过虚拟机管理器模拟客户操作系统需要的主板附加设备 ;
处理模块, 用于完成所述虚拟机管理器重定向的所述客户操作系统对所述主板附 加设备的访问。
其中, 所述模拟模块包括 :
申请模块, 用于向所述虚拟机管理器申请所述主板附加设备需要的物理内存 ;
创建模块, 用于创建所述主板附加设备, 并将所述物理内存分配给创建的所述主 板附加设备。
相应的, 所述处理模块具体用于根据所述主板附加设备被分配的物理内存与所述 客户操作系统的虚拟内存之间的映射, 完成所述虚拟机管理器重定向的所述客户操作系统 对所述主板附加设备的访问。 该硬件设备通过模拟客户操作系统需要的中断控制器和时钟, 使客户操作系统对 中断控制器和时钟的频繁访问, 通过硬件实现, 不再需要虚拟机管理器 VMM 动态访问, 可以 满足 Guest OS 对中断控制器和时钟的频繁访问的需求, 不会再出现 Guest OS 非正常退出 的情况。
本发明的实施例还提供一种计算机, 包括 : 硬件平台, 具有主板 ; 虚拟机管理器, 运行在所述硬件平台上 ; 主操作系统和至少一个客户操作系统, 运行在所述虚拟机管理器 上; 该计算机还包括 :
硬件设备, 与所述主板上的插槽对应插接, 用于模拟客户操作系统需要的主板附 加设备 ;
所述虚拟机管理器具体用于获取所述客户操作系统对所述客户操作系统需要的 主板附加设备的访问, 并将所述访问定向到所述硬件设备, 由所述硬件设备完成所述访问。
其中, 该虚拟机管理器具体可通过上述图 4 所示的实施例实现, 该硬件设备具体 可包括 :
模拟模块, 用于通过虚拟机管理器模拟客户操作系统需要的主板附加设备 ;
处理模块, 用于完成所述虚拟机管理器重定向的所述客户操作系统对所述主板附 加设备的访问。
其中, 所述模拟模块包括 :
申请模块, 用于向所述虚拟机管理器申请所述主板附加设备需要的物理内存 ;
创建模块, 用于创建所述主板附加设备, 并将所述物理内存分配给创建的所述主 板附加设备。
相应的, 所述处理模块具体用于根据所述主板附加设备被分配的物理内存与所述 客户操作系统的虚拟内存之间的映射, 完成所述虚拟机管理器重定向的所述客户操作系统
对所述主板附加设备的访问。
该硬件设备通过模块客户操作系统需要的中断控制器和时钟, 使客户操作系统对 中断控制器和时钟的频繁访问, 通过硬件实现, 不再需要虚拟机管理器 VMM 动态访问, 可以 满足 Guest OS 对中断控制器和时钟的频繁访问的需求, 不会再出现 Guest OS 非正常退出 的情况, 在提高整个计算机性能的同时, 还提供时间准确性。
以上所述是本发明的优选实施方式, 应当指出, 对于本技术领域的普通技术人员 来说, 在不脱离本发明所述原理的前提下, 还可以作出若干改进和润饰, 这些改进和润饰也 应视为本发明的保护范围。