一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

优化缓冲器保护中的边界信息访问的制作方法

2022-07-02 08:52:25 来源:中国专利 TAG:


1.本发明涉及边界信息访问方法、装置和系统的实施例,更具体地,但不作为限制,涉及用于在缓冲器保护中优化边界信息访问的方法、装置和系统。


背景技术:

2.当软件意外地或有意地以超过其分配的大小和存储器地址的方式访问系统存储器时,发生存储器安全脆弱性(例如,缓冲器溢出、竞争条件、页面错误、空指针、栈耗尽、堆耗尽/损坏、释放后使用、或双重释放等)。
3.在某些操作系统和其它程序中已经广泛使用的程序(例如c和c ) 等可能导致攻击者可能利用的多个存储器安全错误,从而带来危险和侵入性后果,诸如远程代码执行或权限提升缺陷等。例如,通过读取出界存储器,攻击者可能能够获得可以绕过保护机制的秘密值,诸如存储器地址。
4.因此,需要有一种能够以有效的方式减少或消除存储器安全弱点的技术。


技术实现要素:

5.鉴于上述背景技术的上述和其它问题、缺点和缺陷,本发明的示例性方面提供了一种用于在缓冲器保护中优化边界信息访问的方法、装置和系统。
6.本发明的实施例是一种用于在缓冲器保护中提供边界信息访问的方法,包括在通用寄存器和bi(边界信息)寄存器中的边界信息之间提供一对一映射,将加载的边界信息保存在bi寄存器中以供将来使用,在bi寄存器中提供边界信息的完整性,所述边界信息的完整性是随着程序执行而被维持,以及利用对bi寄存器的加载指令的一位额外控制提供对边界信息的预先主动加载。
7.本发明的实施例,一种用于在缓冲器保护中提供边界信息访问的系统,包括:存储器,存储计算机指令;以及处理器,被配置为执行所述计算机指令,以提供在通用寄存器与bi(边界信息)寄存器中的边界信息之间的一对一映射,将加载的边界信息保存在所述bi寄存器中以供将来使用,提供所述bi寄存器中的边界信息的完整性,所述边界信息的完整性是随着程序执行而被维持的,以及利用对所述bi寄存器的加载指令的一位额外控制提供对边界信息的预先主动加载。
8.本发明的另一实施例,一种计算机程序产品,包括具有程序指令的计算机可读存储介质,所述程序指令可由计算机读取和执行以使所述计算机执行用于在缓冲器保护中提供边界信息访问的方法,所述方法包括提供在通用寄存器和bi(边界信息)寄存器中的边界信息之间的一对一映射,将加载的边界信息保存在所述bi寄存器中以供将来使用,在所述bi寄存器中的边界信息的完整性,所述边界信息的完整性是随着程序执行而被维持的,以及利用对所述bi寄存器的加载指令的一位额外控制来提供对边界信息的预先主动加载。
9.因此,已经相当广泛地概述了本发明的某些实施例,以便可以更好地理解本发明的详细描述,并且以便可以更好地理解本发明对现有技术的贡献。当然,本发明的另外的实
施例将在下面描述,并且其将形成所附权利要求的主题。
10.应当理解,本发明在其应用中不限于以下描述中阐述的或附图中示出的构造细节和部件布置。本发明能够具有除所描述的那些实施例之外的实施例,并且能够以各种方式实践和执行。而且,应当理解,这里所使用的措辞和术语以及摘要是为了描述的目的,而不应当被认为是限制。
11.因此,本领域技术人员将理解,本公开所基于的概念可以容易地用作设计用于执行本发明的若干目的其他结构、方法和系统的基础。因此,重要的是,权利要求被认为包括这些等同结构,只要它们不偏离本发明的精神和范围。
附图说明
12.通过以下参照附图对本发明的示例性实施例的详细描述,将更好地理解本发明的示例性方面:
13.图1a示出了本发明的实施例的示例系统;
14.图1b示出了本发明的实施例的边界信息表的非限制性示例;
15.图2示出了本发明的实施例的边界信息寄存器文件和通用寄存器文件;
16.图3示出了本发明的实施例的边界信息寄存器文件;
17.图4示出了本发明的实施例的边界信息寄存器文件的状态;
18.图5示出了本发明的实施例的多个bi寄存器文件;
19.图6a示出了本发明的实施例的bi寄存器文件的维护;
20.图6b示出了在c/c 中使用的示例编译器180;
21.图6c示出了在c/c 中的示例性运行时间190和编译时间192;
22.图7示出了本发明的实施例中的示例指令;
23.图8a示出了在本发明的实施例中的示例加载指令;
24.图8b示出了在本发明的实施例中的示例存储指令;
25.图9a示出了在本发明的实施例中何时应该或不应该预取边界信息;
26.图9b示出了在本发明的实施例中当边界信息应该或不应该被预取时的示例;
27.图10示出了本发明的实施例;
28.图11示出了用于在其中结合本发明的示例性实施例的示例性硬件/信息处理系统;
29.图12示出了用于存储实现根据本发明的示例性实施例的方法的程序的机器可读指令的信号承载存储介质;
30.图13描绘了根据本发明的示例实施例的云计算节点;
31.图14描绘了根据本发明的示例实施例的云计算环境;以及
32.图15示出了根据本发明的示例实施例的抽象模型层。
具体实施方式
33.现在将参照附图描述本发明,其中相同的附图标记始终表示相同的部件。要强调的是,根据惯例,附图的各种特征不一定按比例绘制。相反,为了清楚起见,各种特征的尺寸可以任意地扩大或缩小。下面提供的示例性实施例用于说明的目的,而不是限制权利要求。
此外,请注意,任何步骤可以不同顺序执行,或组合执行,或同时执行。另外,所示的任何结构和实施例都可以被修改或组合。
34.超出其范围的存储器引用可能导致严重的安全问题。缓冲器溢出脆弱性已经成为问题至少30年了,例如morris internet worm(1988)。缓冲器溢出漏洞已经使许多形式的攻击成为可能,包括基于缓冲器溢出的代码注入、面向返回的编程(rop)、“心血攻击(heartbleed)”。
35.已经进行了一些工作来解决缓冲器溢出攻击或缓冲器溢出攻击的影响,例如“堆栈金丝雀”,wxor x存储器页面,aslr,“影子堆栈”,以及用于保护“控制流完整性”的其他方法。
36.oracle硅安全存储器(ssm)(“颜色”数据在存储器中&防止具有“错误颜色”的指针的访问。ssm具有一些限制,例如仅14种颜色,受保护数据的粒度是64字节。
37.重要的是检查每个存储器引用、加载或存储是否在其存储器边界内。一种现有的解决方案是intel的存储器保护扩展(mpx)系统。mpx引入了新的isa(指令集体架构)和硬件支持以用于精确的边界检查。在存储器中,每个缓冲器的边界信息(bi)以指针值作为关键字被存储/检索。在核心中,指针及其bi在寄存器中,并且映射通过编译器添加的额外指令来维护。原始计算和边界保护操作共享相同的硬件资源。存在试图移除或减少存储器安全脆弱性的其他方法。
38.然而,所有这些其它解决方案具有需要添加多个指令的一个主要问题,并且还具有昂贵的实现。结果,指令的数量可以增加四倍或更多倍,并且即使在边界检查被关闭时,执行时间也可以增加到两倍或更多倍。
39.intel mpx利用精确边界信息(bi)保护缓冲器免受出界引用。mpx 通过指针值的散列将缓冲器的bi存储在bi表中。当加载指针时,用于指针的bi被输入通用寄存器中。簿记代码被添加以将寄存器中的bi传播到其消费者:加载/存储指令。边界检查指令在加载/存储之前被插入。
40.mpx的额外问题是bi的加载可能不被使用且存在对于bi的两级存储器访问。其它传统方法具有导致对于bi条目的过度加载请求的问题,并且bi在相同指令中被加载和使用,因此延迟没有被隐藏。
41.需要检测对阵列元素的引用(包括对阵列元素的指针引用,(例如, x[i]、*p 、p-》foo))何时出界。
[0042]
需要能够在不重写现有程序并且没有显著的空间或时间开销的情况下完成这一点。
[0043]
本发明解决了上述存储器安全脆弱性的问题,并且没有像先前解决方案那样增加指令数量的问题。
[0044]
本发明提供了精确的保护,其中它保护每个缓冲器和字节的精度。本系统可应用于c/c 应用和可能具有存储器问题的其它程序,其中存在任意指针算术,并且一个应用中要保护的缓冲器的数量可以在数千到数百万的范围内。
[0045]
图1a示出了本发明的实施例的示例系统。这是非限制性示例,并且可以做出其他配置。系统100包括cpu(中央处理单元)核心10和存储器20。cpu核心10包括指令提取和解码12、alu(算术逻辑单元)14、通用文件寄存器16、边界寄存器文件18、边界处理单元20。通用
1,*,*),如在示例性边界信息bir1 中所见。
[0060]
第二状态是“仅索引”状态,即在配对的通用寄存器16中的数据是指针,但其边界信息尚未被加载。“仅索引”状态可表示为(索引,n/a, n/a),如在示例边界信息bir2中看到的。“n/a”代表不可用,并提供索引值。
[0061]
第三种状态是“bi-加载”状态,即当边界信息已经被加载时。bi寄存器18于是包含(索引,lb,ub),如在示例性边界信息bir3中所见。于是第三状态会包含用于索引46、下边界48、上边界50的边界信息值,假设有一快速方式来检测bi寄存器18的状态。也可以添加其它状态,或可以移除状态。
[0062]
bi寄存器文件18是机器状态的一部分,其中存在保存/恢复,或当恢复上下文而不保存上下文时将所有bi寄存器文件设置为空-bi(空边界信息)。例如,索引0x0可被保留用于空指针(例如,指针值“0”),以支持对空指针的自由调用。
[0063]
图5显示多个bi寄存器文件。系统200类似于图1a的系统100,可包括多个bi寄存器181至18n,其中n为整数。
[0064]
图6a示出了本发明的实施例的bi寄存器文件的维护。图6b示出了可在c/c 中使用的示例编译器180。图6c示出了c/c 中的示例编译时间190和运行时间192。
[0065]
参照图6a,bi寄存器文件18可被如下维护。目标之一是初始化bi 寄存器文件18中的边界信息并将其与程序执行一起传播。它是一种运行时的数据流,不需要程序分析的帮助。
[0066]
该方法如下。bi寄存器文件18由硬件自动管理。不添加指令。检查针对每一指令bi的寄存器文件18使用。
[0067]
当执行130加载/存储时,利用被加载用于边界检查132的bi来初始化与源地址指针配对的bi寄存器文件18(也参见图6c中用于边界检查的硬件插入的参考194)。例如,返回参考图3,对于gpr3=加载gpr5, bir5将被设置为用于针对该加载的边界检查的bi。
[0068]
请再参考图6a,当寄存器被指派立即值134时,与结果寄存器配对的 bi寄存器18被设置为具有值
“‑
1”的“非指针”状态,如图4中bir1 中所见(步骤136)。例如,对于gpr7=100,bir7被设置为“非指针”。
[0069]
当用一源寄存器138计算寄存器时,系统100将用于源寄存器的bi 寄存器文件18复制至用于结果寄存器140的bi寄存器文件18。例如,对于gpr3=gpr7 10,bir3被指派bir7。
[0070]
当用多于一个源寄存器142计算寄存器时,可以发生以下情况。若源寄存器的仅一个bi寄存器18不是“非指针”,则系统100将该bi寄存器复制至结果寄存器144的bi寄存器。
[0071]
例如,对于指针q,p.q=p idx,由于gpr3=gpr7 gpr8,如果 p在bi寄存器18中具有bi,则bir3被指派bir7。
[0072]
否则,系统100向bi寄存器18指派“非指针”(步骤146)。例如,对于浮点运算z=x y,由于gpr3=gpr7 gpr8,bir3被指派 null-bi。另一个例子是对于寄存器=0,由于r3=r3 xor r3,bir3被指派非指针。然而,另一示例是对于指针相减偏移=p-q,因为gpr3= gpr7-gpr8,bir3被指派非指针。
[0073]
当从存储器148加载寄存器时,bi寄存器18与结果寄存器配对并且被设置为“非指针”,除非编译器180将此加载标记为指针150的加载。例如,对于int x=*p,由于gpr3=加
载gpr7,bir3被指派非指针。另一示例是,对于*q=*p,由于gpr3=指针-加载,bir3被指派(索引, n/a,n/a),该索引是从gpr3中的未使用位检索的。
[0074]
然而,如果编译器180特别将加载标记为已加载边界信息152,则与结果寄存器配对的bi寄存器18被设定为“bi-加载”154。例如,对于int *q=*p,由于gpr3=指针bi-加载gpr7,gpr3中用于指针的边界信息被加载并指派给bir3。gpr3中指针的边界信息是使用来自gpr3中的“索引比特”的信息来加载的。这是一种预取bi。需要isa支持,其中改变现有的加载指令以使用一位来指示预取或者引入bi预取指令,例如gpri=bi_load gpri。
[0075]
当“createbi”(创建边界信息)被调用156时,与地址指针配对的 bi寄存器利用其bi来设置158。为了更好的性能,该步骤是可选的,并且需要额外的isa支持。
[0076]
返回参考图3和图6,bi寄存器文件18的使用如下。加载/存储指令尝试使用与其地址寄存器(gprn)42配对的bi寄存器(birn)44(步骤160)。系统100检查birn 44是否为bi-加载,且birn 44包含与地址指针162中相同的索引。如果检查的结果为是,则使用birn中的lb 和ub进行边界检查164。否则,必须发出166对边界信息的加载请求。
[0077]
由于以下原因,需要对索引的检查。当指针在界外时,可以改变在其未使用位中的索引值。该检查可以检测这种情况。
[0078]
图7示出了本发明的实施例中的示例指令。对于列birp、birq和 birr(指针p、q、r),示出了在指令结尾处的结果。
[0079]
图8a示出了本发明的实施例中的示例加载指令402。图8b示出了本发明的实施例中的示例存储指令412。
[0080]
图9a示出了在本发明的实施例中何时应该或不应该预取边界信息。
[0081]
下面示出了何时应当预取边界信息。当存在减少bi加载的数量或隐藏延迟的可能性时,边界信息的提取是有益的。
[0082]
图9a包括开始判定何时应该预取502边界信息。系统100在步骤504 判定是否通过减少bi加载的数量而获益。如果系统100判定“是”,则应该预取508边界信息。如果系统100判定“否”,则不应该预取510边界信息。
[0083]
系统100还在步骤506查看隐藏延迟是否有益。如果系统100判定“是”,则应该预取508边界信息。如果系统100判定“否”,则不应该预取510 边界信息。
[0084]
图9b示出了在本发明的实施例中当边界信息应该或不应该被预取时的示例。
[0085]
在实施例1中(602),加载的数量减少。如果标记了[1]处的加载,则针对rp的边界信息将被加载到birp。birp在[2]被复制到birq,并且在[4]处被复制到birt。在[3]和[5]处的加载可使用其bi寄存器18来用于边界检查,而无需对bi的加载请求。如果在[1]处的加载未被标记,则在[3]和[5]处的加载都将需要提取bi。它们使用不同的寄存器。
[0086]
在实施例2(604)中示出不应该预取边界信息的时候。在实施例2(604) 中,不应该预取在[1]处的加载。bi请求的数量保持相同。在[4]处的第一加载执行将被初始化birp。birp将沿着循环执行被传播到[4]。对于随后在[4]处的加载执行不再有加载bi。没有太多的延迟隐藏。在[1]和[4]之间仅有两个简单指令。在[1]处的加载bi可不被使用,并且[4]处于分支中且可不被执行。
[0087]
返回参考图1、6b和6c,下面示出编译器180如何判定。基本上,编译器180运行静态数据流分析,以查明指针的加载是否应该被标记。该判定仅仅是性能问题,而不是正确性问
题。试探法被用于简化问题并处理未知因素。
[0088]
系统100如下选择分开处理每个指针加载的方法。系统仅考虑受该加载支配和影响的程序的子图。如果加载被标记为预取bi,则对于该子图存在一个bi加载。若此加载未被标记,则系统100计算此子图将需要多少个bi加载。系统100考虑路径可能性。因此,系统进行比较和判定。假设索引被存储在指针的未使用位中,始终保持相同。硬件bi传播总是成功。
[0089]
构建受预取bi影响的子图如下。假设指针的加载是目标,根加载,其中s0:ptr=加载addr。在s0,系统100微调控制流图,并且仅保持由该加载支配的节点。
[0090]
预取的影响可以超出该范围,但是被忽略。系统100找出可使用为此加载的结果寄存器ptr的预取的bi寄存器的所有加载/储存指令。
[0091]
系统100可以利用一些定制来应用指向分析。例如,代替用于指针的存储器对象,分析用于指针的bi。感兴趣的是在s0为ptr生成的被称为 bi-根的那个。其它bi可以被忽略。指向分析是一种编译时技术,它帮助标识在指针变量与指针变量在程序执行期间指向的存储器位置之间的关系。
[0092]
系统100可以修整控制流图并且仅保留其指向集合包含bi-根并且是活的节点。用于加载/存储的地址是消费者。
[0093]
表示为s0-图表的结果图表将用于下一步骤,如下所示。示例性说明的细节如下。关于下面设置的状态,编译器基本上运行静态数据流分析以查明是否应当标记指针的加载以用于预取。在控制流图的遍历期间,依赖于这三个参考来描述节点。“v:用于指向元素的指针,mo:指向的存储器对象,p:路径可能性信息可以是[0,1]中的值或状态{明确,可能}”。
[0094]
状态组中的元素:元组(v,mo,p)
[0095]
v:用于指向元素的指针
[0096]
mo:所指向的存储器对象
[0097]
p:路径可能性信息
[0098]
可以是[0,1]中的值或状态{确定,可能}
[0099]
起始节点:ptr1=加载地址
[0100]
gen={(ptr1,bi-obj,1)}
[0101]
算术指令:ptr2=op(ptr1,其他操作数)
[0102]
kill={(ptr2,mo,p)|(ptr2,mo,p)在in中}
[0103]
gen={(ptr2,mo,p')|(ptr1,mo,p)在in中且p'为当前路径}
[0104]
加载/存储指令:加载地址或存储地址
[0105]
假设仅使用bi寄存器18。若由于检查而加载不同的边界信息,则此处不关心该边界信息。
[0106]
传递函数:out=in-kill gen
[0107]
合并函数:当(ptr,mo,p 1)和(ptr,mo,p2)来自两个路径时,结果是(optr,mo,p1 p2)。
[0108]
当没有预取时,系统100计算以下内容。系统100找出需要加载bi 的加载/存储,而不是从bi寄存器18找出,系统100从接近根加载的加载 /存储开始并展开。系统100识别加载/存储由于另一加载/存储而可使用bi 寄存器。系统100重复,直到所有加载/存储都可以
被覆盖。示例非限制性指令如下:
[0109]
work_graph=s0-graph;
[0110]
保存=0;
[0111]
while(work_graph还包含除s0之外的加载/存储){
[0112]
idom_set={在立即由s0主导的work_graph中的加载/存储}
[0113]
对于指令si:在idom中加载addr或存储addr
[0114]
p是si的路径可能性;
[0115]
将{(addr,bi-obj,p)}的kill添加到si
[0116]
保存 =p
[0117]
}
[0118]
再次运行数据流;
[0119]
work_graph=work_graph-idom_set-没有使用bi-obj的所有加载/ 存储没有达到;
[0120]
}
[0121]
如果(saved>1)标记s0以用于预取bi
[0122]
图10示出了本发明的实施例。所示的任何以下步骤可以并行或以不同的顺序执行。
[0123]
系统100向通用寄存器16与bi寄存器18中的边界信息(bi)提供一对一映射(步骤702)。
[0124]
系统100将加载的边界信息保存在bi寄存器18中以供将来使用704。系统100规定bi寄存器18中的边界信息完整性是随着程序执行708而被维持。
[0125]
系统100利用对bi寄存器18的加载指令的一位额外控制,来提供边界信息的预先主动加载(步骤710)。编译器180确定用于边界信息的主动加载的候选加载。
[0126]
系统100管理边界信息的加载以最小化存储器带宽要求或隐藏加载延迟。系统利用静态程序分析选择有益的情况。系统100基于边界信息加载是否被减少来确定边界信息的预取。系统100基于隐藏延迟的确定来确定边界信息的预取。边界信息寄存器18中的边界信息被初始化,并与程序执行一起传播。
[0127]
因此,本发明能够提供精确的保护,其中系统100保护每个缓冲器,并且精度低至字节,同时仍然减少对边界信息的加载请求。本发明可应用于诸如c/c 应用的传统程序,该程序包括任意指针算法,并且在一个应用中要保护的缓冲器的数量可以在数千到数百万的范围内。
[0128]
因此,如上所示,硬件组件为bi寄存器18。对于通用寄存器16与 bi寄存器18中的bi的一对一映射被自动提供。系统100将加载的边界信息保存在bi寄存器18中以供将来使用。bi寄存器18中的边界信息完整性随着程序执行而被自动维持。由对加载指令的一位额外控制来支持bi 的预先主动加载。
[0129]
软件组件包括编译器180,其确定用于边界信息的预先主动加载的候选加载。编译器180还减少了对边界信息的加载请求,或隐藏加载延迟。系统100利用静态程序分析来选择有益的情况。
[0130]
在图1至10的不同附图中示出的不同特征可以在不同示例之间组合、改变或切换。
系统100和200仅被示为出于说明目的的非限制性示例。可以使用任何其它配置。例如,图1至10中所示的系统100和200也可以在图11至15中所示的硬件和软件中实现。
[0131]
图11示出了系统的另一硬件配置,其中存在根据本发明的信息处理/ 计算机系统1100,并且其优选地具有至少一个处理器或中央处理单元 (cpu)1110,其可以以软件程序的形式实现本发明的技术,用于软件智能即服务。
[0132]
cpu 1110通过系统总线1112互连到随机存取存储器(ram)1114、只读存储器(rom)1116、输入/输出(i/o)适配器1118(用于将诸如盘单元1121和磁带驱动器1140的外围设备连接到总线1112)、用户接口适配器1122(用于将键盘1124、鼠标1126、扬声器1128、麦克风1132 和/或其它用户接口设备连接到总线1112)、用于将信息处理系统连接到数据处理网络、因特网、内联网、个人区域网(pan)等的通信适配器1134、以及用于将总线1112连接到显示设备1138和/或打印机1139(例如,数字打印机等)的显示适配器1136。
[0133]
除了上述硬件/软件环境之外,本发明的不同方面包括用于执行上述方法的计算机实现的方法。作为示例,该方法可以在以上讨论的特定环境中实现。
[0134]
例如,可以通过操作由数字数据处理装置实现的计算机来执行机器可读指令序列,从而实现这种方法。这些指令可以驻留在各种类型的信号承载介质中。
[0135]
因此,本发明的这个方面涉及一种编程产品,包括信号承载存储介质,其有形地体现了可由结合了cpu 1110和上述硬件的数字数据处理器执行的机器可读指令的程序,以执行本发明的方法。
[0136]
这种信号承载存储介质可以包括例如包含在cpu 1110内的ram,例如由快速访问存储器表示。
[0137]
或者,指令可被包含在另一信号承载存储介质1200中,例如闪存1210 或光存储盘1220(图12),可由cpu 1110直接或间接访问。
[0138]
无论是包含在闪存1210、光盘1220、计算机/cpu 1110中还是其它地方,指令都可以存储在各种机器可读数据存储介质上。
[0139]
因此,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
[0140]
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于:电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器 (sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码装置(例如上面记录有指令的打孔卡或凹槽中的凸起结构),以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
[0141]
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机
或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0142]
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言(例如smalltalk、c 等)以及常规的过程式编程语言(例如“c”编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla) 的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
[0143]
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
[0144]
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。
[0145]
这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
[0146]
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
[0147]
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
[0148]
现在参考图13,示出了云计算节点的示例的示意图1400。云计算节点 1400仅是合适的云计算节点的一个示例,并且不旨在对本文描述的本发明的实施例的使用范围或功能
提出任何限制。无论如何,云计算节点1400 能够被实现和/或执行上文阐述的任何功能。如前所述,图1的系统100可以在诸如图13(以及图14和15)的云基础设施中实现,在云计算节点1400 中,存在计算机系统/服务器1412,其可以与许多其他通用或专用计算系统环境或配置一起操作。可适用于计算机系统/服务器1412的公知的计算系统、环境和/或配置的示例包括但不限于,个人计算机系统、服务器计算机系统、瘦客户机、胖客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型机系统、大型机计算机系统、以及包括以上系统或设备中的任一个的分布式云计算环境等。
[0149]
计算机系统/服务器1412可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器1412可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
[0150]
如图13所示,云计算节点1400中的计算机系统/服务器1412以通用计算设备的形式示出。计算机系统/服务器1412的组件可包括但不限于一个或多个处理器或处理单元1416、系统存储器1428、以及将包括系统存储器1428在内的各种系统组件耦合至处理器1416的总线1418。
[0151]
总线1418表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(isa)总线、微通道体系结构(mca) 总线、增强型isa(eisa)总线、视频电子技术标准协会(vesa)局部总线和外围部件互连(pci)总线。
[0152]
计算机系统/服务器1412通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器1412可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
[0153]
系统存储器1428可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)1430和/或高速缓冲存储器1432。计算机系统/服务器1412还可包括其它可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统1434可被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”) 读取和向其写入的磁盘驱动器,以及用于从诸如cd-rom、dvd-rom 或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这样的实例中,每个都可以通过一个或多个数据介质接口连接到总线 1418。如下面将进一步描绘和描述的,存储器1428可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该程序模块被配置成执行本发明的实施例的功能。
[0154]
作为示例而非限制,具有一组(至少一个)程序模块1442的程序/实用程序1440以及操作系统、一个或多个应用程序、其它程序模块和程序数据可被存储在存储器1428中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块1442通常执行这里描述的本发明实施例的功能和/或方法。
[0155]
计算机系统/服务器1412还可以与以下进行通信:一个或多个外部设备1414,诸如
键盘、定点设备、显示器1424等;使用户能够与计算机系统/服务器1412交互的一个或多个设备;和/或使计算机系统/服务器1412 能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可以经由输入/输出(i/o)接口1422发生。此外,计算机系统/服务器1412可以经由网络适配器1420与一个或多个网络通信,所述网络诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,因特网)。如图所示,网络适配器1420经由总线1418与计算机系统/服务器1412的其它组件通信。应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器1412结合使用。实例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、raid系统、磁带驱动器和数据档案存储系统等。
[0156]
现在参考图14,描绘了说明性云计算环境1550。如图所示,云计算环境1550包括一个或多个云计算节点1400,云消费者使用的本地计算设备可以与一个或多个云计算节点1400通信,所述本地计算设备诸如例如个人数字助理(pda)或蜂窝电话1554a、台式计算机1554b、膝上型计算机 1554c和/或汽车计算机系统1554n。节点1400可彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境1550提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图14中所示的计算设备1554a-n的类型仅旨在说明,并且计算节点1400和云计算环境1550可以在任何类型的网络和/ 或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算机化设备通信。
[0157]
现在参考图15,示出了由云计算环境1550(图14)提供的一组功能抽象层。应当预先理解,图15中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
[0158]
硬件和软件层1600包括硬件和软件组件。硬件组件的示例包括大型机,在一个示例中是系统;基于risc(精简指令集计算机) 架构的服务器,在一个示例中是ibm系统;ibm系统;ibm系统;存储设备;网络和网络组件。软件组件的示例包括网络应用服务器软件,在一个示例中为ibm应用服务器软件;以及数据库软件,在一个实例中为ibm数据库软件。(ibm、 zseries、pseries、xseries、bladecerter、websphere和db2是在全世界许多管辖区注册的国际商业机器公司的商标)。
[0159]
虚拟化层1620提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器;虚拟存储;虚拟网络,包括虚拟专用网络;虚拟应用和操作系统;以及虚拟客户端。
[0160]
在一个示例中,管理层1630可以提供以下描述的功能。资源供应提供了对被用来在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价提供了在云计算环境中利用资源时的成本跟踪,以及针对消耗这些资源开账单或开发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户为消费者和系统管理员提供对云计算环境的访问。服务级别管理提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(sla)规划和履行提供了云计算资源的预安排和采购,其中根据 sla来预计未来需求。
[0161]
工作负载层1640提供了可以利用云计算环境的功能的示例。可以从该层提供的工
作负载和功能的示例包括诸如映射和导航的功能;软件开发和生命周期管理;虚拟教室教育传送;数据分析处理;交易处理;并且,更具体地,相对于本发明,基于上下文输入生成搜索自动完成建议的api和运行时系统组件。
[0162]
从详细的说明书中,本发明的许多特征和优点是显而易见的,因此,所附权利要求旨在覆盖落入本发明的真实精神和范围内的本发明的所有这些特征和优点。此外,由于本领域技术人员将容易想到许多修改和变化,因此不期望将本发明限制于所图示和描述的确切构造和操作,并且因此,可以诉诸于落入本发明的范围内的所有合适的修改和等同物。
[0163]
应当理解,本发明在其应用中不限于以下描述中阐述的或附图中示出的构造细节和部件布置。本发明能够具有除所描述的那些实施例之外的实施例,并且能够以各种方式实践和执行。而且,应当理解,这里所使用的措辞和术语以及摘要是为了描述的目的,而不应当被认为是限制。
[0164]
因此,本领域技术人员将理解,本公开所基于的概念可以容易地用作设计用于执行本发明的若干目的其他结构、方法和系统的基础。因此,重要的是,权利要求被认为包括这些等同结构,只要它们不偏离本发明的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献