自确定命令路径体系统结构后台的发明的制作方法

文档序号:6465678阅读:151来源:国知局
专利名称:自确定命令路径体系统结构后台的发明的制作方法
技术领域
本发明涉及软件设计,更准确地说涉及用于实时嵌入式系统的软件设计的结构,该系统通过提供数据对象实现确定性行为,该数据对象包括路径对象,该路径对象允许独立于用于每一数据对象的特殊处理请求来定义处理节点。
背景面向对象(0-0)设计是设计的一种方法1)导致在对象方面问题的分解以及2)为系统的静态(对象结构)以及动态(进程结构)设计采用各自的模型。在对象模型的上下文中,“对象”是具有状态、行为以及标识的一程序实体。术语“类”被用于给定类型的一组对象的共同结构和行为的定义。
对象模型具有四个主要部分抽象、封装、模块性以及分层。抽象允许从它的实现中分离对象的本质行为。封装允许不属于其本质特性的对象的详细资料被隐藏。模块性允许逻辑相关的抽象的聚类,从而进一步重用。分层允许通过提供另一对象的行为的继承以及包括其他对象来获得所需行为使对象的通用性被影响(leverage)。
在0-0系统中每一对象通过一接口和一实现被定义。对象外的软件用户完全依赖它的接口而不是它的实现的详细情况。对象的实现提供定义其行为的结构和详细情况。0-0程序是通过它们的接口彼此相关的对象的集合。
从某种意义上来说,每一对象是一“黑箱”。它的接口由黑箱发送和接收的信息组成。对象实际上包含代码(计算机指令序列)以及数据(指令在其上操作的信息)。传统上,代码和据被分开。例如,在C语言中,代码单元被称为“函数”,而数据单元被称为“结构”。在C语言中函数和结构不是形式上连接。一C函数能对不至一种结构类型起作用,而且不至一个函数能对相同结构起作用。这对0-0系统来对是不成立的。在0-0程序设计中,代码和数据被合并为一单独的不可分的东西一对象。一旦定义一对象,使用该对象的程序员不需要考虑该对象的内部。所有与该对象的内部程序设计的连接均经信息即对象的接口来完成。
通常计算机同时运行几个进程,或“线程”。每个线程具有它自己的计算机指令流以及独立于其它线程操作。计算机指令流通常被封装在一个或多个称为“处理对象”的对象中。基于优先权和其他准则,操作系统负责分配CPU(中央处理单元)时间给每一线程。
在定义一流程体系结构中,一些0-0程序使用称为“流水线技术”的方法,该方法使用队列来调解处理对象间数据对象的传送。几个线程被创建并且每一线程与一输入队列有关。在流水线系统中,线程从它的输入队列获得数据对象、处理该数据对象,然后将其放在另一队列中(一些其他线程的输入队列)。
在由一处理对象处理的过程中数据对象所发生的事可确定在由该处理对象处理后该数据对象将必须被发送到什么队列。这表示该处理对象必须具有内置的逻辑来了解当处理完该数据对象后将该数据对象放入哪一处理对象的队列。
0-0设计以及设计模板也适用于实时嵌入式系统、为现实应用如用于一种装置的控制结构而开发的系统。象那些要求满足精确的时间界限的实时系统具有可预测的响应时间并且当过载时必须稳定。如果不管发生什么它能保证到某个时间来响应,这样的系统被称为“确定性的”。但由于每一命令(数据对象)要求的复杂处理,大量确定性处理是很难的。每一命令可要求分析、解释、外推、执行、状态更新以及反馈到将数据信息或数据对象放在其队列中的对象。在一个步骤中试图完成所有这些操作使其很难满足硬时间界限。将该大任务分为更小的可管理的任务使其很难始终监视通过该系统时的命令。所需的是提供一种体系结构的设计,该体系结构允许这些任务当在0-0系统中时完全分开并且允许始终监视在系统中来回移动的这些数据对象。
发明概述本发明允许创建路径对象来在系统中逻辑地连接处理对象。可创建多个路径对象。该设计通过该系统将命令对象和处理对象从任何命令对象的路径的知识隔离开来。路径对象本身是在系统中现有队列的组织。在每一步,有用于常规路径的一队列、用于错误路径的一队列以及用于其他处理结果的大量其他队列。
在一路径中的每一处理对象与一输入队列有关。每个命令对象与一路径对象有关。当从处理对象的输入队列检索到一命令时,处理它并将其发送给在它的路径(如,正常路径或错误路径)中的下一队列。这允许每个处理对象集中其任务而不受在该系统中命令或它的任务的详细情况的阻碍。在寻址大量确定性命令中特别有用,因为关键处理对象的进度以及执行时间被紧紧控制。在该命令路径中的其他步能以较低优先权处理。
其实,在0-0系统环境中,其中按队列在线程间传送数据,本发明提供用于指定数据对象的目标队列依赖于为数据对象定义的路径对象。在一实施例中,数据对象的每个实例对应一路径对象。当处理对象处理完数据对象时,它询问该路径对象来确定将该数据对象放在哪一队列中。因此,如果在命令路径中需要做任何变化,均能在路径对象中定义,而不是通过在处理数据对象的处理对象中做改变。
本发明将参考下面的附图,结合某些优选实施例来描述以便能更充分地理解。参考附图,其强调所示的详细情况是通过例子以及仅为了本发明的优选实施例的说明性讨论,以及为提供认为最有用的东西和更容易理解本发明的原理和概念方面的说明。在这点上,不打算做出更详细地表示本发明的结构的详细情况对本发明的基本理解是有必要的,与附图一起所做的说明对本领域的技术人员来说很清楚在实际中可包含本发明的多种形式。
附图的简单说明

图1是根据本发明的一实施例,响应一数据对象,说明用于处理对象的进程确定一目标队列的流程图;图2是根据本发明的一实施例,说明对象间信息流的框图;图3是说明本发明的一实施例的类的UML(统一建模型语言)框图;图4是说明用于本发明的一实施例的一示例的执行路径的UML序列的框图。
优选实施例的详细说明参考图1,在第一步骤S100中,一程序中的处理对象从一队列接受数据。处理对象在数据对象S110上执行一数据操作。在步骤S110中,处理对象确定与数据对象的处理有关的状态,例如,该进程是否正常完成或具有一错误。在步骤S120中,为确定将该数据对象放在哪一目标队列,处理对象检查或使用在数据对象路径对象中的数据。然后在步骤S130中,处理对象将该数据对象放在被引用的队列中。
在步骤S110中确定与数据对象有关的状态的步骤对本发明来说不是必需的。根据一实施例,该状态可包括处理的正常和错误结果。
参考图2,在本发明的一实施例中,用于一处理对象1100的第N个数据对象110被放在一队列141中。处理对象1100处理第N个数据对象110并查询存储队列指示符表的第N个数据对象的路径对象115。在该实施例中,为处理对象1100定义正常或错误的结果状态。当处理对象1100确定其内部处理的结果时,该结果的指示符指向存储在第N个数据对象的路径对象115上的指示器181、182,该路径对象指的是该第N个数据对象110下一步将被放置的特定队列。在该例子中,该状态表示正常以及所选定的指示符181指向的队列142是用于处理对象2120。响应所接收的信息的指示,处理对象1100将N个数据对象110放在队列142中。
作为上述流水线结构的结果,在该系统中的数据对象通过与其相关的一路径对象确定其自身的命运。因此,在每一路径对象中可定义和调整路由问题,而不是通过在处理对象中直接编程。可编程每一处理对象来确保一旦完成处理,一路径对象被查询来确定数据对象的目标。注意根据程序员选择该信息包的方法,单个路径对象可用于多个数据对象,以及之亦然。
可以不显示如处理对象是否正常或不正常地完成其进程的条件。路径对象可简单地具有表示目标队列的当前处理对象的相应的指针。而且,该目标队列可从一公式获得而不是简单的静态指针。另外,在第N个数据对象的路径对象115中的路径数据可直径包含在数据对象本身中。
图3是表示系统中对象间的关系和对象的结构的UML类图(静态模型)。每一矩形框,如路径类210表示一类(可能一个或多个对象)。该框被水平地细分为三个部分,如211、212以及213。顶层部分如211包含类名。中间部分如212包含由记数法[+-][name][type]表示的类数据,其中“+”和“-”分别表示公用和专用数据,“name”是用于给定数据类型的唯一实例的标识符以及“type”是数据类型(可能是另一类)。底层部分如213包含记数法[+-][func_name]([arg_N_name][type_N])[func_type]表示的类函数(计算机代码),其中“+”和“-”分别表示公用和专用数据,“func_name”表示函数的名称,“arg_N_name”标识传送该函数的第N个变量,“type_N”是第N个变量的类型,以及“func_type”是由该函数返回的类型。
在图3中,处理机类240表示一处理对象。它具有一输入队列和一函数来处理该命令数据。队列类220表示命令的队列。它具有将下一命令对象返回到队列中以及增加一命令对象给该队列的函数。命令类230表示处理机类240的处理对象实例将处理的数据。使用一步变量,始终监视其在该命令路径中的位置。它具有一路径和存取程序函数来返回下一队列。路径类210表示通过该系统的唯一路径。它可被定义为如在注释200中详细说明的队列结构组。
图4是表示在类图中定义的对象的实例间可能的交互的例子的UML序列(动态模型)。图的顶部并行水平排列的框是对象(图3的相同类的实例)。记数法是[name][type],其中“name”唯一标记和“type”的实例,“type”是一类。从每一对象下来的虚线是它的寿命线。附加在其寿命线上的框表示各个对象的活动,活动框间的水平线用表示流向的箭头表示对象间的信息。每一信息上的文字是与该信息有关的函数调用的名称。在图中从头到尾时间流逝。
在图4中,一未指定的事件启动Node1241。随后Node1241访问Que1221,特别是GetNextCommand。Que1221反向下一有效命令对象(数据对象),CommandN231(系统中任何命令的类属表示)。接着,Node1241在命令对象上执行必要的处理,当处理完成时,Node1241调用在CommandN231上的GetNextNormalQueue。CommandN231把该调用委托给在它的路径上的NextNormalStep,PathN251(CommandN231的路径对象的类属表示)传送其步长作为一变量。PathN251返回所请求的Queue对象(在该实施例中为Que2222),假若这样,到下一正常队列。最后,Node124调用在Que2222上的AddToQueue,并传送当前命令对象231作为其变量。到此在图4中的事件序列结束。通常该序列其后会重复进行。
注意在上述实施例中,路径对象被描述为与其相关的数据对象分开的一对象,很容易理解该路径对象也可以包含数据对象中。
对本领域的技术人员来说本发明不局限于上述实施例的情形以及本发明可包含其他特殊形式而不脱离其精神或本质属性是显而易见的。因此本实施例在各个方面被看成说明性和无限制,本发明的范围由附加的权利要求表示而不是上述的描述,以及在权利要求的含义和等效范围内的所有改变全被包含在此。
权利要求
1.一种使用队列来组织从一处理对象对另一个的数据传送来确定在软件体系结构中数据对象流的方法,包括步骤在命令路径对象(115)中存储队列标识符(181,182);在第一所述处理对象(100)中接收和处理一数据对象(110);响应在所述数据对象中的标识符(181),标识与所述第二处理对象一致的队列(142);将所述数据对象放在在所述标识步骤中标识的队列中。
2.如权利要求1所述的方法,其中所述标识步骤包括确定所述处理步骤的结果。
3.如权利要求2所述的方法,其中所述标识步骤包括确定所述处理步骤的结果以及与所述队列一致的所述结果。
4.用于确定在软件体系结构中数据流的方法,其中队列被用来组织从一进程到另一进程的数据传送,包括步骤通过第一处理对象(100),在第一数据对象(110)的数据部分上执行一进程;将第一队列(142)标识为从所述第一数据对象的标识符部分(115)将把所述第一数据对象传送到的第一队列;修改所述第一数据对象的所述标识符部分以产生一第二数据对象;在所述第二数据对象上执行所述进程;将第二队列标识为所述第二数据对象将被传送到的第二队列。
5.如权利要求4所述的方法,进一步包括确定所述执行步骤的结果,所述标识步骤包括响应所述确定步骤,标识所述第二队列。
6.一种流水线软件体系结构,其中通过在所选的一个队列中排队,数据对象从第一处理对象被传送到第二和第三处理对象中选择的一个,包括对应每一个数据对象的一命令路径对象的定义;所述命令路径对象中至少一个包括所述第二和第三处理对象中的至少一个的标识符;所述第一处理对象定义一进程,其结果确保响应对应所述第一数据对象的所述命令路径对象中的一个,由所述第一处理对象处理的第一数据对象被放在所述第二和第三处理对象中的至少一个的队列中。
7.如权利要求6所述的体系结构,其中所述进程包括生成所述第一处理对象的子进程的结果的标识符以及响应对应所述第一数据对象的所述命令路径对象的一个以及响应所述标识符,所述第一处理对象处理的所述第一数据对象被放在所述第二和第三处理对象的所述至少一个的所述队列中。
全文摘要
用于流水线系统的软件体系结构,其中经与每一处理对象一致的队列,数据对象从一个处理对象传送到另一个。在本发明中,用于数据对象的目标队列通过使当前处理对象查询与数据对象一致的指针对象而不是将其编程到当前处理对象中来确定。用这种方法,数据对象确定它们本身的命令路径。响应数据对象的当前处理对象的处理的结果状态,目标处理对象可被确定。例如,路径对象可指向一目标处理对象,如果当前处理对象的进程的结果是正常的以及另一个有错误。
文档编号G06F9/44GK1479893SQ01805173
公开日2004年3月3日 申请日期2001年12月10日 优先权日2000年12月18日
发明者J·W·路易斯, J W 路易斯 申请人:皇家菲利浦电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1