CN101189584B - 内存页面管理 - Google Patents

内存页面管理 Download PDF

Info

Publication number
CN101189584B
CN101189584B CN2006800197653A CN200680019765A CN101189584B CN 101189584 B CN101189584 B CN 101189584B CN 2006800197653 A CN2006800197653 A CN 2006800197653A CN 200680019765 A CN200680019765 A CN 200680019765A CN 101189584 B CN101189584 B CN 101189584B
Authority
CN
China
Prior art keywords
page
memory pages
memory
order
formation
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.)
Active
Application number
CN2006800197653A
Other languages
English (en)
Other versions
CN101189584A (zh
Inventor
克雷格·W·斯坦菲尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Archie Taco Ltd.
Ab Initio Technology LLC
Original Assignee
Ab Initio Software LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ab Initio Software LLC filed Critical Ab Initio Software LLC
Publication of CN101189584A publication Critical patent/CN101189584A/zh
Application granted granted Critical
Publication of CN101189584B publication Critical patent/CN101189584B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

Abstract

描述一种对一个或者多个顺序访问的数据结构使用的内存分页的方法和相应的软件和系统。该方法包括:提供数据结构(200),其表示将要再次使用内存页面的顺序;以及根据与所述顺序访问的数据结构之一相关的内存页面的访问历史对数据结构进行维护,其中具有所述顺序的所述内存页面的位置取决于离开该内存页面的顺序访问转换。具有所述顺序的所述内存页面的位置取决于离开该内存页面的顺序访问的转换。

Description

内存页面管理
技术领域
本发明涉及内存页面管理。
背景技术
可以利用易失性存储器(例如,随机存取存储器(RAM))来存储也存储在非易失性存储器(例如,一个或更多个磁盘驱动器)中的数据。例如,易失性存储器典型地具有比非易失性存储器更快的访问和读取时间。易失性存储器和非易失性存储器的地址空间能被组织成含有预定数量的邻近地址位置的页。计算机系统使用分页技术对于易失性存储器分配内存页面,以通过例如程序或者数据结构来使用。非易失性存储器典型地比易失性存储器大。可以采用虚拟内存方案,以将易失性存储器中不使用的(例如,目前没有被写入或者读取)页写入非易失性存储器中,并随后在需要时再从非易失性存储器中读取。因此,在易失性存储器中的页通过多种程序和/或数据结构被“循环”使用。为了减少与对页存取操作相关的开销,一些技术根据最近最少使用(LRU)的方式循环使用页。在LRU方式中,如果已经被写入非易失性存储器中的页被移动到易失性存储器中并且在易失性存储器中不再有空闲页,那么从易失性存储器被选择循环(或“交换”或“页换出”)到非易失性存储器的页是最近最少被使用的页(例如,最近最少被读取或者写入)。
发明内容
一般地,本发明的特征在于对一个或者多个顺序访问的数据结构使用的内存分页的方法,和相应的软件和系统。所述方法包括:提供数据结构(200),其表示将要再次使用内存页面的顺序;以及根据与所述顺序访问的数据结构之一相关的内存页面的访问历史对数据结构进行维护,其中具有所述顺序的所述内存页面的位置取决于离开该内存页面的顺序访问转换。
这个方面可以包括下列特征中的一个或者更多个:
离开该内存页面的顺序访问转换对应于离开所述内存页面的指针转换。
具有所述顺序的所述内存页面的位置取决于顺序访问的转换是否对应于离开该内存页面的写入访问转换。
根据与所述顺序访问的数据结构之一相关的内存页面的访问历史对数据结构进行维护的步骤包括:响应于离开该内存页面的写入访问转换,将用于该内存页面的标识符放置在用以表示该顺序的数据结构的第一端;以及响应于与被关闭的内存页面相关的顺序访问的数据结构,将用于该内存页面的标识符放置在用以表示该顺序的数据结构的第二端。
该方法还包括从表示该顺序的数据结构的所述第一端再次使用内存页面。
该方法还包括在确定空闲内存页面的列表为空之后,从所述数据结构的所述第一端再次使用该内存页面。
再次使用内存页面的步骤包括向非易失性存储器写入该内存页面的当前内容。
再次使用内存页面的步骤还包括从该非易失性存储器向该内存页面写入一内存页面。
所述与该内存页面相关的顺序访问的数据结构包括队列。
一般地,本发明的特征在于一种对一个或者多个顺序访问的数据结构使用的内存分页的方法,包括:在第一种情况下根据最近最多使用的方式以及在第二种情况下根据最近最少使用的方式,再次使用与顺序访问的数据结构相关的内存页面。
这个方面能够包括下列特征中的一个或者更多个:
所述第一种情况包括写指针离开该内存页面的转换。
所述第二种情况包括存取实体关闭所述顺序访问的数据结构。
所述第二种情况包括读指针离开该内存页面的转换。
本发明的各方面能包括下述优点中的一个或者更多个:
为再次使用而对页面进行排序可更好地预测对于存储队列或其它顺序I/O数据结构的内存系统最近可能再次使用的页面。因为读指针必须“追上”写指针,所以已经被写的页(即,写指针刚从该页移开)不可能被再次使用。因此,这些页首先被循环使用。进一步,对于刚被关闭的队列的页可能被重新打开并且很快被再次使用,因此它们稍后才被循环使用。已经被关闭一段时间的页在其间的某处被循环。
相比于没有采取队列结构或者存取模式的优点的页算法的情况,队列专用页算法的使用能够提供改善的效率。通过在决定哪页将要被再次使用时利用队列存取历史,数据存取队列的分页能够被改善。例如,基于存取历史,可期望某些页面在其它页面之前被再次访问。这一改善能够使得处于工作状态内存中的所需页面有更高的访问可能性,因此减少了由于将数据传回工作内存所产生延迟。
根据下面的描述以及权利要求,本发明的其他特征和优点将会变得明显。
附图说明
图1是排队系统的示图。
图2A是将循环列表连接到易失性存储空间和非易失性存储空间的页表的示图。
图2B是内存页面的示图。
图3A和3B分别是在易失性存储空间和非易失性存储空间中的内存页面的示图。
图3C和3D是对应于图3A的易失性存储空间的循环列表和空闲列表的示图。
图4A和4B分别是在易失性存储空间和非易失性存储空间中的内存页面的示图。
图4C是对应于图4A的易失性存储空间的循环列表的示图。
图5A和5B分别是在易失性存储空间和非易失性存储空间中的内存页面的示图。
图5C和5D是对应于图5A的易失性存储空间的循环列表和空闲列表的示图。
具体实施方式
参考图1,排队系统100使存取实体102A-102P增加消息到一组队列QUEUE_1-QUEUE_N中的一个或者多个队列中,并且从队列中读取消息。存取实体通过队列管理器102与系统100交互。队列管理器102利用内存管理模块(MMM)106协助在易失性存储器108和非易失性存储器110之间交换页,所述易失性存储器108是为读取和写入数据提供相对较快存取的临时工作内存,而所述非易失性存储器110是提供数据吃香时间相对较长并且可以提供比易失性存储器相对较慢的读取和写入的存取的永久内存。MMM106可以在软件或者硬件或者两者中同时被执行。MMM在易失性存储地址空间与非易失性存储地址空间之间解析页地址。MMM还监控对于易失性存储器的页引用,并且能够检测对于不可用的页引用(例如,易失性存储器页面已经被写入非易失性存储器中并且为了新的使用而循环使用)。MMM通过向队列管理器102发出关于此“页错误”的警告而做出响应。队列管理器102然后从非易失性存储器中读取引用的页并且将它复制到在易失性存储器中的空闲页中。如果在易失性存储器中没有空闲页,那么队列管理器102根据下面将具体地描述的“循环列表”来循环使用页。队列管理器102和MMM106能够在多种操作系统和计算环境下实施。队列管理器102和/或MMM 106能够被集成到操作系统中。可选择地,操作系统可以具有单独的用于管理没有被分配给队列管理器102的页的虚拟内存系统。
给定的队列(例如,QUEUE_2)可以在一组“队列页”中存储一系列记录,包括顺序队列消息和关于管理那些消息的记录。根据消息和队列页的相对大小,队列页可以保存一条或者更多条消息,或者一条消息的一部分。队列管理器102给队列分配一组队列页并且随着队列增加向该组队列页增加页。在所示的实施例中,在组中的所有队列页被存储在非易失性存储器110中并且活动队列页的一个子集被存储在易失性存储器108中。
队列“顺序”的这一方面(或者其它顺序存取的数据结构)指的是消息(或者数据结构的其它元素)的逻辑排序。消息的存储位置没有必要位于系统100的物理和虚拟地址空间内的顺序地址中。
如果在易失性存储器108中的队列页的内容被改变,那么队列页被标记为“脏的”。当从易失性存储器108中移出脏的队列页时,用这一改变来更新在非易失性存储器110中的队列页的旧的复本(即,队列页与非易失性存储器110“同步”)。脏的队列页同样也可以在被从易失性存储器108中删除之前与非易失性存储器110同步。队列管理器在队列不再需要队列的一些或所有队列页之后(例如,在队列被删除之后)重新收回这些队列页。
参考图2A,循环列表200标识在易失性存储器中能够被潜在地循环使用的页。循环列表200具有第一“头”端202和第二“尾”端204。页能够被添加到尾端或者头端,如下面描述的,并且页从头端202被删除。循环列表能够作为,例如,双链表被实施。
在一个实施例中,循环列表200在页表206中存储了用以标识队列页的“虚拟地址”(例如,标识分配给QUEUE_1的队列页“5”的“Q1/P5”)。页表206包括对于分配给排队系统100中的队列的每一队列页的项目。在附图中,对于每一条目,页表206包括在非易失性存储空间208中的非易失性存储器页面地址“N-PAGE”和在易失性存储空间210中的易失性存储器页面地址“Y-PAGE”。易失性存储器页面地址对于没有被存储在易失性存储器108中的队列页可以是空的(例如,对应于没有使用的地址值)。页表206包括用以指示队列页是否在循环列表200中的“循环比特”。页表包括用以指示有多少存取实体正在访问队列页的“引用计数”。
每个队列具有存储在非易失性存储器110中已分配的一组队列页(例如,在图3B中,QUEUE_2具有存储在地址N-PAGE_10-N-PAGE_16中的页Q2/P1-Q2/P7)。一些队列页可以在易失性和易失性存储器中都具有复本(例如,在图3A和3B中的页Q2/P3-Q2/P7)。对于被存储在非易失性存储空间208中的队列页,页表206使用“脏比特”来指示还没有与非易失性存储器110同步的队列页的内容是否存在改变。
例如,新添加到队列的消息可能只被存储在易失性存储器中。因为队列页在委托操作(commit operation)中从易失性存储器同步到非易失性存储器,所以存储已经被委托的队列消息的队列页可能已经被存储在易失性和易失性存储器中。(可以采用任一种方案来使委托的消息同步,以确保信息不被丢失。在未决的/同时提交的申请“消息队列管理”中描述了一种委托消息的方式,其内容公开于此以资参考。)存储队列页的易失性存储器页面可能已经被循环使用(例如由不同队列使用),只留下复本在非易失性存储器中。
一个或者更多的存取实体可以打开队列以进行读取或者写入。存取实体可以打开队列以添加一条或者更多条消息到队列的末端。存取实体可以打开队列以从队列的前端或者从队列中的特定位置(例如,当先前读取队列时到达的位置)读取提交的消息。当队列被打开以由存取实体的访问时,排队系统100执行打开任务(opening task),例如为存取实体设置读和/或写指针。在存取实体完成队列访问后,所述存取实体关闭所述队列并且该排队系统100执行适当的关闭任务(closing tasks)。多个存取实体可以同时访问相同的实体。因此,队列可以为了某些存取实体的访问被打开,并且为了其它存取实体被关闭。
当存取实体打开队列时,该存取实体为正被访问的队列页增加引用计数。如果将要被访问的队列页没有在易失性存储器108中,那么将该队列页从非易失性存储器110复制到易失性存储器108。在存取实体完成对队列页的访问后(例如,在关闭队列之后或者在队列页的末尾之前写入之后),存取实体减少关于队列页的引用计数。
排队系统100利用读指针保持存取实体读取数据的轨迹,以及利用写指针保持存取实体添加(也就是,写入)数据的轨迹。当存取实体正在从队列读取或者向队列写入时,正在被访问的队列页处于易失性存储器108中。排队系统100通过空闲列表212保持可用的易失性存储器页面的轨迹。当新的队列页从非易失性存储器110复制到易失性存储器108,并且没有空闲页(也就是,空闲列表212是空的)时,排队系统100根据循环列表200循环使用易失性存储器页面。
为了循环使用易失性存储器页面,排队系统100通过检查在循环列表200的头端202标识的页来寻找要循环使用的页。如果被标识的页根据预定的标准是可以被循环使用的页(例如,该页具有用以表示当前没有被读指针或者写指针所引用的0引用计数),那么将该页的当前内容写入非易失性存储器110中(如果必要的话)并且该页空闲可被用于分配(并且被从循环列表200中删除)。如果该页当前的内容已经与非易失性存储器同步,那么排队系统100在没有向非易失性存储器写入数据的情况下释放该页。如果被标识的页不能被循环使用,那么该页就从循环列表中删除,并且在循环列表的新的头端202检查可循环的页。
在一个实施例中,排队系统100将易失性存储器页面添加到循环列表200中的情况有两种(即,该页变成可被释放的潜在备选者):
情况1:写指针移开该页,没有其它的读或者写指针指向该页,并且该页已经不在循环列表200中。
情况2:正在使用该页的队列被关闭,没有其它的读或者写指针指向该页,并且该页已经不在循环列表200中。
例如,当正在添加一串消息给队列的存储实体用消息填充队列页的时,可能发生情况1。在情况1中,排队系统100将所述页添加给循环列表200的头端202。因为在并非最近写入的页之前循环使用在最近写入的页,所以这种情况对应于最近最多使用(MRU)的方式。
在情况2中,排队系统100将所述页添加给循环列表200的尾端204。因为页从循环列表的头端开始使用,那么在最近写入的页之前循环使用并非最近写入的页,所以这种情况对应于最近最少使用(LRU)的方式。
在其它的实施中,可以包括其它将页添加给循环列表200的情况。例如,可以向循环列表200的尾端204添加页的另一情况是:
情况3:读指针移开该页,没有其它的读或者写指针指向该页,并且该页已经不在循环列表200中。
其它的实施例可以包括多种规则的任一种,用于根据对每页的访问历史保持在循环列表中的页的顺序。根据对于离开所述内存页面的顺序访问的转换(例如,写指针移开该页)按顺序配置至少一些内存页面的位置,该系统能够利用顺序访问数据结构的统计特性的优点来改善分页效率。
在空闲列表212中的页对应于不再需要的页,因此不再与队列页相关。有多种排队系统100将页添加给空闲列表212的情况。在一种情况下,系统100释放保存有已经被所有存取实体读取的队列消息的页,其中所述的所有存取实体已经作为读取器预订该队列(也就是,所有用户的读指针已经遍历了该页上的每条消息,并且已经离开该页)。排队系统100为了任何一种其它原因释放页。例如,当在所述页上的所有消息已经被移除或者“回卷(rolledback)”时,该页被释放。
在一些实施中,根据时间限制释放页。例如,在与页相关的队列已经被关闭了超过预定的时间长度(例如,2分钟)后释放该页。在另外一个实施例中,即使在相关的队列是打开的情况下,在与页相关的队列已经被访问了超过预定的时间长度(例如,10分钟)后释放该页。
另外,队列管理器102可以释放被其它程序或者数据结构使用的易失性存储器页面,其中随后可由排队系统100使用程序和数据结构分配队列页。排队系统100能够使用球形空闲列表212(其也可用于释放所有易失性存储器页面),或者可选择地,能够使用单独的空闲列表212,其用于队列页的易失性存储器页面。
图2B表示用于根据虚拟地址顺序排序的QUEUE_1的一组页Q1/P1-Q1/P8的实例。在这个实例中,在写入器存取实体和两个读取器存取实体可用时,写入器存取实体可向所述队列写入一串消息,两个读取器存取实体可读取这些消息。写入器存取实体具有写指针WRITER_1,其按照顺序增加的虚拟地址在页上写入消息。在写指针WRITER_1从页Q1/P7移动到页Q1/P8之后,在情况1的条件下,页Q1/P7可以放置在循环列表200的头端202。在读指针READER_2从页Q1/P2移动到页Q1/P3之后,在情况3的条件下,页Q1/P2可以放置在循环列表200的尾端204。
第一读取器存取实体具有读指针READER_1,其落后于写指针WRITER_1一些数量的队列页。当存取实体与排队系统100相互作用时,这种落后的距离能缩小或者扩大。第二读取器存取实体具有读指针READER_2,其也落后于读指针READER_1。如果空闲页对于写入器保持可用状态,那么该读取器能够访问从易失性存储器108写入的页。如果空闲页是不可用的(例如,如果易失性存储空间由于读取器的较大的落后而填满),那么一些被写入的页可以被循环使用。例如,在这种页管理方式下,最近最多使用的页可以被重复地循环使用,为落后的读取器留下一系列在易失性存储空间中可用的最近最少使用的页。
在QUEUE_1被关闭后,任何已经不在循环列表200中的队列页可以放置在循环列表200的尾端204。放置在尾端204上的最近关闭队列的任一队列页在易失性存储器108中保持可用,以由其它存取实体访问,直到所述页将循环列表从尾端204滚动到头端202。
图3A表示在易失性存储器108的存储地址空间210中的队列页实例。页地址V-PAGE_1-V-PAGE_2空闲并且因此被包括在空闲列表212中,如图3D所示。地址V-PAGE_3-V-PAGE_7用于存储QUEUE_2的队列页。读取器存储实体具有位于V-PAGE_2中的读指针READER_1,以读取在队列页Q2/P3中的消息(在这个实例中,队列页存储多于一条消息)。写入器存取实体具有位于V-PAGE_7中的写指针WRITER_1,以在队列页Q2/P7中写入消息。地址V-PAGE_8-V-PAGE_10用于存储关闭的QUEUE_1的队列页。V-PAGE_11-V-PAGE_12用于存储其它的数据。
图3B表示非易失性存储器110的存储地址空间208的实例。非易失性存储器110存储已经同步的(例如,由于委托操作)的QUEUE_1和QUEUE_2的队列页,其中某些队列页也被下载到易失性存储器108中。在这个实例中,用还没有与非易失性存储器同步的新消息写入在易失性存储器中的队列页Q2/P7中。
图3C表示对应于在易失性存储器108中的活动历史的循环列表200。例如,因为QUEUE_1已经刚被关闭,因此排队系统100通过将这些虚拟地址放置在循环列表200的尾端204,根据LRU方式对用于循环的队列页Q1/P3-Q1/P5进行标记。写指针WRITER_1已经刚从页Q2/P4、Q2/P5以及Q2/P6(按照这个顺序)移开。因此所述排队系统100已经将这些虚拟地址放置到循环列表200的头端202而不是尾端204。
图4A-4C分别表示在随后的活动之后的易失性存储空间210、非易失性存储地址空间208和循环列表200的状态。写指针WRITER_1已经移到在从空闲列表212分配的地址V-PAGE_2的新队列页Q2/P8上。第二个读取器存取实体具有位于V-PAGE_1的读指针READER_2,以读取在从空闲列表212分配的队列页Q1/P1中的消息。在这些页的分配之后,空闲列表212是空的。
图5A-5C分别表示在从循环列表200的页分配之后的易失性存储空间210、非易失性存储地址空间208和循环列表200的状态。写指针WRITER_1保持在队列页Q2/P8上。读指针READER_1已经移到在V-PAGE_4的队列页Q2/P4上。读指针READER_2已经移到从循环列表200的头端202分配的队列页Q1/P2上(图4C)。在这种页分配后,循环列表200的新头端202为Q2/P6(图5C)。因为队列页QUEUE_1A和QUEUE_1C不再需要,所以将地址V-PAGE_1和V-PAGE_3放置在空闲列表204中(图5D)。
在这个实例中,用单独的写入器和单独的读取器访问给定的队列。在其它实例中,多个访问实体(例如,用户和/或写入器)能够与相同的队列(每个队列具有它自己的读指针和写指针)交互。当多个访问实体与队列交互时,可以采用上面描述的关于循环使用内存页面的相同情况。
排队系统100能够结合这里描述的技术使用其它技术以提高系统性能。例如,队列管理器102能够预言什么时候页将要被发出请求并且一次循环多页。队列管理器102也能够例如通过在已经添加页之后在循环列表中对它们重新排序来修改循环列表。
可利用在计算机上执行的软件来实施上述的队列管理方式。例如,软件可以在执行一个或者多个被编程的一个或多个计算机程序中或者可编程计算机系统(可以是多种结构,例如分布式、客户端/服务器,或网格)中形成过程,其中所述可编程计算机系统包括至少一个处理器、至少一个数据存储系统(包括非易失性存储器和易失性存储器和/或存储元件)、至少一个输入设备或者端口,以及至少一个输出设备或者端口。软件可以形成一个或者更多的更大程序的模块,例如,用以提供与计算图表的设计和外形相关的其它业务的模块。图表的节点和元素能够作为存储在计算机可读介质中的数据结构或者符合存储在数据库中的数据模型的其它组织的数据来实施。
所述软件可以配置在通过普通或者专用可编程计算机可读的介质上(例如CD-ROM),或者分布(在传播信号中编码)在执行该程序的计算机的网络上。所有功能可以在专用计算机上执行,或者使用专用硬件,比如协处理器执行。软件可以以分布方式实施,在这种方式下由不同的计算机执行由软件指定的不同计算部分。每一这种计算机程序优选地存储在或者下载到存储介质或者可由普通或者专用可编程计算机可读的设备(例如,固态内存或者介质,或者磁性或者光学介质上),以便在由计算机系统读取存储介质或者设备以执行这里描述的过程时配置和操作计算机。本发明的系统也可以考虑作为配置有计算机程序的计算机可读存储介质来实现,其中如此配置的存储介质使得计算机系统按特定和预定的方式运行,以执行这里描述的功能。
需要理解的是,前述说明的目的是举例说明,并不是要限制本发明的范围,其范围要根据所附权利要求的范围确定。例如,上述的大量功能步骤在基本不影响总体处理的情况下可以按不同的顺序执行。其它的实施例均在下面权利要求的范围内。

Claims (13)

1.一种用于队列管理器协助在用于一个或者多个顺序访问的队列的易失性存储器和非易失性存储器之间交换内存页面的方法,所述方法包括:
提供循环列表,所述循环列表标识在所述易失性存储器中的内存页面,所述在所述易失性存储器中的内存页面用于存储所述非易失性存储器中的页面,包括用以存储所述顺序访问的队列的数据的至少一些内存页面;并且所述循环列表表示将要通过所述队列管理器再次使用所标识的在所述易失性存储器中的内存页面的顺序;以及
根据对存储所述顺序访问的队列之一的数据的内存页面的访问历史对用以表示该顺序的循环列表进行维护,其中具有所述顺序的所述内存页面的位置取决于离开该内存页面的顺序访问转换,其中所述顺序是内存页面将要再次被使用的顺序。
2.根据权利要求1所述的方法,其中离开该内存页面的顺序访问转换对应于离开所述内存页面的指针转换。
3.根据权利要求1所述的方法,其中具有所述顺序的所述内存页面的位置取决于顺序访问的转换是否对应于离开该内存页面的写入访问转换。
4.根据权利要求1所述的方法,其中根据与所述顺序访问的队列之一相关的内存页面的访问历史对用以表示该顺序的循环列表进行维护的步骤包括:
响应于离开该内存页面的写入访问转换,将用于该内存页面的标识符放置在用以表示该顺序的循环列表的第一端;以及
响应于与被关闭的内存页面相关的顺序访问的队列,将用于该内存页面的标识符放置在用以表示该顺序的循环列表的第二端。
5.根据权利要求4所述的方法,还包括从表示该顺序的循环列表的所述第一端再次使用内存页面。
6.根据权利要求5所述的方法,还包括在确定空闲内存页面的列表为空之后,从所述循环列表的所述第一端再次使用该内存页面。
7.根据权利要求5所述的方法,其中再次使用内存页面的步骤包括向非易失性存储器写入该内存页面的当前内容。
8.根据权利要求7所述的方法,其中再次使用内存页面的步骤还包括从该非易失性存储器向该内存页面写入一内存页面。
9.一种用于队列管理器协助在用于一个或者多个顺序访问的队列的易失性存储器和非易失性存储器之间交换内存页面的系统,所述系统包括:
提供循环列表的装置,其中所述循环列表标识在所述易失性存储器中的内存页面,所述在所述易失性存储器中的内存页面用于存储所述非易失性存储器中的页面,包括用以存储所述顺序访问的队列的数据的至少一些内存页面;并且所述循环列表表示将要通过所述队列管理器再次使用所标识的在所述易失性存储器中的内存页面的顺序;以及
根据对存储所述顺序访问的队列之一的数据的内存页面的访问历史对用以表示该顺序的循环列表进行维护的装置,其中具有所述顺序的所述内存页面的位置取决于离开该内存页面的顺序访问转换,其中所述顺序是内存页面将要再次被使用的顺序。
10.根据权利要求1所述的方法,还包括:在第一种情况下根据最近最多使用的方式以及在第二种情况下根据最近最少使用的方式,再次使用与顺序访问的队列相关的内存页面。
11.根据权利要求10所述的方法,其中响应于写指针离开该内存页面的转换而发生所述第一种情况。
12.根据权利要求10所述的方法,其中响应于存取实体关闭所述顺序访问的队列而发生所述第二种情况。
13.根据权利要求10所述的方法,其中响应于读指针离开该内存页面的转换而发生所述第二种情况。
CN2006800197653A 2005-06-27 2006-06-22 内存页面管理 Active CN101189584B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/169,246 2005-06-27
US11/169,246 US7673105B2 (en) 2005-06-27 2005-06-27 Managing memory pages
PCT/US2006/024291 WO2007002282A2 (en) 2005-06-27 2006-06-22 Managing memory pages

Publications (2)

Publication Number Publication Date
CN101189584A CN101189584A (zh) 2008-05-28
CN101189584B true CN101189584B (zh) 2010-12-15

Family

ID=37568978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800197653A Active CN101189584B (zh) 2005-06-27 2006-06-22 内存页面管理

Country Status (8)

Country Link
US (2) US7673105B2 (zh)
EP (1) EP1896951B1 (zh)
JP (2) JP5142995B2 (zh)
KR (1) KR101372964B1 (zh)
CN (1) CN101189584B (zh)
AU (1) AU2006262111B2 (zh)
CA (1) CA2610180C (zh)
WO (1) WO2007002282A2 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673105B2 (en) * 2005-06-27 2010-03-02 Ab Inition Technology LLC Managing memory pages
US7694091B2 (en) * 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
JP4978264B2 (ja) * 2007-03-23 2012-07-18 京セラドキュメントソリューションズ株式会社 画像形成装置及びメモリ資源確保方法
US8010519B2 (en) * 2008-07-29 2011-08-30 International Business Machines Corporation Method and system for mitigating impact of user errors in data stores
KR101581679B1 (ko) * 2009-03-18 2015-12-31 삼성전자주식회사 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
CN102460400B (zh) * 2009-06-29 2014-09-24 惠普开发有限公司 基于管理程序的本地和远程虚拟内存页面管理
US9684455B2 (en) * 2013-03-04 2017-06-20 Seagate Technology Llc Method and apparatus for sequential stream I/O processing
JP6323986B2 (ja) * 2012-06-26 2018-05-16 シャープ株式会社 画像表示装置、それを含む画像表示システム、及びその制御方法
CN103516580B (zh) * 2012-06-26 2017-06-23 北京大学 一种基于消息队列实现消息接收与转发的方法及系统
US9417757B1 (en) * 2013-09-20 2016-08-16 Emc Corporation Scalable hierarchical user interface display
EP2985690B1 (en) * 2014-08-11 2018-07-18 Dot Hill Systems Corporation Method and apparatus for sequential stream i/o processing
CN104239248B (zh) * 2014-09-16 2017-06-06 国家计算机网络与信息安全管理中心 Pci‑e多缓冲区dma数据传输方法
US10067981B2 (en) 2014-11-21 2018-09-04 Sap Se Intelligent memory block replacement
CN106843756B (zh) * 2017-01-13 2019-12-31 中国科学院信息工程研究所 基于页面分类的内存页面回收方法及系统
GB201709499D0 (en) 2017-06-15 2017-08-02 Microsoft Technology Licensing Llc Memory management in non-volatile memory
CN111679914B (zh) * 2020-06-12 2023-06-27 北京字节跳动网络技术有限公司 一种内存管理方法、系统、计算机设备及存储介质
CN112052089B (zh) * 2020-09-01 2023-03-28 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5597081A (en) * 1979-01-12 1980-07-23 Fujitsu Ltd Page send-out system
JPS6086638A (ja) * 1983-10-18 1985-05-16 Fujitsu Ltd プログラムの記憶管理方式
CA1279731C (en) 1986-06-27 1991-01-29 Ruby Bei-Loh Lee Cache memory with variable fetch and replacement schemes
US5125086A (en) * 1989-06-29 1992-06-23 Digital Equipment Corporation Virtual memory paging apparatus with variable size in-page clusters
US5426747A (en) * 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
JP2618149B2 (ja) 1991-04-22 1997-06-11 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ内のデータ記憶スペースを管理する方法及びキャッシュ内でページ置換を行う装置
JPH0546668A (ja) * 1991-08-07 1993-02-26 Nec Corp 分散データ制御システム
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
US5530848A (en) * 1992-10-15 1996-06-25 The Dow Chemical Company System and method for implementing an interface between an external process and transaction processing system
US5455944A (en) * 1993-03-16 1995-10-03 International Business Machines Corporation Method for managing logging and locking of page free space information in a transaction processing system
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5586312A (en) * 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US5857204A (en) * 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US6327644B1 (en) * 1998-08-18 2001-12-04 International Business Machines Corporation Method and system for managing data in cache
JP2002540502A (ja) * 1999-03-25 2002-11-26 エクセロン コーポレイション データベースシステムにおけるバーチャルメモリマッピングとトランザクションマネージメントのポインターリロケーションオプチミゼーションの方法及び装置
JP2002183074A (ja) * 2000-12-14 2002-06-28 Fuji Xerox Co Ltd データ転送制御装置
JP2004152173A (ja) * 2002-10-31 2004-05-27 Sharp Corp ディスク装置およびディスク装置のキャッシュメモリ制御方法
US7673105B2 (en) * 2005-06-27 2010-03-02 Ab Inition Technology LLC Managing memory pages

Also Published As

Publication number Publication date
AU2006262111A1 (en) 2007-01-04
EP1896951B1 (en) 2019-10-16
AU2006262111A2 (en) 2007-01-04
CA2610180C (en) 2016-11-29
WO2007002282A2 (en) 2007-01-04
EP1896951A2 (en) 2008-03-12
JP5142995B2 (ja) 2013-02-13
CN101189584A (zh) 2008-05-28
US20100122048A1 (en) 2010-05-13
JP2013037718A (ja) 2013-02-21
WO2007002282A3 (en) 2007-09-20
US7949839B2 (en) 2011-05-24
JP5647203B2 (ja) 2014-12-24
JP2008544422A (ja) 2008-12-04
AU2006262111B2 (en) 2011-03-17
CA2610180A1 (en) 2007-01-04
KR101372964B1 (ko) 2014-03-13
US20060294330A1 (en) 2006-12-28
EP1896951A4 (en) 2009-01-28
US7673105B2 (en) 2010-03-02
KR20080021623A (ko) 2008-03-07

Similar Documents

Publication Publication Date Title
CN101189584B (zh) 内存页面管理
CN106662981A (zh) 存储设备、程序和信息处理方法
CN106326229B (zh) 一种嵌入式系统的文件存储方法和装置
CN103577513A (zh) 藉延迟节点实例化以缓存xml信息集的系统和/或方法
CN108733306A (zh) 一种文件合并方法及装置
CN107239526A (zh) 文件系统实现方法、碎片整理方法、操作位置定位方法
Rumble Memory and object management in RAMCloud
US20060277221A1 (en) Transactional file system with client partitioning
CN109408416B (zh) 一种地址映射表项页管理方法及装置
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
CN115168259B (zh) 一种数据存取方法、装置、设备和计算机可读存储介质
CN113204520B (zh) 一种基于分布式文件系统的遥感数据快速并发读写方法
CN112395260B (zh) 一种数据存储方法及介质
US9063656B2 (en) System and methods for digest-based storage
CN107193947A (zh) 一种文件系统缓存增量刷新方法及系统
CN114840134A (zh) 日志归并树键值存储系统及相关方法和相关设备
US11853577B2 (en) Tree structure node compaction prioritization
JP4131579B2 (ja) データ管理システムおよびデータ管理方法
JPH0282332A (ja) 索引ファイルのインデックス用入出力バッファ方式
CN116991761A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN116909485A (zh) 数据回写方法、装置、电子设备及计算机可读存储介质
CN111435285A (zh) 存储卷写数据方法、装置、电子设备及机器可读存储介质
JP2000347913A (ja) 分散データ管理システム
JPH0438536A (ja) バッファ管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ARCHITEKTEN CO., LTD.

Free format text: FORMER OWNER: AB INITIO SOFTWARE CORP.

Effective date: 20100415

Owner name: AB INITIO SOFTWARE CORP.

Free format text: FORMER OWNER: ARCHITEKTEN CO., LTD.

Effective date: 20100415

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20100415

Address after: Massachusetts, USA

Applicant after: AB INITIO TECHNOLOGY LLC

Address before: Massachusetts, USA

Applicant before: Archie Taco Ltd.

Effective date of registration: 20100415

Address after: Massachusetts, USA

Applicant after: Archie Taco Ltd.

Address before: Massachusetts, USA

Applicant before: Qiyuan Software Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant