存储器管理设备、存储器管理方法及其程序的制作方法

文档序号:6426813阅读:133来源:国知局
专利名称:存储器管理设备、存储器管理方法及其程序的制作方法
技术领域
本公开内容涉及一种管理计算机存储器中的数据的存储器管理设备、存储器管理方法及其程序。
背景技术
在写时复制(Copy-On-Write)机制中,例如,在生成子进程时,只为可以被重写的页面分配物理存储器区域,而针对不可以被重写的页面,在其父进程的物理页面上进行共享参考。然后,在进行写入时,首次分配针对子进程的所有数据的物理存储器区域,并执行复制。另外,在应用程序中,常常希望在初始状态在存储器中写入零数据。在这种情况下,当操作系统使用上面提到的写时复制机制时,可以在零页面(该页面中的所有数据由零数据构成)上进行共享参考,这提高了效率。除了写时复制机制以外,已经存在共享相同数据的系统。例如,在日本专利申请公开No. 2009-543198(下文称为专利文献1)中描述的方法中,一模块通过使用数据块的散列 (指纹)来搜索相同的数据,从而尝试共享。

发明内容
然而,即使当以上面提到的方式来使用写时复制机制时,也会出现下面的问题。例如,在希望在存储器中写入零数据的情况下,大部分应用软件在启动时独立地执行用零填充其多个页面的进程。因此,由于此,写时复制机制没有有效地工作,这导致大大增加了零页面的问题。另一方面,在使用散列的系统中,如在专利文献1的方法中,计算散列值的过程是昂贵的。搜索相同散列数据的过程也是昂贵的,因而,例如难以将这种方法应用到具有低处理能力的计算器。鉴于上面提到的情况,需要提供一种存储器管理设备、存储器管理方法及其程序, 其能够抑制在存储器中累积各自具有频繁出现模式的大量页面(例如零页面等),而不需要高的计算处理能力。根据本公开内容的实施方式,提供了一种包括确定器和设置单元的存储器管理设备。所述确定器确定写入数据的模式是否是频繁出现模式,其中所述写入数据是作为在存储器中进行写入的指令的目标的数据。所述设置单元在所述确定器确定所述写入数据的模式是所述频繁出现模式并且所述频繁出现模式的数据已经被保持在所述存储器中的情况下,对具有所述频繁出现模式的所述写入数据设置共享参考(shared reference)。在本公开内容的实施方式中,在所述写入数据的模式是所述频繁出现模式的情况中,如果所述写入数据已经被保持在所述存储器中,则关于具有该频繁出现模式的后续数据设置所述共享参考。因而,抑制在存储器中累积具有频繁出现模式的大量数据是可能的。 另外,在本公开内容的实施方式的过程中,没有使用散列数据,因而不需要高的计算处理能力。频繁出现模式可以是以下模式其中,具有相同值的预定数量的数据是连续的。可替换地,所述频繁出现模式可以是通过计算机学习而累积的模式,或者所述频繁出现模式可以是复制源的数据模式。所述确定器可以根据所述写入数据的模式是否与预先定义的所述频繁出现模式相对应,来确定所述写入数据的模式是否是所述频繁出现模式。根据本公开内容的实施方式,提供了一种存储器管理设备执行的存储器管理方法,所述方法包括确定写入数据的模式是否是频繁出现模式,其中所述写入数据是作为在存储器中进行写入的指令的目标的数据。在确定所述写入数据的模式是所述频繁出现模式并且所述频繁出现模式的数据已经被保持在所述存储器中的情况下,关于具有所述频繁出现模式的所述写入数据设置共
享参考。根据本公开内容的实施方式,提供了一种使存储器管理设备执行上面提到的存储器管理方法的程序。如上面描述的,根据本公开内容的实施方式,能够抑制在存储器中累积各自具有零页面等的频繁出现模式的大量页面,而不需要高的计算处理能力。如附图中所示出的,根据本公开内容的最佳实施方式的以下详细描述,本公开内容的这些以及其它目的、特征和优点将变得更加明显。


图1是示出了用于实现根据本公开内容实施方式的存储器管理设备的系统的配置的方框图;图2是示出了存储器管理设备执行的过程的流程图;图3是示出了图2中的步骤102处的过程的流程图;图4是示出了图2中的步骤104处的过程的流程图;图5是各自示出了写入数据的逻辑映像和物理存储器块的示图,其示出了零页面模式成为频繁出现模式的例子;以及图6是各自示出了写入数据的逻辑映像和物理存储器块的示图,其示出了复制源的数据模式成为频繁出现模式的例子。
具体实施例方式下文中,将参考附图来描述本公开内容的实施方式。[用于实现存储器管理设备的配置]图1是示出了用于实现根据本公开内容实施方式的存储器管理设备的系统的配置的方框图。该系统100由计算机上实现的硬件和软件构成,并且包括存储器(memory) 28、 存储器管理器27、架构沈和存储器用户25。虽然没有示出,但是上面提到的计算机包括中央处理单元(CPU)、随机存取存储器(RAM)、只读存储器(ROM)以及公知的硬件资源,例如辅助存储单元。这里,虽然存储器观主要与RAM相对应,但是通过使用公知操作系统(OS)的虚拟存储器技术,也可以将RAM和辅助存储单元视为一个虚拟存储器。在以下内容中,当简单地描述“存储器”时,其基本上是指物理存储器。然而,当共同地表示逻辑存储器和物理存储器时,或者为了理解该实施方式的技术起见,其可以是指逻辑存储器和物理存储器中的任何一个。然而,当简单地描述“存储器”使得难以理解时, 可以区分地将其描述为“物理”存储器或“逻辑”存储器。存储器用户25在实际中请求分配存储器观(分配物理存储器28)并对存储器观进行读取和写入。这里,在存储器管理器是垃圾收集器或虚拟计算机的主机OS(如稍后将描述的)的情况下,“分配存储器”的上下文中的“存储器”并不是严格意义上的“物理存储
典”
'ΠΒ' ο在从存储器用户25接收到指令后,架构沈执行在存储器观上复制并写入数据的过程。存储器管理器27管理存储器观,并对存储器观和架构沈之间的读取操作和写入 Ι^ τΦ^ (intermediate)。这种系统100的配置的具体例子包括如下的配置其中,存储器用户25是应用软件(下文简称为应用),架构26是标准库,而存储器管理器27是OS。除此以外,存在如下配置其中,存储器用户25是应用,而存储器管理器27是垃圾收集器。可替换地,举例说明了如下的配置其中,存储器用户25是虚拟计算机中的访客 OS,架构沈是虚拟机,而存储器管理器27是主机OS (host OS)。在这种配置中,如稍后将描述的,架构沈确定写入进程,并向存储器管理器27发送针对共享参考的指令。[存储器管理设备执行的过程]图2至图4是示出了存储器管理设备执行的过程的流程图。存储器管理设备执行的以下过程是由ROM或辅助存储单元中存储的软件以及上面提到的硬件资源的合作来实现的。另外,在对这些流程图的描述中,将描述如下例子其中,将应用用作存储器用户25, 将标准C库用作架构26,并将Linux内核用作存储器管理器27。如稍后将描述的,以物理存储器观的块大小为单位,来重复地执行这些流程图中的过程。首先,应用调用向标准C库(下文简称为库)的存储器观写入的函数。具体地, 应用和库指定存储器观的写入目的地的逻辑块地址,并通过存储器管理器27指定物理块地址。库确定写入数据的模式是否是频繁出现模式(步骤101),其中,该写入数据是作为在存储器观中进行写入的指令的目标的数据。此时,CPU和库作为用于执行确定过程的确定模块。这里,例如,在分页的过程中,块大小与页单元相对应,并且通常是4KB,其中页单元是写入数据时写入大小的单元。这里,频繁出现模式是具有物理存储器观的一个块大小的数据模式,以及以如下方式定义的模式。例如,在步骤101处,在写入固定值的函数memset中,检查这些固定值中的每个固
5定值是否是频繁出现的值。例如,在采用十六进制的情况下,固定值是00值、FF值、FE值等等。也就是说,在这种情况下,将一个块中的所有值都是固定值的数据模式视为频繁出现模式。实际上,在步骤101处,确定固定值是否是频繁出现的值、以及包括连续的频繁出现的值的数据大小是否等于或大于存储器观的块大小(即,一个块的大小)就足够了。可替换地,作为频繁出现模式的例子,在存储器复制函数memcpy中,将复制源的数据模式视为频繁出现模式。也就是说,如稍后参考图6A和图6B将描述的,在再一次提供写入内容与过去写入的数据的内容相同的数据的请求时,频繁出现模式是指具有相同内容的数据模式。如上面描述的,通常提前将预期要频繁出现的模式定义为频繁出现模式。替代预先定义频繁出现模式,可以通过计算机学习来定义频繁出现模式。例如,存在如下方法其中,在步骤101处的写入数据的信息被累积(受到分析(profiling)),并且写入具有相同内容的信息的请求的数量大于阈值的情况下,将该写入数据的模式设置为频繁出现模式。此外,可以采用各种公知方法作为学习方法。这里,将参考图5A和图5B来描述图2的流程图中的步骤101、103和105至107。 图5A示出了在写入数据被写入之前,物理存储器28中的块及其逻辑映像,并且进一步,它们之间的视图示出了存储器块的参考指针。图5A中的这个例子示出了四个块,并且在这四个块中的每个块中保持不同的数据。图5B是示出了当在图5A中所示的存储器上执行对写入数据的写入(重写)操作时的存储器状态。作为图5B的“写入数据”的例子,示出了三个块的数据,其中,第二块中的一些值以及第三和第四块中的所有值是00值。因而,第二块的数据模式不是频繁出现模式,而第三和第四块的数据模式中的每个数据模式均是频繁出现模式。应当注意,如上面描述的,以块为单位重复地执行图2的过程。在步骤101处,例如,在写入数据的模式不是频繁出现模式的情况下,如在图5B的重写映像中的第二块中,使用传统的方法来在存储器观中执行写入操作(步骤10 。之后,该过程返回至应用。图3是示出了该步骤102的内容的流程图,即传统过程。在图3中,首先,确定被指定为写入数据的写入目的地的存储器块(下文简称为块)是否是共享块。通常,在多个进程期间共享物理存储器观的情况下,共享块是成为在其上将进行共享参考的目标的块。在写入目的地的块是共享块的情况下,禁止对这种块的写入,因而分配存储器观的新块(步骤20 。然后,如图5B的物理存储器块的第二块中所示的,复制该块的数据(步骤20 ,并执行对写入数据的写入操作(步骤204)。此时,应用所请求的写入数据可以是一个块的一部分的数据。将描述图2的流程图的其余部分。在步骤101处,在确定写入数据的模式是频繁出现模式的情况下(如在图5B的例子中的第三块中),执行以下过程。确定在整个写入数据(这里,超过一个块大小的数据)中是否分配了其数据具有的内容与对应于频繁出现模式的模式(下文称为指定模式)的数据的内容相同的块(步骤10;3)。换句话说,确定是否已经在物理存储器观中保持了指定模式的数据。在图5B的第三块的例子的情况中,尚未在存储器观中保持作为其块模式(作为全部用00值填充的页面的零页面)的指定模式(步骤103为NO),因而执行传统过程(步骤104)。图4是示出了该步骤104的过程的流程图。该过程基本上与图3中所示的过程相同,但是与图3中所示的过程的不同之处在于不存在图3的步骤203。在步骤101处,确定写入数据的模式是频繁出现模式,并且确保用频繁出现模式的数据来重写一个块中的所有数据,因而复制块数据变得不必要。然而,根据存储器管理器的实现,可以执行复制数据。另一方面,在图5B的重写映像的第四块的例子的情况中,该过程进行到步骤101、 102和103,并且在步骤103处,确定为“是”。也就是说,在第四块的例子中,在关于第三块的过程中,已经分配了指定模式的块,因而进行了为“是”的确定,并且该过程进行到步骤105。在步骤105处,确定被指定为写入目的地的块是否初始就是共享块。例如,如图5A 中所示的,“初始”表示写入数据被写入之前的时间点。在图5A和图5B的例子中,在第四块初始不是共享块的情况下(步骤103为“否”),对第四块的处理变成自由的和不必要的,并因而取消分配第四块(步骤106)。然后,关于具有其指定模式的第三块,设置共享参考(步骤107)。在图5B中,由虚线来指示被取消分配的第四块。应当注意,由Linux内核来执行块的取消分配、共享参考的设置等,并且CPU和 Linux内核作为共享参考的设置模块。另一方面,在步骤105确定为“是”的情况下,保持共享参考的设置(步骤107)。图6A和图6B示出了写入数据的另一例子。该例子示出了对数据进行复制的模式, 并且是其中如图6A和图6B的逻辑映像中所示对第一和第二块的数据进行复制的例子。作为复制源的第一和第二块中的每个块的数据模式被视为频繁出现模式。根据图2中所示的过程,关于第一和第二块设置共享参考,将第三和第四块设置为空闲空间。如上面描述的,在这个实施方式中,在写入数据的模式是频繁出现模式的情况下, 如果在存储器观中已经保持了写入数据,则关于具有该频繁出现模式的后续写入数据设置共享参考。以这种方式,能够抑制在存储器中累积具有频繁出现模式的大量数据。因而, 增加了存储器观中的空闲空间,并从而可以高效地使用存储器观。本发明人实际上使用系统100进行了存储器管理实验。作为该实验的结果,与相关技术相比,在该实验中证实了将零数据减少了大约13%的效果。此外,在该实施方式的过程中,例如,在步骤103至105中,可以省略写入具有相同数据的块的过程,并因而提高处理速度。此外,对具有相同内容的数据的块进行共享参考, 因而也提高了 CPU的数据高速缓存的命中率。此外,在该实施方式中,没有像相关技术那样使用散列数据,因而不需要高的计算处理能力。尤其是,考虑到大部分应用在分配了块之后用零页面来填充所有所分配的块这一事实,系统100会有效地在这种应用上工作。在该实施方式中,如上面描述的,库执行步骤101处的确定过程,因而确定过程以及搜索保持相同数据的块变得很容易。另外,不必为实现系统100而改变存储器用户的程序(例如应用)。根据本公开内容的实施方式并不限于上面提到的实施方式,并且在不脱离本公开内容的要点的情况下,可以做出本公开内容的其它各种实施方式。本公开内容包括与2010年7月1日在日本专利局递交的日本在先专利申请 JP2010-150846中公开的主题相关的主题,该在先专利申请的整个内容通过引用方式并入本文。
本领域技术人员应当理解,在处于所附权利要求及其等价形式的范围的程度上, 根据设计要求和其它因素可以出现各种修改、组合、子组合和改变。
权利要求
1.一种存储器管理设备,包括确定器,被配置为确定写入数据的模式是否是频繁出现模式,其中所述写入数据是作为在存储器中进行写入的指令的目标的数据;以及设置单元,被配置为在所述确定器确定所述写入数据的模式是所述频繁出现模式并且所述频繁出现模式的数据已经被保持在所述存储器中的情况下,对具有所述频繁出现模式的所述写入数据设置共享参考。
2.根据权利要求1所述的存储器管理设备,其中所述频繁出现模式是以下模式其中具有相同值的预定数量的数据是连续的。
3.根据权利要求1所述的存储器管理设备,其中所述频繁出现模式是通过计算机学习而累积的模式。
4.根据权利要求1所述的存储器管理设备,其中所述频繁出现模式是复制源的数据模式。
5.根据权利要求1所述的存储器管理设备,其中所述确定器根据所述写入数据的模式是否与预先定义的所述频繁出现模式相对应,来确定所述写入数据的模式是否是所述频繁出现模式。
6.一种由存储器管理设备执行的存储器管理方法,包括由确定装置确定写入数据的模式是否是频繁出现模式,其中所述写入数据是作为在存储器中进行写入的指令的目标的数据;以及在确定所述写入数据的模式是所述频繁出现模式并且所述频繁出现模式的数据已经被保持在所述存储器中的情况下,由设置装置关于具有所述频繁出现模式的所述写入数据设置共享参考。
7.—种使存储器管理设备执行以下操作的程序由确定装置确定写入数据的模式是否是频繁出现模式,其中所述写入数据是作为在存储器中进行写入的指令的目标的数据;以及在确定所述写入数据的模式是所述频繁出现模式并且所述频繁出现模式的数据已经被保持在所述存储器中的情况下,由设置装置关于具有所述频繁出现模式的所述写入数据设置共享参考。
全文摘要
本发明涉及存储器管理设备、存储器管理方法及其程序。所述存储器管理设备包括确定器,被配置为确定写入数据的模式是否是频繁出现模式,其中写入数据是作为在存储器中进行写入的指令的目标的数据;以及设置单元,被配置为在确定器确定写入数据的模式是频繁出现模式并且频繁出现模式的数据已经被保持在存储器中的情况下,关于具有频繁出现模式的写入数据设置共享参考。
文档编号G06F13/16GK102375702SQ201110169900
公开日2012年3月14日 申请日期2011年6月23日 优先权日2010年7月1日
发明者佐藤和美, 崎泰裕, 成田和人, 神长浩气 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1