存储器扫描方法和装置与流程

文档序号:13041767阅读:254来源:国知局
存储器扫描方法和装置与流程

相关申请

本申请要求享有于2015年3月27日提交的题为“memoryscanningmethodsandapparatus”的、序号为14/671,764的美国专利申请的优先权。序号为14/671,764的美国专利申请的全部内容通过引用并入本文。

本公开总体上涉及计算平台,并且更具体地涉及存储器扫描方法和装置。



背景技术:

恶意软件检测技术包括针对已知指示恶意软件的模式或签名对存储器进行扫描。

附图说明

图1是根据本公开的教导构建的示例计算平台的图示。

图2是图1的示例扫描管理器的示例实现方式的框图。

图3示出了与图2的示例邻接映射器相关联的示例地址。

图4示出了与图2的示例定序器相关联的示例序列。

图5是表示可以被执行以实现图1和/或图2的示例扫描管理器的示例机器可读指令的流程图。

图6是表示可以被执行以实现图1和/或图2的示例扫描管理器的示例机器可读指令的流程图。

图7是表示可以被执行以实现图1和/或图2的示例扫描管理器的示例机器可读指令的流程图。

图8是表示可以被执行以实现图1和/或图2的示例扫描管理器的示例机器可读指令的流程图。

图9是通过执行图5、图6、图7、和/或图8的示例机器可读指令来实现图1和/或图2的示例扫描管理器的示例处理系统的框图。

具体实施方式

恶意软件检测系统和/或技术涉及针对已知对应于恶意元素(例如,恶意软件、可疑的通信、病毒等)的签名(例如,模式)来扫描计算平台的元素(例如,存储在盘上的文件)。为了避免检测,一些恶意软件对其自身进行伪装,以使得在恶意软件不活动时对恶意软件进行检测很困难。一种这样的伪装恶意软件的技术涉及打包。当被打包时,恶意软件被伪装,以使得恶意软件不展示(至少在打包时)警告恶意软件检测系统在计算平台上存在恶意软件的签名。打包通过压缩原始代码并在恶意软件不活动时保持原始代码被压缩来模糊化恶意软件的原始代码。典型地,为了能够攻击计算平台,恶意软件需要进行解包。存在针对处于正在被解包或以其它方式活动并且攻击计算平台的进程中的恶意软件来扫描系统存储器的方法。然而,这些方法涉及高开销和长扫描间隔,这是由于例如需要扫描大量的存储器以及扫描的定时可能与活动地利用处理资源的其它应用和/或进程重合。也即,检测正在被解包或正处于攻击计算平台的进程中的恶意软件在计算上是昂贵的,并且经常不利地影响性能、用户体验、电池寿命、吞吐量等。

本文公开的示例方法和装置通过将存储器扫描(例如,针对恶意软件指示的模式)集中在最近(例如,当前和/或在阈值量的周期或时间内)被存取(例如,读取和/或修改)的存储器的区域上来改进恶意软件检测系统和/或技术。换言之,本文公开的示例方法和装置通过识别最近被存取的存储器的特定区域并且将一个或多个存储器扫描限制到这些最近被存取的存储器的特定区域来改进恶意软件检测系统和/或技术。

与最近被存取的存储器的另一区域相比,最近未被存取的存储器的区域不太可能包括恶意软件。例如,与最近未被存取的存储器的区域相比,最近被存取的存储器的区域更有可能自从前一次扫描被修改。因此,本文公开的示例方法和装置避免了计算资源的浪费消耗,否则扫描最近未被存取的存储器会引发计算资源的浪费消耗。本文公开的示例方法和装置将存储器检查集中在最近被存取的存储器区域上,而不是无差别地扫描存储器。因此,本文公开的示例技术被称为按需深度存储器检查(od-dmi)。

本文公开的示例利用诸如地址转换系统的存储器管理系统的方面来识别最近被存取的存储器的区域,一个或多个扫描可以集中于(例如,限定于)该最近被存取的存储器的区域。一般地,地址转换系统提供比在特定机器上物理地可用的地址空间在概念上更大的地址空间,从而为组件(例如,诸如客户机(guest)应用的虚拟组件)提供更大的地址空间来在其中进行操作。地址转换系统经常利用分页结构(例如,页表、页目录等)将虚拟地址(例如,线性地址)转换为物理地址(例如,客户机物理地址和/或主机(host)物理地址)。下面详细描述示例地址转换系统的操作。本文公开的示例与地址转换系统的一个或多个组件进行交互(例如,分析、监测、和/或修改)以高效地确定最近存取了存储器的哪些区域。在本文公开的一些示例中,利用分页结构的一个或多个特定位或标志(例如,存取位(accessedbit)和/或脏位(dirtybit))来识别最近被存取的存储器的区域和/或用于进一步考虑作为最近被存取的存储器的候选。附加地或替代地,本文公开的示例对转换后备缓冲器(tlb)的活动进行监测,以识别最近被存取的存储器的区域和/或用于进一步考虑作为最近被存取的存储器的候选。

本文公开的示例为扫描器提供存储器的哪些区域最近被存取的信息,从而使得扫描器能够将一个或多个存储器扫描集中在存储器的特定区域上,从而节省资源并实现更快的扫描。此外,本文公开的示例认识到恶意软件指示的模式或签名可以跨越页边界。因此,本文公开的示例识别与所识别出的最近被存取的存储器的区域相关联的一个或多个邻接。本文公开的示例利用所识别出的邻接将存储器扫描引导到其中恶意软件指示的模式可能已经跨越边界的存储器的区域中。

因此,本文公开的示例方法和装置利用与地址转换系统和/或存储器管理系统相关联的信息将一个或多个存储器扫描限定于最近被存取的存储器的(多个)区域和/或与最近被存取的(多个)区域相邻的(多个)区域。换言之,本文公开的示例方法和装置利用与地址转换系统和/或存储器管理系统相关联的信息来实现忽略最近未被存取的存储器的(多个)区域的一个或多个存储器扫描。由于要扫描的存储器的量经由本文公开的示例方法和装置而显著地减少,对应的存储器扫描消耗更少的资源(例如,处理资源和/或活动存储器),不太可能导致漏报(falsenegative),并且将更快地识别例如恶意软件指示的模式。

图1示出了其中可以实现本文公开的示例的示例计算平台100。图1的示例计算平台100包括安全应用102,其为示例计算平台100提供一个或多个安全措施。图1的示例安全应用102包括根据本公开的教导构建的扫描器104和扫描管理器106。图1的示例安全应用102的任务是保护示例计算平台100免于恶意软件。图1的示例安全应用102维护多个恶意软件指示的模式,其已经被识别(例如,由安全应用102的开发者)为潜在地对应于计算平台100受例如恶意软件感染。示例恶意软件指示的模式对应于的示例恶意软件包括模糊化的(例如,加密和/或打包的)文件、多态恶意软件、和/或无文件的恶意软件,例如,利用反射dll(动态链接库)注入技术的互联网蠕虫、浏览器漏洞、和/或恶意代码。在图1所示的示例中,示例安全应用102使用的恶意软件指示的模式由与安全应用102相关联的实体(举例来说,例如,安全应用102的开发者)填充(例如,经由通过网络与服务器进行通信)。

如下面结合图2详细公开的,计算平台100中的图1的示例扫描管理器106与示例地址转换系统108进行交互以识别最近被存取(例如,读取和/或写入)的物理存储器110的(多个)区域。此外,图1的示例扫描管理器106识别与最近被存取的(多个)区域相邻的(多个)存储器区域。图1的示例扫描管理器106向扫描器104提供与所识别的最近被存取的物理存储器110的(多个)区域以及对应的(多个)相邻区域相关联的识别信息(例如,地址)。图1的示例扫描器104使用所接收的(多个)标识符将一个或多个存储器扫描限制或限定于例如物理存储器110的(多个)对应区域。换言之,示例扫描管理器106使得扫描器104能够在(多个)存储器扫描中包括物理存储器110的最近被存取的(多个)部分,并且从(多个)存储器扫描中忽略其它最近未被存取的部分,从而显著地减少对物理存储器110中的多少进行扫描。如上面指出的,存储器的最近未被存取的部分不太可能受到恶意软件的影响,这是因为例如之前的扫描可能已经发现了驻留在这些区域中的任何恶意软件。通过使得示例扫描器104能够扫描更少的存储器并将这种扫描集中于更有可能(例如,相对于最近未被存取的存储器)包括恶意软件指示的模式的存储器,示例扫描管理器106改进扫描器104和计算平台100的性能。

此外,在一些示例中,扫描管理器106通过将与安全应用102相关联的一个或多个任务或操作分配给一个或多个协处理器(举例来说,例如,图形处理单元(gpu)115)来减轻放置在示例计算平台100的计算复合体114的中央处理单元(cpu)112上的处理负载。也即,图1的示例扫描管理器106可以将一些计算任务委托或卸载给(多个)协处理器(例如,gpu115),而不是依赖于cpu112来执行由安全应用114实现的(多个)计算任务中的全部。通过利用不同的处理资源(例如,cpu112和/或诸如gpu115的一个或多个协处理器),相对于仅利用cpu112来执行安全任务且使cpu112负担安全任务的执行的系统,图1的示例扫描管理器106能够实现更高效且更积极的扫描(例如,更频繁的扫描、在所测试的模式的数量方面更全面的扫描、和/或在所扫描的存储器的量方面更广泛的扫描)。

下面结合图2详细公开了扫描管理器106的示例实现方式、扫描管理器106与地址转换系统108之间的示例交互、以及由扫描管理器106将(多个)安全任务示例委托给(多个)协处理器。

图1的示例地址转换系统108提供了虚拟组件(例如,虚拟机、客户机应用、虚拟机监测器(vmm)、客户机操作系统等),这些虚拟组件中的一个在图1中作为客户机应用116示出,与物理存储器110的虚拟视图或透视图一起。物理存储器110的虚拟视图模拟大于物理存储器110的、其中可以执行操作的地址空间。虽然图1的示例包括客户机应用116,但是示例计算平台100可以包括附加的或替代的(多种)类型的虚拟组件。此外,虽然下面结合图1的客户机应用116描述了示例安全应用102和示例扫描管理器106,但是示例安全应用102和示例扫描管理器106可以与附加的或替代的(多种)类型的虚拟组件结合地使用。

为了支持对物理存储器110进行虚拟化,图1的示例地址转换系统108利用扩展页表(ept)机制或特征。因此,当客户机操作系统116执行涉及存储器的操作时,客户机应用116向地址转换系统108提供对应的线性地址,该地址转换系统108将线性地址转换为客户机物理地址,并且将客户机物理地址转换为主机物理地址。由客户机操作系统116提供的线性地址从客户机应用116的角度表示存储器中的位置。为了将线性地址变换为客户机物理地址,图1的示例地址转换系统108包括客户机分页结构,即客户机页目录118和客户机页表120。在图1所示的示例中,客户机分页结构是分层的分页结构。客户机页表120表示多个层级,其中客户机页表120中的一个客户机页表的当前条目包括或者对应于客户机页表120中的另一个客户机页表的地址或者对应于客户机物理地址空间122中的帧的地址。换言之,客户机页表120的条目或者引用另一分页结构或者对页(例如,客户机物理地址空间122中的)进行映射。因此,对示例客户机表120进行遍历以在客户机物理地址空间122中发现客户机物理地址。

在图1所示的示例中,使用指定的控制寄存器(cr3)124来定位客户机页目录118。当对接收到的线性地址进行变换时,线性地址的第一部分与cr3124一起用于获得客户机页目录118中的位置。客户机页目录118中的位置用于定位客户机页表120中的特定的客户机页表。线性地址的第二部分用于标识客户机页表120中的所定位的客户机页表中的条目。在一些示例中,取决于地址转换系统108的分页模式(例如,32位分页、ia-32e分页、pae分页、和/或任何其它分页模式),客户机页表120中的所定位的客户机页表中的所标识的条目可以引用客户机页表120中的另一个客户机页表。如果是,则存取客户机页表120中的所引用的客户机页表。遍历客户机页表120,直到遇到对客户机物理地址空间122的页进行映射的条目为止(或者直到确定发生未命中为止)。当遇到对客户机物理地址空间122的页进行映射的客户机页表120中的条目时,使用该条目(例如,与线性地址的第三部分组合)来识别客户机物理存储器122中的对应于所接收的线性地址的客户机物理地址。

在图1所示的示例中,将经由客户机分页结构获得的客户机物理地址提供给ept分页结构,即扩展页表(ept)126(例如,vt-x2扩展页表)和ept目录128。虽然图1的示例包括ept126和ept目录128,但是附加或替代的二级分页是可能的。示例ept126和示例ept目录128将客户机物理地址变换为对应于物理存储器110中的区域的主机物理地址。由示例ept126和示例ept目录128执行的转换与通过上面描述的示例客户机分页结构执行的转换的相似之处在于,ept126被分层地布置并且被遍历直到ept126的条目中的一个对页进行映射为止。然而,对于ept分页结构,所映射的页对应于物理存储器110中的地址。在所示的示例中,使用客户机物理地址的第一部分(例如,与ept指针一起)来获得ept目录128中的位置。ept目录128中的位置用于定位ept126中的一个。客户机物理地址的第二部分用于标识ept126中的所定位的ept中的条目。在一些示例中,取决于地址转换系统108的分页模式,ept126中的所定位的ept中的所标识的条目可以引用ept126中的另一个ept。如果ept126中的所定位的ept中的所标识的条目引用ept126中的另一个ept,则对下一ept126进行存取。当遍历到达的ept126的条目映射物理存储器110的页而非引用另一分页结构时,该条目用于标识物理存储器110中的主机物理地址。因此,通过客户机分页结构和ept分页结构将在地址转换系统108处接收到的线性地址转换为主机物理地址,并且在物理存储器110中执行对应于线性地址的操作(例如,读或写)。

在图1所示的示例中,地址转换系统108支持用于客户机分页结构(例如,客户机页表120和客户机页目录118)的客户机存取位和脏位(a/d位)130以及用于ept分页结构(例如,ept目录128和ept126)的epta/d位132。在图1所示的示例中,ept位132中的单独的ept位对应于ept分页结构的单独的条目。因此,当存取ept分页结构中的对应条目时,对epta/d位132置位。例如,在遍历上面描述的ept目录128和ept126以将客户机物理地址转换为主机物理地址的进程中,对ept目录128和ept122中的一个或多个条目进行存取。在该遍历期间,置位对应于经遍历条目的epta/d位132,以指示在地址转换中涉及这些条目。因此,对于在将客户机物理地址转换为主机物理地址期间使用的任何ept分页结构条目,对epta/d位132中的对应epta/d位进行置位(例如,置位为‘1’)。在一些示例中,epta/d位132中的“存取”位对应于被读或写的条目,并且epta/d位132中的“脏”位对应于条目处的写。

在遍历客户机分页结构(例如,如上面描述的客户机页目录118和客户机页表120)以将线性地址转换为客户机物理地址期间,对客户机分页结构中的一个或多个条目进行存取。在该遍历期间,置位对应于经遍历条目的客户机a/d位130(例如,置位为‘1’),以指示在地址转换中涉及这些条目。因此,对于在将线性地址转换为客户机物理地址期间使用的客户机分页结构中的任何条目,对客户机a/d位130中的对应客户机a/d位进行置位。在一些示例中,操作系统可以附加地或替代地修改客户机a/d位130。

如下面结合图2详细公开的,图1的示例扫描管理器106使用客户机a/d位130和/或epta/d位132来识别最近被存取的存储器。

在图1所示的示例中,转换后备缓冲器(tlb)134用于高速缓存指示由客户机分页结构和ept分页结构执行的转换的映射。图1的示例tlb134存储映射,以使得如果调用地址转换系统108以再次执行相同的转换,则能够容易地从tb134取回转换的结果,而不必重新遍历分页结构。如下面结合图2详细公开的,图1的示例扫描管理器106利用tlb134来识别最近被存取的存储器。

图2示出了图1的示例扫描管理器106的示例实现方式。图2的示例扫描管理器106包括目标存储器识别器200,其用于基于与图1的示例地址转换系统108的一个或多个方面相关联的信息来识别存储器的最近被存取的(多个)区域。图2的示例目标存储器识别器200包括用于遍历地址转换系统108的分页结构的走行器(walker)202。此外,图2的示例目标存储器识别器200包括a/d位分析器204,其用于收集与走行器202所遍历的分页结构的条目相关联的信息。例如,图2的走行器202遍历ept126和/或ept目录128,并且示例a/d位分析器204确定(例如,在遍历期间和/或在遍历之后)分页结构条目中的哪个分页结构条目具有经置位的epta/d位132。也即,图2的示例走行器202和示例a/d位分析器204确定epta/d位132中的哪一个(多个)在特定时间被置位(例如,置位为‘1’)。为了确定客户机a/d位130中的哪一个(多个)在特定时间被置位(例如,置位为‘1’),示例走行器202遍历例如客户机页目录118和客户机页表120,并且图2的示例a/d位分析器204确定客户机a/d位130中的哪一个(多个)被置位。在一些示例中,a/d位分析器204考虑当存取位被置位时对a/d位130、132进行置位。在一些示例中,a/d位分析器204考虑当脏位被置位时对a/d位130、132进行置位。在一些示例中,a/d位分析器204考虑当存取位或脏位被置位时对a/d位130、132进行置位。

在一些示例中,扫描器104维护epta/d位132的高速缓存。在一些示例中,当走行器202和/或a/d位分析器204确定epta/d位132中的一个或多个是否被置位时,示例走行器202和/或a/d位分析器204引用高速缓存以确定高速缓存是否包括对应的条目。如果是,则能够使用该条目来确定epta/d位132的值。在一些示例中,当使用高速缓存来确定epta/d位132的值时,对epta/d位132清零,并且逐出tlb134中的对应条目,以便于在随后的扫描中对随后的页表存取进行检测和处理。

在一些示例中,走行器202以根条目(例如,对应层级中的最高条目)开始遍历分页结构,例如,ept126的根ept或ept目录128中的条目,并且根据对应的值进行通过该层级。在图2所示的示例中,目标存储器识别器200包括cr3跟踪器206,其用于识别分页结构中的对应于最近活动的进程、线程、或程序的一个或多个根条目。特别地,图2的示例cr3跟踪器206维护(例如,联合虚拟机监测器(vmm))最近(例如,自从之前的扫描)在图1的cr3124中使用的值的集合(例如,列表)。cr3124的值指向对应于活动的进程、线程、程序等的根分页结构的开头,并且因此,cr3跟踪器206维护该值作为分页结构的哪些部分最近活动的指示。在所示的示例中,cr3跟踪器206利用位向量来跟踪cr3值。例如,vmm能够监测最近已经使用了哪些cr3值,并且cr3跟踪器206能够定义位向量,该位向量具有被分配给硬件线程和cr3值的单独的对的位。当特定的cr3值加载到硬件线程上的cr3124中时,位中的对应位由cr3跟踪器206置位。当该硬件线程上的cr3寄存器随后加载有不同的值时,对用于之前的值的对应位清零。这在cr3值用作扫描的起始点时对于检测何时cr3值在任何硬件线程上仍在使用中是有用的。如果是,则应当将该cr3值保留在最近使用的cr3值的列表中。否则,应当从最近使用的cr3值的列表中移除该cr3值。因此,在图2所示的示例中,由图2的cr3跟踪器206提供的值由走行器202用作指示要遍历分页结构的哪些层级的起始点。换言之,当要执行扫描时,cr3值的集合用作应当对哪些分页结构层级进行检查的指示,例如,用于最近存取的指示。当替换cr3124的值时,示例cr3跟踪器206从cr3值的集合中清零对应的值,从而从集合中忽略对应于不活动的线程、进程等的cr3值。在一些示例中,cr3跟踪器206利用目标列表处理器特征来减少cr3加载退出的频率。附加地或替代地,示例cr3跟踪器206能够获得所有有效cr3(例如,从操作系统中)的列表,并且能够使用epta/d位来确定最近使用了这些cr3中的哪些。

图2的示例目标存储器识别器200包括页表识别器207。除了维护活动cr3值的列表之外或者代替维护活动cr3值的列表,图2的示例页表识别器200可以针对格式化为类似页表结构的页对存储器中的全部进行扫描。例如,一些处理器不支持允许完全装填页表条目中的地址字段的物理地址的足够大的物理地址空间。因此,页表条目(例如,64位条目)中的可预测位置中的某些位将为零。经由图2的示例页表识别器207对这样的模式进行扫描可以免除对于获得活动cr3值的列表的需求。也即,能够通过针对指示分页结构层级的位模式对存储器进行扫描来识别活动的分页结构。由图2的示例页表识别器207执行的这种扫描的结果能够用作例如图2的示例走行器202的起始点。可以通过检查从每个可能页表中的条目到其它可能页表的地址的引用来完善针对分页结构的这种扫描的结果,以减少错误匹配。

在一些示例中,随着走行器202遍历分页结构,当走行器202遇到对其而言a/d位130、132的对应a/d位未被置位(例如,清零或置位为“0”)的分页结构条目时,如由a/d位分析器204确定的,走行器202停止遍历通过该层级,并且如果任何分页结构维持未被行走,则返回到例如另一根条目,从该另一根条目开始随后的遍历。例如,图2的走行器202能够递归地遍历分页结构。在一些示例中,走行器202维护在扫描期间之前走行过的页表的列表,并且避免在单次扫描中多于一次地走行同一页表。在一些示例中,走行器202使用一个或多个标准来过滤出某些页表条目使其不被走行。例如,走行器202可以避免走行仅对于管理员模式的存取可用的页表条目。在一些示例中,走行器202避免走行据称位于非ram区域中的页表,例如,由计算平台的bios和/或其它机制报告的。页表位于非ram区域中的指示可能是由于在页表实际上已经由操作系统重新声明并重新用于其它目的之后对该页表进行存取,导致任意的存储器数据被不正确地解释为页表条目因此指向任意的存储器区域。

在一些示例中,走行器202遍历分页结构中的全部(例如,ept目录128的所有条目和ept126的所有页),并且a/d位分析器204和/或走行器202生成当前经置位a/d位130、132的概要(例如,表、列表、或任何其它合适类型的数据结构)。由图2的示例走行器202生成的概要包括关于有对应的a/d位130、132被置位的分页结构条目的信息。由图2的示例走行器202生成的概要的信息指示例如与具有经置位epta/d位132的条目对应的客户机物理地址。在一些示例中,由走行器202和/或a/d位分析器204生成的概要是在识别最近被存取的存储器的进程开始时生成的。在这样的示例中,概要能够用作该进程的起始点和/或能够在识别最近被存取的存储器的整个进程中被引用。可替代地,走行器和a/d位分析器204能够在识别最近被存取的存储器的整个进程中以按需方式获得a/d位132的信息。

图2的示例目标存储器识别器200包括地址识别器208,其用于基于例如由示例a/d位分析器204收集的信息来填充地址列表210。在图2所示的示例中,地址识别器208使用经置位epta/d位130、132(例如,如由a/d位分析器204确定的)来识别最近已经被存取的对应的物理地址(例如,对应于客户机物理地址空间122的区域和/或物理存储器110的对应区域的地址)。在图2所示的示例中,与引用另一分页结构(例如,另一ept表条目)相反,地址识别器208确定ept126的哪些条目具有经置位a/d位132并映射物理存储器110中的页。图2的示例地址识别器208确定与ept126的那些条目(例如,ept126的具有经置位a/d位132并对页进行映射的条目)相关联的物理地址(例如,客户机物理地址)对应于最近被存取的存储器的(多个)区域。此外,图2的示例地址识别器208确定线性地址,扫描器能够通过该线性地址存取被确定为对应于最近被存取的存储器的(多个)区域的物理地址中的每一个。在一些示例中,为了确定对应于所识别的物理地址的线性地址,地址识别器208将预确定的偏移量加到物理地址以得出线性地址。在这样的示例中,出于由地址识别器208确定线性地址的目的而维护预确定的偏移量。

图2的示例地址识别器208利用由示例地址识别器208确定的线性地址来填充地址列表210。因此,图2的示例地址列表210包括对应于最近被存取的存储器(例如,物理存储器110的(多个)区域,和/或从客户机应用116的角度,客户机物理地址空间的(多个)区域)的一个或多个线性地址。如上面描述的,由于最近被存取的存储器与最近未被存取的存储器相比更可能包括恶意软件指示的模式,所以地址列表210的线性地址对应于要由例如图1的扫描器104扫描的目标存储器。

图2的示例目标存储器识别器200包括相邻地址识别器212,其用于识别与由地址识别器208识别为对应于最近被存取的存储器的地址相邻的一个或多个地址。恶意软件指示的模式可以跨越存储器中的边界(例如,页边界)。为了将这样的情况纳入考虑,同时使得存储器扫描能够集中于存储器的特定的(多个)区域(例如,对应于地址列表210中的地址的最近被存取的(多个)区域),图2的示例相邻地址识别器212选择与由地址识别器208识别为对应于最近被存取的存储器的线性地址中的每个线性地址相邻的一个或多个线性地址。例如,当地址列表210填充有第一线性地址时,图2的示例相邻地址识别器212识别与第一线性地址相邻的第二线性地址(例如,随后的线性地址或先前的线性地址)。在图2所示的示例中,相邻地址识别器212将第二线性地址添加到地址列表210。在一些示例中,相邻地址识别器212将添加到地址列表210的条目指定(例如,经由标志或位)为相邻地址。在一些示例中,相邻地址识别器212确定所识别的相邻地址是否已经存在于地址列表210中,并且如果是,则不将所识别的相邻地址添加到地址列表210(例如,以避免冗余)。因此,在一些示例中,地址列表210包括与最近被存取的存储器对应的一个或多个线性地址以及与这些线性地址相邻的一个或多个线性地址。因此,当将地址列表210中的线性地址输出到例如图1的扫描器104时,扫描器104对最近被存取的存储器和存储器的相邻区域的至少一部分进行扫描,以使得扫描器104检测到跨越对应边界的任何恶意软件指示的模式。

图2的示例目标存储器识别器200包括用于识别最近被存取的存储器的tlb活动跟踪器214。在一些示例中,图2的tlb活动跟踪器214除了如上面公开的示例a/d位分析器204之外(例如,与其同时)地操作,以识别最近被存取的存储器。在一些示例中,图2的tlb活动跟踪器214作为对示例a/d位分析器204的替代来操作,以识别最近被存取的页表条目。如上面描述的,图1的tlb134包括从例如线性地址到客户机物理地址和/或从客户机物理地址到主机物理地址的映射。tlb134用作地址转换系统108的高速缓存,以提供对将以其它方式通过遍历通过分页结构获得的地址转换的快速存取。在所示的示例中,刷新tlb134,以使得在给定时间包含在tlb134中的映射对应于最近已经发生的转换。例如,在图1所示的示例中,当扫描存储器的对应区域时,扫描器104从tlb134中清除条目,以使得对存储器的该区域的进一步存取录入到tlb134中,并且使得能够重复对存储器的该区域的进一步扫描。因此,tlb134的条目对应于最近的存储器操作。

图2的示例tlb活动跟踪器214跟踪tlb134的映射,以识别例如映射的线性地址。这样的线性地址对应于最近被存取的存储器,并且因此图2的示例tlb活动跟踪器214存储所识别的线性地址。在一些示例中,tlb活动跟踪器214利用示例地址识别器208来确定与tlb134的映射相关联的线性地址。例如,当包括的tlb134的映射是从客户机物理地址到主机物理地址时,示例地址识别器208确定哪个线性地址与客户机物理地址相关联。如上面公开的,地址识别器208通过例如将预确定的偏移量加到客户机物理地址以得出对应的线性地址来确定线性地址。

在一些示例中,tlb活动跟踪器214维护进入tlb134和从tlb134逐出的日志。在这样的示例中,当将条目添加到tlb134并且当从tlb134逐出条目时,tlb活动跟踪器214更新日志。在一些示例中,tlb活动跟踪器214包括与添加和/或逐出相关联的细节,举例来说,例如,指示对应何时添加到tlb134和/或从tlb134逐出的定时数据。在图2所示的示例中,tlb活动跟踪器214将对应于最近被存取的存储器的线性地址提供给示例地址列表210。在一些示例中,相邻地址识别器212确定相邻的(多个)线性地址,并将其添加到地址列表210。因此,图2的tlb活动跟踪器214向地址列表210提供对应于最近被存取的存储器的线性地址,并且在一些示例中,提供与对应于最近被存取的存储器的线性地址相邻的线性地址。如上面公开的,在图2所示的示例中,将地址列表210中的线性地址提供给扫描器104,以使得扫描器104将一个或多个存储器扫描集中于最近被存取的存储器以及与最近被存取的存储器相邻的存储器。

一些用于虚拟化客户机分页的方法使用vmm来监测加载到tlb134中的客户机线性地址映射。例如,vmm可以对客户机页表建立影子,以使得页表的由客户机软件修改的副本与由cr3124引用并且用于将条目插入到tlb134中的副本分离。响应于由cpu112存取这些页表条目以用于加载tlb条目的目的的尝试,vmm可以按需将页表条目添加到该后一个副本中。vmm能够以与tlb活动跟踪器214类似的方式录入这样的尝试。在一些示例中,除了在扫描对应的存储器之后逐出处理器tlb条目之外,能够由cpu112存取以用于加载tlb条目的目的的页表的副本中的对应页表条目也被移除,以便于vmm注意到对于对应的所映射的存储器的随后的存取。

图2的示例目标存储器识别器200包括清零器216,其用于清零例如客户机a/d位130和/或epta/d位132。在一些示例中,为了清零a/d位130、132,示例清零器216利用tlb134的刷新来执行对a/d位130、132的清零。在一些示例中,这种刷新包括向例如硬件线程发送中断以调用这样的操作。在一些示例中,清零器216在示例走行器202和示例a/d位分析器204遍历分页结构并收集关于a/d位130、132的信息时对a/d位130、132清零。在一些示例中,清零器216在读出待扫描的存储器(例如,到扫描器104)时对a/d位130、132清零。在一些示例中,响应于特定存储器区域被扫描(例如,由图1的扫描器104),清零器216清零对应的客户机a/d位130和/或对应的epta/d位132。附加地或替代地,响应于特定存储器区域被扫描(例如,由图1的扫描器104),图2的示例清零器216将图1的tlb134中的对应条目逐出。在一些示例中,清零器216响应于阈值量的存储器被扫描而对位清零和/或逐出tlb条目。例如,如果第一存储器扫描不扫描至少阈值量的存储器,则图2的示例清零器216可以不对位清零和/或可以不逐出tlb条目。另一方面,如果第二存储器扫描致使阈值量的存储器被扫描,则图2的示例清零器216对位清零和/或逐出tlb条目。

对于在单个ept层级中维护a/d位的替代是在多个ept层级中维护a/d位。诸如客户机应用116的客户机软件能够使用例如vmfunc指令来高效地切换到具有清零a/d位的ept层级。当客户机应用116否则请求对单个层级中的epta/d位132清零(例如,经由图2的清零器216)时,示例客户机应用116可以执行这样的切换。周期地,ept层级中的一个或多个ept层级中的epta/d位132将由例如管理程序清零,以使其在客户机软件寻找具有清零a/d位的ept层级时可供客户机软件选择。在一些示例中,该方法通过减少vmm调用的数量来减少总体开销。例如,当通常需要调用vmm来清零a/d位时,客户机应用116能够相反简单地调用vmfunc指令来切换到已经具有清零位的ept层级。

因此,示例目标存储器识别器200基于与图1的地址转换系统108相关联的信息来生成地址列表210,并且在一些示例中与地址转换系统108进行交互(例如,操纵a/d位130、132和/或刷新tlb134)以确保地址列表210中的线性地址对应于最近被存取的存储器。因此,示例地址列表210包括能够提供给例如图1的扫描器104的最近被存取的存储器及其邻接的存储器的一个或多个指示。在图2所示的示例中,扫描管理器106包括用于将与地址列表210相关联的信息(例如,地址列表210中的线性地址)传送到示例扫描器104的扫描目标输出器218。图2的示例扫描目标输出器218顺序地将地址列表210的条目输出到扫描器104。然而,示例扫描目标输出器218能够采用附加的或替代的传送技术。

图1的示例扫描管理器106包括邻接映射器220和定序器222,其用于针对到扫描器104的改进输出来规定地址列表210的项。换言之,当示例扫描目标输出器218顺序地输出地址列表210的内容时,示例邻接映射器220和示例输出定序器222协作以对地址识别器208的内容进行排序,以使得扫描器104能够更高效地执行扫描。在一些示例中,将如由示例邻接映射器220和定序器222确定的顺序相邻存储器区域整体输出或馈送到扫描器104。

可替代地,在一些示例中,图2的示例邻接映射器220和示例输出定序器222规定待扫描的地址,以便于减少冗余,并且便于对边界进行高效的扫描,而不必扫描整个相邻地址。具体地,示例邻接映射器220确定(例如,客户机物理地址空间122的)哪个物理地址对应于地址列表210中的每个线性地址。每个物理地址对应于物理存储器的区域。图3示出了当第一进程p1和第二进程p2要被扫描时,由图2的示例邻接映射器220做出的示例映射确定300。在图3的示例中,对于第一进程p1,示例邻接映射器220确定线性地址la1映射到物理地址pa1,线性地址la2映射到物理地址pa1,线性地址la3映射到物理地址pa2,以及线性地址la4映射到物理地址pa3。此外,对于第二进程p2,示例邻接映射器220确定线性地址la1映射到物理地址pa2,线性地址la2映射到物理地址pa4,以及线性地址la3映射到物理地址pa5。

图2的示例邻接映射器220使用映射确定300从线性地址的角度来识别物理地址之间的邻接。图3中示出了如由邻接映射器220确定的这些物理邻接302。例如,由于物理地址pa2在进程p1中由物理地址pa3跟随以及在进程p2中由物理地址pa4跟随,如映射确定300所指示的,所以邻接映射器220确定位于物理地址pa3处的存储器的(多个)区域应当结合位于物理地址pa2处的存储器的(多个)区域被扫描,并且位于物理地址pa4处的存储器的(多个)区域应当结合位于物理地址pa2处的存储器的(多个)区域被扫描。因此,将扫描物理地址pa2与物理地址pa3之间的边界,从而检测跨越该边界的恶意软件指示的模式。此外,将扫描物理地址pa2与物理地址pa4之间的边界。在图3的示例中,由于物理地址pa1在进程p1中由物理地址pa1跟随以及在进程p1中由物理地址pa2跟随,如映射确定300所指示的,所以邻接映射器220确定位于物理地址pa1处的存储器的(多个)区域应当结合位于物理地址pa1处的存储器的(多个)区域被扫描,并且位于物理地址pa2处的存储器的(多个)区域应当结合位于物理地址pa1处的存储器的(多个)区域被扫描。下面结合图4公开了冗余的消除。此外,在图3的示例中,由于物理地址pa4在进程p2中由物理地址pa5跟随,如映射确定300所指示的,所以邻接映射器220确定位于物理地址pa5处的存储器的(多个)区域应当结合位于物理地址pa4处的存储器的(多个)区域被扫描。

在所示的示例中,定序器222基于由示例邻接映射器220生成和/或获得的信息来生成待提供给扫描器104的一个或多个序列。在图2所示的示例中,定序器222根据对应的邻接信息来排列待提供给扫描器104的地址。在一些示例中,在不调节潜在的冗余度的情况下将序列提供给扫描器104。

可替代地,与整个地址区域相反,图2的示例定序器222能够通过指定将地址区域的某些部分用于扫描来减少冗余扫描的实例。图4示出了由图2的示例定序器222基于图3所示的邻接信息生成的示例序列。在图4的示例中,定序器222的任务在于生成一个或多个序列,以使得对与线性地址la1-la5对应的存储器的(多个)区域连同任何对应的边界进行扫描。图2的示例定序器222使用由邻接映射器220获得的信息(例如,图3的物理邻接302)来生成序列。

在所示的示例中,定序器222基于图3的物理邻接302来生成第一序列400。在所示的示例中,定序器222包括第一序列400中的物理地址pa2,连同物理地址pa3,这是由于图3的物理邻接302中指示物理地址pa3跟随物理地址pa2,如进程p1中指示的。此外,在所示的示例中,定序器222生成以物理地址pa2开始的第二序列402,跟随其的是物理地址pa4,这是由于图3的物理邻接302中指示物理地址pa4跟随物理地址pa2,如进程p2中指示的。此外,图2的示例定序器222包括第二序列402中的物理地址pa5,其跟随物理地址pa4,这是由于图3的物理邻接302中指示物理地址pa5跟随物理地址pa4,如进程p2中指示的。为了减少致力于扫描边界的存储器扫描的量,图2的示例定序器222指定在对应的扫描中仅包括位于物理地址pa2处的存储器的区域的第一部分404。特别地,图2的示例定序器222确定物理地址pa2已经存在于第一序列400中,并且因此,定序器404仅指定物理地址pa2的第一部分404,以使得物理地址pa2与物理地址pa4之间的边界被扫描用于潜在地重叠恶意软件指示的模式。在一些示例中,第一部分404的大小是基于页大小的。然而,图2的示例定序器222能够针对第一部分404利用任何合适的大小和/或调整大小策略。

在所示的示例中,定序器222生成以物理地址pa1开始的第三序列406,该物理地址pa1由物理地址pa1(其由物理地址pa2跟随)跟随。在一些示例中,定序器222消除物理地址pa1处的存储器的区域的实例中的一个实例的某些部分以避免冗余,同时仍然检查所有必要的恶意软件指示的模式,该必要的恶意软件指示的模式跨越物理地址pa1处的存储器的区域的两个实例之间的边界。例如,可以忽略pa1的存储器的区域的第一实例的第一部分,或者可以忽略物理地址pa1处的存储器的区域的第二实例的第二部分。在后一种情况下,新的序列将以物理地址pa1处的存储器的区域的另一第二部分开始,其足以检测所有必要的恶意软件指示的模式,该必要的恶意软件指示的模式跨越物理地址pa1处的存储器的区域与物理地址pa2处的存储器的区域之间的边界。此外,图2的示例定序器222确定物理地址pa2已经存在于第一序列400中,并且因此指定仅物理地址pa2处的存储器的区域的第二部分408用于扫描。在所示的示例中,待扫描的物理地址处的存储器的(多个)区域以及对应的邻接由第一序列400、第二序列402、以及第三序列406覆盖。因此,图2的示例定序器222不针对进程p1和进程p2生成更多的序列。在图2所示的示例中,当示例定序器222已经生成上面公开的序列时,定序器222将序列提供给扫描目标输出器218,扫描目标输出器218将对应的信息提供给扫描器(例如,顺序地)。

图2的示例扫描管理器106包括保护分配器224,其用于将一个或多个保护方案分配给示例扫描管理器106和/或示例扫描器104的一个或多个操作和/或任务。在一些示例中,图2的保护分配器224指定扫描管理器106的操作用于第一保护域以及扫描器104的操作用于不同于第一保护域的第二保护域。例如,保护分配器224可以将扫描器104的签名匹配操作分配给环3(ring3)保护,而扫描管理器106的存储器识别操作在vmx根保护中进行。对于保护域的附加或替代分配是可能的。

当图2的示例保护分配器224已经将扫描器104的存储器扫描操作分配给与扫描管理器106的存储器识别操作不同的保护域时,示例保护分配器224有助于通过复制存储器或者通过重映射例如虚拟地址来在不同的工作负载之间传递数据存取。例如,示例保护分配器224可以利用虚拟机监测器(vmm)来直接修改客户机页表条目以指向要从环3扫描进程进行扫描的页。可替代地,示例保护分配器224(例如,经由vmm)可以修改ept126以将在环3进程中支持缓冲器的客户机物理地址转换为指向待扫描的物理地址(例如,在物理存储器110中的)。在一些示例中,例如,当将一个或多个操作卸载到例如协处理器(例如,gpu115)时,可以执行相似的操作,例如通过修改用于gpu115的图形转换表(gtt)或共享虚拟存储器(svm)条目、或者用于任何支持的设备的vt-d表。

在图2所示的示例中,扫描管理器106包括工作负载卸载器226,其用于将与安全应用102相关联的一个或多个工作负载或任务分配给例如协处理器(例如,图1的gpu115)。将cpu112用于安全任务(例如,与恶意软件检测相关联的存储器扫描)经常消耗显著量的cpu周期,这可能在例如用户可见的性能、电池寿命、吞吐量等方面不利地影响计算平台。将一个或多个计算任务(例如,安全任务)卸载到诸如gpu115的协处理器可以减轻、缓解、和/或消除在cpu112上执行计算任务(例如,安全任务和/或任何其它类型的(多个)计算任务)的不利影响。卸载到协处理器的(多个)计算任务不消耗cpu周期,从而减少cpu112的计算负担和cpu112所消耗的功率的量。由于应用消耗的cpu周期的数量和/或应用消耗的cpu相关的功率的量经常用于测量应用的性能,所以本文公开的示例对于例如被要求满足施加于cpu周期和/或功耗上的约束或限制(例如,基准)的独立软件供应商(isv)和其它类型的开发人员而言尤其有吸引力。此外,通过利用不同的处理资源(例如,cpu112和/或gpu115),相对于仅利用cpu112来执行安全任务且使cpu112负担安全任务的执行的系统,图1的示例扫描管理器106实现更高效且更积极的扫描(例如,更频繁的扫描、在所测试的模式的数量方面更全面的扫描、和/或在所扫描的存储器的量方面更广泛的扫描)。

在一些示例中,图2的工作负载卸载器226指定在gpu115上执行由示例走行器202执行的分页结构(例如,客户机页表120和/或ept126)的一个或多个走行。图2的示例工作负载卸载器226授权对地址转换系统108的分页结构的存取,例如,通过促进调整诸如gpu115的协处理器的转换表和/或页表的配置。在其中使用多级分页结构的图1所示的示例中,示例工作负载卸载器226有助于授权gpu115存取分页结构级别(例如,客户机页表120和ept126)中的每一个。

在一些示例中,当gpu115支持的虚拟地址空间不足以从gpu115同时映射例如客户机页表120和/或ept126中的全部时,对工作负载卸载器226进行扩展以减少由工作负载卸载器226施加的cpu使用。附加地或替代地,当在连续的虚拟地址范围中映射不连续的物理存储器(例如,图2的物理存储器110)时,对图2的示例工作负载卸载器226进行扩展减少cpu使用。例如,对图2的工作负载卸载器226进行扩展可能涉及授权诸如gpu115的协处理器存取以直接操纵存储器内的转换表或者页表,其授权诸如gpu115的协处理器对cpu客户机页表和ept以及其它数据和代码进行存取。在一些示例中,通过仅授权协处理器对较高级别的转换表(例如,与svm一起使用以控制gpu存储器存取的客户机分页结构)进行存取(例如,gpu115的存取)并将安全关键的结构标记为只读或利用较低级别的转换表(例如,vt-d分页结构)不可存取,示例工作负载卸载器226能够缓解与授权这种存取相关联的一个或多个风险。

在一些示例中,为了促进例如gpu115的利用,示例工作负载卸载器226激活和/或管理协处理器定义的映射。在一些示例中,该激活涉及使旧的协处理器映射无效的、来自cpu112的协助。附加地或替代地,诸如gpu104的协处理器可以生成致使从映射逐出的存储器存取模式。

另一可能的扩展是协处理器针对格式化为类似页表结构的页对存储器中的全部进行扫描。例如,当前的处理器不支持允许完全装填页表条目中的地址字段的物理地址的足够大的物理地址空间。因此,64位页表条目中的可预测位置中的某些位将始终为零。针对这种模式进行扫描可以免除对于从cpu获得活动cr3的列表的需求。这种方法可能会导致许多误报(falsepositive)和漏报,这取决于使用的特定页表模式标准,但是可以通过检查可疑页表之间的连接来减少误报。

虽然在图2中示出了实现图1的扫描管理器106的示例方式,但是图2中所示的元件、进程、和/或设备中的一个或多个可以以任何其它方式来组合、分割、重新布置、省略、消除、和/或实现。此外,示例目标存储器识别器200、示例走行器202、示例a/d位分析器204、示例cr3跟踪器206、示例页表识别器207、示例地址识别器208、示例地址列表210、示例相邻地址识别器212、示例tlb活动跟踪器214、示例清零器216、示例扫描目标输出器218、示例邻接映射器220、示例定序器222、示例保护分配器224、示例工作负载卸载器226、和/或更一般地图2的示例扫描管理器106可以由硬件、软件、固件实现,和/或由硬件、软件、和/或固件的任何组合实现。因此,例如,以下中的任何都可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)专用集成电路(asic)、(多个)可编程逻辑器件(pld)、和/或(多个)现场可编程逻辑器件(fpld)实现:示例目标存储器识别器200、示例走行器202、示例a/d位分析器204、示例cr3跟踪器206、示例页表识别器207、示例地址识别器208、示例地址列表210、示例相邻地址识别器212、示例tlb活动跟踪器214、示例清零器216、示例扫描目标输出器218、示例邻接映射器220、示例定序器222、示例保护分配器224、示例工作负载卸载器226、和/或更一般地图2的示例扫描管理器106。当阅读覆盖纯软件和/或固件实现方式的本专利的装置权利要求或系统权利要求中的任何权利要求时,由此将以下中的至少一个明确地定义为包括有形计算机可读存储设备或存储盘(例如,存储软件和/或固件的存储器、数字通用盘(dvd)、光盘(cd)、蓝光盘等):示例目标存储器识别器200、示例走行器202、示例a/d位分析器204、示例cr3跟踪器206、示例页表识别器207、示例地址识别器208、示例地址列表210、示例相邻地址识别器212、示例tlb活动跟踪器214、示例清零器216、示例扫描目标输出器218、示例邻接映射器220、示例定序器222、示例保护分配器224、示例工作负载卸载器226、和/或更一般地图2的示例扫描管理器106。此外,图1的示例扫描管理器106可以包括除了图2所示的元件、进程、和/或设备之外或者代替图2所示的元件、进程、和/或设备的一个或多个元件、进程、和/或设备,和/或可以包括所示的元件、进程、和/或设备中的任何或全部中的多于一个元件、进程、和/或设备。

图5-8是表示用于实现图1和/或图2的示例扫描管理器106的示例机器可读指令的流程图。在图5-8的示例中,机器可读指令包括用于由处理器(例如,下面结合图10讨论的示例处理器平台1000中所示的处理器1012)执行的一个或多个程序。程序可以以存储在有形计算机可读存储介质(例如,cd-rom、软盘、硬盘驱动器、数字通用盘(dvd)、蓝光盘、或与处理器1012相关联的存储器)上的软件来体现,但是整个程序和/或其中的部分可以可替代地由除处理器1012之外的设备来执行,和/或程序可以以固件或专用硬件来体现。此外,虽然参照图5-8所示的流程图描述了示例程序,但是可以可替代地使用实现图1和/或图2的示例扫描管理器106的许多其它方法。例如,可以改变框的执行次序,和/或可以改变、消除、或组合所描述的框中的一些框。

如上面提及的,可以使用存储在以下有形计算机可读存储介质上的编码指令(例如,计算机和/或机器可读指令)来实现图5-8的示例过程:例如,硬盘驱动器、闪速存储器、只读存储器(rom)、光盘(cd)、数字通用盘(dvd)、高速缓存、随机存取存储器(ram)、和/或其中信息在任何持续时间内(例如,在延长的时间段内、永久地、用于简短的实例、用于暂时缓冲、和/或用于高速缓存信息)存储的任何其它存储设备或存储盘。如本文所使用的,将术语有形计算机可读存储介质明确地定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。如本文所使用的,“有形计算机可读存储介质”和“有形机器可读存储介质”互换地使用。附加地或替代地,可以使用存储在以下非暂时性计算机和/或机器可读介质上的编码指令(例如,计算机和/或机器可读指令)来实现图5-8的示例过程:例如,硬盘驱动器、闪速存储器、只读存储器、光盘、数字通用盘、高速缓存、随机存取存储器、和/或其中信息在任何持续时间内(例如,在延长的时间段内、永久地、用于简短的实例、用于暂时缓冲、和/或用于高速缓存信息)存储的任何其它存储设备或存储盘。如本文所使用的,将术语非暂时计算机可读介质明确地定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。如本文所使用的,当短语“至少”在权利要求的前序部分中用作过渡术语时,其为开放式的,以与术语“包括”是开放式的相同的方式。

图5的示例开始于图1和/或图2的示例扫描管理器106的初始化(框500)。响应于例如来自安全应用102的指令、调度、和/或一个或多个其它触发而初始化示例扫描管理器106。在图5所示的示例中,对扫描管理器106进行初始化包括确定操作要在哪个(哪些)保护域下执行以及哪个(哪些)处理组件要执行操作。在图5所示的示例中,保护分配器224指示图5的操作要在哪个保护域下执行。在一些示例中,保护分配器224使得图5的操作中的一个或多个操作在第一保护域(例如,环3保护级别)下执行,并且图5的操作中的一个或多个操作在第二、不同的保护域下执行(例如,经由管理程序)。附加地,在图5所示的示例中,示例工作负载卸载器226指示哪个处理组件(例如,cpu112和/或gpu115)执行操作。在一些示例中,工作负载卸载器226指示诸如cpu112的第一处理组件执行图5的操作中的一个或多个操作,并且第二、不同的处理组件(例如,cpu115)执行图5的操作中的一个或多个操作。

在图5的示例中,初始化扫描管理器500使得示例目标存储器识别器200识别由示例扫描器104扫描的存储器的一个或多个区域(例如,在物理存储器110中的)。在图5的示例中,目标存储器识别器200基于与示例地址转换系统108相关联的信息来识别最近被存取的存储器的(多个)区域。

在图5的示例中,目标存储器识别器200的走行器202走行包括ept126中的对应ept的ept层级(框502)。此外,a/d位分析器204分析对应的epta/d位132以确定客户机物理地址空间122的哪些地址与最近被存取的存储器相关联(框502)。在图5的示例中,a/d位分析器204基于所分析的epta/d位132来生成数据结构(框504)。数据结构基于例如a/d位分析器204识别具有经置位epta/d位132的分页层级的结束节点(例如,叶子节点)来指示客户机物理地址空间122的哪个(哪些)存储器区域最近被存取。

可替代地,目标存储器识别器200的示例tlb活动跟踪器214能够提供关于客户机物理地址空间122的哪些地址与最近被存取的存储器相关联的信息。如上面描述的,tlb活动跟踪器214记录进入tlb134和从tlb134逐出,并且因此包含指示哪些客户机物理地址最近被存取的数据。因此,tlb活动跟踪器214能够提供这样的数据:基于该数据来生成数据结构。

在图5的示例中,cr3跟踪器206根据例如由a/d位分析器204(和/或tlb活动跟踪器214)生成的数据结构来提供作为最近被存取的存储器的候选的客户机页表120的(多个)根页表的(多个)位置(框505)。也即,查询cr3跟踪器206以提供对例如客户机页表120的一个或多个走行的起始点。

在图5的示例中,走行器202走行候选客户机页表120,以确定是否应当将对应的线性地址添加到图2的地址列表210。在图5的示例中,走行器202分析之前生成的数据结构以确定是否要走行任何更多的根客户机页表(框506)。也即,走行器202确定数据结构的所有候选客户机页表120是否已经被走行。如果不存在更多要走行的根客户机页表120,则控制进行到图7,其在下面进行详细描述。否则,针对要走行并分析的下一客户机页表层级,示例a/d位分析器204确定epta/d位132中的对应epta/d位是否被置位(框508)。如果epta/d位132中的对应epta/d位是清零的(即,未置位)(框508),则跳过对应的客户机页表120和衍生客户机页表(如果有)(框510)。控制进行到框506。

然而,如果epta/d位132中的对应epta/d位被置位(例如,置位为‘1’)(框508),则示例走行器202走行客户机页表120的条目(框512)。如果条目引用客户机页表120中较深的客户机页表(框514),则走行器202递归地走行更深的页表(框516)。控制进行到框508。然而,如果走行器202遇到不引用较深的客户机页表120的条目(例如,对页进行映射而非引用另一个表的条目)(框514),则针对该条目检查一个或多个标准,并且如果满足标准,则将对应的线性地址添加到图2的示例地址列表210(框518)。在图5所示的示例中,所检查的标准由示例a/d位分析器204定义,并且包括对应的客户机a/d位130被置位以及对应的epta/d位132被置位。如上面公开的,这样的标准使得图1的示例扫描器104能够集中于和/或将其操作限定于最近被存取的存储器。在图5所示的示例中,为了将对应的线性地址添加到地址列表210,示例线性地址识别器208确定适当的线性地址并将所确定的线性地址提供给地址列表210(框518)。此外,在图5的示例中,相邻地址识别器212识别线性地址空间中的一个或多个相邻地址,并且将所识别的(多个)线性地址添加到地址列表210(框520)。控制进行到框506。

因此,在图5的示例中,扫描管理器200根据与图2的示例地址转换系统108相关联的信息利用对应于最近被存取的存储器的线性地址来填充图2的示例地址列表210。

图6示出了由图1和/或图2的示例扫描管理器106实现以识别最近被存取的存储器的示例过程。图6的示例开始于图1和/或图2的示例扫描管理器106的初始化(框600)。响应于例如来自安全应用102的指令、调度、和/或一个或多个其它触发而初始化示例扫描管理器106。在图6的示例中,不是如在图5的示例中存取ept126中的全部以确定哪些epta/d位132被置位并且开始时就生成数据结构,图6的示例针对由客户机页条目指向的特定客户机物理地址按需走行ept126。在图6的示例中,cr3跟踪器206提供对应于最近活动的线程、程序等的客户机页表120的(多个)根页表的(多个)位置(框602)。也即,查询cr3跟踪器206以提供对例如客户机页表120的一个或多个走行的起始点。

如果根据cr3跟踪器206存在待走行的根页表(框604),则检查由例如扫描器104维护的高速缓存以确定该高速缓存是否包括下一页表的epta/d位(框606)。例如,示例走行器202和/或a/d位分析器204引用高速缓存以确定高速缓存是否包括对应的条目。如果高速缓存确实包括对应的条目,则该条目能够用于确定epta/d位132的值。在图6的示例中,当高速缓存不包括用于下一页表的epta/d位132的条目时,对epta/d位132进行读取、高速缓存、以及清零(框607)。此外,逐出tlb134中的对应,以便于在随后的扫描中对随后的页表存取进行检测和处理(框607)。

在图6的示例中,如果高速缓存不包括用于下一页表的epta/d位132的条目,则示例a/d位分析器204确定epta/d位132中的对应epta/d位是否被置位(框608)。在图6的示例中,框608-616的操作类似于图5的框508-516的操作。

因此,图6的示例识别地址转换系统108的特定页层级用于作为最近被存取的存储器的指示符的候选,并以按需的方式走行ept126。可替代地,图5的示例在开始时分析epta/d位132以生成在对页表层级进行一个或多个走行期间被引用要使用的数据结构。

从例如上面描述的图5和/或图6到达图7的示例。在所示的示例中,当到达图7时,图2的示例地址列表210包括对应于最近被存取的存储器的一个或多个线性地址和/或被确定为与对应于最近被存取的存储器的(多个)线性地址相邻的线性地址。在图7的示例中,邻接映射器220根据线性地址与物理地址之间的映射来确定对应于相邻线性地址的物理地址,如在图3中示出并且在上面公开的(框700)。因此,邻接映射器220生成指示应当依次扫描哪些物理地址以覆盖例如页边界的信息。

在图7的示例中,定序器222使用邻接信息来从地址列表210中生成一个或多个序列(框702)。例如,定序器222将特定地址识别为对应于邻接,并且针对这样的地址,指定对应存储器的一部分(例如,不是整个存储器区域)用于扫描。在一些示例中,指定的部分是基于页边界对应于先前的地址还是随后的地址来确定的。下面结合图8公开框702的示例实现方式。

在所示的示例中,定序器222将一个或多个序列提供给例如图1的扫描器104(框704)。在所示的示例中,清零器216确定是否设置了要由扫描器进行扫描的存储器的阈值量(框706)。例如,清零器216确定经由定序器222提供给扫描器104的序列是否包括多于阈值数量的地址和/或要扫描多于阈值量的存储器(例如,位)。如果已经超出阈值(框708),则示例清零器216针对要扫描和/或扫描过的存储器区域对a/d位(例如,图1的客户机a/d位130和/或epta/d位132)清零(框710)。此外,在图7的示例中,清零器216逐出对应于提供给扫描器104的地址的、tlb134的任何条目和/或由tlb活动跟踪器214维护的日志中的条目(框710)。如果没有超出阈值(框708),则图7的示例结束,而清零器216不清零a/d位和/或tlb信息(框712)。

响应于例如到达图7的框702的控制,图8开始(框800)。在图8所示的示例中,图2的定序器222被提供有线性地址与物理地址之间的映射,如在例如图3中示出的。图2的示例定序器222对映射进行处理以生成待提供给例如扫描器104的一个或多个序列。如果映射维持未处理(框802),则定序器222处理对应于当前未处理的映射的当前页。在一些示例中,通过对应的物理地址来识别正在处理的页。在图8的示例中,定序器222确定是否已经将先前页(例如,在当前页之前的页)添加到序列(例如,在序列生成的当前迭代期间)(框804)。如果先前页之前被添加到序列(框804),则示例定序器222将先前页的一部分添加到当前序列(框806)。先前页的该部分被称为重叠区域,因为添加该部分以覆盖页边界。否则,如果之前未将先前页添加到序列(框804),则定序器222将整个先前页添加到当前序列(框808)。控制进行到框810。

如果不存在与先前页相关联的更多未处理的邻接(框810),则控制进行到框802。否则,如果存在与例如后续页的一个或多个未处理的邻接(框810),则示例定序器222将从当前的先前页到当前的后续页的邻接标记为已处理(框812)。如果之前未将后续页添加到序列(框814),则示例定序器222将整个后续页添加到当前序列,并且指定当前的后续页作为序列的下一部分中的先前页(框816)。控制进行到框810。否则,如果之前已经将后续页添加到序列(框814),则示例定序器222将后续页的开头的部分(例如,重叠区域)添加到当前序列,并且将当前序列标记为完整的(框818)。控制进行到框802。如果没有剩余待处理的更多映射,则图8的示例结束(框820)。

因此,图8的示例提供了对应于待扫描的存储器的区域的物理地址的一个或多个序列,其中减少和/或消除了冗余,并且减少和/或最小化出于覆盖页边界目的而扫描的存储器的量。

图9是能够执行图5、图6、图7、和/或图8的指令以实现图1和/或图2的示例扫描管理器106的示例处理器平台900的框图。处理器平台900能够是例如服务器、个人计算机、移动设备(例如,蜂窝电话、智能电话、诸如ipadtm的平板电脑)、个人数字助理(pda)、互联网设备、媒体播放器(例如,dvd播放器、cd播放器、数字视频记录器、蓝光播放器等)、游戏控制台、或任何其它类型的计算设备。

所示示例的处理器平台900包括处理器912(例如,图1的cpu112)和协处理器934(例如,图1的gpu115)。所示示例的处理器912和协处理器934是硬件。例如,处理器912和/或协处理器934能够由来自任何期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、或控制器来实现。在一些示例中,处理器912和/或协处理器934实现图1和/或图2的示例扫描管理器106、图2的示例目标存储器识别器200、图2的示例走行器202、图2的示例a/d位分析器204、图2的示例cr3跟踪器206、图2的示例页表识别器207、图2的示例地址识别器208、图2的示例相邻地址识别器212、图2的示例tlb活动跟踪器214、图2的示例清零器216、图2的示例扫描目标输出器218、图2的示例邻接映射器220、图2的示例定序器222、图2的示例保护分配器224、和/或图2的示例工作负载卸载器226。

所示示例的处理器912包括本地存储器913(例如,高速缓存)。所示示例的处理器912经由总线918与包括易失性存储器914和非易失性存储器916的主存储器进行通信。易失性存储器914可以由同步动态随机存取存储器(sdram)、动态随机存取存储器(dram)、rambus动态随机存取存储器(rdram)、和/或任何其它类型的随机存取存储器设备来实现。非易失性存储器916可以由闪速存储器和/或任何其它期望类型的存储器设备来实现。由存储器控制器控制对主存储器914、916的存取。

所示示例的处理器平台900还包括接口电路920。接口电路920可以通过任何类型的接口标准来实现,例如,以太网接口、通用串行总线(usb)、和/或pci快速接口。

在所示的示例中,一个或多个输入设备922连接到接口电路920。(多个)输入设备922允许用户将数据和命令输入到处理器912中。(多个)输入设备能够由例如音频传感器、麦克风、照相机(静止的或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、iso控制点(isopoint)、和/或语音识别系统来实现。

一个或多个输出设备924也连接到所示示例的接口电路920。例如,输出设备924能够由显示设备(例如,发光二极管(led)、有机发光二极管(oled)、液晶显示器、阴极射线管显示器(crt)、触摸屏、触觉输出设备、打印机、和/或扬声器)来实现。因此,所示示例的接口电路920典型地包括图形驱动器卡、图形驱动器芯片、或图形驱动器处理器(例如,图1的示例gpu115)。

所示示例的接口电路920还包括诸如发射机、接收机、收发机、调制解调器、和/或网络接口卡的通信设备,以有助于经由网络926(例如,以太网连接、数字用户线(dsl)、电话线、同轴电缆、蜂窝电话系统等)与外部机器交换数据。

所示示例的处理器平台900还包括用于存储软件和/或数据的一个或多个大容量存储设备928。这种大容量存储设备928的示例包括软盘驱动器、硬盘驱动器盘、光盘驱动器、蓝光盘驱动器、raid系统、以及数字通用盘(dvd)驱动器。

图5-8的编码指令932可以存储在大容量存储设备928中、存储在易失性存储器914中、存储在非易失性存储器916中、和/或存储在可移除的有形计算机可读存储介质(例如,cd或dvd)上。

一种示例公开的装置,包括:走行器,其用于遍历地址转换系统的分页结构;位分析器,其用于确定与分页结构的条目相关联的位是否指示条目最近被存取;地址识别器,其用于当位分析器确定与分页结构的条目相关联的位指示条目最近被存取时确定与条目相关联的地址;以及输出器,其用于将所确定的地址提供给存储器扫描器,其中,以下中的至少一个是经由逻辑电路实现的:走行器、位分析器、地址识别器、或输出器。

在一些公开的示例中,存储器扫描器将存储器扫描限定于最近被存取的存储器。

在一些公开的示例中,该装置还包括用于确定指示分页结构的根部分的寄存器的最近值的寄存器值跟踪器。

在一些公开的示例中,走行器使用寄存器的最近值来选择要遍历的分页结构的层级。

在一些公开的示例中,与条目相关联的地址是第一地址,并且该装置还包括相邻地址识别器,其用于识别与第一地址相邻的第二地址。

在一些公开的示例中,输出器与第一地址相关联地将第二地址提供给存储器扫描器。

在一些公开的示例中,该装置还包括定序器,其用于定义第一地址与第二地址之间的关联,以指示第一地址与第二地址之间的序列。

在一些公开的示例中,该装置还包括清零器,其用于当位分析器确定位指示条目最近被存取时,对该位进行清零。

在一些公开的示例中,该装置还包括缓冲器活动跟踪器,其用于将缓冲器的映射识别为对应于最近被存取的存储器,其中,地址识别器根据映射的信息来确定第二地址,并且输出器将第二地址提供给存储器扫描器。

在一些公开的示例中,该装置还包括保护分配器,其用于确定第一保护域,以下中的第一个在第一保护域下操作:走行器、位分析器、地址识别器、输出器、或存储器扫描器;以及确定第二保护域,以下中的第二个在第二保护域下操作:走行器、位分析器、地址识别器、输出器、或存储器扫描器。

在一些公开的示例中,该装置还包括工作负载卸载器,其用于选择用于实现走行器、位分析器、输出器、或存储器扫描器中的第一个的第一处理组件;以及选择不同于第一处理组件的第二处理组件,第二处理组件用于实现走行器、位分析器、输出器、或存储器扫描器中的第二个。

在一些公开的示例中,保护分配器经由转换表来重新映射虚拟地址,以有助于第二处理组件在第二域下进行存取。

在一些公开的示例中,该装置还包括页表识别器,其用于:针对具有指示页表结构的格式的页对存储器进行扫描;以及当具有指示页表结构的格式的页被发现时,将与页相关联的识别信息提供给走行器。

在一些公开的示例中,包括该位的多个位在多个扩展页表层级中被维护,并且该装置还包括管理程序,其用于周期性地对多个位进行清零以使得客户机能够切换到具有清零位的扩展页表层级中的一个。

在一些公开的示例中,该装置还包括虚拟机监测器,其用于对分页结构建立影子,以按照由客户机修改的来生成分页结构的第一副本,其中,第一副本与分页结构的第二副本分离,第二副本由控制寄存器引用并且用于将条目插入到缓冲器中。

一种示例公开的方法,包括:遍历地址转换系统的分页结构;经由逻辑电路来确定与分页结构的条目相关联的位是否指示条目最近被存取;以及当与分页结构的条目相关联的位指示条目最近被存取时,经由逻辑电路来确定与该条目相关联的地址,并将所确定的地址提供给存储器扫描器。

在一些公开的示例中,存储器扫描器将存储器扫描限定于最近被存取的存储器。

在一些公开的示例中,该方法还包括确定指示分页结构的根部分的寄存器的最近值。

在一些公开的示例中,该方法还包括使用寄存器的最近值来选择要遍历的分页结构的层级。

在一些公开的示例中,与条目相关联的地址是第一地址,并且该方法还包括识别与第一地址相邻的第二地址。

在一些公开的示例中,该方法还包括与第一地址相关联地将第二地址提供给存储器扫描器。

在一些公开的示例中,该方法还包括定义第一地址与第二地址之间的关联,以指示第一地址与第二地址之间的序列。

在一些公开的示例中,该方法还包括当位指示条目最近被存取时对该位进行清零。

在一些公开的示例中,该方法还包括将缓冲器的映射识别为对应于最近被存取的存储器;根据映射的信息来确定第二地址;以及将第二地址提供给存储器扫描器。

在一些公开的示例中,该方法还包括确定用于以下中的第一个的第一保护域:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描;以及确定不同于第一保护域的第二保护域,第二保护域用于以下中的第二个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描。

在一些公开的示例中,该方法还包括选择第一处理组件,第一处理组件用于实现以下中的第一个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描;以及选择不同于第一处理组件的第二处理组件,第二处理组件用于实现以下中的第二个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描。

在一些公开的示例中,该方法还包括经由转换表来重新映射虚拟地址,以有助于第二处理组件在第二域下进行存取。

在一些公开的示例中,该方法还包括针对具有指示页表结构的格式的页对存储器进行扫描;以及当具有指示页表结构的格式的页被发现时,将与页相关联的识别信息提供给走行器。

在一些公开的示例中,包括该位的多个位在多个扩展页表层级中被维护,并且该装置还包括周期性地对多个位进行清零以使得客户机能够切换到具有清零位的扩展页表层级中的一个。

在一些公开的示例中,该方法还包括经由虚拟机监测器对分页结构建立影子,以按照由客户机修改的来生成分页结构的第一副本,其中,第一副本与分页结构的第二副本分离,第二副本由控制寄存器引用并且用于将条目插入到缓冲器中。

一种示例公开的有形计算机可读介质,包括指令,指令在被执行时使得机器至少进行以下操作:遍历地址转换系统的分页结构;确定与分页结构的条目相关联的位是否指示条目最近被存取;以及当与分页结构的条目相关联的位指示条目最近被存取时确定与该条目相关联的地址;并将所确定的地址提供给存储器扫描器。

在一些公开的示例中,存储器扫描器将存储器扫描限定于最近被存取的存储器。

在一些公开的示例中,指令在被执行时使得机器确定指示分页结构的根部分的寄存器的最近值。

在一些公开的示例中,指令在被执行时使得机器使用寄存器的最近值来选择要遍历的分页结构的层级。

在一些公开的示例中,与条目相关联的地址是第一地址,并且指令在被执行时使得机器识别与第一地址相邻的第二地址。

在一些公开的示例中,指令在被执行时使得机器与第一地址相关联地将第二地址提供给存储器扫描器。

在一些公开的示例中,指令在被执行时使得机器定义第一地址与第二地址之间的关联,以指示第一地址与第二地址之间的序列。

在一些公开的示例中,指令在被执行时使得机器当位指示条目最近被存取时对该位进行清零。

在一些公开的示例中,指令在被执行时使得机器将缓冲器的映射识别为对应于最近被存取的存储器;根据映射的信息来确定第二地址;以及将第二地址提供给存储器扫描器。

在一些公开的示例中,指令在被执行时使得机器确定用于以下中的第一个的第一保护域:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描;以及确定不同于第一保护域的第二保护域,第二保护域用于以下中的第二个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描。

在一些公开的示例中,指令在被执行时使得机器选择第一处理组件,第一处理组件用于实现以下中的第一个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描;以及选择不同于第一处理组件的第二处理组件,第二处理组件用于实现以下中的第二个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描。

在一些公开的示例中,指令在被执行时使得机器经由转换表来重新映射虚拟地址,以有助于第二处理组件在第二域下进行存取。

在一些公开的示例中,指令在被执行时使得机器:针对具有指示页表结构的格式的页对存储器进行扫描;以及当具有指示页表结构的格式的页被发现时,将与页相关联的识别信息提供给走行器。

在一些公开的示例中,包括该位的多个位在多个扩展页表层级中被维护,并且指令在被执行时使得机器周期性地对多个位进行清零以使得客户机能够切换到具有清零位的扩展页表层级中的一个。

在一些公开的示例中,指令在被执行时使得机器经由虚拟机监测器对分页结构建立影子,以按照由客户机修改的来生成分页结构的第一副本,其中,第一副本与分页结构的第二副本分离,第二副本由控制寄存器引用并且用于将条目插入到缓冲器中。

一种示例公开的扫描管理器,包括用于遍历地址转换系统的分页结构的模块;用于确定与分页结构的条目相关联的位是否指示条目最近被存取的模块;用于当与分页结构的条目相关联的位指示条目最近被存取时确定与该条目相关联的地址的模块;以及用于当与分页结构的条目相关联的位指示条目最近被存取时将所确定的地址提供给存储器扫描器的模块。

在一些公开的示例中,存储器扫描器将存储器扫描限定于最近被存取的存储器。

在一些公开的示例中,扫描管理器还包括用于确定指示分页结构的根部分的寄存器的最近值的模块。

在一些公开的示例中,用于遍历分页结构的模块使用寄存器的最近值来选择要遍历的分页结构的层级。

在一些公开的示例中,与条目相关联的地址是第一地址,并且扫描管理器还包括用于识别与第一地址相邻的第二地址的模块。

在一些公开的示例中,扫描管理器还包括用于与第一地址相关联地将第二地址提供给存储器扫描器的模块。

在一些公开的示例中,扫描管理器还包括用于定义第一地址与第二地址之间的关联以指示第一地址与第二地址之间的序列的模块。

在一些公开的示例中,扫描管理器还包括当位指示条目最近被存取时对该位进行清零的模块。

在一些公开的示例中,扫描管理器还包括用于将缓冲器的映射识别为对应于最近被存取的存储器的模块,其中,用于确定第一地址的模块根据映射的信息来确定第二地址,并且其中,用于将第二地址提供给存储器扫描器的模块将第二地址提供给存储器扫描器。

在一些公开的示例中,扫描管理器还包括用于以下操作的模块:确定用于以下中的第一个的第一保护域:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描;以及确定不同于第一保护域的第二保护域,第二保护域用于以下中的第二个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描。

在一些公开的示例中,扫描管理器还包括用于以下操作的模块:选择第一处理组件,第一处理组件用于实现以下中的第一个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描;以及选择不同于第一处理组件的第二处理组件,第二处理组件用于实现以下中的第二个:遍历分页结构,确定与分页结构的条目相关联的位是否指示条目最近被存取,确定与条目相关联的地址,将所确定的地址提供给存储器扫描器,或者由存储器扫描器对存储器进行扫描。

在一些公开的示例中,用于确定第一保护域并确定第二保护域的模块经由转换表来重新映射虚拟地址,以有助于第二处理组件在第二域下进行存取。

在一些公开的示例中,扫描管理器还包括用于以下操作的模块:针对具有指示页表结构的格式的页对存储器进行扫描;以及当具有指示页表结构的格式的页被发现时,将与页相关联的识别信息提供给走行器。

在一些公开的示例中,其中,包括该位的多个位在多个扩展页表层级中被维护,并且扫描管理器还包括用于周期性地对多个位进行清零以使得客户机能够切换到具有清零位的扩展页表层级中的一个的模块。

在一些公开的示例中,扫描管理器还包括用于对分页结构建立影子以按照由客户机修改的来生成分页结构的第一副本的模块,其中,第一副本与分页结构的第二副本分离,第二副本由控制寄存器引用并且用于将条目插入到缓冲器中。

一种示例公开的装置,包括:邻接映射器,其用于识别线性地址与对应的物理地址之间的映射;以及定序器,其用于基于线性地址的次序来生成包括物理地址中的第一物理地址和第二物理地址的序列,其被排序以使得在与线性地址相关联的存储器扫描期间与物理地址中的第一物理地址和第二物理地址相对应的存储器的区域之间的边界被扫描,其中,邻接映射器或定序器中的至少一个是经由逻辑电路实现的。

在一些公开的示例中,定序器在序列中仅包括物理地址中的第二物理地址的第一部分。

在一些公开的示例中,序列是第一序列,并且定序器在第二序列中包括物理地址中的第二物理地址的第二部分。

在一些公开的示例中,部分的大小是基于页大小的。

在一些公开的示例中,序列是第一序列,并且定序器基于物理地址中的第二物理地址在第一序列中而从第二序列中排除物理地址中的第二物理地址。

一种示例公开的方法,包括经由逻辑电路来识别线性地址与对应的物理地址之间的映射;以及经由逻辑电路基于线性地址的次序来生成包括物理地址中的第一物理地址和第二物理地址的序列,其被排序以使得在与线性地址相关联的存储器扫描期间与物理地址中的第一物理地址和第二物理地址相对应的存储器的区域之间的边界被扫描。

在一些公开的示例中,生成序列还包括在序列中仅并入物理地址中的第二物理地址的第一部分。

在一些公开的示例中,序列是第一序列,并且该方法还包括在第二序列中并入物理地址中的第二物理地址的第二部分。

在一些公开的示例中,部分的大小是基于页大小的。

在一些公开的示例中,序列是第一序列,并且该方法还包括基于物理地址中的第二物理地址在第一序列中而从第二序列中排除物理地址中的第二物理地址。

一种示例公开的有形计算机可读介质,包括指令,指令在被执行时使得机器至少进行以下操作:识别线性地址与对应的物理地址之间的映射;以及基于线性地址的次序来生成包括物理地址中的第一物理地址和第二物理地址的序列,其被排序以使得在与线性地址相关联的存储器扫描期间与物理地址中的第一物理地址和第二物理地址相对应的存储器的区域之间的边界被扫描。

在一些公开的示例中,指令在被执行时使得机器在序列中仅包括物理地址中的第二物理地址的第一部分。

在一些公开的示例中,序列是第一序列,并且指令在被执行时使得机器在第二序列中包括物理地址中的第二物理地址的第二部分。

在一些公开的示例中,部分的大小是基于页大小的。

在一些公开的示例中,序列是第一序列,并且指令在被执行时使得机器基于物理地址中的第二物理地址在第一序列中而从第二序列中排除物理地址中的第二物理地址。

一种示例公开的扫描管理器,包括用于识别线性地址与对应的物理地址之间的映射的模块;以及用于基于线性地址的次序来生成包括物理地址中的第一物理地址和第二物理地址的序列的模块,第一物理地址和第二物理地址被排序以使得在与线性地址相关联的存储器扫描期间与物理地址中的第一物理地址和第二物理地址相对应的存储器的区域之间的边界被扫描。

在一些公开的示例中,用于生成序列的模块在序列中仅包括物理地址中的第二物理地址的第一部分。

在一些公开的示例中,序列是第一序列,并且用于生成第一序列的模块在第二序列中包括物理地址中的第二物理地址的第二部分。

在一些公开的示例中,部分的大小是基于页大小的。

在一些公开的示例中,序列是第一序列,并且用于生成第一序列的模块基于物理地址中的第二物理地址在第一序列中而从第二序列中排除物理地址中的第二物理地址。

虽然本文已经公开了某些示例方法、装置、以及制品,但是本专利的覆盖范围不限于此。相反,本专利覆盖完全落入本专利的权利要求的范围内的所有方法、装置、以及制品。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1