页面文件预留的制作方法

文档序号:6365853阅读:201来源:国知局
专利名称:页面文件预留的制作方法
页面文件预留
背景技术
现代计算机系统需要大量随机存取存储器(RAM)来运行软件程序。诸如操作系统和各种应用程序的软件不断地与存储在RAM中的数据进行交互。每个应用/进程被分配RAM页面以供其使用。随着计算机变得更加精密和复杂,进程需要比RAM中物理上可用的更多的存储器访问。存储器的虚拟地址通过允许进程共享物理RAM存储器克服了该问题。通过将数据写入到诸如磁盘驱动器的非易失性存储器而不是将所有进程数据维护在RAM中在计算机系统中实现了虚拟存储器。计算机系统的存储器管理器确保当需要的时候,与虚地地址关联的数据在物理RAM中。当数据没有被进程活跃地使用时,可以将该数据写入到存储在非易失性存储器中的 页面文件中,以为其他活动的进程空出RAM空间。如果进程需要非活动的数据,必须将数据从非易失性存储器复制到RAM,以使其对于进程是可访问的。如果计算机系统上的所有进程所需的存储器的数量与可用的物理RAM相比过大,由于RAM和非易失性存储器之间过多的数据来回交换使系统变慢,系统性能可能变差。

发明内容
发明人已经认识并明了,当页面文件中的数据被碎片化时,具有虚拟存储器的计算机系统的性能被变慢。如果数据碎片化,则当在物理RAM中需要时从硬盘驱动器读取数据可能是时间上极其低效的。在此描述了用于改进系统性能的技术。通过减少计算机系统的页面文件的碎片,可以减少在虚拟存储器的非活动页面变得活动时加载该非活动页面所需的时间。可以通过为彼此相近的虚拟存储器页面预留页面文件部分来避免碎片化的页面文件。虚拟存储器往往以许多页块被分配给进程。因此,彼此相近的页面可能属于相同的进程并且彼此相关。因而,它们可能在同一时间被相关的进程所需要,以致它们一起从页面文件被读取。确保页面文件中相邻的页面相关增加了从硬盘上的连续位置读取数据的数量,并因此减少了硬盘驱动器必须执行的寻道数量。这使得在从页面文件读取数据时显著降低了延迟。在一些实施例中,为在待写入页面附近的页面预留在将写入一个页面的附近的页面文件的区域。如果那些附近的页面将要写到页面文件,则它们将被写到页面文件中为它们预留的位置。如果不存在针对正在被写到页面文件的页面的预留,则该页面将被写到既未分配也未预留的页面文件的部分。在一些实施例中,预留系统并非“严格的”,意思是为特定页面预留的页面文件的部分不要求没有其他页面写到页面文件的该部分。这是因为非易失性存储器中的页面文件的尺寸有限并且受限。可以存在以下情形,其中,计算机需要如此多的存储器以至于保存未使用的页面文件的部分的预留系统将开始将其他页面写入到页面文件的预留部分。在一些实施例中,有关是否预留了虚拟存储器空间的特定页面的信息存储在页表条目的部分中。通过将该小数量的信息添加到页表条目,实现预留技术所需的开销是可以忽略的。在一些实施例中,有关页面文件的特定部分是否已被不同页面所占用的信息存储在分配位图中。一些实施例还利用了预留位图,其指示页面文件的哪些部分已被预留。在这些实施例中,使用诸如位图的简单数据结构减少了实现存储器管理技术的开销。前述是对本发明的非限制性总结,本发明由所附权利要求所限定。


附图不旨在按比例绘制。在附图中,在各图中示出的每个相同的或几乎相同的组件通过相同的标记来表示。为了清楚起见,每个图中并非每个组件都被标记。在图中
图I是本发明的实施例可以运行在其中的示例性环境的框 图2是示出本发明一些实施例的计算系统的若干软件和硬件组件的框图;
图3A是页表、页面文件及其关系的简化示 图3B是示例分配位 图3C是例预留位 图4是将页面写入页面文件的示例过程的流程 图5是与裁剪来自工作集的页面相关的示例过程的流程图。
具体实施例方式发明人已经认识到并明了,减少页面文件的碎片通过降低从页面文件读取数据时的延迟能够显著地提高计算机性能以及用户满意度。在此呈现的系统和方法首先是防止碎片发生,而不是尝试整理已经碎片化的存储器的碎片。因为通常将数据写入页面文件的顺序仅由RAM中睡眠时间最长的数据来确定,所以页面文件可能变得碎片化。碎片化的数据意指属于相同进程和/或在虚拟存储器空间中彼此接近的数据片在页面文件中是彼此不相近的。从碎片化的页面文件读取数据是很慢的,因为诸如硬盘驱动器的大多数非易失性存储器是连续访问存储器,而在缺少诸如维护反向映射信息的技术情况下从存储器读取非连续数据可能是很慢的,其中该维护反向映射信息的技术由于其他原因代价很高。例如,由于硬盘的“寻道时间”,旋转硬盘导致显著的延迟。寻道时间与存储器的读取头与待读取的数据存储在磁盘中的部分相对齐所花费的时间有关。每次读取数据的小碎片,与从磁盘上的连续位置执行相同数据量的单个读取相比是浪费时间的。作为示出问题的示例任意读取操作的寻道延迟近似10ms。如果从碎片化的页面文件读取1-2MB的数据,则总共2-5秒的延迟是常见的。这些延迟使运行在计算机系统上的应用变慢,并往往计算机系统的响应性整体变差。这些问题很容易被计算机系统的用户注意到,并使用户体验变糟。在一些实施例中,计算机系统的存储器管理器实现了预留页面文件部分的预留技术。通过在需要将信息写入页面文件之前在页面文件中预留空间,彼此相关的页面文件可以被写在一起。将相关的页面写在一起减少了取回存储在页面文件中的页面所花费的时间量,因为页面可以连续地读取。在一些实施例中,当页面被写出到页面文件,存储器管理器将首先检查正在被写的页面是否已有预留。如果预留存在,则页面将被写到页面文件的预留部分。在一些实施例中,如果页面没有预留,该预留阻止页面写到页面文件的预留部分。然而,在计算机系统需要大量存储器来运行的情况下,页面文件的预留部分也可由没有预留的页面所使用。例如,如果在页面文件中的空间都已被其他页面占用或预留,则存储器管理器可以使特定的预留“无效”,并将页面写到为不同的页面集合预留的存储器部分。任何合适的技术可以用于跟踪页面文件中可用的存储器的状态。例如,各种类型的数据结构可以用来指示是否为虚拟存储器的特定页面预留了页面文件中的页面。相同或不同类型的数据结构可以用来指示页面文件的页面目前是否被分配,并从而存储数据。在一些实施例中,数据结构可以是位图。存储器管理器可以使用该信息来确定将正在被写到页面文件的新页面写到何处。如上所述,在一些实施例中,当页面文件的所有部分都被分配或预留时,存储器管理器可以决定使预留无效,并将没有预留的页面写在预留部分上。执行这些操作的存储器管理器通常是计算机系统的操作系统的一部分。计算机系统优选地至少具有易失性存储器和非易失性存储器,但是本发明不限于此,并且其他实施 例也是可以的。下面论述可以实现在此描述的存储器管理技术的计算机系统的示例实施例。图I示出在其上可以实现本发明的合适的计算系统环境100的示例。计算系统环境100仅是合适的计算环境的示例,并非旨在表明对本发明的使用或功能的范围的任何限制。计算环境100应被解释为既不依赖也不需要示例运行环境100中示出的任意一个组件或组合。本发明可用众多其他通用或专用的计算系统环境或配置来运行。适于与本发明一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持或膝上设备、蜂窝电话、平板计算机、上网本、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、迷你计算机、主机计算机、包括任意以上系统或设备的分布式计算环境等。计算环境可以执行诸如程序模块的计算机可执行指令。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例行程序、程序、对象、组件、数据结构等。本发明还可以在分布式计算环境中实现,其中任务通过经由通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地计算机存储介质和远程计算机存储介质两者中。参照图1,用于实现页面文件的预留系统的示例系统包括计算机110形式的通用计算设备。计算机Iio的组件可以包括但不限于处理单元120、系统存储器130、和系统总线121,该系统总线耦合包括系统存储器的各种系统组件到处理单元120。系统总线121可以是包括存储器总线或存储器控制器、外围总线、和使用各种总线架构中任一种的局部总线的若干类型的总线结构的任意一个。通过示例而非限制性的方式,这样的架构包括工业标准架构(ISA)总线、微信道架构(MCA)总线、增强ISA (EISA)总线、视频电子标准协会(VESA)局部总线、和外围组件互连(PCI)总线,也称为夹层总线。计算机110可以包括多种计算机可读介质。计算机可读介质可以是可通过计算机110访问的任意可用的介质,并包括易失性和非易失性存储器、可移动和不可移动介质。以示例而非限制性的方式,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任意方法或技术实现的易失性和非易失性、可移动和不可移动介质,用于存储例如计算机可读指令、数据结构、程序模块或其他数据的信息。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存存储器或其他存储器技术、CD-ROM、数字多功能磁盘(DVD)或其他光盘存储设备、磁盒、磁带、磁盘存储设备或其他磁性存储设备、或可用于存储所需的信息并能够通过计算机110访问的任意其他介质。通信介质通常以诸如载波的调制数据信号或其他传输机制包含计算机可读指令、数据结构、程序模块或其他数据,并且包括任意信息传递介质。术语“调制数据信号”意指其 一个或多个特征被设置或变化以使得对信号中的信息进行编码的信号。以示例而非限制性的方式,通信介质包括诸如有线网络或直接布线连接的有线介质、以及诸如声学、RF、红外和其他无线介质的无线介质。以上任意组合也都应当包括在计算机可读介质的范围内。系统存储器130包括易失性和/或非易失性存储器的计算机存储器介质,例如只读存储器(ROM) 131和随机存取存储器(RAM) 132。基本输入/输出系统(BIOS) 133通常存储在ROM 131中,其包含基本的例程来例如在启动期间帮助在计算机110中的元件之间传送信息。RAM 132通常包含通过处理单元120可立即访问的和/或当前正在其上操作的数据和/或程序模块。以示例而非限制性的方式,图I示出操作系统(0S)134、应用程序135、其他程序模块136、和程序数据137。计算机110还可以包括其他可移动/不可移动的、易失性/非易失性计算机存储介质。仅以示例的方式,图I示出从不可移动、非易失性磁介质读取,或写到该不可移动、非易失性磁介质的硬盘驱动器141。可用于示例性运行环境中的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于磁盘、光盘、磁带盒、闪存存储卡、数字多功能磁盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141通常通过诸如接口 140的不可移动存储器接口连接到系统总线121。以上论述并在图I中示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其他数据的存储。在图I中,例如,硬盘驱动器141图解为存储操作系统144、应用程序145、其他程序模块146、和程序数据147。注意,这些组件与操作系统134、应用程序135、其他程序模块136、和程序数据137可以相同也可以不同。在此给予操作系统144、应用程序145、其他程序模块146、和程序数据147不同的数字以示出它们至少是不同的副本。图I还示出存储页面文件148的硬盘驱动器141,其将在下面更详细地论述。用户可以通过诸如键盘和通常称为鼠标、轨迹球或触摸板的定位设备(未示出)的输入设备将命令和信息输入到计算机110中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏板、卫星天线、扫描仪等。图2示出计算机系统110的示例组件,其可以用在实现具有预留的页面文件的计算机系统的一些实施例中。软件和硬件组件都已示出,并且如果可能,图I中示出的硬件组件通过相同的标记表示。此外,为清楚起见,图2将存储在诸如RAM132的硬件资源上的软件示出为与硬件分离的项,即使图I例如将OS 134示出为存储在RAM 132上。本领域普通技术人员将会理解,软件存储在存储器组件中,并且绘制图2以清晰阐述一些实施例的细节。图2示出包含OS 134、硬盘驱动器141和RAM132的计算机系统110。如上所述,本发明不限于这些特定的组件,而是它们仅被选择用来示出本发明的一个实施例。
如参照图I所述,RAM 132是通常保存用于目前正在处理器120上执行的进程的数据的存储器。存储在存储器部分中的活动使用的数据定义了“工作集”260。通常将RAM132分成称为“页面”的存储块。页面是具有特定字节数的存储块。典型的页面为4KB,但页面不限于此,并且可以是任意尺寸。包含在工作集260中的页面可以称为活动页面。硬盘驱动器141存储页面文件148,其可以用于存储数据页面,并扩展计算机系统110的存储能力。本领域普通技术人员将会理解,硬盘驱动器141不限于单个页文件148。实际上期望的是,可以通过存储器管理器210来使用多个页面文件。为清楚起见,仅示出单个页面文件148。此外,计算机系统110不限于单个硬盘驱动器141。计算机系统110可以包括每个都有一个或多个页面文件存储在其上的多个硬盘驱动器、或其他存储器存储设备。不是计算机系统110 —部分的外部存储器设备也可以存储页面文件。OS 134包括存储器管理器210。通常存在上百个OS 134的其他组件,但是为清楚起见未示出它们。存储器管理器210通常处理OS 134和存储器设备之间的交互。存储器管理器210的操作包括将存储器分配给运行在处理器120上的进程。存储器管理器210通过 实现虚拟存储器系统向使用RAM 132的进程隐藏了 RAM 132和其中的物理页面的细节。虚拟存储器允许运行在计算机系统110上的软件引用虚拟化的存储器地址而无需关注如何管理物理RAM 132的细节。存储器管理器210从软件应用或其他软件组件接收通过虚拟存储器地址标识的有关存储器的请求,并将该请求转化为实现控制物理硬件的动作。例如,存储器管理器210控制RAM 132的读写命令,并控制软件进程和RAM 132之间的数据流。存储器管理器210还处理来自多个进程的请求,并确定如何在运行在计算机系统110上的所有进程间分配存储器资源。通过存储器管理器210将虚拟存储器分配给进程。在一些实施例中,一次分配大的页面块。例如,可以以IMB块来分配存储器,其相当于虚拟存储器的256个页面。因为虚拟存储器空间的相邻页面与相同的进程关联,所以这些页面包含相关的信息,并因此可以同时通过处理器120来访问。即使在直接相邻的页面没有保存相关的信息时,也可以一起访问彼此距离阈值数目页面之内的相邻页面,因而通过减少磁盘执行的读取操作的总数来节约时间。为了在虚拟存储器和物理存储器之间进行转化,存储器管理器210可以维护虚拟存储器地址和物理存储器地址之间的映射。为了将虚拟存储器空间中的页面映射到RAM132中的页面,存储器管理器210维护页表212。页表212的一些实施例的细节将结合图3A进行论述。存储器管理器210将比RAM 132中物理存在的页面数目更多数目的虚拟存储器页面分配给进程。为了保留没有对应物理RAM的虚拟存储器的数据,存储器管理器210维护页面文件148,其可以是存储在任意合适类型存储器上的任意有组织的信息集合。页面文件148可以是由计算机系统的OS的文件管理系统来维护的文件,但不一定是这样。以合适的方式组织的存储器的任意合适部分可以用作页面文件。任意合适的存储介质可以用于存储页面文件。用来存储页面文件的存储器的类型可以不同于用来存储活动页面的存储器类型。在一些实施例中,页面文件可以存储在非易失性存储器设备上。存储器可以是连续访问设备。在一些实施例中,存储介质可以是磁盘或固态驱动器。在图2示出的一个实施例中,存储介质为硬盘。
页面文件148可以存储像RAM 132中的数据的页面。但是,因为硬盘驱动器141在访问数据时可能慢得多,所以存储在页面文件148中的页面通常保存处理器120当前不需要的数据。因为存储器管理器210使用页面文件148,页表212不只是将虚拟存储器地址映射到物理RAM地址,而且还将虚拟存储器地址映射到页面文件的各部分。将结合图3A论述页面文件148的一些实施例的细节。存储器管理器210可以维护数据结构以跟踪页面文件的哪些部分当前正在使用中并存储数据。在一些实施例中,该数据结构为分配位图218。分配位图218的每个比特对应于页面文件148中的页面。在一些实施例中,“I”表示页面文件的相应页面在使用中。“O”表示相应的页面没有使用,并且可以通过存储器管理器210分配给页面。虚拟存储器的页面可以处于多种状态。一种此类状态为“活动的”,如上论述的,其意指页面存储在RAM 132中,并且是工作集260的一部分。处理器120可以立即访问活动页面而几乎没有延迟。另一状态为“非活动的”,其意指页面可能存储在页面文件中而没有存储在RAM 132中。存在多种其他状态,包括介于活动和非活动之间的一些状态。例如, 处于“备用”状态的页面既存储在RAM 132中也存储在页面文件148中。在一些实施例中,当工作集260中的页面不使用时,存储器管理器210可以确定该页面可以写到页面文件148。任意合适的策略可以用于确定哪些页面将写到页面文件以及何时写入,包括本领域已知的存储器管理策略。作为这样策略的示例,可以在状态之间的任何转变处将不使用的页面写到页面文件。在一些实施例中,将页面写到页面文件148的过程中的第一步骤可以为“裁剪”页面。裁剪指代将页面添加到修改列表214的行为。在一些实施例中,在裁剪时还可以使用页面写入器222将页面写到页面文件148。一旦页面被写到页面文件,页面从修改列表214移动到备用列表216。备用列表216跟踪不但仍然在RAM132中而且在页面文件148中存储在硬盘141上的页面。如果存储器管理器210需要访问备用列表216上的数据,则可以立即从RAM 132读取该数据,因为该数据仍旧保留在那里。另一方面,如果存储器管理器210为一些其他进程需要更多的RAM 132页面,它可以分配在备用列表上的RAM页面而不会丢失那些页面中的数据,因为该数据也缓存在页面文件148中。在一些实施例中,已经写到页面文件148的页面在RAM 132中可能会被改变。这些页面称为“脏的”,并且被重新添加到修改列表214。在为不同的目的分配RAM 132中的相应页面之前,页面写入器222再次将脏页面写到页面文件。因此,修改列表上的页面比备用列表上的页面需要花费更长的时间来重新分配。在一些实施例中,修改列表214上的页面没有被立刻写到页面文件,因为以一个长的连续写入的方式将更大的页面组写到页面文件会节省时间。例如,在发起写入命令之前,存储器管理器210可以等待直到存在IMB要写入的修改数据。类似地,在一些实施例中,优选地,裁剪的页面不被立即写到页面文件148。可能有利的是等待直到存在需要写到页面文件的若干页面,以使页面写入器222可以执行更少的写入命令,并因而节省宝贵的时间。还可能有利的是等待写入页面直到一些其他存储器管理器操作不再使用硬盘141。一旦存储器管理器210已经确定可能被写到页面文件148的页面,存储器管理器210会检查是否有其他页面可能也要写到页面文件148。在一些实施例中,当从工作集260裁剪页面时,存储器管理器210将检查虚拟存储器中的任意相邻页面是否适合进行裁剪。若此,存储器管理器210可以一次裁剪附近的多个相关页面。再次,因为数据可以写到硬盘141的相邻页面,所以减少了页面写入器222将数据写到页面文件148所花费的时间。稍后还可以减少从页面文件148读取出页面所需的时间量。在一些实施例中,如果存储器管理器210发现可以裁剪的附近的一些其他页面,但是它们之间存在不被裁剪的页面,则页面写入器222仍旧对这些分离的页面执行连续写入。页面写入器222通过在写入与不能被裁剪的页面相对应的页面文件250的部分时使用“虚拟”数据来这样做。使用虚拟数据允许页面写入器222进行连续写入,而不是写到磁盘上的多个位置。这使数据写入加速,因为与在硬盘驱动器141上读写非连续位置相关联的寻道时间会使存储器操作变慢,如上所述。当存储器管理器决定将页面写到页面文件148时,可以为与将被写到页面文件148的页面有关的存储器页面预留页面文件中的空间。相关的页面可以是在将页面写入的同时可能被访问的其他页面。该预留的空间使得可以有效地访问待写入的页面,和写到预留空间中的相关页面。例如,在一些实施例中,当存储器管理器210检查要裁剪的相邻页面时,相关页面 可能尚未准备好被裁剪并写到页面文件148。可以分配正在被裁剪页面的相邻页面,但是该相邻页面甚至还没有使数据存储在其中。或者相邻页面可以保存最近被处理器访问并因此尚未准备好被裁剪的数据。为了确保更少碎片的页面文件148,存储器管理器210可以为这些相邻页面预留页面文件148的一部分来帮助将彼此相关的页聚集,以使在相关页面被写到页面文件时,这些相关页面在页面文件中靠近在一起。可以为尚未准备好被裁剪的页面预留页面文件的部分。词语“靠近”不要求页面为连续的或按照特定的顺序,而是页面可能被一起读取。在一些实施例中,“靠近”或“相邻”意指彼此在某数目阈值的页面之内。在页面存储在连续存储器的实施例中,预留的空间与其中写入数据的位置相邻,在其之前或之后,以使得如果同时访问页面和写入到预留空间的相关数据,则可以以连续的操作来访问它们。当需要从页面文件148读回这些页面时,相关页面的聚集将减少硬盘驱动器141从页面文件读取数据所花费的时间,因此减少了将页面重新加载到RAM 132中的工作集260所需的时间。本领域普通技术人员将理解,所有的页面都不需要具有预留。应当理解,由于有限的存储器大小,作出的预留越多,该预留帮助维护去碎片化的页面文件的作用就越少。对于一些类型的页面,预留证明是极其有用的。对于其他页面,它对于达到去碎片化页面文件的目标可能没有帮助。例如,分配较小数目的页面的进程,或随机且不连续地利用页面的进程可能都不会从预留中受益。同时,被认为是不重要的后台进程或应用也不会被给予预留。期望的是存储器管理器210可以应用任意数目的准则来确定页面是否应当获得预留。例如,存储器管理器210可以使用进程的优先级排名来确定哪些页面将被给予预留。还期望的是,存储器管理器210可以知晓哪些进程不会从预留中受益,并停止为那些进程作出预留。例如,可以通过存储器管理器210降低已发现不能受益于预留的进程的优先级,使得将来不会为这些进程作出预留。预留不限于在特定的时间作出。在一些实施例中,可以在裁剪页面时和在页面写到页面文件148之前为页面及其相邻页面作出预留。在其他实施例中,可以在其他时间作出预留,例如在页面写到页面文件148时,或者在分配相关页面时。
还期待的是,在一些实施例中,相关页面在虚拟存储器中可以是不相邻甚至彼此不相近。存在由存储器管理器210使用的其他准则以确定页面是否彼此相关,并因此应当彼此相近地写在页面文件148中。例如,在一些实施例中,当存储器管理器210正在将页面写到页面文件148,并且该页面属于特定进程时,存储器管理器210可以为属于该同一进程的其他页面作出预留,即使它们在虚拟存储器空间中并未靠近正在被写入的页面。可以使用数据结构来跟踪预留。该数据结构的细节可以变化,并且本领域技术人员将认识到,存在多种方式来实现数据结构以保存预留信息。在一个实施例中,预留数据结构被合并到页表212中,减少了实现系统的开销量。现将参照图3A论述页表的细节。图3A示出页表212的简化版本。本领域技术人员将认识到,存在多种方式实现页表。在一个实施例中,页表可以使用链表来实现。但是,页表的具体实现对于本发明来说不是至关重要的。为了清楚起见,图3A中仅示出与5个虚拟存储器页面相对应的条目,但是本领域技术人员将认识到,数据结构可以扩展到数千或数百万的页面。图3A中示出的部分页表212关注于页表212如何将虚拟存储器地址1_5映射到页面文件250中的位置。在此,所述位置表示为页面文件250中的偏移330。页面212的每行是页表条目。存在相似的页表条目以将虚拟存储器地址映射到RAM 132中的物理存储器地址。在一些实施例中,标记为偏移330的列将虚拟地址映射到RAM 132中的页面还是页面文件由标志(未示出)来确定。存在页面文件可以使用的多个其他标志。页表212的列320存储表示相应的虚拟地址在页面文件中是否有预留的值。在一些实施例中,列320中为“I”的条目被存储器管理器210解释为意指为该页面预留了页面文件的一部分。“O”的条目指示没有预留。本领域普通技术人员将会理解,存在其他的方式实现这样的预留信息,并且页表中的列仅是一个示例实施例。页表212的列310确定在相应的虚拟地址处的页面数据是否存储在页面文件中。在一些实施例中,列320中为“I”的条目被存储器管理器210解释为意指页面文件的一部分包含该页面的数据。“O”的条目指示还没有为该页面分配页面文件的一部分。本领域普通技术人员将会理解,存在其他的方式实现这样的预留信息,并且页表中的列仅是一个示例实施例。在一些实施例中,在列310和320中分别指示分配信息和预留信息的值可以被视为页表条目中的标志。页表212的列330给出页面文件250中的偏移,该偏移对应于该页表条目的虚拟地址。例如,页表212的虚拟地址I指示该页面的数据被存储5页到页面文件250。列310指示虚拟地址I在页面文件中被分配,意味着数据存储在页面文件250的该部分中。虽然虚拟地址2的页表条目指示没有数据,但是存在为来自虚拟存储器的页面2的数据所保留的部分页表。列330确定页面文件250的保留部分在3页中。图3A还示出简化版本的页面文件。本领域技术人员将会理解,这是为清楚起见而进行的简化,并且存在本发明所期待的页面文件的其他实施例。在描述的实施例中,因为以页面增量的方式进行存储器分配,所以以页面为单位测量页面文件250中的偏移。第一列指示偏移值,但是本领域技术人员将会理解,在一些实施例中该列实际上不存在,并且在图3A中示出仅为清楚起见。
如上所述,虚拟存储器的第一页的数据位于页面文件250的5页中。见页面文件250的列340,页面文件250中的第五页保存“数据1”,其表示第一虚拟地址页的数据。页面文件250的第三页在列340示出“RESV”,其表示页面文件的该页被预留。图3B示出分配位图350,其对应于页面文件250。分配位图350是保存与页面文件250相对应的分配信息的数据结构的示例实施例。本领域技术人员将会理解,存在很多可以保存类似信息的其他数据结构。图3B中分配位图350和图3A中页面文件250的相应行示出当页面文件250存储数据时,分配位图350中的条目为“I”。存储器管理器210可以将分配位图350用作检查页面文件250的哪些部分空闲以及哪些部分有数据的快速高效的方式。图3C示出预留位图360,其对应于页面文件250。预留位图360是保存与页面文件250相对应的预留信息的数据结构的示例实施例。本领域技术人员将会理解,存在很多可以保存类似信息的其他数据结构。图3C中预留位图360和图3A中页面文件250的相应行示出当页面文件250中的·页被预留时,预留位图360中的相应条目为“I”。存储器管理器210可以将预留位图360用作检查页面文件250的哪些部分空闲以及哪些部分被预留的快速高效的方式。本发明的又一实施例可以是使用预留将页面写到页面文件的方法。可以通过图I和图2中示出的计算机系统110的一些组件来实现该方法的一些实施例。实施例还可以使用诸如结合图3A-C描述的数据结构。将结合图4论述该方法的示例实施例。用于将页面写到页面文件250的方法400在步骤402处存储器管理器210决定使用页面写入器222来写页面时开始。存储器管理器210在步骤404处检查针对正在被写入的页面的预留是否存在。在一些实施例中,该步骤通过定位正在被写入页面的页表条目并检查页表212的列320中的条目来实现。如果该条目指示存在预留,则存储器管理器210将来自该条目的列330中的偏移值用作将要写入的页面文件中的位置。预留系统可以不严格遵守以上所述的预留指示符。如上所论述,可能有时候存在很高的存储器使用率,这时存储器管理器210将决定忽略预留并将页面写到页面文件的已经预留的位置处。在一些实施例中,存储器管理器210检查分配位图350以确定一些其他页面是否已经将数据写到页面文件250中的预留页面(步骤406)。如果分配位图350指示页面文件250中的页面在使用中,则存储器管理器210将决定将数据从该页面写到页面文件250的不同部分。在一些实施例中,存储器管理器将选择将数据写到页面文件250中既未分配又未预留的页面(步骤410)。在一些实施例中,使用分配位图350和预留位图360确定页面文件250的部分是否未分配也未预留。如果存储器管理器210不能定位既未分配又未预留的页面文件250的部分,则该数据将被写到未分配但具有预留的页面。通过写覆盖预留,存储器管理器210使该预留无效以用于不同的页面。当预留被无效时,存储器管理器210改变预留位图360中相应的条目,使得其不再指示页面文件的该部分被预留。此外,无论何时页面写入器222将任何数据写到页面文件250中的页面,存储器管理器210都将改变分配位图中的相应条目以指示页面文件的该部分在使用中(步骤412)。存储器管理器210还将页表212的偏移列330中的该条目设置为适当的偏移值,以及设置列310中的分配标志来指示页面数据缓存在页面文件250中。返回至步骤406,如果页面文件250的预留页面没有被不同页面所使用,则页面写入器222将数据从该页面写到通过偏移列330中的条目指示的页面文件250的部分(步骤408)。再次,无论何时页面写入器222将任意数据写到页面文件250中的页面,存储器管理器210都将改变分配位图中的相应条目以指示页面文件的该部分在使用中(步骤412)。存储器管理器210还将页表212的偏移列330中的条目设置为适当的偏移值,并设置列310中的分配标志。返回至步骤404,如果不存在针对正在被写入的页面的预留,则方法400继续至步骤410,其中数据被写到未分配也未预留的页面文件部分。如之前一样,在一些实施例中,可以使用分配位图350和预留位图360来确定页面文件250部分的分配和预留状况。本发明的再一实施例是用于裁剪来自工作集260的页面的方法,其例如通过图5中的方法500来示出。存储器管理器210在作出有关如何以及何时将页面写到页面文件,以及何时为相关页面作出预留时,可以根据各种策略来操作。在一些实施例中,方法500开始在步骤502,其中存储器管理器210决定裁剪页面。该决定可以根据很多原因作出,包括自从页面被使用或被修改以来过去多长时间。本领域技术人员将会认识到,这不是裁剪页面的唯一原因,并且本发明不限于此。 在步骤503处,确定将经裁剪的页面写入页面文件中的位置。在步骤504处,为在虚拟存储器中与正在被裁剪的页面相邻的页面作出预留。这些预留将在后续写操作400中用以使得虚拟存储器的相关页面在页面文件250中彼此靠近。在步骤506处,被裁剪的页面被添加到修改列表214。一旦该页面被添加到修改列表214,正式的页面裁剪结束508。在步骤510处,其可以在裁剪完成后的任意时刻发生,来自页面的数据被写到页面文件250。在步骤512处,页面可以从修改列表412移除并添加到备用列表512。位于备用列表反映了与该页面相关联的数据既在RAM 132中也在页面文件250中。在某一后续时刻(未示出),页面可能由于处理器改变了与该页面相关联的数据而变成“脏页面”。当这样的情况发生时,该页面可以从备用列表216移走并添加回到修改列表214。裁剪方法500的步骤不限于图5中示出的特定顺序。例如,在一个实施例中,可以推迟将页面写到页面文件(步骤510),直到发现其他页面同时写到页面文件250,以使得通过连续地写入数据来节省时间。在另一实施例中,可以在页面添加到修改列表或写到页面文件250之后,发生针对附近页面的页面文件部分的预留(步骤504)。因此已经描述了本发明的至少一个实施例的若干方面,将会明了,本领域技术人员将能轻易地进行各种替换、变形和改进。这些替换、变形和改进旨在作为本公开的一部分,并且在本发明的精神和范围内。相应地,前面的描述和附图仅为示例方式。本领域普通技术人员将认识到,为清楚起见,已经简化了在此公开的许多概念,并且本发明不限于这些简化的实施例。可以以众多方式中的任一种实现本发明的上述实施例。例如,可以使用硬件、软件或其组合来实现这些实施例。当用软件实现时,软件代码可以在无论是在单个计算机中提供的还是在多个计算机间分布的任意合适的处理器或处理器集合上执行。这样的处理器可以实现为集成电路,在集成电路组件中具有一个或多个处理器。但是可以使用任意合适格式的电路来实现处理器。此外,计算机可以具有一个或多个输入和输出设备。这些设备可用来呈现用户接口等。能够用来提供用户接口的输出设备的示例包括视觉呈现输出的打印机或显示屏幕,以及听觉呈现输出的扬声器或其他声音生成设备。能够用于用户接口的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板的定位设备。作为另一示例,计算机可以通过语音识别或其他听得见的格式来接收输入信息。这样的计算机可以以任意合适的形式通过一个或多个网络互连,包括作为局域网或诸如企业网或因特网的广域网。这样的网络可以基于任意合适的技术,并且可以根据任意合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。此外,在此概括的各种方法或进程可以编码为可执行在采用多个操作系统或平台中的任一个的一个或多个处理器上的软件。另外,这样的软件可以用很多合适的编程语言和/或编程或脚本工具来编写,并且还可以编译成可执行的机器语言代码,或在框架或虚拟机上执行的中间代码。在这方面,本发明可以体现为用一个或多个程序编码的计算机可读介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘)、紧致盘(CD)、光盘、数字化视频盘(DVD)、磁带、闪存存储器、现场可编程门阵列或其他半导体设备中的电路构造、或其他非 临时的有形的计算机存储介质),当在一个或多个计算机或其他处理器上运行该一个或多个程序时,其执行实现上述本发明各种实施例的方法。该一个或多个计算机可读介质可以是可传输的,以使存储在其上的一个或多个程序可以加载到一个或多个不同的计算机或其他处理器上,以实现上述本发明的各方面。在此用到的术语“非临时的计算机可读存储介质”仅包含可以被视为产品(即产品物件)或机器的计算机可读介质。术语“程序”或“软件”在此以一般的意义用于指代可被用以对计算机或其他处理器进行编程来实现上述本发明的各方面的任意类型的计算机代码或计算机可执行指令集合。另外,应当明了,根据此实施例的一个方面,当运行时执行本发明的方法的一个或多个计算机程序无需驻留在单个计算机或处理器上,而是可以以模块化的方式分布在多个不同的计算机或处理器中以实现本发明的各方面。计算机可执行指令可以有很多形式,例如由一个或多个计算机或其他设备执行的程序模块。通常,程序模块包括例行程序、程序、对象、组件、数据结构等,其执行特定的任务或实现特定的抽象数据类型。通常可以根据需要在各实施例中组合或分布程序模块的功倉泛。此外,可以以任意合适的形式在计算机可读介质中存储数据结构。为了便于说明,数据结构可以示出为具有通过该数据结构中的位置相关的字段。这样的关系同样可以通过利用传递字段之间关系的计算机可读介质中的位置指定字段的存储来获得。但是,任意合适的机制都可以用来建立数据结构的字段中信息之间的关系,包括通过使用指针、标签或建立数据元素之间关系的其他机制。可以单独、组合或以在前面描述的实施例中没有具体论述的各种排布使用本发明的各方面,并且因此没有将其应用限制于在前面描述中阐述的或在附图中图解的组件的排布和细节。例如,在一个实施例中描述的方面可以以任意方式与其他实施例中描述的方面进行组合。此外,本发明可以体现为一种方法,该方法的示例已经提供。作为该方法的一部分执行的动作可以以任意合适的方式进行排序。相应地,可以将实施例构造为以不同于示出的顺序来执行动作,其可以包括同时执行一些动作,即使说明性的实施例中示出为连续的动作。
在权利要求中使用诸如“第一”、“第二”、“第三”等序数术语来修饰权利要求元素本身并未暗示一个权利要求元素对另一权利要求元素的任何优先级、优先地位或顺序,或者执行方法的动作的时间顺序,而仅仅是用做区别具有特定名称的权利要求元素与(除使用序数术语以外)具有相同名称的另一元素的标记以区分这些权利要求元素。此外,在此用到的措辞和专有名词是出于描述的目的,并且不应视为限制性的。在此使用“包括”、“包含”或“具有”、“含有”、“涉及”及其变形 都意在包含其后所列出的项及其等价物,以及另外的项。
权利要求
1.ー种操作具有第一类型存储器和第二类型存储器的计算设备的方法(500),所述第一类型存储器存储活动存储器页面的工作集,所述方法包括 确定(503)其中所述工作集的第一页面的第一数据将被写入的所述第二类型存储器中页面文件(250)的第一部分; 至少预留(504)与所述页面文件的第一部分相邻的所述页面文件(250)的第二部分,以用于虚拟存储器空间中离所述第一页面(302)最多不超过阈值数目页面的ー个或多个相邻页面。
2.如权利要求I所述的方法,还包括 将所述第一页面的第一数据写到(510)页面文件(250)的所述第一部分; 确定(402)将第二页面(302)的第二数据写到所述页面文件(250); 检查(404)是否存在针对所述第二页面(302)的预留,所述预留为所述第二页面(302)的第二数据预留所述页面文件(250)的第二部分;以及 如果存在针对所述第二页面的预留,则将所述第二页面(302)的第二数据写到(406)所述页面文件(250)的第二部分。
3.如权利要求2所述的方法,还包括 在写入(408)所述第二页面的第二数据之前,检查所述页面文件的第二部分是否已经在使用中。
4.如权利要求3所述的方法,还包括 如果所述页面文件的第二部分已经在使用中,识别既未分配也未预留的所述页面文件的部分;以及 将所述第二页面的第二数据写到所识别的既未分配也未预留的页面文件的部分。
5.如权利要求3所述的方法,其中检查所述页面文件的第二部分是否已在使用中包括在分配数据结构中访问分配信息。
6.一种适于预留页面文件(250)的部分的计算机系统(110),所述计算机系统包括 易失性存储器(132),其存储多个页面; 非易失性存储器(141 ),其存储所述页面文件(250); 存储器管理器(210),其决定将所述多个页面的第一页面写到所述页面文件(250),所述存储器管理器包括 页表条目,包括确定是否为所述第一页面预留了所述页面文件的第一部分的预留信息; 页面写入器,其在为所述第一页面预留了所述页面文件的第一部分吋,将所述第一页面写到所述页面文件的第一部分。
7.如权利要求6所述的计算机系统(110),其中所述存储器管理器还包括确定所述页面文件的第一部分是否分配给不同页面的分配数据结构。
8.如权利要求7所述的计算机系统(110),其中 当没有为所述第一页面预留所述页面文件的第一部分时,所述页面写入器将所述第一页面写到既未分配也未预留的所述页面文件的部分,所述部分是通过查询预留数据结构和所述分配数据结构确定的。
9.如权利要求7所述的计算机系统(110),其中当所述页面文件的第一部分被分配给不同页面时,所述页面写入器将所述第一页面写到既未分配也未预留的所述页面文件的部分,所述部分是通过查询预留数据结构和所述分配数据结构所确定的。
10.如权利要求6所述的计算机系统(110),其中当所述存储器管理器决定将第二页面(502)写到所述页面文件的第二部分时,预留系统至少预留(504)与所述页面文件的第二部分相邻的所述页面文件(250)的第三部分,以用于虚拟存储器空间中离所述第二页面(302)最多不超过预定数目页面的ー个或多个相邻页面。
全文摘要
一种用于使用为相关存储器页面预留页面文件部分的技术来维护计算机系统的页面文件的系统和方法。虚拟存储器空间中彼此相近的页面往往存储相关的信息,并且因此确保它们在页面文件中彼此相近地存储是有益的。这样增加了从页面文件读取数据的速度,因为当从存储页面文件的磁盘驱动器读回虚拟存储器地址空间中的相邻页面时,该磁盘驱动器的总寻道时间会减少。通过实现使得相关页面彼此相邻存储的预留系统,提高了计算机系统的存储器管理的效率。
文档编号G06F12/08GK102708065SQ201210057988
公开日2012年10月3日 申请日期2012年3月7日 优先权日2011年3月7日
发明者L.王, M.伊根, Y.M.贝克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1