用于上下文信息的自动保持的数据树结构的制作方法

文档序号:6124187阅读:176来源:国知局
专利名称:用于上下文信息的自动保持的数据树结构的制作方法
技术领域
本发明涉及用于上下文信息的自动保持的数据树结构。
背景技术
通常,数据格式化系统一接收到被测设备的测试数据就立即对其进行处理。测试数据可被接收作为逻辑上形成层次的一系列事件。为了充分地理解和解释具体事件,经常有必要访问与其他事件有关的信息以提供必要的上下文。
在单个数据格式器的情况下,在数据格式化系统中处理测试数据相对直接并且不需要复杂的存储器管理技术。然而,对于其他的数据处理情况,复杂的存储器管理可能涉及用来在适当时候释放数据模型对象的显式代码。这些复杂技术通常是差错和存储器“泄漏”的多产环境。

发明内容
在一个实施例中,提供了一种用于对测试数据进行处理的系统,所述系统包括数据增加器,其具有以下用途的代码(1)从所述测试数据生成数据对象,(2)按照树结构排列所述数据对象,以及(3)生成引用了所述数据对象中的至少一个的令牌;数据模型,其与所述数据增加器进行通信,并且所述数据模型选择性地存储被从由所述令牌和子数据对象组成的组中选择的至少一个引用的所述数据对象,以及代码,用于释放被选择性地存储在所述数据模型中的数据对象,以回收未被从由所述树结构的子数据对象和所述令牌组成的组中选择的至少一个引用的数据对象的存储器;以及多个客户,其与所述数据模型进行通信,所述客户具有以下用途的代码(1)接收由所述数据增加器生成的所述令牌,(2)读取被所述令牌引用的所述数据对象,以及(3)在读取所述数据对象之后将所述令牌和对所述数据对象的相应引用一起删除。
在另一个实施例中,提供了一种用于对来自测试数据的数据对象进行处理的系统,所述系统包括数据增加器,其具有以下用途的代码(1)从所述测试数据生成数据对象,(2)按照彼此相关的关系结构排列所述数据对象,其中子对象具有指向父对象的引用,(3)生成具有对所述数据对象的引用的令牌;代码,用于回收存储了未被从由所述关系结构中的子数据对象和所述令牌组成的组中选择的至少一个引用的所述数据对象的存储器;以及多个客户,其与所述数据增加器进行通信,其中所述客户各自选择性地获得具有对所述数据对象的引用的令牌并且读取被所述令牌引用的所述数据对象。
在另一个实施例中,提供了一种用于对来自测试数据的数据对象进行处理的方法,所述方法包括从所述测试数据生成数据对象;按照树结构排列所述数据对象,其中子对象具有对父对象的引用;生成引用了所述数据对象中的至少一个的令牌;以及回收存储了未被从由所述树结构中的子数据对象和所述令牌组成的组中选择的至少一个引用的所述数据对象的存储器。
在另一个实施例中,提供了一种用于对测试数据进行处理的方法,所述方法包括从所述测试数据生成数据对象;按照树结构排列所述数据对象;生成引用了所述数据对象中的至少一个的令牌;选择性地存储被从由所述令牌和子数据对象组成的组中选择的至少一个引用的所述数据对象;将从所述测试数据生成的所述令牌传输到客户;用所述客户读取被所述令牌引用的所述数据对象;在读取所述数据对象之后将所述令牌和对所述数据对象的相应引用一起删除;以及回收存储了未被从由所述树结构中的子数据对象和所述令牌组成的组中选择的至少一个引用的所述数据对象的存储器。
其他实施例也被公开。


在附图中图示了本发明的说明性实施例,其中
图1图示了对来自测试数据的数据对象进行处理的系统的示意图;图2图示了在对来自测试数据的数据对象进行处理的系统中的具有指向子对象的令牌的数据模型的示意图;图3图示了在对来自测试数据的数据对象进行处理的系统中的具有指向子对象和父对象的令牌的数据模型的示意图;图4图示了对来自测试数据的数据对象进行处理的方法的流程图;图5图示了对来自测试数据的数据对象进行处理的方法的流程图;以及图6图示了对来自测试数据的数据对象进行处理的方法的流程图。
具体实施例方式
接收到后未被立即处理的测试数据需要被存储在存储器中。对于单个格式器,通常无需存储,因为数据一被接收到即被处理。然而,对于多个独立的格式器,通常需要数据存储。
通常希望保持作为上下文信息的测试数据的可用性,直到格式器不需要该信息为止。因为连续的数据记录过程随着时间推进而可能涉及大量数据,所以通常没有足够的存储器来保持所有这些信息。因此,非常希望一旦使用的可能性消失就丢弃相应项目。
如在这里所提供的,存储在数据模型中的从测试数据形成的对象的结构便利了以独立速率操作多个数据格式器。每个格式器以其自己的速度消耗所需数据。这可提供数据格式化系统的操作中的良好性能和灵活性。
潜在的复杂存储器管理情况可利用干净的依存结构来自动处理。该结构无需用来在适当时候释放数据模型对象的显式代码。这种用于释放数据模型对象的显式代码可能引起差错和存储器泄漏。
被计数的引用或指针被与每个对象一起使用,以提供与保持引用该对象的其他对象的总数相关的计数。当引用一个具体对象的其他对象的数目减少为零时,该对象被从存储器自动删除。然后该存储器可被回收以供重新使用。
结构或层次中的每个项目,包括父对象、子对象和令牌(token),都保持指向其父的引用。该引用使父对象被保持在存储器中。因为对象的父、祖父或更高层的父可能提供所需的上下文,所以只要有可能需要访问信息内容,这些高层父中的每一个就被保持在存储器中。
引用计数式(reference-counted)的存储器保持如子对象保持对父对象的引用这般工作。如果父对象保持对其子的引用,则父和子将永不被从存储器删除,因为它们彼此将被对方保持在原地。因此,父不保持对其子的引用。
保持了引用子对象的令牌的客户可以访问来自父对象和其他更高层父对象的所有上下文数据。另外,这些父对象、祖父对象和其他更高层对象被保持,直到引用父对象的令牌被删除为止。
参照图1,其示出了用于对测试数据102进行处理的系统100。在一个实施例中,系统100可包括数据增加器(populator)104,其具有以下用途的代码(1)从测试数据102生成数据对象106,(2)按照树结构108排列数据对象106,以及(3)生成引用了数据对象106中的至少一个的令牌110。
在一个实施例中,数据模型112与数据增加器104进行通信。数据模型112可选择性地存储具有来自从下述组中选出的至少一个的引用的数据对象106,所述组由令牌110和子数据对象106A组成。
示出了与数据模型112进行通信的多个客户114A-114D。客户114A-114D可具有以下用途的代码(1)接收由数据增加器104生成的令牌110,(2)读取被令牌110引用的数据对象106,以及(3)在读取数据对象106之后,将令牌110和对数据对象106的相应引用一起删除。在一个实施例中,提供了用于释放被选择性地存储在数据模型112中的数据对象106的代码,以回收用于未被从由令牌110和树结构108中的子数据对象106A组成的组中选择的至少一个引用的数据对象106的存储器。
在一个实施例中,令牌110中的每一个引用从由子数据对象106A和父数据对象106B组成的组中选择的一个。
在一个实施例中,至少一个子数据对象106A引用父数据对象106B。
在一个实施例中,子数据对象106A中的每一个都被令牌110之一引用。
子数据对象106A中的每一个都被令牌110之一引用。子数据对象106A中的每一个都引用父数据对象106B。客户114A-114D可读取被令牌110引用的子数据对象106A中的每一个并且可读取被子数据对象106A引用的父数据对象106B中的每一个。
见图2,示出了系统200的一部分,系统200与系统100有关并且包括具有子对象204A、父对象204B和祖父对象204C的数据模型202。按照有从子对象204A指向父对象204B的指针和从父对象204B指向祖父对象204C的指针的结构来排列这些对象。虽然未被示出,但是附加层的父对象可被形成在祖父对象204C之上,附加层的子对象可被形成在子对象204A之下,并且取决于测试数据,不同数目的对象可被形成在子对象204A、父对象204B和祖父对象204C中的任一层中。
仍参照图2,在一个实施例中,示出了具有指向子对象204A的指针的客户令牌206。数据模型202中的结构中的每个对象204A、204B和每个令牌206都保持对其父的引用。亦被称为指针的该引用使对象204A、204B、204C被保持在存储器中。因为对象的父、祖父或更高层的父可能提供所需的上下文,所以只要有可能会访问上下文信息,这些高层父中的每一个就被保持在存储器中。
见图3,示出了系统300的一部分,系统300与系统100有关并且包括具有子对象304A、父对象304B和祖父对象304C的数据模型302。按照有从子对象304A指向父对象304B的指针和从父对象304B指向祖父对象304C的指针的结构来排列这些对象。虽然未被示出,但是附加层的父对象可被形成在祖父对象304C之上,附加层的子对象可被形成在子对象304A之下,并且取决于测试数据,不同数目的对象可被形成在子对象304A、父对象304B和祖父对象304C中的任一层中。
仍参照图3,在一个实施例中,示出了具有指向子对象304A、父对象304B和祖父对象304C的指针的客户令牌306。数据模型302中的结构中的每个对象304A、304B和每个令牌306保持对其父的引用。亦被称为指针的该引用使对象304A、304B、304C被保持在存储器中。因为对象304A、304B、304C中的每一个都被至少一个令牌306引用,所以对象304A、304B、304C中的每一个在引用它的每个子对象和令牌被删除之前将不会被删除。
参照图1,在一个实施例中,可提供代码用来监视从子数据对象106A和从令牌110对数据对象106中的每一个的引用的计数116。
在一个实施例中,数据增加器104的代码可计算对数据对象106中的每一个的引用的计数116。引用的计数116由于每次对子数据对象106A之一的删除和每次对令牌110之一的删除而减少。在一个实施例中,用于释放存储了数据对象106A的存储器的数据增加器104的代码在与数据对象106中的每一个有关的引用的计数116减为零时允许回收存储了该数据对象106的存储器。
在一个实施例中,所述多个客户114A-114D包括数据格式器。数据格式器可包括从下述组中选择的至少一个,所述组由STDF(标准测试定义格式)编写器、ASCII(美国信息交换标准代码)编写器、XML(可扩展标记语言)编写器或未来所选择的另一类型的格式器,以及EDL(事件数据记录)编写器组成。
仍参照图1,在一个实施例中,通知管理器118与数据增加器104和客户114A-114D进行通信。通知管理器将由数据增加器104生成的令牌110和数据对象106通知给客户114A-114D。基于来自令牌110的引用,客户114A-114D选择性地读取存储在数据模型112中的数据对象。
在一个实施例中,提供了用于对来自测试数据102的数据对象106进行处理的系统100。系统100可包括数据增加器104,其具有用于从测试数据102生成数据对象106的代码。数据增加器104可包括用于按照彼此相关的关系结构108排列数据对象106的代码,关系结构108可包括但不限于树结构108。子对象106A可具有对父对象106B的引用。数据增加器104可包括用于生成令牌110的代码,并且令牌110具有对数据对象106的引用。系统100可具有用于回收存储了未被从由令牌110和关系结构108中的子数据对象106A组成的组中选择的至少一个引用的数据对象106的存储器的代码。系统100可包括与数据增加器104进行通信的多个客户114A-114D。客户114A-114D可各自选择性地获得具有对数据对象106的引用的令牌110和读取被令牌110引用的数据对象106。
在一个实施例中,EDL事件管理器120可向数据增加器104提供测试数据102。EDL事件管理器120可从DRL 122接收测试数据102。
参照图4,示出了用于对来自测试数据的数据对象进行处理的方法400。在一个实施例中,方法400可包括从测试数据生成数据对象的步骤402。方法400可包括按照树结构排列数据对象的步骤404,其中子对象具有对父对象的引用。另外,方法400可包括生成引用了数据对象中的至少一个的令牌的步骤406。最后,方法400可包括回收存储了未被从由树结构中的子数据对象和令牌组成的组中选择的至少一个引用的数据对象的存储器的步骤408。
参照图5,示出了对测试数据进行处理的方法500。在一个实施例中,方法500包括从测试数据生成数据对象的步骤502。方法500可包括按照树结构排列数据对象的步骤504。另外,方法500包括生成引用了数据对象中的至少一个的令牌的步骤506。方法500可包括选择性地存储被从由令牌和子数据对象组成的组中选择的至少一个引用的数据对象的步骤508。方法500包括将从测试数据生成的令牌传输到客户的步骤510。接着,方法500包括用客户来读取被令牌引用的数据对象的步骤512。方法500可包括在读取数据对象之后将令牌和对数据对象的相应引用一起删除的步骤514。方法500包括回收存储了未被从由令牌和树结构中的子数据对象组成的组中选择的至少一个引用的数据对象的存储器的步骤516。
在一个实施例中,从测试数据生成数据对象的步骤502可发生在数据增加器中。在一个实施例中,按照树结构排列数据对象的步骤504形成了父对象和子对象。子对象中的每一个可引用父对象之一。通常,生成令牌的步骤506包括但不限于生成引用了子对象中的每一个的令牌。另外,生成令牌的步骤506可包括生成引用了父对象中的至少一个的令牌。
在一个实施例中,选择性地存储数据对象的步骤508包括将数据对象存储在数据模型中。
参照图6,示出了用于对测试数据进行处理的方法600。在一个实施例中,方法600包括从测试数据生成数据对象的步骤602。方法600可包括按照树结构排列数据对象的步骤604。另外,方法600包括生成引用数据对象中的至少一个的令牌的步骤606。方法600可包括选择性地存储被从由令牌和子数据对象组成的组中选择的至少一个引用的数据对象的步骤608。方法600包括将从测试数据生成的令牌传输到客户的步骤610。接着,方法600包括用客户来读取被令牌引用的数据对象的步骤612。方法600可包括在读取数据对象之后将令牌和对数据对象的相应引用一起删除的步骤614。方法600包括回收存储了未被从由令牌和树结构中的子数据对象组成的组中选择的至少一个引用的数据对象的存储器的步骤516。可选地,删除数据对象的步骤516可包括监视对数据对象中的每一个的引用的计数的步骤518。
在一个实施例中,监视引用的计数的步骤518可包括响应于引用了数据对象中的每一个的令牌中的每一个的删除和引用了数据对象中的每一个的子对象中的每一个的删除而减少相应数据对象的计数。
对于方法500或方法600,回收存储了未被引用的数据对象的存储器的步骤516、616可在与数据对象相关的引用的计数减少为零时发生。
权利要求
1.一种用于对测试数据进行处理的系统,所述系统包括数据增加器,其具有以下用途的代码(1)从所述测试数据生成数据对象,(2)按照树结构排列所述数据对象,以及(3)生成引用了所述数据对象中的至少一个的令牌;与所述数据增加器通信的数据模型,所述数据模型选择性地存储被从由所述令牌和子数据对象组成的组中选择的至少一个引用的所述数据对象,以及用于释放被选择性地存储在所述数据模型中的数据对象,以回收用于未被从由所述树结构中的子数据对象和所述令牌组成的组中选择的至少一个引用的数据对象的存储器的代码;以及与所述数据模型通信的多个客户,所述客户具有以下用途的代码(1)接收由所述数据增加器生成的所述令牌,(2)读取被所述令牌引用的所述数据对象,以及(3)在读取所述数据对象之后将所述令牌和对所述数据对象的相应引用一起删除。
2.根据权利要求1所述的系统,其中,所述令牌中的每一个引用从由子数据对象和父数据对象组成的组中选择的一个。
3.根据权利要求1所述的系统,其中,至少一个子数据对象引用父数据对象。
4.根据权利要求1所述的系统,其中,所述子数据对象中的每一个都被所述令牌之一引用。
5.根据权利要求1所述的系统,其中,所述子数据对象中的每一个都被所述令牌之一引用,其中所述子对象中的每一个都引用父数据对象,并且其中所述客户读取被所述令牌引用的所述子数据对象中的每一个和读取被所述子数据对象引用的所述父数据对象中的每一个。
6.根据权利要求1所述的系统,其中,提供代码用来监视从所述子数据对象和从所述令牌对所述数据对象的每一个的引用的计数。
7.根据权利要求6所述的系统,其中,所述代码计算对所述数据对象中的每一个的引用的计数,并且其中所述引用计数由于每次对所述子数据对象之一的删除和每次对所述令牌之一的删除而减少。
8.根据权利要求7所述的系统,其中,所述用于释放所述数据对象的数据增加器的代码允许当与所述数据对象中的每一个相关的所述引用计数减少为零时回收存储了该数据对象的存储器。
9.根据权利要求1所述的系统,其中,所述多个客户包括数据格式器。
10.根据权利要求9所述的系统,其中,所述数据格式器包括从由标准测试定义格式编写器、美国信息交换标准代码编写器、可扩展标记语言编写器和事件数据记录编写器组成的组中选择的至少一个。
11.根据权利要求1所述的系统,其中通知管理器与所述数据增加器和所述客户进行通信,其中所述通知管理器将由所述数据增加器生成的所述数据对象和所述令牌通知给所述客户,并且其中所述客户中的每一个基于来自所述令牌的引用选择性地读取存储在所述数据模型中的所述数据对象。
12.一种用于对来自测试数据的数据对象进行处理的系统,所述系统包括数据增加器,其具有以下用途的代码(1)从所述测试数据生成数据对象,(2)按照彼此相关的关系结构排列所述数据对象,其中子对象具有对父对象的引用,(3)生成具有对所述数据对象的引用的令牌;用于回收存储了未被从由所述关系结构中的子数据对象和所述令牌组成的组中选择的至少一个引用的所述数据对象的存储器的代码;以及与所述数据增加器通信的多个客户,其中所述客户中的每一个选择性地获得具有对所述数据对象的引用的令牌并且读取被所述令牌引用的所述数据对象。
13.一种对来自测试数据的数据对象进行处理的方法,所述方法包括从所述测试数据生成数据对象;按照树结构排列所述数据对象,其中子对象具有对父对象的引用;生成引用了所述数据对象中的至少一个的令牌;以及回收存储了未被从由所述树结构中的子数据对象和所述令牌组成的组中选择的至少一个引用的所述数据对象的存储器。
14.一种对测试数据进行处理的方法,所述方法包括从所述测试数据生成数据对象;按照树结构排列所述数据对象;生成引用了所述数据对象中的至少一个的令牌;选择性地存储被从由所述令牌和子数据对象组成的组中选择的至少一个引用的所述数据对象;将从所述测试数据生成的所述令牌传输到客户;用所述客户读取被所述令牌引用的所述数据对象;在读取所述数据对象之后将所述令牌和对所述数据对象的相应引用一起删除;以及回收存储了未被从由所述树结构中的子数据对象和所述令牌组成的组中选择的至少一个引用的所述数据对象的存储器。
15.根据权利要求14所述的方法,其中从所述测试数据生成数据对象的操作发生在数据增加器中。
16.根据权利要求14所述的方法,其中按照所述树结构排列所述数据对象形成了父对象和子对象,其中所述子对象中的每一个引用所述父对象之一。
17.根据权利要求16所述的方法,其中生成所述令牌包括生成引用了所述子对象中的每一个的令牌。
18.根据权利要求17所述的方法,其中生成所述令牌包括生成引用了所述父对象中的至少一个的令牌。
19.根据权利要求14所述的方法,其中选择性地存储所述数据对象包括将所述数据对象存储在数据模型中。
20.根据权利要求14所述的方法,其中删除所述数据对象包括监视对所述数据对象中的每一个的引用的计数。
21.根据权利要求20所述的方法,其中,监视所述引用计数包括响应于引用所述数据对象中的每一个的所述令牌中的每一个的删除和引用所述数据对象中的每一个的所述子对象中的每一个的删除而减少相应数据对象的所述计数。
22.根据权利要求21所述的方法,其中,回收存储了未被引用的所述数据对象的存储器发生在与所述数据对象相关的所述引用的计数减少为零时。
全文摘要
本发明的一个实施例公开了一种用于对测试数据进行处理的系统,包括具有以下用途的代码的数据增加器(1)从测试数据生成数据对象,(2)按照树结构排列数据对象,以及(3)生成引用数据对象的令牌;用于释放数据对象,以回收未被引用的数据对象的存储器的代码,以及具有以下用途的代码的客户(1)接收由所述数据增加器生成的令牌,(2)读取被令牌引用的数据对象,以及(3)在读取所述数据对象之后删除令牌。在一个实施例中,公开了一种用于对来自测试数据的数据对象进行处理的方法,包括从测试数据生成数据对象;按照树结构排列数据对象;生成引用数据对象的令牌;以及回收存储了未被令牌或子数据对象引用的数据对象的存储器。还公开了其他实施例。
文档编号G01R31/317GK101038588SQ200710002748
公开日2007年9月19日 申请日期2007年1月30日 优先权日2006年1月31日
发明者布莱恩·F·卡宾特, 卡利·康纳利, 瑞德·哈郝 申请人:韦瑞吉(新加坡)私人有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1