CN105474180A - 基于页面的压缩存储管理 - Google Patents
基于页面的压缩存储管理 Download PDFInfo
- Publication number
- CN105474180A CN105474180A CN201380077440.0A CN201380077440A CN105474180A CN 105474180 A CN105474180 A CN 105474180A CN 201380077440 A CN201380077440 A CN 201380077440A CN 105474180 A CN105474180 A CN 105474180A
- Authority
- CN
- China
- Prior art keywords
- memory pages
- locked memory
- locked
- compressed
- pages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
存储器由多个页面所组成,并且不同页面可以具有不同的优先级级别。具有至少相似的优先级级别的存储器页面集合被识别并压缩至具有至少相似优先级级别的另外的存储器页面集合。该另外的存储器页面集合被归类为与被压缩的存储器页面集合相同的页面类型(例如,归类为能够被重新设定用途的存储器页面)。因此,特定存储器页面集合能够被压缩至相同类型的不同存储器页面集合并且对应于至少相似的优先级级别。然而,由于该压缩,存储器页面集合被压缩于其中的存储器页面的数量有所减少,因此增加了能够存储在存储器中的数据量。
Description
情境技术
由于计算机技术已经有所发展,计算机处理器的性能有所提高。然而,这样的计算机处理器的性能有时被计算机中的其它瓶颈所阻碍。例如,从磁盘驱动器向随机访问存储器(RAM)进行数据传输的速度是计算机性能的瓶颈。一种减小计算机中瓶颈的影响的方式是将更多数据存储在RAM中。然而,RAM的成本始终非常高,所以在计算机中使用非常大量的RAM在成本上通常是不可行的。
发明内容
提供该发明内容而以简化形式对随后将在下文的具体实施方式中进一步进行描述的概念的选择进行介绍。该发明内容并非意在标识所请求保护主题的关键特征或必要特征,其也并非意在被用来对所请求保护主题的范围进行限制。
依据一个或多个方面,识别存储器页面的第一集合。该存储器页面的第一集合被压缩至由存储器页面的第二集合组成的分区之中。在利用被压缩的存储器页面基本上填充该分区之后,允许存储器管理器重新设置该存储器页面的第二集合的用途。还能够从存储器管理器接收针对该存储器页面的第一集合中的至少一个存储器页面的请求。响应于该请求,被压缩的至少一个存储器页面被获取、解压缩并且被返回至存储器管理器。
依据一个或多个方面,一种计算设备包括存储器,被配置为管理该存储器的页面的存储器管理器,和压缩存储管理器。该压缩存储管理器被配置为识别多个存储器页面,其中每个存储器页面具有多种优先级级别中的相对应优先级级别。该压缩存储管理器进一步被配置为识别均具有该多个优先级级别中至少相似的优先级级别的存储器页面的第一集合,并且将该存储器页面的第一集合压缩到由均具有该多个优先级级别中至少相似的优先级级别的存储器页面的第二集合所组成的分区之中。在利用压缩存储器页面基本上填充该分区之后,该存储器管理器被允许重新设置该存储器页面的第二集合的用途。
附图说明
附图中始终使用相同的数字来指代同样的特征。
图1图示了依据一个或多个实施例的采用基于页面的压缩存储管理的示例系统。
图2图示了依据一个或多个实施例的分页存储器的示例记录。
图3图示了依据一个或多个实施例的压缩存储器页面的示例。
图4是图示依据一个或多个实施例的用于实施基于页面的压缩存储管理的示例过程(process)的流程图。
图5图示了依据一个或多个实施例的示例存储器页面映射。
图6图示了依据一个或多个实施例的示例分区映射。
图7图示了包括示例计算设备的示例系统,该示例计算设备表示可以实施这里所描述的各种技术的一个或多个系统和/或设备。
具体实施方式
这里对基于页面的压缩存储管理进行讨论。系统中的存储器由被称作存储器页面(或简单地页面)的多个分块或部分所组成,并且不同存储器页面可以具有不同的优先级级别。存储器页面可以被归类为不同类型,诸如能够被重新设置用途的(例如,重新用于其它事情,诸如用于相同或不同程序或者用于系统中的其它用途),或者无法重新设置用途的。具有至少相似的优先级级别的存储器页面集合被识别并且压缩至具有至少相似的优先级级别的另外的存储器页面集合。该另外的存储器页面的集合被归类为与所压缩的存储器页面集合相同的页面类型,并且被压缩的存储器页面集合被释放,这允许系统的存储器管理器利用该存储器页面集合做任何事情。因此,能够将存储器页面的特定集合压缩至相同类型(例如,备用的或能够重新分配的)的存储器页面的不同集合并且对应于至少相似的优先级级别。然而,由于该压缩,存储器页面集合被压缩于其中的存储器页面的数量有所减少,因此增加了能够在存储器中存储的数据的量。
图1图示了依据一个或多个实施例的采用基于页面的压缩存储管理的示例系统100。系统100包括存储器管理器102、压缩存储管理器104和分页存储器106。总体上,存储器管理器102对数据在分页存储器106中的存储进行管理。存储器管理器102将分页存储器106的多个部分分配给系统100中的各个程序108。程序108可以是应用、操作系统程序或者其它组件或模块。存储器管理器102能够从这些程序108接收从分页存储器106获取数据以及向分页存储器106写入数据的请求。如以下更为详细讨论的,存储器管理器102还将分页存储器106的一个或多个部分分配给压缩存储管理器104以便以压缩形式进行数据存储。分页存储器106例如可以是任意类型的CPU(中央处理单元)可寻址存储器,诸如易失性存储器(例如,RAM)或非易失性存储器(例如,闪存)。
系统100表示一个或多个设备。在一个或多个实施例中,系统100中所图示的组件102-108被包括为相同计算设备的一部分。可替换地,该组件可以跨两个或更多设备进行分布。
在一个或多个实施例中,存储器管理器102使用分页对分页存储器106进行管理。存储器管理器102将存储器106组织为页面,后者是特定(例如,固定)大小单位的数据。分页的动作是指在数据并非处于存储器106中时以页面为单位从用于特定类型的数据(例如,私有数据)的后端文件(backingfile)或页面文件(例如,页面文件110)读取数据。分页的动作还是指将污损数据以页面为单位写回到用于特定类型的数据的后端文件或页面文件(例如,页面文件110)之中(例如,存储私有数据的私有页面,或者存储图像或数据文件的页面)。这样的分页技术对于本领域技术人员而言是公知的。
在这里的讨论中,参考作为存储器管理器的管理器102,以及作为存储器页面(例如,RAM的页面)的存储器的分块或部分。所要意识到的是,这里所讨论的技术应用于各种类型的存储资源(例如,其它类型的存储器),并且分页存储器106可以是任意各种类型的存储资源。使用这里所讨论的技术,存储器页面是指任意存储资源的分块或部分,其中存储器管理器102管理哪些块或部分在任意给定时间被存储在该存储资源中,协调分块或部分从该存储资源向另一个存储资源(例如,磁盘驱动器)的传输,并且协调分块或部分从其它存储资源向该存储资源的获取。
分页存储器106包括均能够在任意给定时间被归类为多种不同页面类型之一的多个页面,并且该归类可以随时间而有所变化。一种类型的存储器页面是工作或指定页面,这是已经被分配给程序108并且当前被程序108所使用的存储器页面。当前被使用的存储器页面是指已经在阈值时间量(例如,之前20秒)内被程序108所访问的存储器页面,或者另外是正被程序108以该存储器页面并不被存储器管理器102重新设置用途的方式所访问的存储器页面。重新设置存储器页面的用途是指该存储器页面被存储器管理器102用来做其它事情,诸如存储用于相同或不同程序的不同数据或者用于系统中的其它用途。
另一种类型的存储器页面是后备或可重新指定的页面,其是已经被分配给程序108并且当前并未被程序108所使用的存储器页面。当前并未被使用的存储器页面是指在阈值时间量(例如,之前20秒)内并未被程序108所访问的页面,或者另外是正被程序108以该存储器页面能够被存储器管理器102重新设置用途的方式所访问的页面。存储器页面例如能够通过被指定为不同类型的页面(例如,工作或指定),被分配给不同程序等而被重新设置用途。
另一种类型的存储器页面是修改或污损页面,其是其内容已经被修改但是还没有复制到页面文件110的存储器页面。修改或污损存储器页面并会被存储器管理器102重新设置用途。然而,在将修改或污损页面复制到页面文件110之后,存储器页面的分类能够变为后备或可重新指定的页面。另一种类型的存储器页面是释放或解除分配页面,其是当前并未被分配给程序108并且存储器管理器102能够利用其做任何事情(包括重新设置用途)的存储器页面。
存储器管理器102使用各种规则或标准来确定分页存储器106的存储器页面何时被分配给程序108,哪些存储器页面被分配给哪些程序108,哪些之前被分配给程序108的存储器页面要重新设置用途,等等。存储器管理器102还确定存储器页面类型的归类,适当改变存储器页面的归类。在一个或多个实施例中,存储器管理器102保存分页存储器106的哪些存储器页面被归类为哪种页面类型的列表或其它记录。例如,存储器管理器102能够保存工作或指定页面的列表或其它记录,后备或可重新指定的页面的列表或其它记录,修改或污损页面的列表或记录,释放或解除分配的页面的列表或记录,等等。
分页存储器106的一个或多个页面均具有相对应的优先级级别。仅特定类型的存储器页面(例如,后备或可重新指定的页面)可以具有优先级级别,或者可替换地,所有类型的存储器页面都可以具有优先级级别。存储器管理器102针对每个存储器页面设置优先级级别,并且能够以各种不同方式针对存储器页面确定优先级级别。在一个或多个实施例中,存储器页面的优先级级别是操作系统向请求分配存储器页面的处理或线程指定的优先级级别。可替换地和/或除此之外,可以使用其它标准来确定存储器页面的优先级级别,诸如来自程序108的请求,存储器页面与特定类型的获取(例如,页面的推测性获取)相关联,等等。存储器管理器102还能够随时间而改变存储器页面的优先级级别(例如,降低在阈值时间量内未被程序108所访问的存储器页面的优先级级别)。
图2图示了依据一个或多个实施例的分页存储器的示例记录200。图示了多个(X)优先级级别202的集合,该优先级级别202的集合包括能对应于页面的优先级级别。分页存储器的记录200例如是图1的分页存储器106中的后备或可重新指定页面。具有较大编号的优先级级别可以是比具有较小编号的优先级级别更高的优先级(例如,优先级级别4可以是比优先级级别1更高的优先级),或反之亦然。可替换地,可以使用编号以外的标志来识别优先级级别,诸如字母或其它字符。
针对每种优先级级别202,记录200识别出具有该优先级级别的零个或更多存储器页面集合。例如,页面204对应于优先级级别1,页面206对应于优先级级别3,等等。记录200可以以任意的各种不同方式进行保存,诸如识别对应于特定优先级级别的存储器页面的列表或其它数据结构,针对对应于不同优先级级别的存储器页面使用不同存储区域(例如,不同的高速缓存),等等。
返回图1,在一个或多个实施例中,压缩存储管理器104确定何时对分页存储器106的页面进行压缩。如以下更为详细讨论的,压缩存储管理器104能够使用各种规则或标准来确定分页存储器106中的哪些页面被压缩。通常,压缩存储管理器104将分页存储器106中的页面压缩到分页存储器106的一个分区之中。分页存储器106的该分区由分页存储器106中被存储器管理器102分配给压缩存储管理器104的多个存储器页面所组成。例如,该分区可以为128k字节并且该存储器页面可以均为4k字节,但是这些数值是作为示例并且可替换地能够使用其它的分区和/或页面大小。分页存储器106中被压缩到特定分区的页面具有至少相似的优先级级别,并且组成分页存储器106的一个分区的存储器页面具有与被压缩至该分区之中的存储器页面至少相似的优先级级别。具有至少相似的优先级级别的存储器页面是指具有相同或相似优先级级别的存储器页面。
在一个或多个实施例中,分页存储器106中被压缩至特定分区之中的页面具有相同的优先级级别,并且不同分区被用于不同的优先级级别。组成分页存储器106的一个分区的存储器页面具有与被压缩至该分区之中的存储器页面相同的优先级级别。例如,压缩存储管理器104能够将图2的页面204压缩至由被分配给压缩存储管理器104并且具有优先级级别1的存储器页面所组成的一个分区之中。作为另一个示例,压缩存储管理器104能够将图2的页面206压缩至由被分配给压缩存储管理器104并且具有优先级级别3的存储器页面所组成的另一个分区之中。应当注意的是,针对每个优先级级别,压缩存储管理器104能够创建由对应于该优先级级别的存储器页面所组成的零个或多个分区。
可替换地,分页存储器106中被压缩至特定分区之中的页面可以具有相似但未必相同的优先级级别。那些优先级级别是相似的,能够以不同方式来确定,诸如基于该优先级级别彼此是否处于阈值数目(例如,1或2)的级别之内。例如,优先级级别1和优先级级别2可以是相似的,并且因此优先级级别1的页面和优先级级别2的页面能够被压缩到相同分区之中,但是优先级级别1和优先级级别5则可能不是相似的,并且优先级级别1的页面和优先级级别5的页面并不被压缩到相同分区之中。
类似地,组成分页存储器106的一个分区的存储器页面可以具有与被压缩至该分区之中的存储器页面相似但未必相同的优先级级别。例如,组成分页存储器106的一个分区的存储器页面可以具有优先级级别3,并且被压缩至该分区之中的存储器页面可以具有优先级级别2或优先级级别3。此外,分区能够由相同或相似优先级级别的存储器页面所组成。例如,一个分区可以由一些具有优先级级别2的存储器页面以及一些具有优先级级别3的存储器页面所组成。
为了创建一个分区,压缩存储管理器104请求分页存储器106的页面集合被存储器管理器102分配给管理器104。所分配的页面集合被归类为工作或指定页面。压缩存储管理器104对分页存储器106中的另一个页面集合进行压缩,诸如作为后备或可重新指定的页面的页面。压缩存储管理器104将那些压缩页面存储在分配给压缩存储管理器104的页面集合中,并且将分配给压缩存储管理器104的页面集合的控制返回至存储器管理器102(例如,该页面集合被重新归类为后备或可重新指定的页面),而使得分配给压缩存储管理器104的页面集合能够在存储器管理器102期望重新设置其用途的情况下由存储器管理器102如此操作。
因此,例如,被压缩的特定页面集合可以是对应于至少相似的优先级级别的后备或可重新指定的页面。该特定页面集合被压缩到对应于至少相似的优先级级别的另外的页面集合之中。在该特定页面集合被压缩之后,该另外的页面集合也被归类为后备或可重新指定的页面。因此,压缩存储管理器104将特定页面集合压缩至相同类型(例如,后备或可重新指定)并且对应于至少相似的优先级级别的不同页面集合。然而,在压缩存储管理器104压缩特定页面集合时,该特定页面集合中的页面数量通常大于该压缩页面集合中的页面数量。
图3图示了依据一个或多个实施例的压缩存储器页面的示例。如在302所图示的,分页存储器106包括具有相同优先级级别(例如,如以上所讨论的优先级级别3)的五个存储器页面206。压缩存储管理器104被分配以包括两个存储器页面304的分区,这两个存储器页面304具有与存储器页面206至少相似的优先级级别。如在306所图示的,压缩存储管理器104将存储器页面206压缩到存储器页面304之中。在压缩之后,存储器管理器102能够释放存储器页面206,这是因为存储器页面206的压缩版本被作为存储器页面304而存储在分页存储器106中。因此,在压缩之后,分页存储器106存储了存储器页面304而不需要存储存储器页面206。
图4是图示依据一个或多个实施例的用于实施基于页面的压缩存储管理的示例过程400的流程图。过程400由诸如图1的压缩存储管理器104的压缩存储管理器所执行,并且能够以软件、固件、硬件或者它们的组合来实施。过程400被示为动作的集合并且并不局限于所示出的用于执行各个动作的操作的顺序。过程400是用于实施基于页面的压缩存储管理的示例处理,有关实施基于页面的压缩存储管理的另外的讨论参考不同附图而包括于此。
在过程400中,识别具有各种优先级级别的多个存储器页面(动作402)。在动作402所识别的这些存储器页面可以是特定类型的存储器页面,诸如后备或可重新指定的页面。还可以使用各种另外的规则或标准在动作402中识别存储器页面,诸如如以下更为详细讨论的有关特定类型的页面所存储的数据的规则或标准,有关高速缓存属性的规则或标准等。
识别均具有至少相似的优先级级别的存储器页面集合(动作404)。该存储器页面集合是在动作402所识别的多个存储器页面中的页面。该页面集合可以以各种方式来识别,诸如以记录或列表中出现的顺序识别、随机识别,等等。
在动作404中所识别的存储器页面集合被压缩至分页存储器的分区之中(动作406)。分页存储器的该分区由分页存储器中具有与动作404中所识别的存储器页面集合至少相似的优先级级别的另外的存储器页面集合所组成。组成该分区的该另外的存储器页面集合由存储器管理器分配给压缩存储管理器。作为动作406中的压缩的一部分,压缩存储管理器保存了该存储器页面集合中的每个存储器页面的压缩版本在该分区中存储于何处的记录。该记录可以采取各种形式,诸如针对每个压缩存储器页面而言的分配给该压缩存储管理器的哪一个或多个存储器页面存储该存储器页面的压缩版本的记录,针对每个压缩存储器页面而言的该分区中存储该存储器页面的压缩版本的地址范围的记录,等等。
压缩存储器页面是指对该存储器页面中的内容(例如,存储于其中的数据)进行压缩。能够使用任意的各种不同公开和/或专有压缩技术来压缩存储器页面。例如,存储器页面能够使用运行长度编码压缩算法、LZW压缩算法、Huffman编码算法等进行压缩。任选地能够采用多种不同压缩算法,诸如用于不同类型的内容的不同压缩算法。例如,一种压缩算法可以被用于字母数字和/或文本内容,另一种压缩算法则可以被用于图像内容,而另一种压缩算法可以被用于音频内容。用来压缩存储器页面的压缩技术通常是无损压缩算法,但是在某些情况下(例如,对于某些图像和/或音频内容而言),可替换地可以使用有损压缩算法。特定压缩算法也可以是依赖于设备的,其中更快的设备(例如,具有更强的一个或多个处理器)可以被配置以压缩得更好更为处理器密集的压缩算法,而较慢的设备(例如,具有不太强的一个或多个处理器)则可以被配置以压缩得并不那么好较不处理器密集的算法。
在一个或多个实施例中,存储器页面在动作406中被单独压缩。可替换地,两个或更多存储器页面能够被压缩在一起(例如,压缩算法能够在两个或更多存储器页面上一起运行而不是单独运行)。
在动作406中任选地还可以执行存储器页面另外的的处理。该另外的处理可以是对存储器页面的内容进行加密(例如,使用对称秘钥加密、公钥加密等),为存储器页面生成诸如CRC(循环冗余校验)数据的错误检测数据,为存储器页面生成诸如HMAC(散列消息认证码)数据之类的认证信息。
存储器管理器随后被允许重新设置组成该分区的另外的存储器页面集合的用途(动作408)。存储器管理器可以被允许以不同方式重新设置另外的存储器页面集合,诸如压缩存储管理器向存储器管理器通知该另外的存储器页面集合要被归类为后备或可重新指定的页面。在允许存储器管理器在动作408重新设置另外的存储器页面集合的用途时,存储器管理器102被通知该另外的存储器页面集合(该另外的页面集合中所存储的数据)无需被复制到页面文件110——在适当情况下(例如,如果污损)存储器页面的非压缩集合将已经被复制到页面文件110,从而不需要将存储器页面的该另外的集合也复制到页面文件110。因此,避免了将另外的存储器页面集合写入到页面文件110之中。
此外,存储器管理器能够释放在动作404中所识别的存储器页面集合。存储器管理器能够在存储器页面已经被压缩到另外的存储器页面集合之后或者可替换地在较早的时间(例如,依赖于能够在被请求的情况下从页面文件110获取到该存储器页面集合)释放该存储器页面集合。存储器管理器能够用这些空闲存储器页面做任何它想做的,包括将它们分配给各个不同程序108。在动作404中所识别的存储器页面集合能够被释放是因为通常并不将相同存储器页面的两个版本(一个版本未被压缩而一个版本被压缩)保存在分页存储器中,因为这通常并不是分页存储器的有效使用。
在一个或多个实施例中,存储器管理器还能够保存被压缩存储管理器所压缩的存储器页面集合的记录。响应于来自程序的对于存储器页面的后续请求,存储器管理器能够检查该记录以确定是否尝试从压缩存储管理器获得该存储器页面。如果该记录指示存储器页面被压缩存储管理器所压缩,则存储器管理器能够从压缩存储管理器请求该存储器页面,并且如果该记录指示该存储器页面并未被压缩存储管理器所压缩,则存储器管理器能够从页面文件获得该存储器页面而不是从压缩存储管理器请求该存储器页面。可替换地,存储器管理器可以不保存这样的记录和/或无论压缩存储管理器是否压缩该存储器页面都从压缩存储管理器请求这样的存储器页面。
在一个或多个实施例中,压缩存储管理器并不允许存储器管理器重新设置另外的存储器页面集合的用途,直至由另外的存储器页面集合所组成的分区基本上被填充。分区基本上被填充是指在该另外的存储器页面集合中几乎没有剩余能够向其中存储另外的压缩存储器页面的任何存储器空间。例如,另外的存储器页面集合中至少阈值量的存储空间已经被用来存储该压缩存储器页面。
能够随后从存储器管理器接收到针对被压缩存储器页面集合中的至少一个存储器页面的请求(动作410)。该请求例如可以是响应于来自图1的程序108的请求而随后请求访问压缩存储器页面中的内容。该请求包括至少一个存储器页面的标识符,其也被称作关键字(key)。
响应于该请求,检查是否能够获得所请求的至少一个存储器页面(动作412)。如以上所讨论的,存储器页面能够被压缩于其中的另外的页面集合能够由存储器管理器重新设置其用途。因此,在压缩至少一个存储器页面之后,至少一个存储器页面被压缩于其中的一个或多个存储器页面可能已经被存储器管理器重新设置了用途。存储器管理器保存允许存储器管理器确定特定页面是否已经被重新设置用途的记录或其它信息。
能够以各种方式来执行是否能够获得所请求的至少一个存储器页面的检查,诸如通过从存储器管理器请求至少一个存储器页面被压缩于其中的一个或多个存储器页面。在压缩存储管理器知晓所压缩的至少一个存储器页面存储在该分区的哪一个或多个存储器页面之中的情况下,压缩存储管理器能够通过指明一个或多个存储器页面的标识符来请求那些一个或多个存储器页面。在压缩存储管理器并不知晓所压缩的至少一个存储器页面存储在该分区的哪些一个或多个存储器页面之中的情况下,压缩存储管理器能够通过指定该分区中压缩的至少一个存储器页面所存储的存储器地址范围(例如,如使用以下所讨论的图5和/或图6的数据结构所指示的)来请求一个或多个存储器页面,并且依赖于存储器管理器来识别被分配给压缩存储管理器并且与所指明的存储器地址范围相关联的一个或多个存储器页面。响应于这样的请求,如果能够获得所有该一个或多个页面(还没有被重新设置用途),则存储器管理器返回所请求的一个或多个存储器页面(在这样的情况下,至少一个存储器页面是可获得的)。然而,如果所有该一个或多个页面都无法获得(例如,至少一个已经被重新设置用途),则存储器管理器返回一个或多个存储器页面已经被重新设置用途或者以其它方式无法被获取的指示(在这种情况下,至少一个存储器页面是无法获得的)。
应当注意的是,如果两个或更多存储器页面被压缩在一起(例如,如以上参考动作406所讨论的),则压缩存储管理器将请求那两个或更多存储器页面中的每一个,并且至少一个存储器页面将仅在那两个或更多存储器页面的每一个能够获得的情况下才是能够获得的。
如果至少一个存储器页面无法获得,则所请求的至少一个存储区页面无法获得的指示被返回至存储器管理器(动作414)。存储器管理器随后能够就像并未使用压缩存储管理器104的情况那样从页面文件110或其它来源获得该存储器页面。
然而,如果至少一个存储器页面是可获得的,则获取所压缩的至少一个存储器页面(动作416)。获取所压缩的至少一个存储器页面是指获取至少一个存储器页面被压缩于其中的一个或多个存储器页面。应当注意的是,这样获取至少一个存储器页面被压缩于其中的一个或多个存储器页面在确定是否能够获得至少一个存储器页面被压缩于其中的一个或多个存储器页面时可以是固有的。例如,如以上参考动作412所讨论的,有关是否能够获得所请求的至少一个存储器页面的检查能够通过从存储器管理器请求该至少一个存储器页面被压缩于其中的一个或多个存储器页面来执行,并且存储器管理器在能够获得所请求的一个或多个存储器页面的情况下返回它们。
该至少一个存储器页面被解压缩(动作418)并且被返回至存储器管理器(动作420)。该至少一个存储器页面被解压缩的方式能够至少部分基于用来压缩该至少一个存储器页面的技术而有所变化。动作406的压缩和动作418的解压缩可选地可以在多个处理器和/或处理器核心上并行执行以便增加针对压缩页面的访问时间。在存储器页面上执行的任意其它处理也在动作418进行验证或撤销,诸如对存储器页面进行解密、验证错误检测数据、验证认证信息、在该验证失败的情况下校正数据(如果可能),等等。如果错误检测数据或认证信息无法进行验证和/或数据校正,则无法获得所请求的至少一个存储器页面的指示被返回至存储器管理器(动作414)而不是解压缩的至少一个存储器页面。
返回图1,每个存储器页面具有与之相关联的标识符(也被称作关键字),其允许该存储器页面互相得以被区分。该标识符可以由任意各个组件所指定,诸如存储器管理器102或压缩存储管理器104。存储器页面的压缩版本与存储器页面自身相比占据分页存储器106中较少的空间,因此压缩存储管理器104并不使用相同的数据单元结构。例如,存储器管理器102能够按照存储器页面来管理分页存储器106,但是压缩存储管理器104则并非如此。
压缩存储管理器104保存存储器页面映射以识别出各个压缩存储器页面存储在存储器页面的哪些分区之中。图5图示了依据一个或多个实施例的示例存储器页面映射502。针对存储在分页存储器106中的每个压缩存储器页面,存储器页面映射502保存相对应的记录504,其识别该压缩存储器页面存储在存储器页面分区中的何处。分页存储器106被图示为一个或多个(n个)不同分区506(1),…,506(n),它们中的每一个自身由如有上所讨论的多个存储器页面所组成。
每个记录504包括页面关键字字段510、分区编号字段512、偏移量字段514、大小字段516以及(多个)标志位字段518。页面关键字字段510存储相对应的压缩存储器页面的标识符。该标识符能够采取任意各种的不同形式。例如,其可以是过程标识符和虚拟地址、记录标识符等。
分区编号字段512存储相对应压缩存储器页面存储于其中的特定分区506的标识符。虽然通常为数字,但是该分区可以以任意各种其它方式来识别。偏移量字段514存储相对应的压缩存储器页面的数据在特定分区506之中开始存储的偏移量的标识符。可替换地,不同于分区和偏移量标识符,可以使用存储相对应的压缩存储器页面所进行存储的压缩部分中的位置的任意其它(多种)标识符的一个或多个字段。
大小字段516存储相对应的压缩存储器页面的大小(例如,以字节为单位)的标识符。给定分区、特定分区之中的偏移量以及压缩存储器页面的大小,能够轻易识别出该压缩存储器页面所存储的存储器地址范围。(多个)标志位字段518存储有关相对应的压缩存储器页面的各种状态信息。这样的标志位的示例包括用来确定哪些存储器页面被选择进行压缩的存储器页面的选择优先级,对应于存储器页面的优先级级别,存储器页面是否在用户上次登录或上次主动使用图1的系统100时被访问的指示,哪个组件选择或增加了用于压缩的存储器页面(例如,压缩存储管理器还是存储器管理器),等等。
所要意识到的是,存储器页面映射502仅是示例。在其它实施例中,映射502的每个记录中能够包括另外的字段。例如,映射502的每个字段中能够包括诸如CRC数据的错误检测数据、诸如HMAC数据的认证信息、描述存储器页面的使用历史和/或频率的信息等。此外,字段510-518中的一个或多个能够从映射502的记录中被省略。此外,应当注意的是,与存储在单独记录中不同,字段510-518中的一个或多个中的数据能够利用分页存储器106中的存储器页面进行存储。
除了存储器页面映射502之外,压缩存储管理器104还保存分区映射以识别分区的特定位置中存储着什么存储器页面。因此,存储器页面映射502进行操作以识别出所识别的压缩存储器页面存储于何处,而分区映射则进行操作以识别哪个压缩存储器页面存储在分区中的给定位置。
图6图示了依据一个或多个实施例的示例分区映射602。针对分区中存储不同存储器页面处的每个偏移量,分区映射602保存识别以该偏移量进行存储的相对应的压缩存储器页面的记录604。每个记录604包括页面关键字字段606、分区编号字段608和偏移量字段610。
与图5的记录504中的页面关键字字段510相同,页面关键字字段606存储相对应压缩存储器页面的标识符。与记录504中的分区编号字段512相同,分区编号字段608存储相对应的压缩存储器页面存储于其中的特定分区506的标识符。与记录504中的偏移量字段514相同,偏移量字段610存储特定分区506之中开始存储相对应的压缩存储器页面的数据的偏移量的标识符。可替换地,不同于分区和偏移量标识符,可以使用存储压缩部分中相对应的压缩存储器页面进行存储的位置的任意其它(多种)标识符的一个或多个字段。
所要意识到的是,分区映射602仅是示例。在其它实施例中,映射602的每个记录中能够包括另外的字段,和/或字段606-610中的一个或多个能够从映射602的记录中被省略。此外,应当注意的是,与存储在单独记录中不同,字段606-610中的一个或多个中的数据能够利用图1的分页存储器106中的存储器页面进行存储。
图5的存储器页面映射502和图6的分区映射602可以以任意各种不同的方式来实施。在一个或多个实施例中,为了提高访问个体记录时的性能,这些映射均被实施为B+树。可替换地,能够使用任意的各种其它常规数据结构来实施这些映射,诸如AVL数、散列表、阵列等。
返回图1,如以上所讨论的,存储器管理器102能够将一些存储器页面的内容复制到页面文件110。通过将存储器页面的内容复制到页面文件110,存储器管理器102知道其能够重新设置分页存储器106中的该存储器页面的内容的用途或者以其它方式将其丢弃,因为该内容在需要的情况下能够从页面文件110进行获取。
在一个或多个实施例中,存储器管理器102支持允许页面被标记为干净(例如,未被修改)并且因此能够接受存储器管理器102将其丢弃的功能。丢弃存储器页面(或者该存储器页面被丢弃)是指该存储器页面被重新设置用途或者该存储器页面的内容以其它方式被删除或者以不可访问的方式呈现。通过将存储器页面标记为干净,存储器管理器102知道该存储器页面可以被丢弃,因为该存储器页面的一个版本存储在其它地方(例如,被复制到页面文件110)。存储器管理器102保存干净的存储器页面的记录(例如,列表、与每个存储器页面相关联的标志位,等等)。在一个或多个实施例中,针对存储器管理器识别一个存储器页面要被标记为干净的过程被称作对该存储器页面执行存储器重置。
被标记为干净的存储器页面随后能够使得该标记变为污损(例如,被修改),这使得该存储器页面被作为污损对待并且因此无法接受将其丢弃。响应于将一个存储器页面标记为污损,存储器管理器102并不重新设置该存储器页面的内容的用途或者以其它方式将其丢弃,直至该存储器页面被复制到页面文件110。然而,如果该存储器页面已经被丢弃,在该标记无法改变。例如,如果一个存储器页面被标记为干净,则存储器管理器102可以在后续尝试将该存储器页面标记为污损之前重新设置该页面的用途,在这种情况下,该存储器页面被丢弃并且因此不被标记为污损。在一个或多个实施例中,针对存储器管理器识别一个存储器页面被标记为污损的过程被称作对该存储器页面执行存储器重置撤销。
在一个或多个实施例中,压缩存储管理器104在管理存储器页面的压缩时对存储器管理器102的该功能进行权衡。如以上关于图4的动作408所讨论的,存储器管理器被允许重新设置组成一个分区的另外的存储器页面集合的用途。存储器管理器可以被允许通过由压缩存储管理器104对该另外的存储器页面集合执行存储重置而重新设置该另外的存储器页面集合的用途。响应于对另外的存储器页面集合执行了存储器重置,存储器管理器102并不将该存储器页面复制到页面文件110,并且将该存储器页面视为可接受被丢弃(例如,将存储器页面归类为后备或可重新指定的页面)。
此外,如以上关于图4的动作412和416所讨论的,可以向存储器管理器作出针对至少一个存储器页面被压缩于其中的一个或多个存储器页面的请求。该请求可以是压缩存储管理器104对一个或多个存储器页面执行存储器重置撤销。响应于对一个或多个存储器页面执行该存储器重置撤销,如果一个或多个存储器页面已经被丢弃,则存储器管理器102向压缩存储管理器104返回一个或多个存储器页面已经被丢弃的指示。然而,如果一个或多个存储器页面还没有被丢弃,则存储器管理器将一个或多个存储器页面返回至压缩存储管理器,并且将该一个或多个存储器页面视为是污损的(例如,将该一个或多个存储器页面归类为经修改或污损的,而不再是后备或可重新指定的)。
应当注意的是,对至少一个存储器页面已经被请求压缩于其中的一个或多个存储器页面执行存储器重置撤销——该存储器重置撤销并不需要对包括该一个或多个存储器页面的分区中的所有存储器页面执行。还应当注意的是,向压缩存储管理器104返回一个或多个存储器页面是自动完成的以防止该一个或多个存储器页面中的任何存储器页面在被返回至压缩存储管理器104的同时被重新设置用途。
进一步应当注意的是,在对一个或多个存储器页面执行存储器重置撤销,对一个或多个存储器页面进行至少一个被压缩存储器页面的解压缩,并且将被解压缩的至少一个存储器页面返回至存储器管理器102之后,压缩存储管理器104能够再次对一个或多个存储器页面执行存储器重置(也被称作再次重置该一个或多个存储器页面)。所返回的至少一个存储器页面被归类为无法接受被丢弃的存储器页面类型直至被复制到页面文件110(例如,被归类为工作或指定页面,或者可替换地被归类为修改或污损页面)。通过执行存储器重置撤销,至少一个存储器页面在其上被压缩的一个或多个页面将被标记为污损,由于未压缩的至少一个存储器页面已经被归类为无法接受被丢弃的类型而并不需要如此。因此,压缩存储管理器104能够对该一个或多个存储器页面执行存储器重置(例如,再次重置该一个或多个存储器页面),这避免了存储器管理器102将该存储器页面复制到页面文件110的情形,并且允许存储器管理器102再次将该一个或多个存储器页面视为可接受被丢弃的。
存储器页面的重新设置能够在各种时间执行。在一个或多个实施例中,压缩存储管理器104保存要被再次重置的压缩存储器页面的分区中的存储器页面的记录。该记录能够采用各种形式,诸如与每个分区相关联的位图,位图中的每一位对应于组成该分区的一部分的存储器页面并且指示相对应的存储器页面是否要再次重置。该记录可以大致上与将被解压缩的至少一个存储器页面返回至存储器管理器102同时(或者在其之前或之后的阈值时间量内)被更新。压缩存储管理器104(例如,管理器104的过程)随后以低处理器优先级级别和/或在后台运行,诸如在低系统资源使用的时间(例如,低处理器利用或者针对分页存储器106的低访问率)运行,以对如所保存的记录所指示的要被再次重置的存储器页面进行再次重置。通过等待再次重置该存储器页面,压缩存储管理器104避免了访问存储器管理器104并且对存储器管理器向请求至少一个存储器页面的程序108返回被解压缩的至少一个存储器页面的速度形成干扰。
可替换地,存储器页面的再次重置能够在其它时间执行,诸如大致与向存储器管理器102返回被解压缩的至少一个存储器页面同时执行或者在其之后不久执行。
应当注意的是,其它维护类型的任务也能够由以低处理器优先级级别和/或在后台运行的压缩存储管理器104来执行。各种不同类型的维护任务能够由压缩存储管理器104所执行,诸如如以下更为详细讨论的存储分页存储器106中的压缩存储器页面的分区的收缩(compaction)。
在一个或多个实施例中,压缩存储管理器104使用各种规则或标准来识别哪些存储器页面能够被压缩(例如,如图4中的动作402)。该规则或标准能够以各种不同方式来识别存储器页面,诸如基于存储器页面归类(例如,后备或可重新指定的页面),具有其上所存储的特定类型的数据的存储器页面(例如,被分配给过程以用于其数据存储的页面(也可以被称作私有页面),包括来自过程所打开的库或其它文件的数据的页面等),页面的高速缓存属性(例如,页面是否能够进行CPU高速缓存),等等。除此之外或可替换地,该规则或标准能够基于系统100中数据访问和使用模式、存储器页面的随机或伪随机选择等来识别存储器页面。
在一个或多个实施例中,压缩存储管理器104使用各种规则或标准来识别所识别的存储器页面中的哪些要被压缩的集合(例如,如图4中的动作404)。该规则或标准可以以各种不同方式来识别存储器页面集合,诸如基于系统100中的数据访问和使用模式,以记录或列表中的出现顺序(例如,以存储器页面被添加至后备列表的顺序),随机或伪随机地,等等。应当注意的是,作为已经存储了压缩存储器页面的分区的一部分的存储器页面未被选择为要进行压缩的存储器页面。所有所识别的存储器页面都能够被压缩,或者可替换地,该存储器页面的子集(例如,特定数目的存储器页面,对应于一个或多个特定优先级级别的存储器页面,等等)能够被压缩。
能够以各种不同方式作出何时压缩存储器页面的确定。在一个或多个实施例中,服务或程序以规律或不规律的间隔(例如,大约每隔几分钟或十分钟)运行以识别出所要压缩的存储器页面。可替换地,服务或程序能够响应于其它事件-——诸如分页存储器106中存在的特定类型的存储器页面的量——而运行,在低系统资源使用(例如,低处理器使用或者针对分页存储器106的低访问率)的时间运行,等等。
在一个或多个实施例中,压缩存储管理器104对实施系统100的设备中所包括的多个处理器和/或处理器核心的功能进行权衡。压缩存储管理器104能够繁衍和/或使用多个线程以对多个处理器和/或处理器核心进行权衡,每个个体线程能够访问分页存储器106并且多个线程能够同时访问分页存储器106。每个这样的个体线程执行压缩存储器页面集合的动作(例如,以上所讨论的图4的动作404-408)和/或对存储器页面集合进行解压缩的动作(例如,,以上所讨论的图4的动作410-420)。每个不同线程能够由不同的处理器和/或处理器核心所执行,这允许多个压缩和/或解压缩的动作得以同时执行。例如,三个线程可以同时执行,一个线程执行压缩一个存储器页面集合的动作,第二线程响应于来自一个程序的请求而执行解压缩至少一个存储器页面的动作,并且第三线程响应于来自不同程序的不同请求而执行解压缩不同的至少一个存储器页面的动作。
类似地,在一个或多个实施例中,压缩存储管理器104支持压缩存储器页面的预取。预取是指针对多个存储器页面的单个或同时的请求,这可以导致同时针对多个压缩存储器页面的请求。压缩存储管理器104能够以各种方式来支持压缩存储器页面的预取。在一个或多个实施例中,压缩存储管理器104包括预取线程,其对执行解压缩动作的另外的线程的繁衍和/或使用进行管理。该预取线程向该另外的线程指明要针对哪些存储器页面执行解压缩的动作,并且该另外的线程针对该预取线程所指明的存储器页面执行解压缩的动作。该多个另外的线程能够在不同处理器和/或处理器核心上同时运行,这允许包括在实施系统100的设备之中的多个处理器和/或处理器核心得以被权衡,从而与使用单个处理器和/或处理器核心相比更快地执行与预取存储器页面相关联的解压缩。
在一个或多个实施例中,压缩存储管理器104保存能够获得的压缩存储器页面和/或无法获得的压缩存储器页面的分区中的存储器页面的记录。该记录能够采用各种形式,诸如与每个分区相关联的位图,位图中的每一位对应于被压缩至该分区中的压缩存储器页面,并且指示相对应的存储器页面是否能够获得。压缩存储管理器104(例如,管理器104的过程)以低处理器优先级水平和/或在后台运行,诸如在低系统资源使用(例如,低处理器使用或者针对分页存储器106的低访问率)的时间运行,以确定哪些存储器页面不再能够获得。该确定能够以各种方式而作出,诸如通过从存储器管理器102请求存储器页面被压缩至其中的一个或多个存储器页面(该存储器页面在存储器页面被压缩至其中的一个或多个存储器页面被存储器管理器102所返回的情况下是能够获得的,否则是无法获得的)。通过保存无法获得的压缩存储器页面的该记录,压缩存储管理器104能够更快地对来自存储器管理器102的针对存储器页面的一些请求作出响应。例如,如果从存储器管理器102接收到针对被压缩存储管理器104所保存的记录指示为无法获得的存储器页面的请求,则能够由压缩存储管理器104返回该存储器页面无法获得的指示而并不花费时间尝试获取所请求的存储器页面压缩于其中的一个或多个存储器页面。
在一个或多个实施例中,压缩存储管理器104还对分页存储器106中存储压缩存储器页面的分区进行收缩。随着时间推移,被压缩并存储在一个分区中的存储器页面能够从该分区中被去除。这样的去除能够出于各种原因而进行。例如,程序可以请求访问存储在一个分区中的存储器页面。响应于这样的请求,如以上所讨论的,压缩存储管理器104从该分区去除该压缩存储器页面,对该存储器页面进行解压缩,并且将该存储器页面返回至存储器管理器102。
从分区中去除压缩存储器页面在存储压缩存储器页面的分区的存储器页面内形成空白间隙或块。在压缩过程期间,压缩存储管理器104对剩余的压缩存储器页面进行巩固而使得这些空白间隙或块得以被填充。
压缩存储管理器104对分区正被利用地如何保持追踪。表示分区正被利用地如何的数值基于有多少数据存储在该分区的存储器页面中(例如,存储在该分区的存储器页面中的所有压缩存储器页面的大小总和)以及该分区的当前大小(例如,该分区中仍然可用的存储器页面的大小总和)而被确定。如果这两个数值之间的差值或比率超过阈值,则压缩存储管理器104确定应当执行收缩。该收缩阈值可以是固定或者是可变量,为当前分区大小的10%、零,等等在其它实施例中,在该分区的任何存储器页面中出现任何空白间隙或块的任何时候都执行收缩。
收缩通过将压缩存储器页面从一个分区的一个存储器页面重新分配至相同或不同分区的另一个存储器页面来执行。每个存储器页面中的各个压缩存储器页面的大小能够通过访问压缩存储管理器104所使用的数据结构(例如,如以上关于图5所讨论的)而轻易被确定。在一个或多个实施例中,特定分区内的压缩存储器页面被收缩在一起(例如,在该分区的起始或结尾处),而使得该分区中的所有空白间隙都处于一起。这可以在分区中形成一个较大间隙而不是若干较小间隙,并且允许在该分区内重新分配较大的压缩存储器页面。可替换地,可以不执行这样的分区内收缩,并且可以简单地将压缩存储器页面重新分配到分区中的现有间隙之中。
收缩可以使得来自(多个)分区的压缩存储器页面被重新分配至一个或多个其它分区,并且因此清空一个分区的存储器页面。一旦一个分区的存储器页面被清空,则压缩存储管理器104就能够压缩(至少相似优先级级别的)另外的存储器页面并且将它们存储到该存储器页面之中,或者将该存储器页面释放到存储器管理器120(例如,释放该存储器页面)。
哪些压缩存储器页面要被重新分配至哪些分区的确定能够以任意各种方式而作出。例如,来自具有最多空白间隙(并且因此其存储器页面中的数据量最小)的分区的压缩存储器页面能够被选择首先进行重新分配,因为压缩存储管理器104更可能能够将来自该分区的所有压缩存储器页面都重新分配至其它分区。作为另一个示例,可以首先选择较大的压缩存储器页面以避免较大的间隙被较小的压缩存储器页面所填充。作为另一个示例,该压缩存储器页面可以被选择进行重新分配从而减少从一个分区向另一个分区进行复制的量。作为又另一个示例,可以在确定哪些压缩存储器页面要被重新分配时考虑分区的年龄。压缩存储器页面的年龄是指该压缩存储器页面已经被压缩并且存储在一个分区之中的时间量。分区的年龄例如是指该分区中的压缩存储器页面的平均、最大和/或最小年龄。
用于收缩的阈值可以是固定量(例如,空白间隙不应当不大于分区的当前大小的25%),或者可替换地可以是动态量。该动态量可以基于不同标准而变化,诸如存储在该分区中的压缩存储器页面的可压缩性(例如,压缩存储器页面更好的可压缩性能够使得该分区中所允许的空白间隙有所增加),系统100中的资源压力(例如,较高的压力应当减少该分区中所允许的空白间隙),等等。在改变用于收缩的阈值时也可以使用有关系统100的当前状态的各种其它标准,诸如命中率(例如,分区中的存储器页面多频繁地被访问),一天中的时间或者其它用户情境(例如,早晨、午餐中、午餐后等)、电池寿命,等等。例如,如果处理器使用非常高,则分区中所允许的空白间隙能够有所增加以便减少处理器在重新分配存储器页面时的负担。作为另一个示例,如果系统100中的电力状态指示应当节省电力,或者电池水平为低,则分区中所允许的空白间隙能够有所增加以便通过要求重新分配较少的压缩存储器页面而减少处理器的电力消耗。
压缩存储管理器104能够在不同时间确定是否收缩分区。例如,压缩存储管理器104可以以规律或不规律的间隔作出该确定。作为另一个示例,压缩存储管理器104可以响应于系统100中的不同事件而作出该确定,诸如处理器空闲达阈值时间量,系统100中的资源压力有所上升的指示,等等。
这里所讨论的技术支持各种功能。一种这样的功能是分页存储器中的数据在分页存储器中被压缩并保持,因此减少了用于存储该数据的分页存储器的量。使用这里所讨论的技术,没有分页存储器需要被丢弃(例如,分页存储器中的数据并不针对非分页存储器中的压缩数据进行交换)。另一种这样的功能是压缩存储器页面以至少与那些存储器页面在压缩之前相似的优先级级别而被存储在分页存储器中。通过保持存储器页面至少相似的优先级级别,其中明显更高优先级的存储器页面先于丢弃较低优先级的存储器页面而被丢弃的优先级逆反的情形得以被避免。
此外,这里所讨论的技术保持了存储器页面的归类。压缩存储器页面被存储为与那些存储器压缩之前相同的存储器页面类型(例如,后备或可重新指定)。因此,该系统中不会由于压缩而感知或指示丢弃了可用存储器。
虽然这里参考特定模块讨论了特定功能,但是应当注意的是,这里所讨论的个体模块的功能能够被划分为多个模块,和/或多个模块的至少一些功能能够被组合为单个模块。此外,这里被讨论为执行动作的特定模块包括其自身执行该动作的特定模块,或者可替换地调用或者以其它方式访问另一个组件或模块的特定模块,上述另一个组件或模块执行该动作(或者结合该特定模块执行该动作)。因此,执行动作的特定模块包括执行该动作的特定模块自身和/或被该特定模块所调用或以其它方式访问的执行该动作的另一个模块。
图7总体上以700图示了包括示例计算设备702的示例系统,该示例计算设备702表示可以实施这里所描述的各种技术的一个或多个系统和/或设备。计算设备702例如可以是服务提供方的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统,和/或任意其它适当计算设备或计算系统。
如所图示的示例计算设备702包括彼此通信耦合的处理系统704、一个或多个计算机可读媒体706以及一个或多个I/O接口708。虽然并未示出,但是计算设备702可以进一步包括系统总线或者将各种组件互相耦合的其它数据和命令传输系统。系统总线可以包括不同总线结构的任意一种或者其组合,诸如存储器总线或存储器控制器、外部总线、通用串行总线,和/或利用任意各种总线架构的处理器或局部总线。还预见到诸如控制和数据线路之类的各种其它示例。
处理系统704表示用于使用硬件执行一种或多种操作的功能。因此,处理系统704被图示为包括硬件部件710,后者可以被配置为处理器、功能块等。这可以包括作为应用特定集成电路或者使用一种或多种半导体所形成的其它逻辑设备的硬件的实施方式。硬件部件710并不被它们所形成的材料或者在其中所采用的处理机制所限制。例如,处理器可以由(多种)半导体和/或晶体管(例如,电子集成电路(IC))所组成。在这样的情境下,处理器可执行的指令可以是能够以电子方式执行的指令。
计算机可读媒体706被图示为包括存储器/储存器712。存储器/储存器712表示与一个或多个计算机可读媒体相关联的存储器/储存器容量。存储器/储存器712可以包括易失性媒体(诸如随机访问存储器(RAM))和/或非易失性媒体(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/储存器712可以包括固定媒体(例如,RAM、ROM、固定硬盘等)以及可移除媒体(例如,闪存、可移除硬盘、光盘等)。计算机可读媒体706可以以如以下进一步描述的各种其它方式进行配置。
(多个)输入/输出接口708表示使用各种输入/输出设备而允许用户向计算设备702输入命令和信息而且还允许信息被呈现给用户和/或其它组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理接触的电容或其它传感器)、相机(例如,其可以采用可见以及诸如红外频率的非可见波长检测移动,该移动并不涉及作为手势的触摸),等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触摸响应设备,等等。因此,计算设备702可以以如以下所进一步描述的各种方式进行配置以支持用户交互。
计算设备702还包括存储管理器714。存储管理器714提供如以上所描述的各种基于页面的压缩管理功能。存储管理器714例如能够实施图1的压缩存储管理器104。
各种技术可以在这里以软件、硬件部件或者程序模块的总体情境进行描述。通常,这样的模块包括执行特定任务或者实施特定抽象数据类型的例程、程序、对象、部件、组件、数据结构等。如这里所使用的术语“模块”、“功能”和“组件”通常表示软件、固件、硬件或其组合。这里所描述的技术的特征是独立于平台的,这意味着该技术可以在具有各种处理器的各种计算平台上实施。
所描述的模块和技术的实施方式可以被存储在某种形式的计算机可读媒体上或者跨它们进行传送。计算机可读媒体可以包括可以由计算设备702进行访问的各种媒体。作为示例而非限制,计算机可读媒体可以包括“计算机可读存储媒体”和“计算机可读信号媒体”。
与仅是信号传输、载波或者信号本身相比,“计算机可读存储媒体”是指使得能够对信息进行持久性存储和/或存储是有形的媒体和/或设备。因此,计算机可读存储媒体是指非信号承载媒体。计算机可读存储媒体包括诸如以适于存储信息的方法或技术所实施的易失性和非易失性、可移除和非可移除媒体和/或存储设备之类的硬件,上述信息诸如计算机可读指令、数据结构、程序模块、逻辑部件/电路或者其它数据。计算机可读存储媒体的示例可以包括但并不局限于RAM、ROM、EEPROM、闪存或者其它存储器技术、CD-ROM、数字多功能盘(DVD)或者其它光学存储器件、硬盘、磁性卡盒、磁带、磁盘存储器件或者其它磁性存储设备,或者其它存储设备、有形媒体,或者适于存储所期望信息并且可以被计算机进行访问的制造品。
“计算机可读信号媒体”是指被配置为诸如经由网络而向计算设备702的硬件传送指令的信号承载媒体。信号媒体通常可以在调制数据信号中体现计算机可读指令、数据结构、程序模块或其它数据,上述调制数据信号诸如载波、数据信号或者其它传输机制。信号媒体还包括任意的信息传递媒体。术语“调制数据信号”意味着使得其一个或多个特性以在信号中编码信息的方式进行设置或改变的信号。作为示例而非限制,通信媒体包括诸如有线网络或直接线路连接的有线媒体,以及诸如声音、RF、红外和其它无线媒体的无线媒体。
如之前所描述的,硬件部件710和计算机可读媒体706表示以硬件形式所实施的指令、模块、可编程设备逻辑和/或固定设备逻辑,其在一些实施例中可以被用来实施这里所描述的技术的至少一些方面。硬件部件可以包括以下组件:集成电路或片上系统、应用特定集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑设备(CPLD),以及以硅或其它硬件设备形式的其它实施方式。在该情境下,硬件部件可以作为执行该硬件部件所体现的指令、模块和/或逻辑所定义的程序任务的处理器设备以及例如之前所描述的计算机可读存储媒体的被用来存储指令以便执行的硬件设备而进行操作。
以上的组合也可以被采用以实施这里所描述的各种技术和模块。因此,软件、硬件或程序模块以及其它程序模块可以被实施为在某种形式的计算机可读存储媒体上所体现和/或由一个或多个硬件部件710所体现的一个或多个指令和/或逻辑。计算设备702可以被配置为实施对应于软件和/或硬件模块的特定指令和/或功能。因此,作为能够由计算设备702执行为软件的模块的模块实施方式可以至少部分以硬件来实现,例如通过使用处理系统的计算机可读存储媒体和/或硬件部件710。指令和/或功能可以能够由一种或多种制造品(例如,一个或多个计算设备702和/或处理系统704)所执行/操作以实施这里所描述的技术、模块和示例。
如图7中进一步图示的,示例系统700使得当在个人计算机(PC)、电视设备和/或移动设备上运行应用时能够实现无缝用户体验的普遍存在的环境。当在利用应用、玩视频游戏、观看视频等的时候从一个设备转移至下一个设备时,服务和应用在所有三种环境中基本上类似地针对共同的用户体验而运行。
在示例系统700中,多个设备通过中央计算设备进行互连。该中央计算设备可以处于该多个设备本地或者可以距该多个设备远程定位。在一个或多个实施例中,该中央计算设备可以是通过网络、互联网或其它数据通信链接而连接至多个设备的一个或多个服务器计算机的云。
在一个或多个实施例中,该互连架构使得功能得以跨多个设备进行传递以向多个设备的用户提供共同和无缝的体验。该多个设备中的每一个可以具有不同的物理要求和能力,并且中央计算设备使用平台而使得针对设备所定制而且还共用于所有设备的体验能够传递至该设备。在一个或多个实施例中,创建目标设备的类别并且针对一般设备类别对体验进行定制。设备的类别可以由物理特征、使用类型或者设备的其它共同特性所定义。
在各种实施方式中,计算设备702可以假设各种不同的配置,诸如供计算机716、移动718和电视720使用。这些配置中的每一种都包括可以具有总体上不同的构造和能力的设备,并且因此计算设备702可以根据一种或多种不同设备类别进行配置。例如,计算设备702可以被实施为设备的计算机716的类别,其包括个人计算机、台式计算机、多屏幕计算机、膝上计算机、上网本等。
计算设备702还可以被实施为设备的移动718类别,其包括移动设备,诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等。计算设备702还可以被实施为设备的电视720类别,其包括在随意观看环境中具有或连接至通常更大屏幕的设备。这些设备包括电视、机顶盒、游戏机等。
这里所描述的技术可以被计算设备702的这些各种配置所支持而并不局限于这里所描述的技术的具体示例。该功能也可以全部或部分通过使用分布式系统来实施,诸如经由平台724而通过“云”722来实施,如以下所描述的。
云722包括和/或表示用于资源726的平台724。平台724对云722的硬件(例如,服务器)和软件资源的基本功能进行抽象。资源726可以包括能够在计算机处理在距计算设备702远程的服务器上执行的同时得以被采用的应用和/或数据。资源726还可以包括在互联网上和/或通过诸如蜂窝或WiFi网络的订户网络所提供的服务。
平台724可以对资源和功能进行抽象以将计算设备702与其它计算设备进行连接。平台724还可以用来对资源的规模进行抽象以针对所遇到的经由平台724所实施的资源726的需求提供相对应的规模水平。因此,在互连设备的实施例中,这里所描述功能的实施方式可以遍布系统700进行分布。例如,该功能可以部分在计算设备702上实施以及经由对云722的功能进行抽象的平台724来实施。
虽然已经以特定于结构特征和/或方法动作的语言对主题进行了描述,但是所要理解的是,所附权利要求中限定的主题并不必局限于以上所描述的具体特征或动作。相反,以上所描述的具体特征和动作被公开为实施权利要求的示例形式。
Claims (10)
1.一种方法,包括:
识别存储器页面的第一集合;
将该存储器页面的第一集合压缩至由存储器页面的第二集合组成的分区之中;
在利用被压缩的存储器页面基本上填充该分区之后,允许存储器管理器重新设置该存储器页面的第二集合的用途;
从存储器管理器接收针对该存储器页面的第一集合中的至少一个存储器页面的请求;并且
响应于该请求,
获取被压缩的至少一个存储器页面,
对该被压缩的至少一个存储器页面进行解压缩,并且
将经解压缩的至少一个存储器页面返回至该存储器管理器。
2.根据权利要1所述的方法,该允许包括将该存储器页面的第二集合中的每一个识别为干净的从而避免该存储器管理器将该存储器页面的第二集合复制到页面文件。
3.根据权利要1所述的方法,该获取包括请求该存储器管理器返回存储该被压缩的至少一个存储器页面的存储器页面的第二集合中的一个或多个。
4.根据权利要3所述的方法,进一步包括响应于存储器管理器返回该存储器页面的第二集合中的一个或多个无法获得的指示而向该存储器管理器返回该至少一个存储器页面无法获得的指示,而不是对该至少一个存储器页面进行解压缩。
5.根据权利要3所述的方法,该请求包括将该存储器页面的第二集合中的一个或多个识别为要被标记为污损,该方法进一步包括在获取该存储器页面的第二集合中的一个或多个之后将该存储器页面的第二集合中的每一个识别为干净的。
6.根据权利要5所述的方法,在获取该存储器页面的第二集合中的一个或多个之后将该存储器页面的第二集合中的每一个识别为干净的包括:在获取该存储器页面的第二集合中的一个或多个之后等待将该存储器页面的第二集合中的每一个识别为干净的以避免对该存储器管理器将被解压缩的至少一个存储器页面返回至程序造成干扰。
7.根据权利要1所述的方法,进一步包括:
保存该存储器页面的第二集合中的哪些存储器页面能够获得的记录;
响应于该请求而检查该记录;并且
响应于该记录指示该存储器页面的第二集合中存储被压缩的至少一个存储器页面的一个或多个无法获得而向该存储器管理器返回至少一个存储器页面无法获得的指示而不是对至少一个存储器页面进行解压缩。
8.根据权利要1所述的方法,进一步包括对该分区进行收缩以填充该分区中的空白间隙。
9.一种计算设备,包括:
存储器;
被配置为管理该存储器的页面的存储器管理器;和
压缩存储管理器,其被配置为:
识别多个存储器页面,多个存储器页面的每一个具有多个优先级级别中的相对应优先级级别;
识别均具有该多个优先级级别中至少相似的优先级级别的存储器页面的第一集合;
将该第一存储器页面压缩到由均具有该多个优先级级别中至少相似的优先级级别的存储器页面的第二集合所组成的分区之中;并且
允许存储器管理器在利用压缩存储器页面基本上填充该分区之后重新设置该存储器页面的第二集合的用途。
10.根据权利要求9所述的计算设备,该压缩存储管理器进一步被配置为:
从存储器管理器接收针对该存储器页面的第一集合中的至少一个存储器页面的请求;并且
响应于该请求,
获取被压缩的至少一个存储器页面,
对该被压缩的至少一个存储器页面进行解压缩,并且
将经解压缩的至少一个存储器页面返回至该存储器管理器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/917,149 US10102148B2 (en) | 2013-06-13 | 2013-06-13 | Page-based compressed storage management |
US13/917,149 | 2013-06-13 | ||
PCT/US2013/060505 WO2014200526A1 (en) | 2013-06-13 | 2013-09-19 | Page-based compressed storage management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105474180A true CN105474180A (zh) | 2016-04-06 |
CN105474180B CN105474180B (zh) | 2019-06-25 |
Family
ID=49305139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380077440.0A Active CN105474180B (zh) | 2013-06-13 | 2013-09-19 | 用于存储管理的方法、计算设备和计算机可读存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10102148B2 (zh) |
EP (1) | EP3008602B1 (zh) |
KR (1) | KR102069940B1 (zh) |
CN (1) | CN105474180B (zh) |
WO (1) | WO2014200526A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718206A (zh) * | 2014-12-03 | 2016-06-29 | 中国人民解放军国防科学技术大学 | 能够感知raid的闪存转换层及其实现方法 |
CN107548491A (zh) * | 2016-04-29 | 2018-01-05 | 慧与发展有限责任合伙企业 | 具有数据和压缩元数据的经压缩页面 |
CN110097898A (zh) * | 2018-01-29 | 2019-08-06 | 三星电子株式会社 | 页面大小感知调度方法和非暂时性计算机可读记录介质 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9678748B2 (en) * | 2013-12-17 | 2017-06-13 | Infosys Limited | Methods, systems and computer-readable media for managing a local stack |
JP5928505B2 (ja) * | 2014-02-26 | 2016-06-01 | コニカミノルタ株式会社 | 画像処理装置、同装置における画像処理方法及び画像処理プログラム |
US9684625B2 (en) | 2014-03-21 | 2017-06-20 | Microsoft Technology Licensing, Llc | Asynchronously prefetching sharable memory pages |
US9940167B2 (en) * | 2014-05-20 | 2018-04-10 | Red Hat Israel, Ltd. | Identifying memory devices for swapping virtual machine memory pages |
US9454308B2 (en) | 2014-06-27 | 2016-09-27 | International Business Machines Corporation | Page compression strategy for improved page out process |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US10037270B2 (en) | 2015-04-14 | 2018-07-31 | Microsoft Technology Licensing, Llc | Reducing memory commit charge when compressing memory |
US9871895B2 (en) * | 2015-04-24 | 2018-01-16 | Google Llc | Apparatus and methods for optimizing dirty memory pages in embedded devices |
JP6524945B2 (ja) * | 2016-03-25 | 2019-06-05 | 日本電気株式会社 | 制御装置、記憶装置、記憶制御方法およびコンピュータプログラム |
US9946660B2 (en) * | 2016-07-29 | 2018-04-17 | Hewlett Packard Enterprise Development Lp | Memory space management |
CN107018175B (zh) * | 2017-01-11 | 2021-01-19 | 杨立群 | 移动云计算平台的调度方法和装置 |
US11216513B1 (en) * | 2017-02-28 | 2022-01-04 | Palo Alto Networks, Inc. | Focused URL recrawl |
US10715177B2 (en) * | 2017-06-20 | 2020-07-14 | Samsung Electronics Co., Ltd. | Lossy compression drive |
US10558364B2 (en) | 2017-10-16 | 2020-02-11 | Alteryx, Inc. | Memory allocation in a data analytics system |
KR102533726B1 (ko) | 2018-04-06 | 2023-05-18 | 삼성전자주식회사 | 전자 장치 및 그의 제어방법 |
US10592162B2 (en) * | 2018-08-22 | 2020-03-17 | Intel Corporation | Distributed storage location hinting for non-volatile memories |
US10944423B2 (en) * | 2019-03-14 | 2021-03-09 | International Business Machines Corporation | Verifying the correctness of a deflate compression accelerator |
US12004009B2 (en) * | 2020-05-04 | 2024-06-04 | Qualcomm Incorporated | Methods and apparatus for managing compressor memory |
US20220357980A1 (en) * | 2021-05-06 | 2022-11-10 | Dell Products L.P. | Selectively offloading the compression and decompression of files to a hardware controller |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073298A1 (en) * | 2000-11-29 | 2002-06-13 | Peter Geiger | System and method for managing compression and decompression of system memory in a computer system |
US20090112949A1 (en) * | 2007-10-31 | 2009-04-30 | Microsoft Corporation | Compressed storage management |
Family Cites Families (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3379081D1 (en) | 1982-06-21 | 1989-03-02 | Ibm | Method and apparatus for managing a buffer pool referenced by batch and interactive process |
EP0346039A2 (en) | 1988-06-06 | 1989-12-13 | Demax Software, Inc | Dynamic load balancing for multi-user computers |
CA1329432C (en) | 1988-11-02 | 1994-05-10 | William Davy | Method of memory and cpu time allocation for a multi-user computer system |
US4965717A (en) | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
US5125086A (en) | 1989-06-29 | 1992-06-23 | Digital Equipment Corporation | Virtual memory paging apparatus with variable size in-page clusters |
US5101485B1 (en) | 1989-06-29 | 1996-12-10 | Frank L Perazzoli Jr | Virtual memory page table paging apparatus and method |
US5394537A (en) | 1989-12-13 | 1995-02-28 | Texas Instruments Incorporated | Adaptive page placement memory management system |
US5247687A (en) | 1990-08-31 | 1993-09-21 | International Business Machines Corp. | Method and apparatus for determining and using program paging characteristics to optimize system productive cpu time |
CA2285096C (en) | 1991-11-12 | 2000-05-09 | Ibm Canada Limited-Ibm Canada Limitee | Logical mapping of data objects using data spaces |
US5826057A (en) | 1992-01-16 | 1998-10-20 | Kabushiki Kaisha Toshiba | Method for managing virtual address space at improved space utilization efficiency |
US5628023A (en) | 1993-04-19 | 1997-05-06 | International Business Machines Corporation | Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view |
US5696926A (en) | 1993-07-30 | 1997-12-09 | Apple Computer, Inc. | Method and apparatus for transparently compressing data in a primary storage device |
AU1447295A (en) | 1993-12-30 | 1995-08-01 | Connectix Corporation | Virtual memory management system and method using data compression |
US5802599A (en) | 1994-02-08 | 1998-09-01 | International Business Machines Corporation | System and method for allocating storage in a fragmented storage space |
US5555399A (en) | 1994-07-07 | 1996-09-10 | International Business Machines Corporation | Dynamic idle list size processing in a virtual memory management operating system |
JP2831602B2 (ja) | 1995-01-13 | 1998-12-02 | 富士通株式会社 | 圧縮データ管理装置及び圧縮データ管理方法 |
US5544349A (en) | 1995-01-23 | 1996-08-06 | International Business Machines Corporation | Method and system for improving the performance of memory in constrained virtual memory environments by reducing paging activity |
US5758174A (en) | 1995-06-07 | 1998-05-26 | International Business Machines Corporation | Computer system having a plurality of stored system capability states from which to resume |
US5966735A (en) | 1996-11-22 | 1999-10-12 | Digital Equipment Corporation | Array index chaining for tree structure save and restore in a process swapping system |
US6681239B1 (en) | 1996-12-23 | 2004-01-20 | International Business Machines Corporation | Computer system having shared address space among multiple virtual address spaces |
US6128713A (en) | 1997-09-24 | 2000-10-03 | Microsoft Corporation | Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system |
US7024512B1 (en) | 1998-02-10 | 2006-04-04 | International Business Machines Corporation | Compression store free-space management |
WO2000004483A2 (en) | 1998-07-15 | 2000-01-27 | Imation Corp. | Hierarchical data storage management |
JP3444346B2 (ja) | 1999-01-04 | 2003-09-08 | 日本電気株式会社 | 仮想メモリ管理方式 |
US6496912B1 (en) | 1999-03-25 | 2002-12-17 | Microsoft Corporation | System, method, and software for memory management with intelligent trimming of pages of working sets |
US6496909B1 (en) | 1999-04-06 | 2002-12-17 | Silicon Graphics, Inc. | Method for managing concurrent access to virtual memory data structures |
US6349372B1 (en) | 1999-05-19 | 2002-02-19 | International Business Machines Corporation | Virtual uncompressed cache for compressed main memory |
US6442664B1 (en) | 1999-06-01 | 2002-08-27 | International Business Machines Corporation | Computer memory address translation system |
US7089391B2 (en) * | 2000-04-14 | 2006-08-08 | Quickshift, Inc. | Managing a codec engine for memory compression/decompression operations using a data movement engine |
EP1182551B1 (en) * | 2000-08-21 | 2017-04-05 | Texas Instruments France | Address space priority arbitration |
US6564305B1 (en) | 2000-09-20 | 2003-05-13 | Hewlett-Packard Development Company Lp | Compressing memory management in a device |
US6877081B2 (en) | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
US6516397B2 (en) | 2001-04-09 | 2003-02-04 | Hewlett-Packard Company | Virtual memory system utilizing data compression implemented through a device |
US7107299B2 (en) | 2001-08-14 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and apparatus for managing large numbers of objects having the same property |
US6775751B2 (en) | 2002-08-06 | 2004-08-10 | International Business Machines Corporation | System and method for using a compressed main memory based on degree of compressibility |
US6968424B1 (en) | 2002-08-07 | 2005-11-22 | Nvidia Corporation | Method and system for transparent compressed memory paging in a computer system |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US6956507B2 (en) | 2002-12-12 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for morphing memory compressed machines |
US20050132161A1 (en) | 2003-12-15 | 2005-06-16 | Nokia Corporation | Creation of virtual memory space in a memory |
US7296139B1 (en) | 2004-01-30 | 2007-11-13 | Nvidia Corporation | In-memory table structure for virtual address translation system with translation units of variable range size |
TWI267024B (en) | 2004-06-18 | 2006-11-21 | Winbond Electronics Corp | Method and apparatus for connecting LPC bus and serial flash memory |
US7587572B1 (en) | 2004-08-31 | 2009-09-08 | Sun Microsystems, Inc. | Method and system for managing process memory configured in resizable uncompressed and compressed regions |
US20060161912A1 (en) | 2005-01-18 | 2006-07-20 | Barrs John W | Infrastructure for device driver to monitor and trigger versioning for resources |
US7437529B2 (en) | 2005-06-16 | 2008-10-14 | International Business Machines Corporation | Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment |
US20070005911A1 (en) | 2005-07-01 | 2007-01-04 | Nec Laboratories America, Inc. | Operating System-Based Memory Compression for Embedded Systems |
US7409489B2 (en) | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
US7475183B2 (en) | 2005-12-12 | 2009-01-06 | Microsoft Corporation | Large page optimizations in a virtual machine environment |
US20070156386A1 (en) | 2005-12-30 | 2007-07-05 | Guenthner Russell W | Linearization of page based memory for increased performance in a software emulated central processing unit |
US7484074B2 (en) | 2006-01-18 | 2009-01-27 | International Business Machines Corporation | Method and system for automatically distributing real memory between virtual memory page sizes |
US7702843B1 (en) | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US7624240B1 (en) | 2006-10-17 | 2009-11-24 | Vmware, Inc. | Separate swap files corresponding to different virtual machines in a host computer system |
US8015367B1 (en) | 2007-02-16 | 2011-09-06 | Vmware, Inc. | Memory management methods in a computer system with shared memory mappings |
US20090327621A1 (en) | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager |
KR101101789B1 (ko) | 2009-07-20 | 2012-01-05 | 강명호 | 금속질감 성형품용 합성수지 조성물과 이를 이용한 사출성형방법 및 성형품 |
US8341380B2 (en) * | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
US8239610B2 (en) | 2009-10-29 | 2012-08-07 | Red Hat, Inc. | Asynchronous page faults for virtual machines |
US20110153978A1 (en) | 2009-12-21 | 2011-06-23 | International Business Machines Corporation | Predictive Page Allocation for Virtual Memory System |
US8386740B2 (en) | 2010-03-29 | 2013-02-26 | International Business Machines Corporation | Modeling memory compression |
US9015441B2 (en) | 2010-04-30 | 2015-04-21 | Microsoft Technology Licensing, Llc | Memory usage scanning |
US8484405B2 (en) | 2010-07-13 | 2013-07-09 | Vmware, Inc. | Memory compression policies |
CN103329112B (zh) * | 2010-10-22 | 2015-12-16 | 意法爱立信有限公司 | 用于减少页面错误发生时压缩页面加载时间的方法和装置 |
US8495267B2 (en) | 2010-11-24 | 2013-07-23 | International Business Machines Corporation | Managing shared computer memory using multiple interrupts |
KR20120066198A (ko) | 2010-12-14 | 2012-06-22 | 삼성전자주식회사 | 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법 |
US8972696B2 (en) | 2011-03-07 | 2015-03-03 | Microsoft Technology Licensing, Llc | Pagefile reservations |
US8661221B2 (en) | 2011-03-16 | 2014-02-25 | International Business Machines Corporation | Leasing fragmented storage between processes |
US9286101B2 (en) * | 2011-07-28 | 2016-03-15 | Red Hat, Inc. | Free page hinting |
JP5385347B2 (ja) | 2011-08-02 | 2014-01-08 | レノボ・シンガポール・プライベート・リミテッド | メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ |
KR101221241B1 (ko) | 2011-08-26 | 2013-01-11 | 린나이코리아 주식회사 | 실 팩킹 및 조리장치와 외부 설치구조물의 실 팩킹구조 |
US8832411B2 (en) | 2011-12-14 | 2014-09-09 | Microsoft Corporation | Working set swapping using a sequentially ordered swap file |
US9053018B2 (en) | 2012-06-29 | 2015-06-09 | International Business Machines Corporation | Compressed memory page selection based on a population count of a dataset |
US9489293B2 (en) | 2012-08-17 | 2016-11-08 | Netapp, Inc. | Techniques for opportunistic data storage |
US9354916B2 (en) * | 2012-11-29 | 2016-05-31 | Red Hat Israel, Ltd. | Detection of guest disk cache |
KR102011135B1 (ko) | 2012-12-11 | 2019-08-14 | 삼성전자주식회사 | 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 |
US10565099B2 (en) * | 2012-12-28 | 2020-02-18 | Apple Inc. | Methods and apparatus for compressed and compacted virtual memory |
US9852055B2 (en) | 2013-02-25 | 2017-12-26 | International Business Machines Corporation | Multi-level memory compression |
US9396030B2 (en) | 2013-03-13 | 2016-07-19 | Samsung Electronics Co., Ltd. | Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications |
KR20150043102A (ko) | 2013-10-14 | 2015-04-22 | 한국전자통신연구원 | 하이브리드 메모리의 데이터 관리 장치 및 방법 |
US9400754B2 (en) | 2013-12-19 | 2016-07-26 | International Business Machines Corporation | Asynchronous swap mechanism and page eviction from memory |
US20150242432A1 (en) | 2014-02-21 | 2015-08-27 | Microsoft Corporation | Modified Memory Compression |
US9684625B2 (en) | 2014-03-21 | 2017-06-20 | Microsoft Technology Licensing, Llc | Asynchronously prefetching sharable memory pages |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US10037270B2 (en) | 2015-04-14 | 2018-07-31 | Microsoft Technology Licensing, Llc | Reducing memory commit charge when compressing memory |
-
2013
- 2013-06-13 US US13/917,149 patent/US10102148B2/en active Active
- 2013-09-19 KR KR1020167000940A patent/KR102069940B1/ko active IP Right Grant
- 2013-09-19 WO PCT/US2013/060505 patent/WO2014200526A1/en active Application Filing
- 2013-09-19 CN CN201380077440.0A patent/CN105474180B/zh active Active
- 2013-09-19 EP EP13773957.9A patent/EP3008602B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073298A1 (en) * | 2000-11-29 | 2002-06-13 | Peter Geiger | System and method for managing compression and decompression of system memory in a computer system |
US20090112949A1 (en) * | 2007-10-31 | 2009-04-30 | Microsoft Corporation | Compressed storage management |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718206A (zh) * | 2014-12-03 | 2016-06-29 | 中国人民解放军国防科学技术大学 | 能够感知raid的闪存转换层及其实现方法 |
CN105718206B (zh) * | 2014-12-03 | 2018-08-03 | 中国人民解放军国防科学技术大学 | 能够感知raid的闪存转换层及其实现方法 |
CN107548491A (zh) * | 2016-04-29 | 2018-01-05 | 慧与发展有限责任合伙企业 | 具有数据和压缩元数据的经压缩页面 |
CN107548491B (zh) * | 2016-04-29 | 2020-10-16 | 慧与发展有限责任合伙企业 | 用于管理存储器的设备和方法以及存储介质 |
US10963377B2 (en) | 2016-04-29 | 2021-03-30 | Hewlett Packard Enterprise Development Lp | Compressed pages having data and compression metadata |
CN110097898A (zh) * | 2018-01-29 | 2019-08-06 | 三星电子株式会社 | 页面大小感知调度方法和非暂时性计算机可读记录介质 |
CN110097898B (zh) * | 2018-01-29 | 2022-10-18 | 三星电子株式会社 | 页面大小感知调度方法和非暂时性计算机可读记录介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2014200526A1 (en) | 2014-12-18 |
US20140372715A1 (en) | 2014-12-18 |
KR20160019949A (ko) | 2016-02-22 |
EP3008602B1 (en) | 2019-12-18 |
KR102069940B1 (ko) | 2020-02-11 |
CN105474180B (zh) | 2019-06-25 |
EP3008602A1 (en) | 2016-04-20 |
US10102148B2 (en) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105474180A (zh) | 基于页面的压缩存储管理 | |
EP3108371B1 (en) | Modified memory compression | |
US10310893B2 (en) | Managing container pause and resume | |
CN108287669B (zh) | 数据存储方法、装置及存储介质 | |
EP3283965B1 (en) | Reducing memory commit charge when compressing memory | |
US20170034272A1 (en) | Data transfer priority levels | |
US9946462B1 (en) | Address mapping table compression | |
US9524300B2 (en) | Heterogenic volume generation and use system | |
US20140281227A1 (en) | Provisioning in heterogenic volume of multiple tiers | |
US20140280392A1 (en) | File system operation on multi-tiered volume | |
CN112231238B (zh) | 使用存储器压缩来减少存储器提交开销 | |
CN110554837A (zh) | 易疲劳存储介质的智能交换 | |
Jeong et al. | Cache scheme of shared‐buffer mappings for energy‐efficiency of mobile devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |