当前位置: 首页 > 专利查询>微软公司专利>正文

用于在虚拟机之间共享页的方法和系统技术方案

技术编号:2849767 阅读:165 留言:0更新日期:2012-04-11 18:40
一种在多个虚拟机环境中在虚拟机之间共享页的方法包括最初分配第一虚拟机的临时客机物理地址范围,用于与第二虚拟机共享页。该临时范围在第一虚拟机的客机物理地址空间内。接收来自第二虚拟机的、诸如利用DMA请求等的对第一虚拟机可用的页的访问请求。递增对所述页的未完成的访问的引用计数以指示未完成的访问,且所述页被映射到临时客机物理地址范围。访问所述页且递减引用计数。如果引用计数为零,则移除临时客机物理地址范围内的映射。

【技术实现步骤摘要】

本专利技术涉及计算机编程领域,尤其涉及在虚拟机环境中由第二虚拟机访问对第一虚拟机可用的主机资源。
技术介绍
虚拟计算允许每一个具有其自己的操作系统的多个虚拟机运行在主计算机上。主计算机具有允许主计算机执行虚拟机程序的指令的虚拟化器程序,虚拟机程序可具有与主计算机不同的CPU模型。主计算机虚拟化器程序也可虚拟化主机的硬件资源以供虚拟机使用。相对于主计算机,把请求诸如CPU、存储器、I/O和磁盘空间等硬件资源的虚拟机称为客机。在虚拟机中,客计算机系统仅作为一个特定硬件体系结构的操作的纯软件表示存在于主计算机系统中。术语虚拟化器、仿真器、虚拟机和处理器仿真有时候互换地使用,以表示使用本领域的技术人员已知和理解的若干方法之一来模拟或仿真整个计算机系统的硬件体系结构的能力。在主计算机的操作系统软件和硬件体系结构上执行的虚拟化器程序模拟了整个客计算机系统的操作。虚拟化器程序担当主机的硬件体系结构和由运行在仿真的客虚拟机环境中的软件(例如,操作系统、应用程序等)发送的指令之间的交换点。在一个虚拟机环境实施例中,仿真的环境可包括虚拟机监控程序(VMM),它是直接运行在主机硬件之上,可能与主机操作系统并排运行并结合主机操作系统工作的软件层,且可通过暴露与VMM正在虚拟化的硬件相同的接口来虚拟化主机的所有资源(以及某些虚拟资源)。该虚拟化使得虚拟化器(以及主计算机系统本身)能够不被运行在其上的操作系统层注意到。在虚拟机环境中,多个虚拟机对主机的硬件资源施加性能要求。期望保持虚拟机彼此分离以及与主机分离。一个虚拟机与另一个虚拟机的分离或隔离对于隔离错误和故障来说是有用的,使得一个虚拟机故障不会影响另一虚拟机。然而,在某些配置中,期望使得一个虚拟机访问对第二虚拟机可用的主机资源。图1描绘了一个虚拟计算机系统100。系统100包括第一虚拟机110、第二虚拟机115以及驻留在主计算机系统105中的虚拟化软件120。虚拟化软件有助于例如通过将虚拟机地址与主机系统地址分离来维持虚拟机之间的受控隔离。第一虚拟机110是包括运行在具有访问数据库145的驱动程序150的操作系统130上的虚拟机应用程序125的软件程序。第二虚拟机115是包括运行在具有虚拟驱动器155的操作系统140上的虚拟机应用程序135的软件程序。主计算机系统105具有诸如输入输出通道、存储器、处理器和软件等可被分配给虚拟机110、115中的任一个的主机资源。在图1的特定示例中,主机资源是访问数据库145的I/O通道165。图1的配置指示第二虚拟机115可通过使用虚拟驱动器155,经由虚拟化软件120利用连接至I/O路径165的驱动器150与数据库145通信,来访问数据库145。在虚拟机环境中,向客机分配诸如存储器等主机系统资源。客虚拟机的应用程序生成虚拟地址来为了客机的目的而访问存储器。该虚拟地址被翻译成与客机有关的物理地址。然而,虚拟机环境中的每一虚拟机维护单独的物理地址空间概念。从虚拟机的观点来看,其物理地址可表现为以物理地址零或任何其它的页对齐的物理地址为开始,且可跨越如由虚拟化软件所支持的那样大的区域,虚拟化软件保持着对主机系统的各种虚拟机中的存储器分配的注解。阴影页(shadow page)表通常用作虚拟化软件的一部分以向每一虚拟机提供单独的物理地址空间。客机物理地址空间,即GPA空间,指的是虚拟机的物理地址空间。因此,客机物理地址,即GPA,指的是GPA空间内的地址。对客机物理地址空间的使用支持插入、移除和查询的操作,以支持客虚拟机。客机虚拟地址,即GVA,是对特定的虚拟机专用的虚拟地址。通常,客机虚拟地址(GVA)被翻译成客机物理地址(GPA)。然而,GPA不能用于访问主机物理存储器。因此,GPA被翻译成主机或系统物理地址(SPA)。为减少地址翻译的开销,虚拟化器程序维护着将GVA映射到SPA的阴影页表。虚拟化器也维护着储存GPA-SPA映射的内部数据结构。图2示出了客机物理页到系统物理页的示例映射。注意,可以存在可映射到单个系统物理地址的多个客机物理地址。例如,客机物理地址空间页框号PFN 202和PFN203映射到系统物理页号PFN 102。虚拟机的操作和客机物理地址空间的管理可带来若干令人感兴趣的问题。例如,当移除客机物理地址空间的一个区域时,有必要清除映射到客机物理地址空间的该移除段内的区域的客机虚拟地址。该清除导致到GPA的移除段内的区域的任何未完成的映射无效。由此,如果GPA的一段被移除,则使用所移除的区域内的GPA来构造的任何虚拟地址都需要被无效。在一个示例体系结构中,有两个位置维护着GVA-SPA映射,因此存在必须移除这些GVA-SPA映射的两个地方。维护着虚拟-物理映射的两个区域是在阴影页表内和在硬件翻译后备(look-aside)缓冲器(TLB)内。这些高速缓存(cache)的每一个必须被清除以维持虚拟化的正确性以及防止虚拟机之间的安全性缺口。图3示出了GVA-SPA映射。注意,多个客机虚拟地址可映射到同一系统物理地址页。例如,客机虚拟地址VA C000:1000和VA C000:2000映射到系统物理页号PFN 102。这一映射在阴影页表中对于加速客机虚拟地址到系统地址翻译的转换显然是有用的。不幸的是,由于阴影页表数据结构维护从GVA到SPA的映射,因此不可能通过查询如图3所示的阴影页表来查询映射到特定GPA的所有GVA。然而,还维护着如图2所示的GPA-SPA映射。确定使用特定GPA创建的所有客机虚拟地址的一种技术是对映射到特定GPA的所有SPA查询GPA-SPA(图2)映射,然后从GVA-SPA(图3的阴影页表)映射中移除映射到SPA的所有条目。不幸的是,该方法可能是非常慢的,因为每一步骤涉及分别对GPA-SPA和GVA-SPA映射的线性搜索。作为一种替换,可以维护GPA-GVA的逆映射,以显式地处理这一情形。不幸的是,后一方法消耗了大量的额外存储器。由于计算机系统地址系统存储器中的物理设备使用物理地址而非虚拟地址,会出现附加的复杂性。由此,从阴影页表(SPT)和翻译后备缓冲器(TLB)中清除虚拟-物理映射不会防止物理设备物理地访问系统存储器(如果该设备被设置成执行直接存储器存取(DMA)操作)。DMA操作可在其中存在DMA控制器硬件和软件的虚拟机环境中执行。当移除客机物理地址空间时,重要的是确认该空间当前不涉及在DMA操作中。防止移除客机地址空间页(一般是4K字节或更多),而同时未完成的DMA事务仍在进行中的一种技术是为每一页维护指定该页是否正被用于DMA操作的单个标志。不幸的是,不同的物理设备可能被映射到同一物理地址空间,且由此,同一地址空间可能涉及在两个不同的、可能未完成的DMA操作中。由此,单个标志不足以知道两个DMA事务何时都已完成。期望一种更高级的机制。对多个未完成的DMA操作的一种可能的解决方案是提供防止对系统物理存储器的特定区域的DMA请求的机制。一般而言,提供了允许操作系统控制是否可通过非CPU代理读写特定页(诸如发生在DMA事务过程中)的表。该表对物理存储器的每一页具有指定该页是否可通过DMA操作来被读写的一个或多个标志。该表被称为DMA排除(exclusion)向量(DEV)。使用DMA排本文档来自技高网...

【技术保护点】
一种在虚拟机之间共享页的方法,所述虚拟机使用来自主计算机的资源来操作,所述方法包括:分配第一虚拟机的临时客机物理地址范围,用于在虚拟机之间共享页;接收来自第二虚拟机的、访问对所述第一虚拟机可用的页的请求,所述请求是由所述主计 算机上的虚拟化软件接收的;递增对所述页的未完成的访问的引用计数;所述引用计数指示未完成访问的数目;将所述页映射到所述第一虚拟机的临时客机物理地址范围的一部分;允许对所述第一虚拟机可用的页被所述第二虚拟机访问; 由所述第二虚拟机完成对所述页的访问,并向所述虚拟化软件通知访问完成;递减对所述页的未完成的访问的引用计数;以及如果所述引用计数为零,则从所述临时客机物理地址范围中移除所述页的映射。

【技术特征摘要】
US 2005-3-8 11/075,2191.一种在虚拟机之间共享页的方法,所述虚拟机使用来自主计算机的资源来操作,所述方法包括分配第一虚拟机的临时客机物理地址范围,用于在虚拟机之间共享页;接收来自第二虚拟机的、访问对所述第一虚拟机可用的页的请求,所述请求是由所述主计算机上的虚拟化软件接收的;递增对所述页的未完成的访问的引用计数;所述引用计数指示未完成访问的数目;将所述页映射到所述第一虚拟机的临时客机物理地址范围的一部分;允许对所述第一虚拟机可用的页被所述第二虚拟机访问;由所述第二虚拟机完成对所述页的访问,并向所述虚拟化软件通知访问完成;递减对所述页的未完成的访问的引用计数;以及如果所述引用计数为零,则从所述临时客机物理地址范围中移除所述页的映射。2.如权利要求1所述的方法,其特征在于,接收来自第二虚拟机的、访问对所述第一虚拟机可用的页的请求包括接收来自第二虚拟机的、访问被映射到第一虚拟机的页的直接存储器地址(DMA)请求。3.如权利要求1所述的方法,其特征在于,递增对所述页的未完成的访问的引用计数包括递增对DMA传输的引用计数,且所述方法还包括验证所述页的客机物理地址-主机物理地址映射有效,且DMA排除向量允许访问所述页。4.如权利要求1所述的方法,其特征在于,允许对所述第一虚拟机可用的页被所述第二虚拟机访问包括在所述第二虚拟机和某一范围的主机物理地址之间建立DMA传输。5.如权利要求1所述的方法,其特征在于,由所述第二虚拟机完成对所述页的访问并向所述虚拟化软件通知访问完成包括接收来自主机硬件的、关于DMA操作完成的指示,以及将完成消息从所述第一虚拟机发送到所述第二虚拟机,其中,所述第二虚拟机向所述虚拟化软件通知完成。6.如权利要求1所述的方法,其特征在于,递减对所述页的未完成的访问的引用计数包括设置DMA排除向量,以在所述引用计数递减到零时排除对所述页的后续DMA操作。7.如权利要求1所述的方法,其特征在于,从所述临时客机物理地址范围内移除所述页的映射还包括从阴影页表和翻译后备缓冲器的一个或多个中去除对所述页的条目的映射。8.一种用于在虚拟机之间共享页的计算机系统,所述系统包括主计算机,所述主计算机具有对多个虚拟机可用的硬件资源;虚拟化软件,所述虚拟化软件包括所述主计算机和所述多个虚拟机的任一个之间的接口;第一虚拟机和第二虚拟机,所述第一虚拟机具有对至少一个页资源的访问;所述第一虚拟机的临时客机物理地址范围,用于在虚拟机之间共享页;具有对主计算机的存储器的访问的主机处理器,所述存储器具有指令,当所述指令被执行时,执行一种方法,该方法包括接收来自所述第二虚拟机的、访问对所述第一虚拟机可用的页的请求,所述请求是由所述虚拟化软件接收的;递增对所述页的未完成的访问的引用计数;所述引用计数指示未完成的访问的数目;将所述页映射到所述临时客机物理地址范围的一部分;允许对所述第一虚拟机可用的页被所述第二虚拟机访问;向所述虚拟化软件通知访问完成;递减对所述页的未完成的访问的引用计数;以及如果所述引用计数为零,则从所述临时客机物理地址范围中移除所述页的映射。9.如权利要求8所述的系统,其特征在于,还包括翻译后备缓冲器和阴影页表中的至少一个,所述翻译后备缓冲器和阴影页表中的至少一个作为移除所述页的映射...

【专利技术属性】
技术研发人员:E特劳特MD亨德尔
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利