安全的嵌入式微控制器映像加载转让专利

申请号 : CN202080083624.8

文献号 : CN114787808B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : C·斯特芬C·艾伯森N·奥利里奇E·坎贝尔

申请人 : 国际商业机器公司

摘要 :

一种用于提供安全的映像加载的系统和方法。系统包括微控制器。微控制器具有多个物理可修改内部组件(PMIC)。多个PMIC中的每个PMIC仅可被修改一次。系统还包括被配置为从微控制器的存储器加载引导映像的映像加载器,以及被配置为计算引导映像的校验和值的校验和计算器。系统还包括校验和烧录器,其被配置为修改多个PMIC以创建该映像的校验和值的二进制表示。对映像计算校验和值。该校验和值被写入微控制器。使用PMIC来将该值烧入微控制器中。进一步地,使用在微控制器中存在的PMIC来将对校验和失配的响应烧入微控制器中。

权利要求 :

1.一种用于提供安全的引导映像加载的系统,包括:微控制器;

多个物理可修改内部组件PMIC,其被设置在所述微控制器上,其中,所述多个PMIC中的每一个PMIC仅能够被修改一次;

映像加载器,其被配置为从所述微控制器的存储器加载引导映像;

校验和计算器,其被配置为计算所述引导映像的校验和值;以及校验和烧录器,其被配置为修改所述多个PMIC以创建所述引导映像的所述校验和值的二进制表示;

其中,所述映像加载器被配置为调用所述校验和计算器以在每次加载所述引导映像时计算所述引导映像的第二校验和值,并且将所述第二校验和值与所述多个PMIC中的所述校验和值进行比较以确定所述第二校验和值与所述校验和值是否相同。

2.根据权利要求1所述的系统,其中,所述第二校验和值和所述校验和值是相同的,其中,所述映像加载器被配置为继续允许所述引导映像加载。

3.根据权利要求1所述的系统,其中,所述第二校验和值和第一校验和值不相同,其中,所述映像加载器被配置为执行失配响应。

4.根据权利要求3所述的系统,其中,所述失配响应被烧入所述多个PMIC中。

5.根据权利要求4所述的系统,其中,所述失配响应防止所述引导映像的进一步加载。

6.根据权利要求4所述的系统,其中,所述失配响应向用户警告失配。

7.根据权利要求6所述的系统,其中,所述失配响应进一步防止加载所述引导映像,直到从所述用户接收到响应为止。

8.根据权利要求4所述的系统,其中,被烧入所述多个PMIC中的所述失配响应是部分响应。

9.根据权利要求8所述的系统,其中,所述部分响应是指向存储完整失配响应的地址的指针。

10.一种方法,所述方法包括:

计算引导映像的校验和值;

将所述校验和值写入微控制器;

将所述校验和值烧入所述微控制器中;以及

将对校验和失配的响应烧入所述微控制器中。

11.根据权利要求10所述的方法,其中,所述校验和值被烧入设置在所述微控制器上的多个物理可修改内部组件PMIC中,其中,所述多个PMIC中的每一个PMIC仅能够被修改一次。

12.根据权利要求11所述的方法,其中,所述校验和值被烧入所述多个PMIC中,作为所述校验和值的二进制表示。

13.根据权利要求10所述的方法,其中,对校验和失配的所述响应被烧入设置在所述微控制器上的多个物理可修改内部组件PMIC中,其中,所述多个PMIC中的每一个PMIC仅能够修改一次。

14.一种用于保护引导映像加载的方法,包括:从微控制器加载所述引导映像;

计算所述引导映像的校验和值;

将所述校验和值与存储的校验和值进行比较,其中,所述存储的校验和值被永久烧入所述微控制器中;

当将所述校验和值与所述存储的校验和值进行比较时,响应于匹配,允许所述引导映像继续加载;以及当将所述校验和值与所述存储的校验和值进行比较时,响应于失配,执行失配响应,其中,所述失配响应被永久烧入所述微控制器中。

15.根据权利要求14所述的方法,其中,所述失配响应停止所述引导映像的进一步加载。

16.根据权利要求14所述的方法,其中,所述失配响应向用户警告失配。

17.根据权利要求16所述的方法,其中,所述失配响应进一步停止所述引导映像的进一步加载,直到从所述用户接收到响应为止。

18.根据权利要求14所述的方法,其中,所述失配响应是作为指向存储完整失配响应的地址的指针的部分响应。

说明书 :

安全的嵌入式微控制器映像加载

技术领域

[0001] 本公开涉及映像加载,更具体地,涉及确保正确的引导映像被加载。

背景技术

[0002] 当今,计算机从片外非易失性存储装置加载映像。该图像被假定为有效且安全。然而,攻击者可以通过加载经修改的映像来损害计算机的映像和安全性。如果受损的映像被加载到相关联的计算机中,则该计算机可被用于修改该映像的人所期望的任何目的。这些目的可以是用户有意的或无意的,并且如果违法,则导致组织内的安全脆弱性。
[0003] 因此,在本领域中需要解决上述问题。

发明内容

[0004] 从第一方面看,本发明提供了一种用于提供安全的引导映像加载的系统,其包括:微控制器;多个物理可修改内部组件(PMIC),其被设置在微控制器上,其中,多个PMIC中的每一个仅可被修改一次;映像加载器,其被配置为从微控制器的存储器加载引导映像;校验和计算器,其被配置为计算引导映像的校验和值;以及校验和烧录器,其被配置为修改多个PMIC以创建引导映像的校验和值的二进制表示。
[0005] 从另一方面看,本发明提供了一种方法,其包括:计算引导映像的校验和值;将校验和值写入微控制器;将校验和值烧入微控制器中;以及将对校验和失配的响应烧入微控制器中。
[0006] 从另一方面看,本发明提供了一种保护引导映像加载的方法,其包括:从微控制器加载引导映像;计算引导映像的校验和值;将校验和值与存储的校验和值进行比较,其中,存储的校验和值被永久烧入微控制器中;当将校验和值与存储的校验和值进行比较时,响应于匹配,允许引导映像继续加载;以及当将校验和值与存储的校验和值进行比较时,响应于失配,执行失配响应。
[0007] 从另一方面看,本发明提供了一种用于保护引导映像加载的计算机程序产品,该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质可由处理电路读取,并且存储由处理电路执行以便执行用于执行本发明的步骤的方法的指令。
[0008] 从另一方面看,本发明提供了一种计算机程序,其被存储在计算机可读介质上并且可加载到数字计算机的内部存储器中,包括软件代码部分,当程序在计算机上运行时,软件代码部分用于执行本发明的步骤。
[0009] 本公开的实施例涉及一种用于提供安全的映像加载的系统。该系统包括微控制器。微控制器具有多个物理可修改内部组件(PMIC)。多个PMIC中的每个PMIC仅可被修改一次。该系统还包括被配置为从微控制器的存储器加载引导映像的映像加载器,以及被配置为计算引导映像的校验和值的校验和计算器。该系统还包括校验和烧录器,其被配置为修改多个PMIC以创建映像的校验和值的二进制表示。
[0010] 本公开的实施例涉及一种用于在微控制器中创建安全映像的方法。对映像计算校验和值。然后,校验和值被写入微控制器。然后,使用在微控制器中存在的PMIC来将该值烧入微控制器中。进一步地,还使用在微控制器中存在的PMIC来将对校验和失配的响应烧入微控制器中。
[0011] 本公开的实施例涉及一种用于保护引导映像加载的方法。从微控制器加载引导映像。接着,对所加载的引导映像计算校验和值。然后,将该值与被存储在微控制器上并已被烧入微控制器中的校验和值进行比较。当发现校验和值与存储的校验和值之间匹配时,允许引导映像继续加载。当发现失配时,执行失配响应。将失配响应编程到微控制器中。
[0012] 上述的发明内容并非旨在描述本公开的每个说明性实施例或每种实现。

附图说明

[0013] 在本申请中包括的附图被并入说明书并构成说明书的一部分。它们示出了本公开的实施例,并且与说明书一起用于解释本公开的原理。附图仅说明某些实施例,而不限制本公开。
[0014] 图1是根据说明性实施例的采用安全的嵌入式微控制器映像加载的系统的框图。
[0015] 图2是根据说明性实施例的示出系统如何将校验和值加载并烧入微控制器中的过程的流程图。
[0016] 图3是根据说明性实施例的示出系统在正常操作期间如何操作的过程的流程图。
[0017] 图4是示出根据一个实施例的计算系统的框图。
[0018] 虽然本发明可修改成各种修改和替换形式,但是,其细节已经在附图中通过示例的方式示出并将被详细描述。然而,应当理解,其意图并非将本发明限制在所描述的特定实施例。相反,其旨在覆盖落入本发明的范围内的所有修改、等同和替换。

具体实施方式

[0019] 本公开的各方面涉及映像加载,更具体地,涉及确保正确的引导映像被加载。虽然本公开不一定限于这类应用,但是,通过使用该上下文的各种示例的讨论,可以理解本公开的各个方面。
[0020] 本公开使用校验和来验证在系统初始化期间被加载的映像与系统最初一起出厂的映像相匹配。这防止外部存储器在制造之后能够被修改或损坏而不检测。
[0021] 验证引导映像120的其他方法使用安全性报头或加密密钥。通过用私钥对映像签名来产生该报头。然而,使用签名映像的该方法的不利方面在于,rouge映像可被加载并用工作密钥来签名以产生系统预期的安全签名。这增加了系统对恶意攻击的脆弱性。本公开不需要或阻止使用加密作为附加的保护级别。这允许谨慎的公司或个人使用这两种方法来保护他们的引导映像120免于不需要的或故意的修改。
[0022] 图1是根据实施例的采用安全的嵌入式微控制器110映像加载的系统的框图。系统包括微控制器110、引导映像120、映像加载器130、校验和计算器140、以及校验和烧录器150。
[0023] 微控制器110是系统的向其提供嵌入式应用的组件。微控制器110被包含在单个集成电路芯片上。微控制器110包括一个或多个处理器核(CPU)、存储器和输入/输出外围设备。取决于微控制器110的配置,程序存储器可以是只能在工厂被编程的永久性只读存储器,或者它可以是现场可变闪存或可擦除只读存储器。在存储器可在现场被改变的情况下,验证微控制器110上的相关联数据的完整性以确保数据自它最初被加载到微控制器110上以来没有被改变是有用的。进一步地,微控制器110包括多个物理可修改内部组件125‑1、125‑2、…125‑N(统称为PMIC 125)。
[0024] 具有物理可修改内部组件(PMIC)的电子微控制器110可通过确保当前正加载的引导映像120与已与和微控制器110一起出厂的原始引导映像120匹配来提供优于现有安全技术的益处。PMIC 125被并入微控制器110内部。在一些实施例中,使用eFuse(电熔丝)来实现PMIC 125,eFuse是用于计算机芯片的动态实时重新编程的技术。eFuse具有一旦“熔丝”被熔断,则它不能恢复到其原始状态的优点。然而,在一些实施例中,PMIC125可以是e‑Fuse阵列,或者是通过逻辑电路的EEPROM,或者是由e‑Fuse选通的EEPROM。当由e‑Fuse选通时,该选通用作防止位于e‑Fuse门之后的数据/图像被修改的防止机制。
[0025] 微控制器110的PMIC 125包括一个或多个可断裂器件,其被配置为引起开路(例如,熔丝、导线、具有限定脆性的导电材料)。每个可断裂器件可以通过牺牲操作(例如断开)来操作。在被断开之前,每个可断裂器件是电流可以从一端流到另一端的电子路径。电可连续地或响应于验证可断裂器件的请求而流过。如果电到达另一端,则电路被认为闭合,并且闭合电路可以表示值,诸如“1”或“0”。在被断开之后,每个可断裂器件被破坏,以使得电流不再从一端流到另一端。例如,可断裂器件可以具有易碎性质的构造,其响应于热、电流或其他相关原因而断裂或蒸发。如果电没有到达另一端,则电路被认为断开,并且开路可以表示值,诸如“0”或“1”。由开路或闭合电路表示的值是相反的值。也就是说,例如,如果开路具有值“1”,则闭合电路具有值“0”,反之亦然。断开电路的过程可以通过例如蒸发、熔化、燃烧、喷吹、破裂、物理修改或以其它方式中断电流通过特定电路来执行。每个可断裂器件可以通过接收导致产生开路的电流(例如过电流、过多负载)来操作。
[0026] PMIC 125可直接实现操作。在一些实施例中,PMIC 125可包括读取可断裂器件的数量及其当前状态的逻辑。在一些实施例中,在PMIC 125中不包括该逻辑。例如,逻辑可以位于容纳PMIC 125的传感器或计算机内。在另一个示例中,逻辑可以在第二集成电路中,并且可以通过电路板的逻辑迹线或通过通信电缆或其他导线而可通信地耦合到PMIC 125。在一些实施例中,PMIC 125可以将电流直接施加到可断裂器件。在一些实施例中,PMIC 125可将电流间接施加到可断裂器件,并将第二电流直接施加到可断裂器件。在第一示例中,第一电流被施加到与多个可断裂器件相邻的导线,使得可断裂器件的温度增加(例如,加热)。在加热之后,第二电流被直接施加到多个可断裂器件中的一个或多个,使得一个或多个可断裂器件断裂,并因此产生一个或多个永久开路。在一些实施例中,被施加到PMIC 125中的可断裂器件以引起断裂的电流由外部源提供。在该实施例中,PMIC 125不具有断开任何可断裂器件的内部能力。这样,一旦微控制器110被编程,可断裂器件的模式则不能轻易地改变。
[0027] 引导映像120是包含计算机存储介质的完整内容和结构的计算机文件。当引导映像120被传送到微控制器110上时,它允许微控制器110的相关联的硬件引导或加载。引导映像120包括操作系统、实用程序和诊断程序。引导映像120还可以包括引导和数据恢复信息。映像还可以包括专用于微控制器110的特定最终用途的应用。一旦已经构建了引导映像
120,它就可以被简单地复制到设备上,在合理的限制内被修补,并且在任何问题的情况下保持可任意使用。这是因为与其它映像不同,纯引导映像120S不包含任务关键数据。纯引导映像120不包含不能从配置或现成的可执行文件再现的数据。特别地,终端用户数据不是引导映像120的一部分,尽管一些操作系统要求用户偏好或配置文件的副本被保存在引导映像120本身内,例如Microsoft Windows注册表。本公开的引导映像120通常在微控制器110被安装在相关联的系统中时被固定,以使得在对应系统的寿命期间不预期引导映像120的修改。然而,可能存在引导映像120可被修改的情况。这些改变可能是有意的,诸如当在分发之后在引导映像120中稍后识别出错误时。相反,这些改变可能是无意的(从系统的所有者的角度看),诸如黑客或其他恶意源修改引导映像120以允许恶意使用相关联的系统或系统上的数据。尽管本公开将映像讨论为引导映像,但是应当理解,可以使用用户期望保护其免受破坏或其他修改的任何映像,诸如应用程序映像。
[0028] 映像加载器130是系统的将引导映像120从微控制器110的存储器加载到系统的存储器的部分。映像加载器130被存储在系统的ROM中。然而,在一些实施例中,它可以被存储在其他位置。映像加载器130将引导映像120放置到存储器中,以用于准备执行引导映像120。映像加载器130将引导映像120的内容读入存储器中,并执行其它所需任务以准备执行引导映像120。一旦加载完成,则控制被传递给所加载的程序代码。映像加载器130可以执行一系列基本硬件测试,以确保系统准备好执行引导映像120。映像加载器130执行的测试之一是验证与所加载的引导映像120相关联的校验和。如果引导映像120的校验和与被烧入微控制器110中的校验和不匹配,则映像加载器130继续遵循被烧入微控制器110中的指令集。
这些指令告诉映像加载器130在校验和之间失配的情况下如何继续进行。这些指令可以包括用于如下操作的指令:暂停或以其他方式停止引导映像120的加载和执行,向管理员或其他用户通知失配,或者在继续进行引导映像120的加载和执行之前请求附加的用户输入。对失配的其它响应也可以被编程到微控制器110中。在一些实施例中,微控制器110可以执行检查校验和值以及执行失配指令的过程。
[0029] 校验和计算器140是系统的计算引导映像120的校验和的组件。校验和计算器140获得引导映像120,并对引导映像120应用过程以计算引导映像120的校验和值。校验和计算器140可以采用用于计算校验和的任何方法,诸如奇偶字节、奇偶字、模和、或者位置相关的方法。进一步地,在一些实施例中,可以通过使用散列函数来计算校验和。校验和的长度取决于设备中期望的安全级别以及在微控制器110中存在的eFuse的数量。校验和的大小可以在1到1024比特之间的范围内。然而,在使用密码散列函数的实例中,校验和可以具有任何数量的比特。校验和计算器140在引导映像120第一次被加载到微控制器110上之前(诸如在工厂)计算引导映像120的校验和。校验和计算器140还在每次由映像加载器130加载引导映像120时计算引导映像120的校验和。该校验和值在第一个实例中被提供给校验和烧录器150,并在所有后续的实例中被提供给映像加载器130。在一些实施例中,有两个校验和计算器140、141。第一校验和计算器140被维持在引导映像120首先被加载到微控制器110中的位置处,并且第二校验和计算器141位于与微控制器110相关联的设备上。在该实施例中,两个校验和计算器140、141都实现用于计算校验和的相同方法,以使得两个计算器对于相同的引导映像120将得出相同的值。
[0030] 校验和烧录器150是系统的将由校验和计算器140计算的校验和值烧入微控制器110中的组件。使用微控制器110的PMIC 125部分来将校验和烧入微控制器110中。校验和的值被转换成二进制值。然后,通过改变多个PMIC 125的断开/未断开状态来烧入该二进制值,以使得对应的值表示校验和值。例如,如果使用256比特校验和,并且所计算的值是“12
0EA8A25E5D487BF68B5F7096440019”,则该校验和的对应二进制表示是:
[0031] 00110001 00110010 00110000 01000101 01000001 00111000 01000001 00110010 00110101 01000101 00110101 01000100 00110100 00111000 00110111 
01000010 01000110 00110110 00111000 01000010 00110101 01000110 00110111 
00110000 00111001 00110110 00110100 00110100 00110000 00110000 00110001 
00111001
[0032] 为了将该值烧入微控制器110中,微控制器110需要必须具有至少256个PMIC 125可用。然后,校验和烧录器150根据用于确定“0”或“1”的方法来将对应的电路烧成断开该电路或闭合该电路。然而,微控制器110可以具有任意数量的PMIC 125,以使得并非所有可用的PMIC 125用于校验和。进一步地,校验和可以是任何数量的比特。然而,微控制器110应当至少具有与校验和中的比特数量一样的PMIC 125的数量。
[0033] 校验和烧录器150还被配置为向微控制器110烧入用于映像加载器130如何在加载引导映像120时响应所烧入的校验和与针对引导映像120所计算的校验和之间的失配的指令。完整指令集可以被烧入微控制器110中。为了烧入完整指令集,微控制器110需要有足够数量的PMIC 125可用,以允许以二进制形式安装指令。然而,在一些实施例中,只有一部分指令被烧入微控制器110中。在这些实施例中,该部分指令可以包括指向存储完整指令集的位置的指针。例如,地址被烧入微控制器110中,以使得当发生失配时,映像加载器130向微控制器110访问该地址,并前进到该地址以获得响应于失配它需要执行的指令集。然而,可以使用通过被烧入的PMIC 125将映像加载器130引导到指令集的其他方式。
[0034] 图2是示出根据实施例的系统如何将校验和efuse加载和烧入微控制器110中的过程的流程图。该过程开始于对要被加载到微处理器上的映像计算校验和。这在步骤210中示出。该过程可以采用用于计算校验和的任何方法,诸如奇偶字节、奇偶字、模和、或者位置相关的方法。进一步地,在一些实施例中,可以通过使用散列函数来计算校验和。校验和的长度取决于在设备中期望的安全级别以及存在的eFuse的数量。校验和的大小可以在1到2048比特之间的范围内。校验和中的比特数量不受上述的比特数量的限制,因为预期可用于校验和的比特数量将持续增长。然而,在使用密码散列函数的实例中,校验和可以具有任何数量的比特。期望的引导映像120通过校验和计算器140以确定校验和的值。
[0035] 一旦已经计算了校验和,系统继续将校验和写入微处理器。这在步骤220中示出。为了将校验和写入微处理器,校验和烧录器150接收校验和值,然后,确定微控制器110的哪些PMIC 125需要被断开。这样,校验和烧录器150确定哪些PMIC 125应当使它们的对应值改变。同样,取决于系统如何确定“0”或“1”是什么将确定哪些特定PMIC 125需要被断开。
[0036] 在校验和已被写入硬件之后,系统继续将校验和烧入PMIC 125中。这在步骤230中示出。为了将校验和写入微处理器,校验和烧录器150断开对应的PMIC 125,以使得产生对应的值“1”或“0”。断开电路的过程可以通过例如蒸发、熔化、燃烧、喷吹、破裂、物理修改或以其它方式中断电流通过特定电路来执行。每个PMIC 125可通过接收导致产生开路的电流(例如,过电流、过多负载)来操作。
[0037] 在烧入校验和之后,系统则继续确定当校验和与正被加载的映像的校验和不匹配时硬件应当具有的响应。这在步骤240中示出。然后,校验和烧录器150通过在微控制器110上的附加的PMIC 125将该响应烧入微控制器110中。在一些实施例中,对失配的完整响应集被烧入微控制器110中。然而,在其它实施例中,只有响应的一部分被烧入微控制器110中。例如,完整指令集的地址或指向完整指令集的其他指针被烧入微控制器110中,以使得映像加载器130将遵从所提供的地址,以响应于不匹配而获得并执行完整指令集。
[0038] 图3是示出系统在正常操作期间如何操作以确保系统正确加载的过程的流程图。该过程开始于将引导映像120加载到sRAM中。这在步骤310中示出。可以使用用于将映像加载到存储器中的任何已知方法来将引导映像120加载到sRAM中。在一些实施例中,引导映像
120被加载到除sRAM之外的其它存储器位置。
[0039] 当引导映像120在被加载到存储器中时,计算引导映像120的校验和。这在步骤320中示出。校验和计算器140使用用于计算被烧入微控制器110中的校验和值的相同过程来计算引导映像120的校验和值。例如,校验和计算器140可以采用用于计算校验和的任何方法,诸如奇偶字节、奇偶字、模和、或者位置相关的方法。进一步地,在一些实施例中,可以通过使用散列函数来计算校验和。校验和的大小可以在1到2048比特之间的范围内。然而,在使用密码散列函数的情况下,校验和可以具有任何数量的比特。
[0040] 校验和值被提供给映像加载器130。然后,映像加载器130将从校验和计算器140接收的校验和值与被烧入微控制器110中的校验和值进行比较。这在步骤330中示出。如果校验和值匹配,则映像加载器130继续加载引导映像120,并允许引导映像120继续它的过程。这在步骤340中示出。
[0041] 如果校验和值不匹配,则映像加载器130继续确定对失配的响应。这在步骤350示出。映像加载器130继续检查微控制器110,以确定是否存在在失配的情况下应当被遵循的指令集。这些指令可以包括关于如何响应失配的完整指令或部分指令。如果提供了完整指令,则映像遵循那些指令。然而,如果提供了部分指令,则映像加载器130可遵循这些部分指令,以获得完整指令集。如上所述,部分指令可以指示映像加载器130去往特定位置,以获得完整指令集。通过只具有指向完整指令集的指针,系统的用户可以在稍后的日期修改那些指令,而不影响整个系统的安全性。指令可以指示映像加载器130例如停止加载引导映像120、向用户或管理员通知失配而同时仍加载引导映像120、向用户或管理员通知失配并等待来自他们的进一步指令、允许加载映像而无需进一步的动作、或者用户或管理员可期望的任何其它动作。
[0042] 现在参考图4,示出了根据本公开的实施例的可以用于实现本文所描述的方法、工具和模块中的一个或多个以及任何相关功能(例如,使用计算机的一个或多个处理器电路或计算机处理器)的示例计算机系统401的高级框图。在一些实施例中,计算机系统401的主要组件可以包括一个或多个CPU 402、存储器子系统404、终端接口412、存储接口416、I/O(输入/输出)设备接口414和网络接口418,所有这些组件可以经由存储器总线403、I/O总线408和I/O总线接口单元410直接或间接地通信耦合以用于组件间通信。
[0043] 计算机系统401可以包含一个或多个通用可编程中央处理单元(CPU)402‑1、402‑2、402‑3和402‑N,在此统称为CPU 402。在一些实施例中,计算机系统401可以包含相对大的系统的典型的多个处理器;然而,在其它实施例中,可替代地,计算机系统401可以是单CPU系统。每个CPU402可以执行被存储在存储器子系统404中的指令,并且可以包括一级或多级板载高速缓存。
[0044] 系统存储器404可以包括采用易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)422和/或高速缓冲存储器424。计算机系统/服务器401还可以包括其他可移除/不可移除的、易失性/非易失性的计算机系统存储介质。仅作为示例,存储系统426可被提供用于从不可移除的非易失性磁介质(未示出并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移除的非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从可移除的非易失性光盘(诸如CD‑ROM、DVD‑ROM或其它光学介质)读取或向其写入的光盘驱动器。此外,存储器404可以包括闪存,例如,闪存棒驱动器或闪存驱动器。存储设备可以通过一个或多个数据介质接口被连接到存储器总线403。存储器404可以包括至少一个程序产品,其具有一组(例如,至少一个)程序模块,该程序模块被配置为执行各种实施例的功能。
[0045] 尽管存储器总线403在图4中被示为在CPU 402、存储器子系统404和I/O总线接口410之间提供直接通信路径的单个总线结构,但是在一些实施例中,存储器总线403可以包括多个不同的总线或通信路径,其可以以各种形式中的任何形式来布置,诸如分层的点对点链路、星形或网状配置、多层总线、并行和冗余路径、或任何其他适当类型的配置。此外,虽然I/O总线接口410和I/O总线408被示为单个相应的单元,但是在一些实施例中,计算机系统401可以包含多个I/O总线接口单元410、多个I/O总线408、或两者。进一步地,虽然示出了将I/O总线408与通向各种I/O设备的各种通信路径分开的多个I/O接口单元,但是在其他实施例中,一些或所有I/O设备可以直接连接到一个或多个系统I/O总线。
[0046] 在一些实施例中,计算机系统401可以是多用户大型计算机系统、单用户系统、或者服务器计算机或具有很少或没有直接用户接口但从其它计算机系统(客户端)接收请求的类似设备。进一步地,在一些实施例中,计算机系统401可以被实现为台式计算机、便携式计算机、膝上型或笔记本计算机、平板计算机、袖珍计算机、电话、智能电话、网络交换机或路由器、或任何其他适当类型的电子设备。
[0047] 注意,图4旨在描绘示例性计算机系统401的代表性主要组件。然而,在一些实施例中,各个组件可以具有比图4中所表示的更大或更小的复杂度,可以存在不同于图4中所示的那些组件或除其之外的组件,并且这些组件的数量、类型和配置可以变化。
[0048] 每一个具有至少一组程序模块430的一个或多个程序/实用程序428可以被存储在存储器404中。程序/实用程序428可以包括管理程序(也称为虚拟机监视器)、一个或多个操作系统、一个或多个应用程序、其他程序模块、以及程序数据。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序428和/或程序模块403通常执行各种实施例的功能或方法。
[0049] 本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括在其上具有计算机可读程序指令的(一个或多个)计算机可读存储介质,该计算机可读程序指令用于使处理器执行本发明的各方面。
[0050] 计算机可读存储介质可以是可保持并存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或前述存储设备的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD‑ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如在上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码设备、以及上述设备的任何适当的组合。如本文所使用的计算机可读存储介质不应被解释为是暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
[0051] 本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0052] 用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上并且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种场景下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的各方面。
[0053] 在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
[0054] 这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由计算机或其他可编程数据处理装置的处理器而执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,已使得在其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
[0055] 计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤将在计算机、其他可编程装置或其他设备上执行,以产生计算机实现的过程,以使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
[0056] 附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
[0057] 已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。