具体实施方式
本发明涉及使用数据流对用户定义类型(UDT)片段执行一致性检查而无需对数据进行批发复制的系统和方法。流式一致性检查便于尽快发现无效片段,从而不必读取、存储、分析整个UDT片段等等。此外,UDT片段无需完全物化即可进行评估;因此,与常规技术相比,使用本发明的系统和/或方法可通过减少所需资源和实现无效结构的更快检测而产生改善的性能。
如在此申请中所使用的,术语“组件”、“系统”、“对象”、“检测器”、“检查器”、“激活器”、“生成器”等意指计算机相关实体,这些实体是硬件、软件(例如,执行中的软件)和/或固件。例如,组件可以是处理器上运行的进程、处理器、对象、可执行码、程序和/或计算机。作为示例,在服务器上运行的应用程序和该服务器都可以是组件。一个或多个组件可驻留在进程内,且组件可限于一台计算机上和/或可分布在两台或多台计算机之间。
本发明参考附图进行描述,其中贯穿全文使用相同的参考标号来指相同的元素。在以下描述中,为解释目的,阐述了许多特定细节以提供对本发明的彻底理解。但是,显然无需这些特定细节也可实施本发明。在其它实例中,以框图形式示出众所周知的结构和设备以便于描述本发明。
图1根据本发明的一个方面示出便于分析数据结构以确定错误的存在的系统100。系统100包括数据结构流式检查器105,它接收数据流(例如,数据块1110、数据块2115、……数据块N 120,其中N是任何正整数,以下称之为数据块110-120)并提供数据结构一致性检查结果。数据结构流式检查器105在无需对包含在数据块110-120内的数据进行批发存储就可评估包括在所输入数据块110-120的流内的数据结构(例如,用户定义类型(UDT)片段)。由数据结构流式检查器105生成的数据结构一致性检查结果可以是错误通知、表示没有错误的指示等等。该数据结构一致性检查结果可被系统100(例如,作为可用来停止数据块110-120的流、用来中断数据结构流式检查器105的处理等的反馈等)、不同的软件应用程序(未示出)和/或硬件设备(未示出)使用。此外(或者),可向用户呈现数据结构一致性检查结果(例如,经由警告、视觉显示、日志文件、……)。
数据结构流式检查器105包括数据块处理组件125和检查对象130。数据块处理组件125接收并处理数据块110-120。作为示例,数据块处理组件125可接收并处理数据块1110直至数据块1110穷尽,然后将数据块1110丢弃;然后,数据块处理组件125可类似地接收、处理和丢弃其它数据块115-120,直至所有这些数据块都已被评估。当在处理数据块1110时(以及类似地其它数据块115-120),数据块处理组件125可跟踪数据块1110内的当前位置,并在数据块1110内的特定位置激活与该数据结构相关联的相关检查对象130。
检查对象130对为之激活检查对象的数据结构执行一致性检查。例如,检查对象130可用来确定数据结构内错误的存在。检查对象130无需物化整个数据结构就可以流式方式评估数据结构;相反,常规技术通常需要将整个数据结构复制到存储器中然后再评估所存储的数据结构。检查对象130还可便于物化与已在不同的数据块110-120之间拆分的数据结构相关联的基本数据类型。
数据块110-120可包括任意数量的数据结构(例如,一个或多个UDT片段)。每个数据块110-120都可以是一数据页,它根据盘上格式进行存储,并用来存储该一个或多个数据结构。此外(或者),每个数据块110-120都可以是一个数据分组,它可在诸如网络环境中的多个设备之间传输(例如,以线上格式、……)。
数据块110-120可以是任意长度的(例如,1个字节、无穷大、……),只要该长度是已知的和/或可确定的。例如,数据块110-120的大小可以是数据块处理组件125已知的预设长度。或者,数据块处理组件125可标识数据块110-120的长度。数据块110-120的大小在处理期间被数据块处理组件125和/或检查对象130用来检测数据块110-120的结束。根据一个示例,数据页(和/或数据分组)的大小可以是八千字节;但是本发明不限于此。
存储在数据块110-120(例如,数据页、数据分组、……)内的数据结构的大小可根据数据类型和/或相关联的有效负荷而有所不同。或者,其中一些数据结构可具有设定的长度和/或结构。一个数据结构不必全部存储在单个数据块(例如,数据块1110)内。一个数据结构可与任意数量的数据块110-120和/或数据块110-120的各个部分相关联。根据一个示例,一数据结构的一半可以在第一数据块(例如,数据块1110)的结束处,而该片段的另一半可存在于下一个数据块(例如,数据块2115)内。数据结构拆分的位置可以是与数据块(例如,数据块1110)相关联的可用空间量的函数,从而该数据结构的其余部分可按需存在于一个或多个后续数据块内(例如,数据块2115、……、数据块N 120)。
参考图2,所示为根据本发明的一个方面的便于经由流式检查来分析和/或验证UDT片段的系统200。系统200包括片段流式检查器205(例如,数据结构流式检查器105),它分析所输入数据块(例如,数据块1210、数据块2215……数据块N 220)的流并生成UDT一致性检查结果。片段流式检查器205可确定例如包括在数据块210-220内的UDT片段包括一个或多个错误,或者该UDT片段没有错误。可生成的错误的例子有:UDT片段是未知类型、短于其类型的最小长度、和/或保留位有不正确的值;但是,本发明不限于此。
片段流式检查器205包括接收所输入数据块210-220的流的数据块处理组件225以及检查对象230。数据块处理组件225还包括片段类型检测器235。片段类型检测器235评估与经由数据块处理组件225接收的数据块210-220相关联的数据。特别地,片段类型检测器235标识数据块210-220内特定UDT片段的唯一结构属性,以确定该片段的数据类型。例如,片段类型检测器235可分析UDT片段开始处指示片段类型的类型字;但是本发明不限于此。
因此,作为示例,数据块处理组件225可接收数据块1210,而数据块1210可提供给片段类型检测器235。片段类型检测器235可确定UDT片段位于数据块210内的特定位置。此外,片段类型检测器235可标识与每个UDT片段相关联的数据类型(例如,整数、浮点、字符串、日期、二进制数、布尔、字符、短整型、长整型、……)和/或UDT片段是集合的开始、集合的结束、空值还是UDT开始;但是,本发明不限于此。片段类型检测器235然后可将所标识的类型信息提供给检查对象230,后者可基于类型适当地检查该UDT片段。或者(另外),片段类型检测器235可启动与所标识类型相关的特定检查对象230。然后,检查对象230对特定UDT片段执行一致性检查,这可产生UDT一致性检查结果。
片段流式检查器205可分析存在于数据块210-220内的UDT片段。UDT是实现存储环境内对复型的建模和操纵的一种数据库可扩展性机制。UDT可包括一系列不同类型(例如,整数、浮点、字符串、日期、二进制数、布尔、字符、短整型、长整型、……)的片段。UDT片段可包括指示片段类型的元数据。此元数据可被片段类型检测器235用来确定片段类型。例如,可基于所确定的片段类型来使用相应的检查对象230。此外(或者),检查对象230可就所确定的片段类型来评估UDT片段以标识错误的存在。片段的大小根据数据类型和/或相关联的有效负荷而变化。或者,一些片段可具有设定的长度和/或结构。
作为示例而非限制,可使用UDT来标识与人相关联的信息。因此,UDT可具有与名、姓、年龄、性别、电话号码列表、地址列表、相关联人员列表(例如,亲戚、同事、……)等相关联的不同片段。依照此例,可对与名和姓相关联的片段使用字符数据类型,可使用整数数据类型来表示年龄,并使用布尔数据类型来表示性别(例如,男或女)。此外,电话号码可作为列表来存储,其中每个电话号码都使用字符数据类型。此外,每个地址可以是各种类型的组合,因为地址可包括门牌号、街道、房间号、镇/市、州、邮政编码、国家等等。UDT还可具有表示UDT在数据块210-220内的起点的开始片段、分别指示列表的开始和结束的集合开始和集合结束、和/或空元素。开始片段、集合开始、结合结束和/或空元素可具有设定的长度和/或结构。集合的一个示例为电话号码列表,而集合开始和集合结束可指定其间为集合成员的某些UDT片段。
UDT片段不必全部存储在一数据页内。例如,一个片段的一半可在一个数据页的结束处,而该片段的另一半可存储在下一个数据页上。本发明设想UDT片段可跨越数据页的任意部分和/或任意数量的数据页。拆分片段的位置可以是任意的,从而UDT片段根据可用空间的大小被部分地存储在第一数据页上,而其余部分被分开存储在另一不同的数据页上。根据示例,如果UDT片段是6000字节,但一数据页只有2000字节的可用空间(例如,数据块1210只有2000字节可用),则其余的4000字节将存储在另一不同的数据页上(例如,数据块2215可存储其余部分)。依照此例,片段流式检查器205可在数据块210-220正在流式传输时提供数据结构一致性检查结果。当UDT片段在不同的数据块210-220之间拆分时,检查对象230可跟踪在第一数据块(例如,数据块1210)穷尽的点上该检查在UDT片段上已进展到什么程度,并可仅存储与UDT片段相关联的最少元数据以便于检查在下一个数据块(例如,数据块2215)中开始的该UDT片段的其余部分。所存储的元数据可使检查对象230能够继续检查UDT片段的其余部分,而无须重新评估与第一数据块(例如,数据块1210)相关联的先前已分析部分。此外,元数据可描述UDT片段的结构,而不存储UDT片段的列值。或者,与上例相关的常规技术将把2000字节部分和4000字节部分都复制到存储器中,然后再处理数据。
UDT片段可在用于传输的数据分组中进行类似的格式化。当前所使用的数据分组一致性检查的技术产生额外的成本,该成本不是因所存储的数据页而导致的,而是与不能够在从网络接收整个片段以前确定片段的有效性相关。经由结合本发明使用的片段流式检查器205还可降低此成本。
参看图3,所示为根据本发明的一个方面经由对每个UDT片段类型使用相应的检查对象来执行流式检查以检测无效结构的系统300。系统300包括片段流式检查器305,它接收并处理数据块310、315、320以确定UDT一致性检查结果。片段流式检查器305可在特定时间接收一组数据块310-320中的一个数据块。因此,根据此例,片段流式检查器305可接收第一数据块(例如,数据块1310),它可进行处理直至穷尽,然后再丢弃;此时,片段流式检查器302可顺序获得第二数据块(例如,数据块2315),并且类似地完整评估并移除该数据块,等等。
片段流式检查器305包括数据块处理组件325,它接收并处理数据块310-320。数据块处理组件325可包括片段类型检测器330、位置跟踪组件335和检查对象激活器340。片段流式检查器305还包括其中每一个评估一特定片段类型的一组检查对象(例如,检查对象1345……检查对象M350,其中M是任何正整数,以下称为检查对象345-350)。
数据块处理组件325可一次接收例如一组数据块310-320中的一个数据块(例如,数据块1310)。位置跟踪组件335跟踪所接收的数据块1310内正被评估的当前位置。在当前所评估的位置上,片段类型检测器330标识UDT片段的类型(例如,整数、浮点、字符串、日期、二进制、布尔、字符、短整型、长整型、集合开始、集合结束、空值、UDT开始、……)。UDT片段的类型被检查对象激活器340所使用,它可从检查对象组345-350中激活并调用相关检查对象(例如,检查对象1345)。所调用的检查对象(例如,检查对象1345)评估数据块1310内的UDT片段是否有任何错误,并生成UDT一致性检查结果。检查对象(例如,检查对象1345)可向数据块处理组件325提供通知,以指示已经完成UDT片段的评估。此外(或者),位置跟踪组件335可确定当前正被评估的位置是在数据块1310的结束处,还是在为其调用该检查对象(例如,检查对象1345)的UDT片段之外。此外,位置跟踪组件335可确定活动检查对象(例如,检查对象1345)正在等待来自不同数据块的UDT片段的另一部分。如果数据块处理组件325没有接收到该UDT片段的附加部分,则可产生信号以指示该UDT片段是不完整的。
相关检查对象(检查对象345-350之一)在完成UDT片段的评估后,位置跟踪组件335即确定数据块1310的下一个位置处是否有另一个UDT片段(例如,整个片段、片段的一部分、……)或是数据块1310是否已穷尽。例如,如果数据块1310包括UDT片段的至少另一部分,则片段类型检测器330和检查对象激活器340被再次用来从检查对象组345-350中确定适当的检查对象,而该检查对象被用来评估该UDT片段。或者,如果位置跟踪组件335指示数据块1310已穷尽,则数据块处理组件325将数据块1310丢弃,并且如果另一个数据块2315是该流的一部分则接收和处理后续数据块2315。依照示例,片段流式检查器305可接收指示数据块310-320的流的结束和/或标识该流的结束的信号。例如,在接收到指示流的结束的信号之后,片段流式检查器305即可例如生成错误(例如,如果最后一个UDT片段不完整,……)和/或停止执行。
图4根据本发明的一个方面示出使用能存储最少数据的流式检查来评估UDT片段有效性的系统400。系统400包括片段流式检查器405,它接收和分析数据块410、415、420(例如,数据页、数据分组、……)的流并生成UDT片段一致性检查结果。数据块410-420可包括可具有变化大小的众多UDT片段。此外,这些UDT片段可被包含在数据块的一部分内(例如,数据块1410的一部分),有一段是第一数据块(例如,数据块1410)的一部分、一段是第二数据块(例如,数据块2415)的一部分,或可被包括为任意数量的数据块410-420的一部分。
片段流式检查器405还包括数据块处理组件425、任意数量的检查对象430、以及数据存储435。数据块处理组件425接收并处理数据块410-420的输入流。数据块处理组件425跟踪数据块(例如,数据块1410)内的当前位置,并可确定当前位置处的UDT片段的类型。此外,片段类型信息可被用来启动专用于该UDT片段类型的适当检查对象430。数据块处理组件424可重复跟踪、确定片段类型和激活相关检查对象430,直至找到错误或穷尽数据块(例如,数据块1410)。应当认识到,数据块处理组件425可包括片段类型检测器330(图3)、位置跟踪组件335(图3)和/或检查对象激活器340(图3)。
检查对象430被用来如经由数据块处理组件425所命令地检查特定UDT片段。根据一个示例,当数据块处理组件425正在接收和处理数据块410-420的流时,检查对象430可标识无效UDT片段结构。检测到错误(例如,无需物化整个数据块410-420)之后,检查对象430就可提供指示该UDT片段包括错误的信号。例如,在检查对象430作出此类确定之后,数据块处理组件425即可中断对包含该错误的特定数据块410-420和/或UDT片段的处理。
检查对象430还可跟踪UDT片段检查的进度。因此,特定检查对象430可与具有双字节数据的固定格式的数据类型相关联,该双字节数据表示例如两者都必须经过确认的两个单字节值。依照此例,检查对象430可标识例如检查已经进展了一个字节但尚未发现任何错误。所标识的进度(例如,还剩另一个字节值要确认)可被存储在数据存储435中,可被提供给数据块处理组件425(例如,以指示后续数据块410-420应包含该UDT片段的其余部分)等等。应当注意,无需存储迄今已处理的字节值。
作为另一示例,数据类型可具有包含表示字符串长度的整数值的固定格式,且字符串中的最后一个字符应包含某个值(例如,‘*’)。一旦已处理了该整数值,检查对象430就知道要检查字符串结束处的字符。跳过数据的量被存储在字符串的长度中。检查对象430读到数据块(例如,数据块1410)的结束处,并跟踪在到达最后字符之前还要再读该字符串的多少个字节。因此,字符串的长度和还要再读的字节数可存储在数据存储435中,而不是存储迄今已处理的整个字符串。一旦接收到下一个数据块(例如,数据块2415)并将其传递给检查对象430,它就会继续读取,直至它到达并确认该字符串的最后一个字符。因此,存储量与常规技术相比降低了,因为整个片段无需被全部物化。
检查对象430还可将检查UDT片段的其余部分所需的任何数据存储在数据存储435中。根据一个示例,数据块处理组件425可确定(例如,经由片段类型检测器330(图3))数据块(例如,数据块1410)包括4字节整数的UDT片段。数据块处理组件425可激活(例如,经由检查对象激活器340(图3))专门检查整数类型片段的相关检查对象430。所激活的检查对象430评估UDT片段是否存在任何错误,并可同时跟踪评估的进度。如果到达数据块(例如,数据块1410)的结束处,却只读了组成该整数的共四个字节中的一个,则所激活的检查对象430可将进度(例如,迄今读了单个字节)存储在数据存储435中。此外,与所读的一个字节相关联的元数据可存储在数据存储435中(例如,已经读了一个字节,且在可例示并确认该整数值以前还必须再读三个字节)。在处理下一个数据块(例如,数据块2415)之后,即可从数据存储435中获得所存储的元数据并在读取其余三个字节时使用。一旦已经读取这些字节,组成该整数的所有四个字节就都可用,并可示例和确认该整数。根据另一个示例,描述一部分结构的元数据可在检查对象430分析UDT片段的同时存储在数据存储435中。
数据存储435可以是例如易失性存储器或非易失性存储器,或可同时包括易失性和非易失性存储器。作为示例,而非限制,非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部高速缓存存储器。作为示例而非限制,RAM有多种形式可用,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)和直接Rambus RAM(DDRAM)。本发明的系统和方法的数据存储435旨在包括但不限于这些及其它任何合适类型的存储器。本发明设想数据存储435可以是片段流式检查器405的一个部分(如图所示),检查对象435的一个部分,独立的组件、或其组合。此外,例如,数据存储435可包括存储在硬盘上并在执行时加载到存储器中的文件和/或数据库。
参考图5,所示为根据本发明的一个方面的生成可被用来评估对应UDT片段类型的检查对象的系统500。系统500包括片段流式检查器505,它进一步包括众多检查对象510。每一个检查对象510被用来如上所述地评估对应UDT片段。本发明设想使用任意数量的检查对象510。
系统500还包括检查对象生成器515,它实现在引入新的片段类型时片段流式检查器505作为整体的可扩展性。检查对象生成器515可产生对应于新的UDT片段类型(例如,在检查对象510的组中先前没有对应检查对象的UDT片段类型)的新的检查对象,它可被添加到现有的检查对象510的组中。因此,当片段流式检查器505评估新类型的UDT片段时,经由检查对象生成器515创建的新的检查对象被用来评估该片段。检查对象生成器515在引入新的片段类型时可自动生成新的检查对象。或者,用户可提供信息以生成新的检查对象。
图6-8示出根据本发明的各方法。为简化说明起见,将这些方法示意和描述为一系列动作。应当理解并认识到,本发明不受所示动作和/或动作顺序的限制,例如,动作可按各种顺序发生和/或并行发生,并且还可有未在本文中给出和描述的其它动作。此外,不是所有示出的动作都是实现根据本发明的方法所必需的。此外,本领域技术人员将会理解并认识到,这些方法可经由状态图或事件被可选地表示为一系列相关的状态。
图6根据本发明的一个方面示出便于使用流式检查来评估用户定义类型(UDT)片段是否有错误的方法600。在610,包括UDT片段的数据块被接收。这些数据块可以是例如用于存储信息的数据页和/或用于传输信息的数据分组。例如,一次可接收一个数据块,从而第一数据块被完整地接收并处理,接下来第二数据块被接收并处理,依此类推。可经由网络连接(例如,无线连接、有线连接、两者的组合、……)来接收数据块。可选地或另外地,可从存储(例如,数据库等)接收数据块。在620,UDT片段类型被标识。作为示例,可经由评估UDT片段开始处的类型字来确定UDT片段类型;但是,本发明不限于此。在630,使用相应的检查对象来标识UDT片段内的错误。每个UDT片段类型都可具有便于检查该特定类型的流式数据的相关联检查对象。此外,在640,数据块一经处理即被丢弃。这与常规技术不同,后者通常在存储器中物化整个UDT片段,然后再分析所存储数据是否有错误。
参看图7,所示为根据本发明的一个方面的便于经由评估检查的进展来对UDT片段执行流式一致性检查的方法700。在710,包含UDT片段的数据块被接收。在720,UDT片段类型被标识。例如,UDT片段的类型可在处理数据块时被确定。此外,可跟踪通过数据块的进度。在730,使用一组检查对象中的一个检查对象来标识该UDT片段是否包括任何错误。该检查对象组中的每个检查对象都可被指派给特定的UDT片段类型。在740跟踪UDT片段检查的进度。在750,存储可被用来完成UDT片段的一致性检查的元数据。根据一个示例,如果UDT片段的一部分在第一数据块内,而该UDT片段的其余部分是第二数据块的一部分,则可存储与结合第一数据块执行的评估相关联的元数据。因此,可存储描述UDT片段结构的一部分的元数据,而不是存储实际的列值(通常由常规技术所执行)。在760,数据块一经处理即被丢弃。
图8根据本发明的一个方面示出便于分析UDT片段是否有错误、并在标识出错误时即停止流式检查的方法800。在810,包含UDT片段的数据块被接收。在820,检查所接收的数据块内的UDT片段并确定片段类型。在830,使用与所标识的UDT片段类型相关的相应检查对象。在840,确定UDT片段是否包含错误。该确定可例如无需物化整个UDT片段而作出。如果在UDT片段中标识出错误,则在850可中断流式检查,并发布指示已标识出错误的出错标志。或者,如果没有标识出任何错误,则在860确定数据块是否已穷尽。如果数据块尚未穷尽,则该方法返回820以确定下一个UDT片段的类型。但是,如果在860确定该数据块已穷尽,则在870丢弃该数据块。
为了提供用于实现本发明的各个方面的额外上下文,图9-10及以下讨论旨在提供可在其中实现本发明各个方面的合适计算环境的简要、一般描述。尽管以上是在本地计算机和/或远程计算机上运行的计算机程序的计算机可执行指令的通用上下文中描述了本发明,但是本领域技术人员将会认识到,本发明还可结合其它程序模块来实现。一般而言,程序模块包括执行特定任务和/或实现特定抽象数据结构的例程、程序、组件、数据结构等等。
此外,本领域技术人员将会认识到,这些发明性方法可用其它计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型计算机、大型计算机、以及个人计算机、手持式计算设备、基于微处理器和/或可编程消费电器等等,其中的每一个都可操作地与一个或多个相关联设备通信。所示的本发明各方面还可在分布式计算环境中实施,其中某些任务是由通过通信网络链接的远程处理设备执行的。但是,本发明的部分(如果不是所有)方面可在独立计算机上实施。在分布式计算环境中,程序模块可位于本地和/或远程记忆存储设备中。
图9是本发明可与之交互的示例计算环境900的示意性框图。系统900包括一个或多个客户机910。客户机910可以是硬件和/或软件(例如,线程、进程、计算设备)。系统900还包括一个或多个服务器920。服务器920可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,服务器920可容纳线程以例如通过使用本发明来执行变换。
客户机910和服务器920之间一种可能的通信可以是适应于在两个或多个计算机进程之间传输的数据分组的形式。系统900包括通信框架940,它可用来便于客户机910和服务器920之间的通信。客户机910可操作地被连接到一个或多个客户机数据存储950,它们可用来将信息本地存储到客户机910。类似地,服务器920可操作地被连接到一个或多个服务器数据存储930,它们可被用来将信息本地存储到服务器920。
参考图10,用于实现本发明的各个方面的示例性环境1000包括计算机1012。计算机1012包括处理单元1014、系统存储器1016、以及系统总线1018。系统总线1018将包括、但不限于系统存储器1016在内的系统组件耦合到处理单元1014。处理单元1014可以是各种可用处理器中的任一种。双微处理器和其它多处理器体系结构也可被用作处理单元1014。
系统总线1018可以是若干类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用总线体系结构中的任一种的局部总线,这些总线体系结构包括,但不限于,工业标准体系结构(ISA)、微信道体系结构(MSA)、扩展ISA(EISA)、智能驱动器电子设备(IDE)、VESA局部总线(VLB)、外围组件互连(PCI)、插件总线、通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)、火线(IEEE1394)、以及小型计算机系统接口(SCSI)。
系统存储器1016包括易失性存储器1020和非易失性存储器1022。包含诸如在启动期间帮助在计算机1012内部各元件间传送信息的基本例程的基本输入输出系统(BIOS)存储在非易失性存储器1022中。作为示例而非限制,非易失性存储器1022可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失性存储器1020包括用作外部高速缓存的随机存取存储器(RAM)。作为示例而非限制,RAM有多种形式可用,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM(SLDRAM),及直接Rambus RAM(DRRAM)。
计算机1012还包括可移动/不可移动,易失性/非易失性计算机存储介质。例如图10示出磁盘存储1024。磁盘存储1024包括,但不限于,如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡或记忆棒等设备。此外,磁盘存储1024可单独包括存储介质或与其它存储介质相结合,其它存储介质包括但不限于光盘驱动器,诸如光盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)。为便于磁盘存储设备1024与系统总线1018的连接,通常使用诸如接口1026等可移动或不可移动接口。
应当理解,图10描述了在用户与在合适操作环境1000中所述的基本计算机资源之间用作中介的软件。这些软件包括操作系统1028。可存储在磁盘存储1024上的操作系统1028用来控制和分配计算机系统1012的资源。系统应用程序1030通过存储在系统存储器1016中或磁盘存储1024上的程序模块1032和程序数据1034来利用操作系统1028对资源的管理。应当认识到,本发明可以用各种操作系统或其组合来实现。
用户通过一个或多个输入设备1036将命令或信息输入到计算机1012中。输入设备1036包括,但不限于,诸如鼠标、跟踪球、电子笔、触摸板等定位设备、键盘、话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、电视调谐卡、数码照相机、数码摄像机、网络摄像头等等。这些及其它输入设备经由接口端口1038通过系统总线1018连接到处理单元1014。接口端口1038包括例如串行端口、并行端口、游戏端口及通用串行总线(USB)。输出设备1040使用一些和输入设备1036相同类型的端口。因而,例如USB端口可用于向计算机1012提供输入,及将信息从计算机1012输出到输出设备1040。提供输出适配器1042是为了说明有一些需要专用适配器的输出设备,如监视器、扬声器及打印机等。作为示例而非限制,输出适配器1042包括,提供输出设备1040与系统总线1018之间连接手段的显卡与声卡。应当注意,诸如远程计算机1044等的其它设备和/或设备系统同时提供输入与输出能力。
计算机1012可使用到诸如远程计算机1044等一台或多台远程计算机的逻辑连接在联网环境中操作。远程计算机1044可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的装置、对等设备或其它普通网络节点等等,且通常包括相对计算机1012所描述的许多或全部元件。为简单起见,与远程计算机1044一起示出的只有记忆存储设备1046。远程计算机1044通过网络接口1048逻辑地连接到计算机1012,然后经由通信连接1050物理连接。网络接口1048包含诸如局域网(LAN)和广域网(WAN)等有线和/或无线通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜缆分布式数据接口(CDDI)、以太网、令牌环等等。WAN技术包括,但不限于,点对点链路、如综合业务数字网(ISDN)及其变体等的电路交换网络、分组交换网络、以及数字用户线(DSL)。
通信连接1050是指用于将网络接口1048连接到总线1018的硬件/软件。尽管为清楚说明,将通信连接1050示为在计算机1012内部,但是它也可在计算机1012外部。仅为示例性目的,连接到网络接口1048所必需的硬件/软件包括内部和外部技术,诸如包括常规电话级调制解调器、电缆调制解调器及DSL调制解调器在内的调制解调器、ISDN适配器及以太网卡。
以上所描述的包括本发明的若干示例。当然,为了描述本发明而描述组件或方法的每一种可以想像的组合是不可能的,但本领域普通技术人员可认识到,本发明的其它组合和变换是可能的。由此,本发明旨在包括落入所附权利要求书的精神和范围之内的所有这些改变、修改、以及变化。
特别地,并且就上述组件、设备、电路、系统等所执行的各种功能而言,除非另外指出,用来描述这些组件的术语(包括对“手段”的引用)旨在对应于执行所描述组件的指定功能(例如,功能等效方案)的任何组件,即使它们在结构上并不等于所揭示的结构,这些组件执行在此所述的本发明各示例性方面中的功能。就此而言,还应认识到,本发明包括一系统以及具有用于执行本发明的各种方法的动作和/或事件的计算机可执行指令的计算机可读介质。
此外,尽管仅就若干实现中的一种揭示了本发明的一个特定特征,但是这一特征可与其它实现的一个或多个其它特征结合为任何给定或特定应用程序所需或对其有利。此外,在详细描述或所附权利要求书中使用的术语“包括”(动词)和“包括”(连词)及其变体的意义上,这些术语旨在如术语“包含”那样成为包含性的。