在执行程序的进程的执行路径中注入陷阱代码以生成陷阱地址范围来检测潜在恶意代码的制作方法

文档序号:23068021发布日期:2020-11-25 17:55阅读:143来源:国知局
在执行程序的进程的执行路径中注入陷阱代码以生成陷阱地址范围来检测潜在恶意代码的制作方法

本发明涉及一种计算机程序产品、系统和方法,用于在执行程序的进程的执行路径中注入陷阱代码以生成陷阱地址范围来检测潜在恶意代码。



背景技术:

反恶意软件,也称为反病毒软件,用于检测、防止和移除恶意软件,诸如恶意浏览器辅助对象(bho)、浏览器劫持程序、勒索病毒(ransomware)、按键记录器、后门、rootkit、特洛伊木马、蠕虫、恶意lsp、拨号程序、欺诈工具、广告软件和间谍软件。通常,当恶意软件可能破坏数据时,对受到破坏的数据的访问被阻止,直到安全威胁被解决,以便避免可疑软件对数据的任何改变。一种称为transomware的恶意软件对用户数据进行加密,然后,transomware的运营商对攻击的受害者进行黑邮件发送,该攻击的受害者需要为加密密钥付费以用于对其数据进行解密。

恶意代码可能试图通过从受保护存储器读取存储在系统高速缓存中的存储器数据来访问受保护存储器中的数据,作为高速缓存操作的一部分。受保护存储器包括进程不应当能够访问的系统存储器的区域,除非该进程具有访问许可。合法进程可以在受保护存储器中存储不是针对其它应用程序的某些受保护数据,例如个人信息、密码等。存储在高速缓存中的来自受保护存储器的受保护数据可以在侧信道攻击中被恶意代码访问,其中恶意代码利用知道高速缓存中的某些高速缓存数据来自内核地址并且可以包含敏感和机密的受保护数据。

在本领域中需要用于检测试图访问存储在高速缓存中的受保护数据的恶意代码以防止恶意活动和损害数据的改进技术。



技术实现要素:

第一实施例提供了一种计算机程序产品、系统和方法,用于在执行程序的进程的执行路径中注入陷阱代码以生成陷阱地址范围来检测潜在恶意代码。在应用程序代码中处理指定类型的命令,并且作为响应,执行陷阱代码以分配陷阱地址范围。在所述应用程序代码中执行所述指定类型的命令。确定访问应用程序是否访问所述陷阱地址范围。响应于确定所述访问应用程序访问了所述陷阱地址范围,执行以下中的至少一个:发送所述访问应用程序包括潜在恶意代码的通知,监视所述访问应用程序的执行,以及限制所述访问应用程序的执行。

对于第一实施例,执行所述指定类型的命令,例如可以提供对受保护地址空间或敏感数据的访问的命令,触发分配陷阱地址范围的陷阱代码的执行。如果应用程序试图访问所述陷阱地址范围,所述陷阱地址范围将不是由正在执行的应用程序代码访问的地址范围,则可以假设访问应用程序是恶意的或具有使其访问未分配给该应用的陷阱地址范围的漏洞。一旦检测到对陷阱地址范围的这种访问,则可以对应用程序代码采取保护动作,例如阻止、监视等。这样,威胁监视程序将监视限制为不是应用程序所做的任何事情,而是提供对恶意程序将寻求利用应用程序代码中的可以提供对敏感信息的访问的指定类型的命令的情况的更集中的监视。当执行可以提供对敏感数据的访问的这种指定类型的命令时,所描述的实施例触发分配陷阱地址范围,并且可以通过尝试访问将不会被合法应用程序访问的陷阱地址范围来检测恶意代码。

在第二实施例中,指定类型的命令包括从用户模式切换到内核模式以访问内核地址的命令,并且其中在内核地址空间中定义所述陷阱地址范围。

在第二实施例中,当应用程序切换到内核模式以访问内核地址时,分配陷阱地址范围,因为内核地址可以提供对恶意程序试图访问和利用的敏感和受保护数据的访问。因此,通过在内核地址被应用程序访问时分配陷阱地址范围,所描述的实施例在应用程序中可以提供对敏感信息的访问的点处创建针对恶意代码的陷阱。这进一步增加了捕获恶意代码的可能性,因为恶意代码可能试图利用被分配有提供对内核地址空间的访问的代码的地址,诸如陷阱地址范围。

在第三实施例中,响应于所述访问应用程序访问内核地址空间中未映射到地址表中高速缓存中的有效数据的地址,接收段错误。在这种情况下,响应于接收到所述段错误,执行确定访问应用程序是否已经访问所述陷阱地址范围。

在第三实施例中,当发生段错误时,执行检查程序是否是恶意的,以检查正被访问的内核地址是否在所述陷阱地址范围内。通过在访问抛出段错误的内核地址时将处理器对恶意程序的检查限制到恶意程序可能访问数据的那些点,这进一步提高了监视操作的效率。

在第四实施例中,所述指定类型的命令包括系统调用,其中所述系统调用在执行陷阱代码之后执行。

对于第四实施例,触发分配所述陷阱地址范围的所述指定类型的命令包括系统调用。这通过将陷阱地址绑定到系统调用来进一步提高操作效率,因为系统调用从用户模式切换到内核模式以访问内核地址空间。因此,恶意程序可能寻找被分配有系统调用的地址范围。这样,所描述的实施例通过将陷阱地址范围的分配与比其他类型的调用更可能被恶意程序作为目标的调用类型、系统调用联系起来,提高了监视恶意代码的效率。

在第五实施例中,所述陷阱地址范围映射到地址表中的无效物理地址,其中确定访问应用程序是否已经访问陷阱地址范围包括当所述访问应用程序访问映射到无效位置的所述陷阱地址范围时检测生成的故障。

在第五实施方式中,通过将所述陷阱地址范围映射到无效的物理地址,在可能是恶意程序的程序试图访问所述陷阱地址范围时,会发生段错误。这通过不需要连续监视而进一步优化了监视操作,并且所述监视仅在存在恶意代码访问的较高概率时被触发,这在程序试图访问未映射到有效物理地址的陷阱地址范围时发生,并且可以由段错误来标记,段错误是正常操作系统进程的一部分。

在第六实施例中,执行陷阱代码将陷阱地址范围映射到地址表中,其中确定访问应用程序是否已经访问陷阱地址范围包括检测访问应用程序尝试使用来自陷阱地址范围的陷阱数据来访问计算资源。

在第六实施例中,诸如伪标识符和密码的陷阱数据被放置在陷阱地址范围中,所述陷阱地址范围不被有效应用程序使用。因此,如果程序正在呈现来自陷阱数据的标识符和密码以访问计算资源,则这样的访问很可能是恶意的。利用该实施例,监视操作不会浪费资源来监视非恶意的程序,并且集中于很可能来自恶意程序或具有漏洞的非恶意程序的访问。

在第七实施例中,执行应用程序代码的处理器推测性地执行应用程序代码的多个条件分支的两个分支,其中取决于用于确定遍历所述多个条件分支中的哪个分支的条件,维持所述多个条件分支中的仅一个分支的结果。

在第八实施例中,当处理所述多个条件分支时,由处理器推测性地在所述多个条件分支中的一个条件分支中执行陷阱代码。

对于第七和第八实施例,当处理器推测性地执行代码时,可以执行陷阱代码。这进一步提高了恶意程序监视的效率,因为恶意程序可能试图利用作为推测性执行的结果而留在存储器中的敏感数据。这样,通过在推测性执行期间分配陷阱地址范围,所描述的实施例更有可能观察到试图在推测性执行期间访问存储在存储器中的敏感数据的恶意代码。

附图说明

图1示出了计算环境的实施例。

图2示出了将陷阱代码注入执行应用程序代码的进程的执行路径以分配陷阱地址范围的操作的实施例。

图3示出了检测来自对陷阱地址范围的访问的潜在恶意活动的操作的实施例。

图4示出了当潜在恶意程序试图访问内核地址时检测对陷阱地址范围的访问的操作的实施例。

图5示出了检测潜在恶意程序正在从陷阱地址范围提交陷阱代码以访问计算资源的操作的实施例。

图6示出了在执行应用程序代码的推测性执行以分配陷阱地址范围以检测恶意代码时通过推测性执行过程进行的注入陷阱代码的操作的实施例。

图7示出了其中可实现图1的组件的计算环境。

具体实施方式

在推测性执行(speculativeexecution)中,处理器将在执行路径中在应用进程之前推测性地执行应用程序代码,以便当应用进程最终到达程序中发生应用程序代码的推测性执行的点时,使参数和数据可用于应用进程。如果推测性执行取决于条件(例如先前确定的参数的值)而到达不同执行路径的条件分支,那么处理器推测性执行将处理所有条件分支中的应用程序代码,以预先计算可用的参数和值,而不考虑应用程序进程将遍历条件分支中的哪一路径。这通过能够使用推测性地生成的参数和信息而不必执行应用程序代码来显著地提高应用程序进程的速度。

在现有技术中,当推测性地执行代码的进程在条件分支中处理系统调用以访问内核地址中的数据时,所访问的数据可以被存储在高速缓存中,所访问的数据可以包括敏感信息和个人信息。此外,如果应用程序进程沿着不包括访问内核中的受保护数据的系统调用的另一分支继续,则所访问的数据可以保留在高速缓存中。恶意代码可能试图通过推测性执行读取存储在高速缓存中的高速缓存的受保护数据。

为了解决推测性执行的风险,在现有技术中,可以在任何条件分支上停止推测性执行,以避免在高速缓存中留下受保护数据。另一种当前解决方案是刷新高速缓存以移除任何受保护数据或解除受保护数据的地址映射。然而,通过消除在应用程序进程之前推测性地生成的参数和其他信息,这些解决方案将消除推测性执行的益处,推测性执行使得数据和参数在应用程序进程需要它们之前可用。

所描述的实施例提供了对计算机技术的改进,以检测恶意代码,同时通过响应于处理指定类型的命令而执行陷阱代码来允许处理器推测性执行继续进行。陷阱代码分配陷阱地址范围。然后,可以在执行陷阱代码之后执行指定类型的命令。陷阱地址范围将不是由应用程序使用的地址范围,因为它是由陷阱代码分配的,陷阱代码不是应用程序代码的一部分。当应用程序尝试访问陷阱地址范围时,应用程序可以被认为是潜在恶意代码并且可以采取保护动作,诸如执行以下中的至少一个:发送访问应用程序包括潜在恶意代码的通知、监视访问应用程序的执行和限制应用程序访问陷阱地址范围的执行。

图1示出了包括计算机系统100的计算环境的实施例,该计算机系统具有通过总线107通信的处理器102、存储器104和存储设备106。处理器102可以包括单独的中央处理单元(cpu)、单个cpu上的一个或一组多个核、或者一个或多个cpu上的一组处理资源。

存储器104包括操作系统108,用于管理对存储在存储设备106中的数据的应用程序访问,并且管理作为轨道、逻辑块地址(lba)、存储单元、单元组(例如,列、行或单元阵列)、扇区、段等的数据的寻址,其可以是诸如卷、逻辑设备等的更大的轨道组的一部分。处理器102包括推测性执行逻辑116,以在应用程序进程110执行应用程序代码112的执行路径中的位置之前推测性地执行应用程序代码112,使得来自推测性执行的应用程序代码112的参数和其它信息在应用程序进程110到达应用程序代码112中被推测性地执行的那一点时可用于所述应用程序进程110。处理器102可对任何正在运行的进程110执行推测性执行。

操作系统108维护地址表118,也称为硬件页表(hpt),提供分配给应用程序114的逻辑地址到数据存储在存储器104或存储设备106中的本地高速缓存120中的物理位置的映射。在某些实施例中,逻辑地址可以包括虚拟地址,其中虚拟地址或逻辑地址的数据可以存储在存储器104或存储设备106中的高速缓存120中,其中存储设备106中的虚拟地址的数据需要被分页到高速缓存120中以供应用程序进程110访问和处理器102的推测性执行。

操作系统108还可以包括威胁监视程序122,以确定在计算机系统100或通过网络远程连接的计算机系统中执行的、发出输入/输出(i/o)请求的应用程序126是否包括潜在的恶意程序126,诸如恶意软件、随机软件、病毒和其他恶意代码。

存储器104包括被注入到应用程序代码112的推测性执行的路径中的陷阱代码124。陷阱代码124意在分配陷阱地址或陷阱数据128,其将不被应用程序114访问,并且将可能被试图访问数据以进行窃取的恶意程序访问,诸如在侧信道攻击中,或者作为合法程序中的漏洞的结果而被访问。在一个实施例中,陷阱代码124可以分配映射到无效位置的地址的陷阱地址范围,使得对陷阱地址范围的访问将导致段错误(segmentationfault),并且警告操作系统108潜在的恶意活动。在一个替换实施例中,陷阱地址范围可映射到陷阱代码124添加到高速缓存120的陷阱数据128,诸如伪造口令和用户标识符,它们不会由合法应用程序114或有效用户呈现。因此,呈现陷阱数据128以访问系统100中的计算资源的潜在恶意程序126或用户作为需要对其采取保护性动作的潜在恶意程序126而从事可疑活动。可以假设,作为窃取或加密存储设备106中的数据的操作的一部分,勒索病毒(ransomware)或其他恶意程序将访问陷阱数据128。陷阱地址范围可在地址表118的信息和标志中被识别和指示。

存储器104还包括威胁监视程序122,以基于对陷阱地址范围的访问和/或由陷阱代码124创建的陷阱数据128来检测潜在地具有恶意代码(例如病毒、勒索病毒等)的可疑进程。

操作系统108、应用程序114、陷阱代码124、威胁监视程序122在图1中被示为加载到存储器104中并由处理器102中的一个或多个执行的程序代码。或者,一些或所有功能可在系统100中的硬件设备中,例如在专用集成电路(asic)中,实现为微代码或固件。

存储设备106可以包括本领域已知的一个或多个存储设备,诸如由固态电子器件组成的固态存储设备(ssd)、nand存储单元、eeprom(电可擦除可编程只读存储器)、闪存、闪存盘、随机存取存储器(ram)驱动器、存储级存储器(scm)、相变存储器(pcm)、电阻随机存取存储器(rram)、自旋转移扭矩存储器(stm-ram)、导电桥接ram(cbram)、磁性硬盘驱动器、光盘、磁带等。存储设备还可以被配置成设备阵列,诸如简单磁盘捆绑(jbod)、直接存取存储设备(dasd)、独立磁盘冗余阵列(raid)、虚拟化设备等。此外,存储设备可以包括来自不同供应商或来自相同供应商的异构存储设备。

存储器104可以包括适当的易失性或非易失性存储器设备,包括上面描述的那些。

图2示出了用于处理器102执行执行代码的操作的实施例,该执行代码可以是正常应用程序代码处理或应用程序代码112的推测性执行的一部分。在推测性地或以其他方式发起(在框200)执行应用程序代码112的操作时,处理器102处理(在框202)应用程序代码112中的命令。如果(在框204)处理的命令类型是触发陷阱代码124的执行的指定命令类型,诸如系统调用或访问内核地址空间的调用,则处理器102执行(在框206)陷阱代码124以在内核地址空间中分配陷阱地址范围,诸如映射到无效物理地址的陷阱地址范围或没有数据存储在高速缓存中的范围。或者,处理器102可以在陷阱地址范围中包括陷阱数据128,诸如包括伪造的用户名和密码。如果(在框204)处理命令不是指定类型的或者在执行陷阱代码124(在框206)之后,处理器102执行(在框208)处理的命令,并且继续处理应用程序代码112,诸如在所有条件分支中推测性地处理代码。可以存在响应于在执行期间执行陷阱代码124的多个实例而创建的陷阱地址范围的多个实例。

图3示出了由可以是操作系统108的一部分的威胁监视程序122执行的操作的实施例,以确定应用程序126是否是潜在恶意程序。在检测到(在框300)潜在恶意程序126已经访问陷阱地址范围时,例如发出对陷阱地址范围的读或写,威胁监视程序122执行(在框302)向用户或防病毒程序发送关于访问应用程序126包括潜在恶意代码的通知、监视潜在恶意程序126的执行、以及限制潜在恶意程序126的执行中的至少一个。例如,威胁监测程序122可以隔离潜在恶意程序126并且警告用户采取进一步的动作,诸如如果潜在恶意程序126是授权程序则允许其运行、删除或以其他方式阻止执行潜在恶意程序126。在某些实施例中,潜在恶意程序126的监视可以包括允许程序126在“蜜罐”环境中运行,在该环境中,信息被提供给程序126以便监视潜在恶意程序126如何在计算机系统100中交互以及哪个解决了它通过因特网通信的问题。

图4示出了由操作系统108、威胁监视程序122和/或其他程序执行的操作的附加实施例,以当应用程序126试图访问操作系统108的内核地址空间中的内核地址时确定该应用程序是否是潜在恶意程序。在检测到(在框400)可能正在用户空间中执行的应用程序126正试图访问所请求的内核地址时,操作系统108/威胁监视程序122确定(在框402)所请求的内核地址是否在地址表118中。如果(在方框402)内核地址在地址表118中,并且如果(在方框404)所请求的内核地址的数据在高速缓存120中,则将所请求的内核地址的数据从高速缓存120返回(在方框406)给请求应用程序。如果(在方框402)所请求的内核地址不在地址表118中,或者如果(在方框404)所请求的内核地址的数据不在高速缓存120中,则丢弃段错误(在方框408)。

响应于段错误(在框408),操作系统108/威胁监视程序122确定(在框410)所请求的内核地址是否在陷阱地址范围内。如果不是,则向访问应用程序返回错误(在框412),该错误可能不是恶意程序126,因为它未试图访问陷阱地址,但是可能包括接收段错误的合法程序。如果(在框410)所请求的内核地址在陷阱地址范围内,则程序126可以被认为是恶意的,并且威胁监视程序122执行关于潜在恶意程序126描述的威胁处理操作之一(在块414),诸如关于图3中的框302描述的。

图5示出了由威胁监视程序122、操作系统108和/或其他程序执行的操作的附加实施例,以确定在陷阱地址范围提供陷阱数据128的实施例中(例如具有陷阱密码和用户id)应用程序126是否是潜在恶意程序。在检测到(在框500)访问应用程序126正在提交访问代码(诸如用户id或密码)以访问计算资源(诸如计算机系统100中或与其耦合的硬件、软件或数据资源)时,威胁监视程序122/操作系统108确定(在框502)所提交的代码是否在高速缓存120或存储装置106中由陷阱地址范围中的地址之一寻址的位置处。如果(在框502)所提交的访问代码不是来自陷阱地址范围,则威胁监视程序122允许(在框504)处理该代码以确定对所请求的计算资源的访问是否被授权。否则,如果(在框502)提交的访问代码在陷阱地址范围之一中,则威胁监视程序122执行关于潜在恶意程序126描述的威胁处理操作之一(在框506),诸如关于图3中的框302描述的。

对于图4和图5的实施例,如果检测到应用程序试图访问陷阱地址范围之一或提交存储在陷阱地址范围中的代码,则访问应用程序很可能包括恶意代码,因为陷阱地址范围不是由应用程序代码112从合法应用程序114分配的,除非合法应用程序114具有访问未分配给应用程序114的地址的错误或漏洞。

图6示出了由处理器102执行的操作的实施例,该处理器在应用程序进程110执行执行路径中的应用程序代码112之前执行推测性执行。在推测性地处理应用程序代码112时,处理器102处理(在框602)应用程序代码112中的条件分支,其中在先前执行的应用程序代码112期间设置的条件或参数值确定采取代码中的哪个分支。处理器102在所有分支中处理应用程序代码112以使任何参数和数据可用,而不管应用程序进程110在到达该条件分支时处理的分支。在处理(在框604)条件分支之一中的命令时,处理器102确定(在框606)处理的命令类型是否包括系统调用或对内核模式和内核地址空间的其它访问。如果是,则处理器102执行(在框608)陷阱代码124以分配陷阱地址范围,包括内核地址的范围,其映射到地址表118中的无效位置或映射到具有陷阱数据128的位置。在处理陷阱代码124(来自框608)之后,或者如果处理的命令不包括系统调用(来自框606的否分支),则处理器102推测性地执行(在框610)处理的命令,并且通过继续回到框600来继续(在框612)应用程序代码112的推测性执行。

对于图6的实施例,系统调用在应用程序代码112的推测性执行期间触发陷阱地址范围的分配。如果应用程序进程110采用不具有系统调用的其它分支,其可能是被更频繁地遍历的分支,则该分支中的代码将被推测性地执行,从而为被更频繁地遍历的分支提供推测性执行的益处。这样,所描述的实施例允许对于最频繁的处理路径实现推测性执行的益处,同时在具有系统调用的分支中分配陷阱地址范围以能够为寻求访问内核地址的恶意程序126设置陷阱。恶意代码126将看到陷阱地址是在条件分支中分配的,并且试图访问那些陷阱地址,相信它们是作为系统调用的一部分而分配的,并且可能包含敏感信息,例如个人数据、密码等。

在替代实施例中,陷阱代码124可在执行系统调用之后执行。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如java、smalltalk、c++等,以及过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

图1的计算组件,包括计算机系统100,可以在一个或多个计算机系统中实现,诸如图7所示的计算机系统702。计算机系统/服务器702可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器702可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。

如图7所示,计算机系统/服务器702以通用计算设备的形式示出。计算机系统/服务器702的组件可以包括但不限于一个或多个处理器或处理单元704、系统存储器706、以及将包括系统存储器706在内的各种系统组件耦合到处理器704的总线708。总线708表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(isa)总线、微通道体系结构(mca)总线、增强型isa(eisa)总线、视频电子技术标准协会(vesa)局部总线和外围部件互连(pci)总线。

计算机系统/服务器702通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器702访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。

系统存储器706可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(ram)710和/或高速缓存存储器712。计算机系统/服务器702还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统713可被提供用于从不可移动、非易失性磁介质(未示出且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如cd-rom、dvd-rom或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线708。如下面将进一步描绘和描述的,存储器706可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该程序模块被配置成执行本发明的实施例的功能。

具有一组(至少一个)程序模块716的程序/实用程序714以及操作系统、一个或多个应用程序、其它程序模块和程序数据可被存储在存储器706中,这是作为示例而非限制。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。计算机702的组件可以被实现为程序模块716,其通常执行如这里所描述的本发明的实施例的功能和/或方法。图1的系统可以在一个或多个计算机系统702中实现,其中如果它们在多个计算机系统702中实现,则计算机系统可以通过网络通信。

计算机系统/服务器702还可以与一个或多个外部设备718通信,诸如键盘、定点设备、显示器720等;一个或多个设备,其使得用户能够与计算机系统/服务器702交互;和/或使计算机系统/服务器702能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可以经由输入/输出(i/o)接口722发生。此外,计算机系统/服务器702可以经由网络适配器724与诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,因特网)之类的一个或多个网络通信。如所描绘的,网络适配器724经由总线708与计算机系统/服务器702的其他组件通信。应当理解,尽管未示出,但是可以结合计算机系统/服务器702使用其他硬件和/或软件组件。实例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、raid系统、磁带驱动器和数据档案存储系统等。

术语“实施例”、“多个实施例”、“该实施例”、“这些实施例”、“一个或多个实施例”、“一些实施例”和“一个实施例”表示“本发明的一个或多个(但不是全部)实施例”,除非另有明确说明。

术语“包括(including)”、“包括(comprising)”、“具有(having)”及其变形表示“包括但不限于”,除非另有明确说明。

除非另外明确规定,否则列举的项目列表并不意味着任何或所有项目是互斥的。

术语“一个(a)”、“一个(an)”和“该(the)”表示“一个或多个”,除非另有明确说明。

除非另外明确指出,否则彼此通信的设备不需要彼此连续通信。另外,彼此通信的设备可以直接通信或通过一个或多个中间物间接通信。

具有彼此通信的若干组件的实施例的描述并不暗示需要所有此类组件。相反,描述了各种可选组件以说明本发明的各种可能的实施例。

当在此描述单个设备或产品时,很明显,可以使用多于一个的设备/产品(无论它们是否协作)来代替单个设备/产品。类似地,在这里描述了多于一个设备或产品(无论它们是否协作)的情况下,将容易明白的是,可以使用单个设备/产品来代替多于一个设备或产品,或者可以使用不同数量的设备/产品来代替所示数量的设备或程序。设备的功能和/或特征可以替代地由一个或多个未明确描述为具有这样的功能/特征的其他设备来体现。因此,本发明的其它实施例不需要包括该设备本身。

为了说明和描述的目的,已经给出了本发明的各种实施例的上述描述。其不是穷举的,也不是要将本发明限制为所公开的精确形式。根据上述教导,许多修改和变化是可能的。本发明的范围不是由该详细描述来限定,而是由所附权利要求来限定。上述说明、示例和数据提供了对本发明的组成的制造和使用的完整描述。由于在不脱离本发明的范围的情况下可以做出本发明的许多实施例,因此本发明在于所附权利要求书。

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