用于对于存储进行虚拟化的设备和方法

文档序号:6442384阅读:166来源:国知局

专利名称::用于对于存储进行虚拟化的设备和方法
技术领域
:本发明涉及在支持多个客户操作系统的虚拟化系统中使用影子页表(shadowpagetable)进行的存储虚拟化方法。
背景技术
:虚拟化技术指的是对作为由操作系统(OS)使用的硬件资源的中央处理单元(CPU)、存储和输入/输出(I/O)装置(诸如,网络)、以及监视器进行虚拟化的技术。通常,操作系统被配置为直接访问和控制硬件。然而,采用虚拟化技术的系统通过防止操作系统直接访问硬件和通过为操作系统提供虚拟硬件接口,来使得能够在单个硬件上执行多个操作系统。所述虚拟化技术最初已经被应用到服务器领域,并然后被应用到桌面,并且现在开始被应用到诸如移动电话或小终端的嵌入式移动装置。虚拟化技术可被分类为CPU虚拟化、存储虚拟化、盘虚拟化和I/O装置的虚拟化。在CPU的情况下,CPU架构通常至少支持两种模式。图I和图2是分别图示了非虚拟化系统的特许模式(privilegedmode)和非特许模式(unprivilegedmode)、以及虚拟化系统的特许模式和非特许模式的配置图。参考图I和图2,所述非虚拟化系统和虚拟化系统在特许级别上不同。在图I所示的非虚拟化系统中,操作系统14在特许模式12中执行,并且一般应用程序13在非特许模式11中执行。从CPU(未示出)提供的所有指令可以在特许模式12中使用,并且仅除了在特许模式12中可执行的CPU指令之外的剩余指令可以在非特许模式11中执行。通常,操作系统工作在特许模式中,并从而获得控制应用程序的权利。与此不同,在图2所示的虚拟化系统中,操作系统24工作在非特许模式21中,也就是说,多个虚拟机可以仅仅在不允许操作系统24直接访问硬件时操作,并因此,向特许模式22分配虚拟机监视器(VMM)25,并且CPU被虚拟化以在非特许模式21中执行操作系统24和应用程序23。在存储的情况下,在非虚拟化系统中,操作系统管理所有物理存储,并且将物理存储分配到应用程序。为此,操作系统将物理存储映射为由应用程序使用的虚拟存储空间,并且将不同的访问权利分派到存储区域,从而防止存储干扰。在虚拟化系统中,通过虚拟机监视器来执行由操作系统掌管的存储映射和存储访问权利控制。所述虚拟机监视器通过参考作为从操作系统提供的存储映射信息的客户页表(GPT)而适当地变换客户页表,来生成用于实际物理存储映射的影子页表(SPT)。所述影子页表包括存储映射信息和用于每个存储区域的访问权利选项。在完全虚拟化的情况下,虚拟机监视器不能浏览由操作系统保持的诸如数据结构等的信息,并且仅仅能在操作系统请求硬件执行预定命令时浏览信息。也就是说,操作系统可被认为管理由操作系统执行的处理的所有页表,而虚拟机监视器仅仅能浏览操作系统当前选择的页表。因此,可以采用每当操作系统改变页表时基于对应客户页表的信息来重新生成影子页的方法每当切换应用程序处理时,改变客户页表。因此,客户页表的改变频率可能高,并且每次改变客户页表时频繁地重新生成影子页。相应地,虚拟化系统的性能可能显著地下降。
发明内容已经努力作出本发明,以提供存储虚拟化方法,其能够在虚拟化系统中通过用于存储虚拟化的影子页表的有效管理来提高虚拟化系统的性能。本发明的示范实施例提供了一种在支持多个客户操作系统的虚拟化系统中对存储进行虚拟化的方法,所述方法包括对于所述多个客户操作系统的每个来生成影子页表并高速缓存该影子页表;以及使用映射信息来映射所高速缓存的影子页表之一、和来自所述多个客户操作系统之一的用于参考物理存储页面的客户页表。所述映射的操作可使用其中加载客户操作系统的机器地址位置信息和客户页表的虚拟地址位置信息,作为映射信息。所述高速缓存的操作可将影子页表高速缓存到包括影子页表的位置信息的、用于每个客户操作系统的列表,并且即使当暂停客户操作系统的执行时也可以保持进行高速缓存。所述高速缓存的操作可通过虚拟化系统的虚拟机监视器来验证用于每个客户操作系统的影子页表的高速缓存频率,并且可基于所述高速缓存频率来动态地改变影子页表的高速缓存空间。所述高速缓存的操作可以将客户页表分类为第一页表和第二页表,并且当共享该第二页表时,可基于共享关系来对影子页表进行高速缓存。在虚拟化系统的虚拟机监视器管理所共享的第二页表的列表时,所述高速缓存的操作可以通过参考所述列表来验证第二页表的共享关系,并从而对影子页表进行高速缓存,并且可使用散列(hashing)方案来验证第二页表的共享关系。本发明的另一示范实施例提供了一种在支持多个客户操作系统的虚拟化系统中使用影子页表来对存储进行虚拟化的设备,所述设备包括处理器,包括为所述多个客户操作系统的每个所生成的影子页表;客户页表,来自所述多个客户操作系统之一,被提供以用于参考物理存储页面;和映射信息,映射所高速缓存的影子页表之一和该客户页表。根据本发明的示范实施例,可以获得如下的效果。第一,可能通过高速缓存和重新使用影子页表来使虚拟化系统的处理负载最小化。第二,可能在同时操作多个操作系统的虚拟化系统中通过改变客户操作系统的页表、并且迅速执行存储映射,来提高虚拟化系统的性能。第三,可能通过根据频繁发生的应用程序的切换而降低存储映射负载来提高应用程序的处理速率。前面的概述仅仅是说明性的,并且不意图以任何方式进行限制。除了上面所述的说明性方面、实施例和特征之外,其它方面、实施例和特征也将通过参考附图和如下的详细描述而变得明显。图I是图示了通常的非虚拟化系统的特许模式和非特许模式的配置图;图2是图示了通常的虚拟化系统的特许模式和非特许模式的配置图;图3是图示了根据本发明示范实施例的使用页表的存储映射的图;图4是图示了根据本发明示范实施例的虚拟机监视器和客户操作系统的存储映射识别的图;图5是图示了根据本发明示范实施例的虚拟化系统的存储结构的图;图6是图示了根据本发明示范实施例的存储虚拟化方法中的影子页表的高速缓存的图;图7是图示了根据本发明示范实施例的在存储虚拟化方法中对第二页表进行共孚的情况的图;图8是用于描述根据本发明示范实施例的存储虚拟化方法的流程图。应该理解,附图不一定是按比例绘制的,其呈现了用于说明本发明的基本原理的各个特征的某些简化表示。将部分地通过具体想要的应用和使用环境来确定如这里所公开的本发明的特定设计特征,例如包括特定维度、方向、位置、和形状。在图中,贯穿附图的几个图始终,附图标记指的是本发明的相同或等效部分。具体实施例方式下文中,将参考附图详细描述本发明的示范实施例。首先,我们应该注意,在向每个图的元素赋予附图标记时,即使相同的元素被示出在不同的图中,相同的附图标记也指的是相同的元素。在描述本发明时,将不详细描述公知功能或构造,因为它们可能不必要地使本发明的理解模糊。应该理解,尽管下文中描述了本发明的示范实施例,但是本发明的精神不限于其,并且本领域的技术人员可以以各种方式对其进行改变和修改。本发明的示范实施例可以以各种方式来实现。例如,本发明的示范实施例可以为实现的固件、软件、或其组合等。在通过硬件进行的实现中,根据本发明示范实施例的方法可以用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSro)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器等来实现。在使用固件或软件的实现中,根据本发明示范实施例的方法可以用模块、过程、功能等实现,它们执行上述的功能或操作。软件代码被存储在存储单元中,并且可以由处理器所驱动。存储单元被布置在处理器内部或外部,并且可将数据传送到公知的各种单元,和从公知的各种单元接收数据。贯穿说明书始终,当将预定部分描述为“连接到”另一部分时,它包括其中通过还在其间布置又一预定部分而将所述预定部分电连接到该另一部分的情况,连同其中所述预定部分直接连接到所述另一部分的情况。此外,当预定部分被描述为包括预定的构成元素时,它指示除非另外地定义,否则所述预定部分还可包括另一构成元素,而不排除其它构成元素。此外,在本说明书中描述的术语模块指示用于处理预定功能或操作的单个单元,并且可以用硬件、或软件、或硬件和软件的组合来配置。提供专门的术语来帮助理解本发明。专门术语的使用可被改变为其它形式,而不脱离本发明的技术思路。本发明公开了一种用于在虚拟化系统中有效地管理用于存储虚拟化的影子页表的存储虚拟化方法。下文中,将结合附图详细描述本发明的示范实施例。图3是图示了根据本发明示范实施例的使用页表的存储映射的图。根据页表来生成根据本发明示范实施例的用于存储虚拟化方法的影子页表,并因此,将参考图3初始地描述根据页表的映射。尽管图3涉及作为多个中央处理单元(CPU)架构之一的ARM架构,但是本发明不限于此。虽然其它架构还具有一些差异,然而,页表的关键功能是相同的。也就是说,页表的关键功能是支持动态的存储映射,使得相对小的物理存储可用于处理的相对大的虚拟存储空间,并且对每个存储区域来分配不同的访问权利,从而防止处理之间的存储干扰。所述ARM架构还提供了多个页面映射方法,并且图3是最广泛使用的页表的示范图。使用第一页表31、或者第一页表31和第二页表32来映射作为物理存储的页帧35和36。最初,当使用第一页表31时,配置具有16KB大小的第一页表31。第一页表31的每个条目33具有4个字节的大小,并因此具有16KB大小的第一页表31具有4096个条目,并且每个条目33指示作为映射的物理存储的IMB的页帧35。针对每个处理来分配一个页表31,并且每个处理可映射4GB的虚拟存储空间。这里,32比特的机器被用作示例。其间,当使用第一页表31和第二页表32时,第一页表31的条目33指示具有IKB大小的第二页表32。第二页表32具有256个条目34,并且每个条目指示具有4KB大小的页帧36。256个4-KB页帧36是1MB,并因此,经过第二页表32的第一页表31的条目33还指示IMB的页帧。当使用第二页表32时,每个条目可指示作为4KB的分布式物理存储的页帧,即使每个条目不指示IMB的连续存储。由于可以为每个页帧设置页面访问权利,所以可基于4KB单位来不同地设置访问权利。图4是图示了根据本发明示范实施例的虚拟机监视器和客户操作系统的存储映射识别的图。参考图4,客户操作系统l(GuestOSl,客户0S1)、客户操作系统2(Guest0S2,客户0S2)和虚拟机监视器(VMM)的每个不同地识别存储地图(memorymap)。这是因为在编译中客户操作系统贯常知道的物理存储的位置不同于在虚拟化系统中客户操作系统所要使用的物理存储的位置。虚拟机监视器通过生成并使用影子页表来校正这样的差异,在所述影子页表中,由客户操作系统生成的客户页表被改变到其中实际加载操作系统的存储位置。下文中,将如下描述在图4中所示的本发明的示范实施例。虚拟机监视器识别其中加载虚拟机监视器、客户操作系统I、和客户操作系统2的实际物理存储41的位置。然而,客户操作系统I被识别为使用从0x50000000到0x51000000的物理存储42,并且客户操作系统2也被识别为使用从0x50000000到0x51000000的物理存储43,为了校正上面的差异,虚拟机监视器提供影子页表,从而使得操作系统能够映射向虚拟机监视器分配的实际物理存储41。图5是图示了根据本发明示范实施例的虚拟化系统的存储结构的图。将参考图5来描述在虚拟存储和物理存储之间的映射关系。在虚拟化系统中,将存储地址分类为虚拟地址51、伪物理地址52、和机器地址53。虚拟地址51指示由虚拟机识别的虚拟存储区域,伪物理地址52指示由虚拟机识别的物理存储区域,并且机器地址53指示由虚拟机监视器浏览的实际物理存储区域。如上所述,当生成影子页表时,虚拟机监视器为每个存储区域分派不同的访问权利,从而防止在处理之间的存储干扰。也就是说,当在生成影子页表的条目时、在客户操作系统内的预定位置中发生存储写入时,虚拟机监视器可获得控制权利,并且将存储写入改变为只读。特许模式中的虚拟机监视器获取非特许模式中的客户操作系统的控制权利。当生成影子页表时,本发明的存储虚拟化方法结合被映射到客户页表的条目来考虑在伪物理地址52和机器地址53之间的地址位置差异,如图5所示。此外,当需要改变访问控制设置(像其中发生处理之间的存储干扰的情况)时,通过改变访问控制设置来生成影子页表的对应条目。在影子页表生成处理中,基于页表的条目数目来确定生成操作的量。在支持多个客户操作系统的虚拟化系统的情况下,每当执行每个操作系统的处理时,需要生成影子页表。因此,所述生成处理频繁地发生,从而导致系统中的大负载。将物理存储映射到处理的方法针对每个操作系统而不同。根据本发明示范实施例的存储虚拟化方法提出了一种通过考虑客户操作系统的这样的特性来降低影子页表生成负载的方法。在32比特Linux的情况下,当物理存储的大小等于或小于896MB时,Linux直接映射在处理的4GB虚拟地址空间中内核所使用的从OxCOOOOOOO开始的所有物理存储。由于Linux的所述特性,所有处理具有相同的内核地址映射,并且由Linux操作系统所使用的处理的所有页表具有与OXCOOOOOOO上层相同的条目。因此,当客户操作系统是Linux操作系统时,在OXCOOOOOOO较上部分的地址的情况下,可通过解析客户页表来重新使用先前使用的影子页表的条目描述,而不生成影子页表。此外,对于除了在示范实施例中描述的Linux之外的其它操作系统,当考虑对应操作系统的存储映射特性时,可能降低影子页表生成负载。在操作多个客户操作系统的虚拟化系统中,需要可用于映射客户操作系统所使用的客户页表和所高速缓存的影子页表的信息,以重新使用影子页表。机器地址位置信息(即,其中加载客户操作系统的实际物理存储位置信息)可用于所述映射信息。此外,客户页表的虚拟地址位置信息可用于所述映射信息。在使用所述机器地址和虚拟地址作为映射信息的情况下,当客户操作系统在相同的虚拟地址位置中使用不同处理的页表时,发生的问题在于,页表不能用上面两条信息来标识。在半虚拟化(para-virtualization)的情况下,虚拟机监视器可以从客户操作系统接收操作系统的信息,并因此可解决上面的问题。另一方面,在全虚拟化的情况下,需要附加的信息来用于标识。例如,可通过将用于每个操作系统的标识符添加到客户页表来标识所述客户操作系统。图6是图示了根据本发明示范实施例的存储虚拟化方法中的影子页表的高速缓存的图。参考图6,根据本发明示范实施例的存储虚拟化方法生成并高速缓存用于多个客户操作系统的每个的影子页表62,并且使得能够重新使用所述影子页表62,并且具体地,将影子页表62高速缓存到包括影子页表62的位置信息的用于每个客户操作系统的列表61中。用于每个操作系统的列表61是用于映射客户页表(未不出)和影子页表62的信息。通过这样,每当改变客户页表(未示出)时,存储虚拟化方法可重新使用所存储的影子页表62,而不重新生成影子页表62。影子页表62的高速缓存可使用各种方法来执行。作为所述各种方法之一,可以采用即使当多个客户操作系统的至少一个的执行被暂停(suspend)时也保持高速缓存的方法。由于虚拟化系统的特性,在许多情况下可同时执行多个客户操作系统。当多个客户操作系统的影子页表共享单个高速缓存空间时,所述高速缓存空间受限。因此,为了存储新的影子页表,需要从高速缓存中去除在现有的影子页表之中其执行被暂停的客户操作系统的影子页表。在这个示例中,其执行被暂停并然后被恢复的客户操作系统的影子页表不能被重新使用,并需要被重新生成。根据本发明示范实施例的存储虚拟化方法使得甚至调度之外(scheduled-out)的客户操作系统所使用的影子页表也能够被保持在高速缓存中,以便防止上面的问题。此外,影子页表62的高速缓存可采用如下方法,通过虚拟化系统的虚拟机监视器来验证用于每个客户操作系统的影子页表的高速缓存频率,并且基于所述高速缓存频率来动态地改变影子页表的高速缓存空间。这是为了当多个客户操作系统共享高速缓存区域时、有效地管理高速缓存区域。图7是图示了根据本发明示范实施例的在存储虚拟化方法中对第二页表进行共孚的情况的图。参考图7,根据本发明示范实施例的存储虚拟化方法将客户页表分类为第一页表和第二页表71,并且与另一第一页表共享和使用第二页表71。在这个情况下,可以基于共享的关系来对影子页表进行高速缓存。当如图7所示地客户页表共享第二页表71时,所述页表可彼此影响。当第二页表71的共享关系没有被反映在对影子页表的高速缓存中时,所共享的客户页表中的改变没有被反映在影子页表中,并因此破坏了页表的连贯性,从而虚拟化系统没有正常操作。因此,本发明的示范实施例甚至对于影子页表也采用了用于同等地反映客户页表的共享关系的方法,从而解决所述问题。所述共享关系可以使用各种方法来识别。根据本发明的示范实施例,虚拟化系统的虚拟机监视器管理所共享的第二页表71的列表,并且使得能够在生成影子页表时参考所述列表,从而使得可能验证是否共享所述客户页表。此外,根据本发明的另一示范实施例,存储虚拟化方法可被配置为使用散列方案来验证第二页表的共享关系。即使连接列表是用于绑定数据结构的简单方法,它对于搜索连接列表也可能是无效率的。这是因为需要查看整个列表直到发现所期望的事项为止。散列表格以指明指针的安排(即,安排中的位置)的索引作为指针向量而使得能够进行访问,从而使得可能有效地验证是否共享客户页表。同时,根据本发明又一示范实施例的使用影子页表的存储虚拟化设备可包括所高速缓存的影子页表、客户页表、和用于处理映射信息的处理器,该映射信息用以映射所高速缓存的影子页表和客户页表。图8是用于描述根据本发明示范实施例的存储虚拟化方法的流程图。初始地,支持多个操作系统的虚拟化系统为每个操作系统生成影子页表(SllO)。接下来,虚拟化系统在高速缓存区域中存储所生成的影子页表(S130)。这里,如上所述地可采用各种高速缓存方法。例如,可以采用即使当预定操作系统的执行被暂停时也保持高速缓存的方法、基于使用频率来动态地分配高速缓存区域的方法等。接下来,执行在多个操作系统之中的一个操作系统的处理,从而提供客户页表(S150)。接下来,虚拟化系统基于映射信息来映射高速缓存的影子页表和客户页表(S170)。所述映射信息可被提供为用于每个操作系统的列表,并且所述列表包括物理存储的地址信息,从而使得能够进行虚拟化系统中的物理存储访问。结果,不经过现有的影子页表生成过程,也可以基于映射信息来重新使用高速缓存的影子页表(S190),从而可提高虚拟化系统的性能。根据本发明的存储虚拟化设备和方法可被应用到操作多个操作系统的任何类型的虚拟化
技术领域
。如上所述,已经在附图和说明书中描述并图示了示范实施例。选择并且描述示范实施例,以便说明本发明的某些原理和它们的实践应用,从而使得本领域的其它技术人员能够作出和利用本发明的各种示范实施例、连同其各种替换和修改。从前述描述中显而易见的是,本发明的某些方面不受到这里图示的示例的具体细节的限制,并因此,构想出,本领域的其它技术人员将想到其它的修改和应用或者其等效物。然而,在考虑说明书和附图之后,本构造的许多改变、修改、变化以及其它使用和应用对于本领域技术人员将变明显。不脱离本发明的精神和范围的所有这些改变、修改、变化以及其它使用和应用被认为得到本发明覆盖,本发明仅通过接下来的权利要求所限制。权利要求1.一种在支持多个客户操作系统的虚拟化系统中对存储进行虚拟化的方法,所述方法包括对于所述多个客户操作系统的每个来生成影子页表并高速缓存该影子页表;和使用映射信息来映射所高速缓存的影子页表之一、和来自所述多个客户操作系统之一的用于参考物理存储页面的客户页表。2.根据权利要求I的方法,其中,所述映射的操作使用其中加载客户操作系统的机器地址位置信息和客户页表的虚拟地址位置信息,作为映射信息。3.根据权利要求I的方法,其中所述高速缓存的操作将影子页表高速缓存到包括影子页表的位置信息的、用于每个客户操作系统的列表。4.根据权利要求I的方法,其中,所述高速缓存的操作即使当暂停客户操作系统的执行时也保持进行高速缓存。5.根据权利要求I的方法,其中,所述高速缓存的操作通过虚拟化系统的虚拟机监视器来验证用于每个客户操作系统的影子页表的高速缓存频率,并且基于所述高速缓存频率来动态地改变影子页表的高速缓存空间。6.根据权利要求I的方法,其中,所述高速缓存的操作将客户页表分类为第一页表和第二页表,并且当共享该第二页表时,基于共享关系来对影子页表进行高速缓存。7.根据权利要求6的方法,其中,在虚拟化系统的虚拟机监视器管理所共享的第二页表的列表时,所述高速缓存的操作通过参考所述列表来验证第二页表的共享关系,并从而对影子页表进行高速缓存。8.根据权利要求6的方法,其中,所述高速缓存的操作使用散列方案来验证第二页表的共孚关系。9.一种在支持多个客户操作系统的虚拟化系统中使用影子页表来对存储进行虚拟化的设备,所述设备包括处理器,包括为所述多个客户操作系统的每个所生成的影子页表,客户页表,来自所述多个客户操作系统之一,被提供以用于参考物理存储页面,和映射信息,映射所高速缓存的影子页表之一和该客户页表。10.根据权利要求9的设备。其中,所述映射信息对应于其中加载客户操作系统的机器地址位置信息和客户页表的虚拟地址位置信息。11.根据权利要求9的设备,其中,所述处理器将影子页表高速缓存到包括影子页表的位置信息的、用于每个客户操作系统的列表。12.根据权利要求9的设备,其中,所述处理器即使当暂停客户操作系统的执行时也保持进行高速缓存。13.根据权利要求9的设备,其中,所述处理器通过虚拟化系统的虚拟机监视器来验证用于每个客户操作系统的影子页表的高速缓存频率,并且基于所述高速缓存频率来动态地改变影子页表的高速缓存空间。14.根据权利要求9的设备,其中,所述处理器将客户页表分类为第一页表和第二页表,并且当共享该第二页表时,系统管理所共享的第二页表的列表。全文摘要公开了一种在支持多个客户操作系统的虚拟化系统中对存储进行虚拟化的方法,包括对于所述多个客户操作系统的每个来生成影子页表并高速缓存该影子页表;从所述多个客户操作系统之一接收用于参考物理存储页面的客户页表;并且使用映射信息来映射所高速缓存的影子页表之一和该客户页表。文档编号G06F12/08GK102662857SQ20111043123公开日2012年9月12日申请日期2011年12月21日优先权日2010年12月21日发明者田承协,金康好,金载烈,高广源申请人:韩国电子通信研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1