CN1280716C - 计算机处理方法、分布式计算方法和网络计算方法 - Google Patents

计算机处理方法、分布式计算方法和网络计算方法 Download PDF

Info

Publication number
CN1280716C
CN1280716C CNB018235034A CN01823503A CN1280716C CN 1280716 C CN1280716 C CN 1280716C CN B018235034 A CNB018235034 A CN B018235034A CN 01823503 A CN01823503 A CN 01823503A CN 1280716 C CN1280716 C CN 1280716C
Authority
CN
China
Prior art keywords
molecule
processor
data
network
molecules
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB018235034A
Other languages
English (en)
Other versions
CN1537271A (zh
Inventor
韦尔西·法伯尔斯
焦尔·帕克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hisle research and Development Company Limited
Original Assignee
韦尔西·法伯尔斯
焦尔·帕克
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 韦尔西·法伯尔斯, 焦尔·帕克 filed Critical 韦尔西·法伯尔斯
Publication of CN1537271A publication Critical patent/CN1537271A/zh
Application granted granted Critical
Publication of CN1280716C publication Critical patent/CN1280716C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Abstract

一种计算处理和程序设计方法要求创建多个软件实体(“分子10”),它可以被动态配置来自主处理数据。分子可以发送和接收信号,所述信号表示分子的状态,是否完成了处理任务,处理任务的结果和是否通过一个或多个“下一个”分子的创建而终止、中断、重新配置或继续分子的操作。可以从共用的一组软件微组分(40、42、44、46、48)创建分子,它可以在任何程序设计语言编写以便在任何操作系统环境中运行。分子可以和单个计算资源驻留在一起,但是,它们理想地适于随网络上或并行处理环境中不同类型的分布计算资源部署。通过创建“逻辑网络”中的分子来进行全部数据处理任务,所述逻辑网络动态地适于完成其任务。可以分配逻辑网络来和不同传统系统、和以不同语言编程的应用程序以及和以任何格式存储的任何类型的数据一起工作。结果,分布或并行处理环境中的数据处理任务可以更加有效地进行,并可以采取全新类型的网络计算或并行处理任务。

Description

计算机处理方法、分布式计算方法和网络计算方法
技术领域
本发明一般涉及计算机处理和程序设计方法,尤其涉及使用新型自主数据处理机的方法。
背景技术
计算机处理已从其最初的理论基础发展到当前作为面向机器的样式,其中机器指令由中央处理器(CPU)执行从而将原始数据和连续步骤中的输入转换成有用的输出。为了实现包含越来越大量数据的越来越复杂的任务,计算机硬件以指数增加的方式在速度、能力、容量方面发展,现在正接近原子尺度和光的速度与波长的物理极限。通过线性程序设计方法的复杂任务的程序设计需要密集的代码编写,这可能要求几百万行的代码且易于受错误和交叉代码冲突的影响,它们都可能需要密集的调试。自然还需要程序设计用为所选的操作系统选择的一种程序设计语言完成,这导致过时和常规的系统。
开发了面向对象的程序设计(OOP)方法以便用自含且自执行的模块分解较大的程序设计任务。因此,已为特定功能进行优化的模块可以在多种多样更大的程序设计任务中以模块化形式按目录分类和重复使用。但是,OOP方法需要在程序设计环境上作为整体执行类定义层次,导致OOP模块的封闭系统和程序库必须被重新编译以便支持各种环境。
过去的十年间开发了并行处理方法来尝试通过由CPU的阵列协力将处理任务分解成几部分来获得增加的能力。但是,并行处理的常规方法需要程序设计任务的集中管理和控制,这对任务的协调和同步方面有严格的要求。迄今,并行处理方法还在继续采用线性程序设计方法,它很密集且易于出错,特别是在并行操作时,并受所选的程序设计语言和操作系统控制。
近些年,随着大规模分布式网络的产生,开始建议通过将大而复杂的任务分解成很小的块并在网络上协作的计算机之间将其分布来进行这些非常大或复杂的任务,这通常称作“分布计算”或“网络计算”。对分布计算的建议代表计算样式从高计算强度的任务处理向在网络上的资源之间广泛分布数据并通过分布工作用低强度CPU局部处理的转变。但是,由于使用相同的线性程序设计方法和集中化的管理和控制,迄今的分布计算样式还需要严格的程序设计和协作来实现相当的结果。一个或多个单独处理工作的错误或与使用集中处理管理的通信或协作关联的时间延迟可以产生瓶颈,这影响了这种方法的效果。
利用多个异步计算机处理的一种方法称作“基于流的程序设计”(“FBP”),如在1994年纽约Von Nostrand Reinhold出版的J.Paul Morrison的,Flow-Based Programming:A New Approach To Application Development中详细描述的。该参考文献根据以下三个原则描述了基于流的程序设计“异步处理、具有其特有的寿命的数据包和连接的外部定义”。在FBP中,应用定义为“黑箱”处理的网络,它通过预定的条件交换数据。FBP是通过“黑箱”处理的网络的步进标记的数据包的处理,因此是数据为中心的处理。FBP方法需要极高的预言能力来良好地工作。
因此,本发明的主要目的是提供计算机处理和有关的程序设计方法,它分散了计算机处理任务的管理并允许用自适应的选项,诸如采用可得的最有效通路来自主进行数据的分布或并行处理。
本发明的进一步的目的在于提供新的程序设计方法,它被最佳地设计来通过无需束缚的程序设计环境从而可以支持多个程序设计语言的同时使用并消除集中的处理管理来促进并行或分布数据处理。它还旨在降低复杂的处理任务所需的程序设计强度和情况特殊性质和这种程序设计出错的易感性。
发明内容
根据本发明,一种计算机处理和相关程序设计方法要求创建多个软件实体(这里称作“分子”),它可以被动态地配置以自主地处理数据。分子可以发送和接收能够表示分子的状态、是否实现了处理任务、处理任务的结果以及是否要通过创建一个或多个“下一个”分子来终止、中断、重新配置或继续分子的操作的信号。由共用的一组软件微组分来创建分子,可以以任一程序设计语言编写所述微组分以便在任一操作系统环境中运行。
为整个处理任务创建的分子可驻留在单个计算资源(CPU和数据库),但是,它们理想地适合于部署在网络上或并行处理环境中的不同类型的分布计算资源上。以一种或多种适合于分子即将操作于其上的计算资源的程序设计语言将每个分子进行编程。分子可以用编译的或运行时间编译的代码的混合运行,允许它们在仅有部分处理适应于在其上运行的计算资源上运行。分子可以彼此发送信号并用共用的网络协议发送和接受数据。它们运行以便自主地完成其各数据处理任务直到完成整个数据处理任务。可以通过在动态地适合完成任务的“逻辑网络”中创建分子和构造它们的操作和相互作用来进行整个数据处理任务。
适合并行处理环境,可以动态地配置分子在并行计算资源上自主运行。定义逻辑网络以便允许对它旨在处理的数据对象和对作为中间CPU资源的并行处理机阵列的任何可得的处理机的有效访问。处理机访问的调度可以由主控制器程序或由独立的调度程序分子或小型逻辑网络处理。将分子编程来将它们的状态、结果和下一个分子的终止、重新配置或产生发送信号。为了更有效和快速地完成数据处理任务,分子的分散、自主操作避免了常规并行处理方法中的刚性的调度结构和时间延迟冲突。
作为软件配置的实体,分子由以下基本软件微组分组成:信号处理机、输入处理机、接口处理机、方法处理机、有关方法和输出处理机。信号处理机能发送和接受用于调用其它分子的信号和将网络上的其它分子和资源发送信号。输入处理机接受数据输入并将数据排队。接口处理机确定到分子的输入何时满足预定条件以便打开到方法处理机的通路。方法处理机根据预定方法处理从输入处理机的队列发送的数据并将输出发送到输出处理机。
适合软件程序设计方法,创建分子的逻辑网络以便在任一类型的任何可得的计算资源上运行并以任一格式和在任一位置处理数据。将初始化文件编程来创建计划中的计算资源上的分子的初始主机。初始分子用来产生表示程序步骤进行的连续层或波中的下一个分子。构成每个初始化文件来组合来自标准微组分类犁库的分子的软件微组分。根据它们的功能客观地选择这些标准类型,且不是OOP分层中刚性的类类型。在适应计划在其中操作的环境的程序设计语言中所需和编程时,可以方便地创建新型的软件微组分。
使用本发明的计算机处理和程序设计方法,可以通过设计由部分分子构造的逻辑网络来进行复杂计算和数据处理任务,其中所述部分分子使用任何类型的任何可得计算资源并在包括网络上的任何位置。因此,例如,可以用操作不同传统的系统的分子、用不同语言编程的应用程序和用任一格式存储的任一类型的数据设计逻辑网络。结果,可以更有效地进行分布或并行处理环境中数据处理任务,并可以承担完全新型的数据处理任务。
将在以下本发明详细的描述中参考附图说明本发明的其它目的、特点和优点。
附图说明
图1A是根据本发明软件实体(“分子”)的一般示意图,图1B示出分布计算或并行处理环境中分子的逻辑网络的部署。
图2示出用于基本类型软件分子的结构的较佳实例,它具有信号处理机、输入处理机、接口处理机、方法处理机和输出处理器微组分。
图3更详细地示出软件分子的接口处理机的逻辑操作。
图4A和4B示出两个方法处理类型的实例,分别是块方法处理和流方法处理。
图5A-5F示出本发明的程序设计方法和常规面向对象的程序设计的比较。
图6A-6D一步一步地示出3个基本类型的分子,块处理、流处理和流块处理的运行时间的执行。
图7示出如何应用新颖的计算机处理和程序设计方法来产生可以完成数据同步任务的逻辑网络。
具体实施方式
在本发明中,一种新的计算机处理和程序设计方法要求创建多个软件实体(“分子”),它们被编程来自主地与其它分子以及可得的计算资源联系来处理数据。从共用的一组以任何程序设计语言编程的软件微组分(micro-component)创建分子,以便在任何操作系统环境中运行。它们在分子的逻辑网络中被配置以便进行数据处理的任务,它可以是整个处理任务的一部分。逻辑网络或逻辑网络的网络可以驻留在单个计算机环境中,但特别适合在并行处理和分布处理环境中使用。
参考图1A,示出了根据本发明的软件实体(“分子”)10的一般示意图。每个软件分子10基本由其配置(数据)文件、信号处理机40、输入处理机42、接口处理机44、方法(47)和方法处理机46以及输出处理机48(将在以下的标题“软件分子”中进一步地详细描述)组成。从本地或远程的源聚集和组合分子的部分以创建分子(在以下的标题“程序设计方法”中进一步地详细描述)。每个分子被编程来自主处理所定义的数据对象,并且可以向其它分子发送信号和从它们接收信号,通过它们所述分子可以在逻辑网络中相互作用从而完成处理任务。分配逻辑网络以便在任何可得的计算资源上运行,并通过计算环境中的通信总线和/或通过网络环境中的网络(在图中通过连接线表示)与其它逻辑网络上的其它分子通信。通过通信连接,分子可以发送和接收数据到其信号处理机40、通过任何输入源存取数据到其输入处理机42并通过其输出处理机48输出数据。
参考图1B,示出用于分布计算环境的分子的逻辑网络20的部署。通过任何类型的网络(由连接线表示)连接本地计算机、LAN/WAN服务器、CPU、网络服务器、数据库、I/O装置等形式的多个分布计算资源。该网络可以是局域网(LAN)、广域网和/或全球网(因特网)。当逻辑网络中的整个网络可以驻留在单个计算资源处并在网络上与具有要用分子处理数据的其它计算资源通信时,如果旨在于特定计算资源处处理数据的逻辑网络在这些计算资源处驻留并本地处理数据并代替地通过网络将它们的状态信息和结果与其它分子通信,就大大提升了系统的效率。因此,例如,用于处理COBOL格式的数据的分子可以驻留在存储COBOL格式数据的COBOL服务器上,或用于处理JAVA空间内数据的分子可以驻留在具有所需数据和本地驻留的JAVA虚拟机的计算资源处。在这种分布模式中,本地驻留的分子的逻辑网络可以用其所驻留的计算资源所使用的程序设计语言编程,从而它可以方便地在该环境中操作。
可以类似地在并行处理环境中部署逻辑网络,或逻辑网络的网络,所述的并行处理环境具有一组CPU资源(由CPU#1,...,CPU#6表示)和相关的数据库和I/O装置。构成逻辑网络以便允许每个分子对它所希望处理的数据对象的有效访问。可以通过资源管理器分子或逻辑网络排定分子对CPU计算资源的访问。可供选择地,它可以和诸如在并行处理环境中常规使用的CPU调度程序(scheduler)通信。由于将分子设计成自主处理数据,所以它们无需通过集中的处理管理监控和控制就可以进行操作。分子将它们的状态信息、结果和下一个分子的终止、重新配置或产生发送信号给系统中建立的其它分子或逻辑网络。但是,还可能以混合安排使逻辑网络和常规控制器程序进行通信。
软件分子
参考图2,示出了基本类型的软件分子的较佳结构,它具有信号处理机40、输入处理机42、数据接口处理机44、方法处理机46和输出处理机48。信号处理机40能够将信号发送到通信总线或网络上的其它分子和其它资源并能从它们接收信号,这类似于CB或私人无线电网络上分散的信号广播。以通信总线或网络上使用的共用协议将信号广播,例如因特网通信上使用的TCP/IP协议。
信号处理机40可以在系统内进行以下的基本程序:
1.从数据源读取配置文件。配置文件包含分子的子部分的名字、属性和类型。
2.通过按照配置文件中所定义的装配子部分来构建分子。通过从具有存储的处理机类型的文件库的本地或远程源请求该部分的名字和类型进行子部分的加载或调用。
3.选择信号环境。信号处理机收听配置文件中指定的信号环境。
4.将分子删除、中止或重启。
5.发送信号到指定的信号环境或从它发送信号。
6.解释其接收的信号,并将该信号传递给合适的分子的子部分,包括重新配置的能力。信号处理机可以将要求发送给子部分。信号处理机请求的实例包括:(a)到输入处理机或输出处理机以降低队列大小;(b)到5个子部分中的任何一个以写出它们的状态并随后消失(die);(c)暗示或命令5个子部分中的任何一个重新映射(re-mapping);(d)修改缓冲大小或存储器的使用。
7.请求加载“下一个”或其它分子。信号处理机查看指定的名字登记以便了解是否已存在“下一个”分子。如果存在,则信号处理机将使分子重新映射,或可供选择地,如果它被指定了,则将不请求“下一个”分子。如果不存在,则要求创建新的信号处理机,它将加载“下一个”分子。新的信号处理机不是子线程,而是完整地分开的和独特的新实体。这是和其它程序设计样式的区别,在所述其它的程序样式中所有的线程是主要的母线程的子线程,它们一起形成应用程序。
可以以任何适应分子驻留的计算资源的通信或“信号”环境的方式实现信号处理机的信号发送和接收。在常规计算机或网络环境中,信号处理机可以发行或接收“信号”作为寻址于系统中或网络上的指定分子的数据包。来自信号处理机的信号可以根据名字登记中保持的地址而路由到目标分子。名字登记可以由另一个分子或逻辑网络,或常规的资源寄存器(register)保持。例如,诸如JAVATM共享数据环境的常规数据共享环境具有为给定的应用建立的服务器、客户机和数据通道的寄存器。信号处理机还可以“收听”用于全局广播给所有分子的信号环境,或者它可以调到如配置文件中所列出的指定频道,或者等待来自任何指定信号环境的任何信号,或者可以与逻辑网络中其它分子的组一起调到同样的频道。
将分子的处理机部分构成共用的一组类型,它们可以被调用来创建或动态地配置分子。可以通过将所需处理机类型的名字发送信号来装配分子,以便从存储器取回代码的对应部分。在这种方式中,可以根据数据源或存储模型的正确类型访问任何数量的输入和输出处理机的类型。类似地,可以用许多不同类型的方法处理机配置分子。当向接口处理机提供新的配置信息时,将与为给定条件调用的方法处理机类型有关的新信息进行存储,从而在存在这些情况时分子可以执行新方法。可以通过本地存储器、LAN、WAN或因特网从所存储的文件访问用于分子的5个部分处理机中的任何一个的源或对象代码的合适部分。
在附录I中提供的列表中示出了可能在分子配置文件中涉及的处理机类型和属性的范围的基本实例。但是,可以理解,可创建的处理机的数量、类型和属性是无限制的,且可以随用于配合不同类型的存储模型、数据共享环境和计算资源的程序员的需要相应地扩展。
输入处理机42建立从指定类型的存储模型到数据源的分子连接,如程序员所确定的。通过设计,输入处理机提供对任何存储模型的数据源的接口。它将进入的数据源排列成队列允许的范围,如所选类型的输入处理机所确定的,随后向接口处理机44登记它已将数据排队了。输入处理机还允许分子的其它子部分查询其数据。
在所示的实例中,在输入处理机42a以及输入处理机42b的队列“B”中接受对存储器或数据“A”的输入指针,而在输入处理机42c的队列“E”中接受输入指针/数据“D”。
由分子中装配的输入处理机的类型确定可以进入任何输入处理机的数据源的类型。每种类型的输入处理机可以为给定存储模型如何接受数据指定给定存储模型的特殊数据通道。例如,可以使用常规数据共享环境的存储模型和数据处理功能,诸如Sun Microsystems,Mountain View,CA的Java共享数据工具包(JSDTTM)。在产生输入处理机时,为系统的存储环境登记指定的数据通道。随后可以将来自指定的数据通道上的源(系统中的其它分子或第三方客户机)的数据路由到输入处理机。通过为特定的数据类型选择输入处理机,可以免去在运行时间上进行数据类型检查的需要。可以写入各种类型的输入处理机以便适应将被处理的各种文件类型。在较佳的  结构中,一旦输入处理机接受了数据源并开始处理数据,则数据将是“无类型的”直到输出处理机将到给定环境的接口的数据进行格式化或设置类型。使用多个输入处理机的优点在于允许从多个存储模型同时访问数据源,这些存储模型在同一分子中被聚合并处理。
通过确定分子的输入何时满足一个或多个预定的条件,接口处理机44执行分子的中央功能。通过允许分子等待满足预定条件的输入,而非必须由指示命令和由集中的处理管理监控,分子能够等待、查看和处理,从而它具有自主行动的特性。这不同于常规线性程序设计的代码指令,后者中它被写入来在特定顺序中在特定的时间执行特定的任务。预定条件可以是出现所有所需数据输入到输入处理机。可供选择地,它可以包括出现由信号处理机接收的信号。还可以通过信号处理机接受的信号动态地重新配置接口处理机,以便改变预定的条件来调用用于给定的一组条件的方法或输出处理机以便被调用来处理结果。
根据存在哪种输入数据源,接口处理机可以具有用于多个不同方法处理机和有关方法中的每一个的预定输入条件。在等待来自一个或多个输入处理机的指示的接口处理机内,分子具有多个查找表。在帮助输入处理机和方法处理机之间的通信之前,接口处理机将等待,直到满足查找表中指定的所有输入。
接口处理机可以使用用于监控多个输入条件的任何合适装置来确定何时满足预定条件的需要。该功能可以通过等效于位阵列、条码表或开关阵列的软件实现。在满足所有所需输入条件时,接口处理机44请求各方法处理机46并将用于调用有关方法47的合适的参考传递给它。在图2所示的实例中,输入处理机42a和42b告知接口处理机44正确的指针/数据源被排队,以使位阵列中指定的标记被设定为“1”来表示输入条件“C”,而输入处理机42c设定用于输入条件“F”的标记位。
通过出现另一个输入条件,例如被发送到信号处理机40的信号,位阵列第三行中的第四个标记位被设定为“1”。由于位阵列的第三行中所有所需的标记位都被设定为“1”,所以接口处理机44打开通道“G”来调用合适的方法处理机46,它随后请求用于处理到输出处理机48的输入的有关方法47。
图3中,描述了接口处理机的逻辑操作的更详细的方法。接口处理机44存储表示为“查找#1”的第一条件所必需的预定输入。查找#1指定在接口处理机44的预定条件下将产生什么事件,包括“所有数据出现”、“超时”和“信号”。接口处理机44可以具有一个或多个查找。在该实例中,查找#1描述一个根据三个数据源的出现的接口处理机,该三个数据源是共享存储数据A、硬件存储数据B和网络存储数据C。
在查找#1中,根据是否出现共享存储数据A将指数1设定成开/关,同样地,指数2用于硬件存储数据B而指数3用于网络存储数据C。当所有数据都出现时,接口处理机请求合适的方法处理机46a“所有数据出现”。作为缺省条件,如果经过了指定的时间间隔而没有满足所有的数据输入条件,则用于“超时”的指数被设定为“开”以调用方法处理机46b。作为另一种缺省条件,如果在满足所有数据输入条件之前信号处理机40接受到指定的信号,则将“信号”指数设定为“开”以调用方法处理机46c。查找#2示作根据两个数据源,硬件存储数据B和网络存储数据C。接口处理机总是知道哪个相关的输入处理机42具有数据,因为当输入处理机接受到新数据或不再具有数据时,它会通知接口处理机。
再参考图2,当满足预定的输入条件时,调用各方法处理机(对于三组预定条件的类型“H”、“K”和“N”),请求在输入数据上进行的相关的方法47或处理步骤,并将输入数据从输入处理机42提供到方法47。可以通过通路“G”将输入数据作为块处理,或作为流数据。如果输入数据是流,则方法处理机建立用于流的输入通路,它由来自方法处理机的队列“I”和来自输入处理机的输入响应“J”处理。对于数据块,方法47将输出M返回到方法处理机46,它将输出M发送到输出处理机48并随后在其之后清除。对于流数据,输出M被直接发送到输出处理机48直到方法终止。方法的实例可以是计算算术和、将数据分类、进行逻辑操作等等,并可以包括整个第三方应用。
图4A和4B示出两个方法处理类型的实例,分别是块方法处理和流方法处理。在块方法处理中,方法处理机46从接口处理机44接收请求方法47所需的进入数据的参考。随后,方法处理机46查询来自输入处理机42的进入数据,请求块方法47并将响应传递给方法47。随后,方法处理机46等待方法47返回其结果。随后,它从输出处理机48获得输出处理机参考并将结果发送给它们。如果不存在参考,则方法处理机可以创建(调用)输出处理机。随后,将数据传递到输出处理机48,方法处理机46退出。
在流方法处理中,方法处理机46从接口处理机44接收请求方法47所需的进入数据的参考。方法处理机46还获得或创建用于流出数据的输出处理机48参考。在满足预定条件时,请求流方法47,并将输入和输出处理机参考传递到流方法47。随后,流方法47可以从输入处理机42接收数据、处理它并将其直接提供给输出处理机48。在该流方式中利用方法处理机46允许分子用作“连接引擎”,它允许逻辑网络将方法47的动态链串在一起。
如程序员所确定的,在将被提供输出的存储环境类型中,输出处理机48建立到数据通道的合适连接。如果没有在输出处理机的配置文件中指定用于输出的数据通道,则可以启用输出处理机以便在运行时间上响应现有条件创建数据通道。通过设计,输出处理机因而允许任何类型的存储模型的接口。它将流出的数据源排队成队列所允许的范围,如程序员根据所选的输出处理机的类型所确定的。
使用输出处理机的优点在于允许用于输入数据的多个存储模型的同时分配,它们在同一分子中聚合和处理。可以有很多类型的输出处理机。特别的优点是用于共享存储计算机系统的输入和输出处理机的使用。取代移动实际的数据,对于另一个或下一个要操作的分子,可以在分子内或从一个分子到另一个地移动数据或过程的指针。这给予了分子相比常规的面向对象的程序设计(OOP)方法速度上的优势。OOP方法也可以传递指针,但必须通过OOP程序处理指针来找到指针。相反,分子可以从另一个分子接收原始指针并用下一个操作直接处理。
如程序员所确定的,每个分子具有微组分,这些微组分允许分子进行自主行动来将由规定的方法所需的数据处理为想要的数据。在构建逻辑网络所针对的无论哪种数据共享环境中,数据移动到指定数据通道上的分子或从其移动出。如果任何数据都不可得,则分子将简单地等待,并不必指示下一步将作什么。可以给每个分子唯一的名字,它保存在名字登记中。因此,任何分子可以根据其唯一的名字将该分子发信号,且不能在同一登记中创建同一名字的另外的分子。
可以在任何时候通过将终止信号发送到信号处理机40终止分子的处理。在它们存在期间的任何一点,可以将分子停止并通过发送到信号处理机40的重新配置信号而针对不同的模式或方法重新配置。还可以将分子发送信号来写出其当前的配置(状态信息),从而可以在任何一时间点分析处理状态。相反,常规的程序不保持动态改变的状态信息,因此不能解释在任一特定时间时在运行什么。
在分子的5个子部分中的任一个或全部接收到一“除去(kill)”信号且所选的处理机类型支持保留关于处理状态的信息时,处理机将它们的状态信息写入可以被重新加载的分子配置文件。因此,如果由于任一原因系统故障,则可以从分子获得状态信息,并重新创建每个分子和整个逻辑网络的状态。这允许系统管理员定位哪里或如何产生故障,还允许将该配置文件加载入另一个分子以便一旦改正了故障还能再继续处理。重新建立过程(逻辑网络)的“状态”的能力和与其它程序设计样式中的不同。如果系统出现故障,通常整个过程必须从开始处重新启动并通过每次执行一步地步进直至到达故障。使用本发明的程序设计方法,使用逻辑网络,可以就在故障点之前重新创建过程,大大地提升了诊断速度。
分子的配置文件指定分子将作为什么运行状态运行,诸如“运行一次”、“运行直至没有数据”或“运行直到信号通知消失”。当完成一次运行时,当其输入处理机和输出处理机中不再有数据时,或当信号处理机接收信号来从信号环境中除去分子时,分子可以将其本身清除(clean itself up)。这可以通过清除软件文件或禁用其可执行代码来实现。因此,可以通过处理每个分子基础上的“清除”来保持逻辑网络的完整性。在终止之后不遗留不正确的数据或状态信息,其中它们可能使其它处理机变坏。分子水平上的清除还提供有效的存储使用并不必定期清除程序。仅在所需的运行时间内加载分子,所以当分子终止时立即将机器资源释放。对于流方法,可以创建分子,只要提供数据,它就使用可得的资源来流化数据,在这一点上释放了机器资源。如果动态地确定分子的必要的寿命,程序员可以指示信号处理机来收听合适的信号环境来接收除去信号。可以将该除去信号发送到分子的每个子部分以便将其本身清除,这可以包括写出它们的状态用作将来的参考。该程序设计方法用每个分子(每个数据处理子步骤)将其本身消除的独特能力提供了机器资源的有效使用。在另一种程序设计样式中,虽然在运行时间期间产生某些清除,但不会释放大部分机器资源直到应用程序退出。
逻辑网络程序设计方法
本发明的程序设计方法要求构建一个或多个逻辑网络来进行整个处理任务的增加的处理步骤。通过一组增加的处理步骤完成处理任务的程序设计是程序设计领域中一件技术、灵活和艺术的事,并超出了本描述的范围。新程序设计方法的基本特性是逻辑网络的创建,该逻辑网络工作地连接到由多个分子构成的计算资源,这些分子可以自主地进行数据处理步骤。逻辑网络的特定结构取决于所需进行的处理任务(在以下的“数据同步实例”中描述了一特殊实例)。逻辑网络的创建中的基本元素是至少一个分子的创建,所述分子具有以上描述的基本的5个子部分。
为了编写分子,程序员具有一处理机类型库,由该库创建分子。程序员首先确定从哪个数据源获得数据,这些数据源诸如存储的文件、因特网目录、JSDTM空间(Sun MicroSystems的商标,Mountain View,CA),IBM TubuleTM空间(IBM公司的商标,Armonk,NY)等等,和用什么方法来处理数据。程序员选择合适的输入和输出处理机类型,它们和设置或将驻留数据源的数据环境相匹配,随后选择合适的接口处理机。程序员通过确定为了请求方法处理机需要满足哪些输入条件来配置接口处理机。随后,程序员选择将调用的方法的名字,和哪个输出处理机与被处理的数据将被发送至的环境匹配。程序员确定分子是否将运行一次、运行直到没有数据或运行直到收到消失信号。程序员还确定是否使用超时时间段、什么超时方法和当接收到特定类型的信号时请求什么方法。最后,程序员定义将加载什么另外的或下一个分子,和将使用什么信号来重新映射这个或其他的分子。
这导致一个分子单元。程序员将它保存为一个初始文件并给它一个独特的名字,该名字登录在名字登记中。程序员对逻辑网络中创建的每个分子进行类似的处理。随着进一步发展了这种样式的程序设计,在用于程序设计使用的库中可以存储用于优化分子和甚至整个逻辑网络的标准初始化文件。处理机的库或列表的发展被认为能允许外行不写一行代码而创建完整处理分子或整个应用程序。
通过本发明的程序设计方法将数据处理任务编程的结果是通过创建分子的逻辑网络来执行程序,其中所述分子的逻辑网络可以自主地在任何计算资源上处理数据,不需要集中的处理管理而将它们分配到上述的计算资源。进一步的重要特点是能够动态地重新配置逻辑网络的一个或多个分子,以便或者随运行时间的改变,或者随程序的发展或扩展,或者随程序错误的校正,改变其数据处理功能。
处理任务中的步骤的执行是通过信号处理机的生成的动作完成的。在产生信号处理机时,在读取其配置文件时,它分叉并创建配置文件中指出的任何其他的分子。
信号处理机还将其分子重新映射到另一个分子名字,或可以请求另一个方法。因此,分子的每个层构建“其本身之前以外(out ahead of itself)”的逻辑网络。结果,将产生分子的连续的层,随后将搁置(sit)并等待实现它们的可得数据源的输入条件。
图5A-5F示出本发明的逻辑网络程序设计方法和常规面向对象的程序设计的比较。该实例使用根据给定的查找输入查找汽车数据的数据处理任务的简单化比较。
通过一个或多个种类的汽车类型、制造、风格、驾驶特性、操纵特性、颜色、刹车特性以及加速特性,建立数据处理程序来进行数据库的查找。图5A-5C中示出逻辑网络程序设计方法的效果,而图5D-5F中是面向对象的程序设计方法。
图5A中,加载汽车分子。当用查找输入A,C,D实现汽车分子时,请求创建操纵分子,它依次请求创建驾驶分子。将输入传递到驾驶分子,它处理这些输入并返回一结果。在面向对象的程序设计方法中,如图5所示,加载整个汽车对象,并将输入A,C,D传递到汽车对象。汽车对象的分级元素或类,例如,汽车类型、操纵和驾驶,处理输入,产生结果。
图5B示出在逻辑网络程序设计样式中,如何不必为了改变操作的功能特性而退出运行操作。添加气和电(电源)分子并使它们可由操作访问。将重新映射的信号发送到加速分子以便包含请求加速的情况中添加的新分子。在面向对象的程序设计方法中,如图5E所示,必须退出操作的运行,为了整个汽车对象而获得源代码,为了层级中的其位置编辑气和电对象,并编辑加速对象来包含层级变化。随后,必须将对象代码重新编译,在这种情况中,还必须编辑、重新编译和重新连接将在操作中使用的任何其他源代码或对象代码。
在图5C中最后的实例中,现在运行逻辑网络程序设计方法中的加速分子。在通过新的输入B和现有输入C实现加速分子使,请求气分子,并传递和处理数据,返回结果。在图5F中面向对象的实例中,重新开始操作,并重新加载整个汽车对象。将输入B和C传递到汽车对象,且汽车类型、操纵、加速和气的分级元素或类处理该输入,产生结果。这示出,在逻辑网络程序设计方法中,在运行系统时,系统可以动态地适应应用的新参数。这就不必重新编码和编译来继续运行操作。
编译和运行时间操作
在逻辑网络程序设计方法中,通过设计相互作用的分子的逻辑“网络”实现整个处理任务,其中上述的逻辑网络可以自主地进行数据源到最终结果的所需处理。在运行时间上从程序员编写的初始文件产生分子的网络,它们在参与整个处理任务完成的计算资源之间分配。
初始文件产生分子的初始群(cohort)来开始处理任务。利用本地CPU和相关数据库的可得的计算资源,分子保持操作直到它们被终止、没有数据或被重新配置。在操作期间,它们可以被用来在任何时候调用其他的分子。以这种方式,它们用作动态环境中的自主元素。但是,它们的操作是有目的的并立刻在任何地方并行,而不是混乱的。
计算机处理的这个新样式产生优化的有效分布处理,以及真正并行程序设计和处理的能力。除了能使用网络上的任何机器而不管其类型或操作系统环境,它还立刻处理来自不同源的数据。
在较佳实施中,给处理机指定独特的类型名字并写入对象或源代码中。可以为预计将遇到的许多类型的程序设计环境编写同一类型的处理机,从而可以调用正确的代码类型来在想要的本地计算资源上运行。例如,它们可以以将在其上运行的本地计算资源的操作系统使用的程序语言编写,或可以以诸如,JAVATM脚本(Sun Microsystems的商标,MountainView,CA)的可移植的元语言编写以便在该操作系统环境中的可执行部分(JAVA虚拟机)上运行。
用于产生逻辑网络的分子的初始文件物理上作为存储在磁盘上或存储器中或通过到本地计算资源的网络传输的相对较小的文件存在。它们作为可执行文件运行,该可执行文件被读入本地计算资源的RAM并象其他编译的程序一样被执行。如果分子旨在在因特网环境中被部署,则可以从URL地址检索,或从本地目录,例如/usr/lib/java获得代码文件。
初始文件用来通过调用部分处理机的名字装配分子的每个初始群。当调用处理机名字时,从所存储的处理机库(本地的或远程的)检索包含源或对象代码的文件,并将它们装配来形成分子。这导致比常规OOP方法中的更多的柔性运行时间操作,在常规的OOP方法中以完整装配的块或编写首先必须被编译以便运行的源代码的其他程序设计语言编写整个对象。
图6A-6D一步一步地示出3种基本类型的分子,块处理、流处理和流块处理(streaming a block process)的运行时间的执行。在图6A中示出了分子的基本部分,包括信号处理机40、输入处理机42、接口处理机44、方法处理机46、方法47和输出处理机48。用于分子的初始文件首先构建信号处理机40。信号处理机启动并通报用于整个程序的名字登记。如果该名字已存在,则或者忽略该创建分子的请求,或者重新映射现有的分子。动态命名约定也可以用来除去保持集中的名字登记的需要。随后,信号处理机40调用输入和输出处理机42和48以及接口处理机44。在这一点上,有一运行的分子等待输入。应注意,在任何步骤上,信号处理机可以命令或排队输入和输出处理机、接口处理机和方法处理机的所有属性的重新映射,或它可以中断、继续或终止一单元。
对于图6B所示的块处理,在步骤A中分子等待输入处理机42向接口处理机44登记它们具有数据。当实现接口处理机44时,进行到请求方法处理机46。在步骤B中,方法处理机从接口处理机接收输入处理机参考、输出处理机名字和方法名字。方法处理机向输入处理机查询输入数据作为一个块。在步骤C中,方法处理机请求方法47并传递输入数据响应,随后等待方法返回一结果。当在步骤D中返回结果时,方法处理机获得输出处理机参考。如果它不存在,则方法处理机创建输出处理机48。随后,进行到将结果传递给输出处理机。步骤E中,输出处理机48将数据发送到其输出环境,且分子返回来等待输入处理机将更多的数据排队。
对于图6C所示的流处理,在步骤A中分子等待输入处理机向接口处理机登记它们具有数据。当实现接口处理机时,进行到请求方法处理机。在步骤B中,方法处理机从接口处理机接收输入处理机参考、输出处理机名字和方法名字。为流处理选择的方法处理机获得输出处理机参考,或者,如果它不存在,则创建输出处理机。在步骤C中,方法处理机请求方法47并传递输入和输出处理机参考。现在,方法流过输入和输出处理机直到输入数据队列是空的,或输出处理机不再存在。在步骤D中,将最后的方法结果传递到输出处理机。在步骤E中,输出处理机将数据发送到其输出环境,且分子返回来等待输入处理机将更多的数据排队。
对于图6D所示的流块处理,在步骤A中分子等待输入处理机向接口处理机登记,且当实现时,进行到请求方法处理机。在步骤B中,方法处理机从接口处理机接收输入处理机参考、输出处理机名字和方法名字,并获得输出处理机参考或创建输出处理机。在步骤C中,所选择的方法处理机将查询输入处理机,用输入数据请求方法,等待结果,以及将结果传递到输出处理机。如果输入处理机队列不是空的,则方法处理机重复这些步骤直到队列是空的或输出处理机不再存在。在步骤D中,将最后的方法结果传递到输出处理机。在步骤E中,输出处理机将数据发送到其输出环境,且分子返回来等待输出处理机将更多的数据排队。
在逻辑网络的操作中,在一个计算机器上开始的过程可以移动到别处,在网络上的另一个可得的机器上,或在具有可得资源的多个机器上继续操作。对于操作来说只有部分活动的逻辑网络是必要的。
数据同步实例
现在将参考图7描述一个特殊的实例,以便示出如何应用计算机处理和程序设计方法来产生能完成给定处理任务的逻辑网络,例如使来自不同数据源的数据流同步,这些数据流诸如处理多媒体图像中通常使用的。初始文件创建一开(open)分子70,它读取输入配置文件,并创建新分子,资源管理器71和属性用户接口72。资源管理器71查询机器可得的资源并在给定从配置文件确定开分子的标准时确定机器可以处理多少数据源(在该实例中3个)。资源管理器71创建3个数据加载器74a、74b、74c和用户定义的数据加载器74d。
属性用户接口72允许从输入配置文件中的属性选择,以及新属性的创建,和文件类型和文件名字的选择。在用户要求时它创建新定制(custom)数据加载器,以及执行分子73。执行分子73分配文件名字、文件类型和文件属性,并创建新分子,它包括同步分子80。
数据加载器74a、74b、74c将数据定位,如果有足够的存储量则将数据加载入存储器,或如必要则是数据分几部分加载,准备传递数据,以及创建数据用户接口分子75a、75b、75c。这允许用户弥补特定数据流的期限来确定何时每个流应该开始,以便调节特定的数据流来匹配其他流的长度,和确定数据流的持续时间。数据加载器还创建数据流器(streamer)分子76a、76b、76c,它们产生与所提供的参数一致的数据流,并创建新的分子。
用户定义的数据加载器74d创建压缩用户接口77,它允许用户控制数据压缩量,和数据压缩器78,它按照所提供的参考压缩数据。数据压缩器78创建数据用户接口75和数据流器76d。
同步分子80创建同步用户接口79,它启用脉率的调整并提供从流开始过去多少时间的计数。用户可以使用该时间计数来停止、再次开始、或在数据流中向前和向后移动。同步分子80产生同步脉冲、保持可得数据流器的列表来发送脉冲到,根据同步用户接口保存的参数,并创建新分子。
同步分子80还创建层分子81,它将大量的输入数据流组合成大量指定的输出流,并创建包括显示分子82和保存分子83的新分子。显示分子82将数据输出到屏幕上,而保存分子83将数据输出到磁盘、网络、磁带或其它媒介。
现在将描述产生预定结果的部分的相互作用。用户选择用于开分子70的初始文件,它要求创建属性用户接口72。开70请求资源管理器71。如果在机器或网络上已存在使用中的资源管理器,则该资源管理器用来重新分配资源,否则将创建新的资源管理器。资源管理器71计算可以充裕地处理多少数据流,并请求创建数据加载器74,每个数据流一个(该实例中3个)。它通过观看输入文件类型,随后观看该类型文件的一般尺寸,随后观看可得的存储资源来这么做,并由这些参数确定可以进行多少加载器而不损坏存储器。
用户为属性用户接口72中的每个可得的数据加载器74选择一个名字和一个文件类型。如果用户选择了比可得的数据加载器74更多的文件类型,则属性用户接口72从资源管理器71请求另外的数据加载器74。数据加载器的创建是可用户化至这样的程度,即用户可以请求属性用户接口之外的文件类型。在这种情况下,将给出到用户定义的数据加载器74d的名字和路径。这给予系统的适应性来接受没有预定的数据类型。用户还确定被转移到属性用户接口72中执行的属性或参数。
执行73要求创建同步80分子,它要求创建层81分子。层81分子顺次要求创建显示82和保存83分子。同步80保持将被发送同步脉冲的名字的列表,如数据流器中所通知的。
在执行时,将文件名字、类型和属性传递到数据加载器。一旦数据加载器得到文件名字、类型和属性,就将它们实现并将定位数据和开始将数据加载入存储器。如果没有足够的存储器可用,它将部分地加载数据。随后,数据加载器请求创建数据用户接口75和数据流器76。对用文件名字、文件类型和属性实现的每个数据加载器和用户定义的数据加载器进行该过程。
在资源管理器71检测到资源变得稀少的情况中,它将把请求传递给数据加载器来调用数据压缩。随后,数据加载器将请求数据压缩器78进行合适的数据压缩。在一个属性要求压缩数据的情况中,数据加载器将把该数据发送到数据压缩器78。可以访问压缩用户接口77来调整压缩参数。
随后,用户选择数据用户接口75中每个数据流的持续时间和起始点。用户可以补偿或调节特定数据流的时间范围以匹配其它流的长度。在用由数据用户接口75发送的参数实现数据流器76时,它将其参考名字传递给同步80,通知它数据已准备流化。随后,同步80将该参考名字添加到它将脉冲到的名字列表。该列表由此时系统中任何数据流器的参考名字组成。如果在数据流器中没有数据准备流化,则将从同步80列表中除去参考名字。名字列表中的参考数量还被传递到层81的部分。
同步80开始将其脉冲传递到数据流器76,它将数据传递到层81部分。如果层81部分不接受列表上所有的数据流,则它将请求同步80减缓脉冲直到所有数据同时到达层81。层81部分将数据传递到显示82,并请求保持83部分。如果在任何点上用户希望干预数据流来暂停、停止或移回时间计数,则用户可以在同步用户接口79内进行。
在数据同步实例中使用逻辑网络程序设计方法具有几个优点。由于动态配置性能,可以有多个用户同时使用给定机器或网络上的同步系统,且将由资源管理器向每一个分配数据同步资源。这种能力实现了自动加载平衡,这一般采用另外的加载平衡的专用软件应用程序。由于用户可以创建所需的任何用户定义的数据加载器,系统可以适应任何数据格式。系统动态地将数据预格式化和预处理。系统还将确定如果需要在没有用户干预的情况下何时需要压缩。数据压缩器将自动地响应所满足的条件而进行压缩。它还将数据重新格式化成网络文件类型,如数据加载器中所列出的。考虑硬件资源,系统将适应地将各种数据源递送到交互同步的显示器。系统还是分布式的且平台独立。任何一个部分可以驻留在LAN、WAN或因特网网络上的任何机器上。在并行处理环境中,分配在多个CPU上的多个同步逻辑网络可以被协调来将并行数据流递送到共用层。
分子是逻辑网络程序设计方法的基本元素。它承载一般与更大的应用有关的其基本功能,其中更大的应用包括存储管理、调用功能和清除。它的轨迹(footprint)很小,很灵活且可动态地重新配置(自适应的)。其用作本地部分网络以及不同硬件环境上的远程网络的连接器。逻辑网络程序设计样式真正允许具有功能单元之间无缝兼容性的自主处理,而无需集中处理管理或高预知的调度和协调。
产业适应性
使用本发明的计算机处理和程序设计方法,可以通过设计由部分分子构成的逻辑网络来进行复杂的计算和数据处理任务,它利用任何类型和任何网络上的任何位置的任何可得的计算源。因此,它理想地适合于在分布计算和并行处理环境中进行处理任务。可以用分子设计逻辑网络,所述分子和任何类型的传统系统、以不同语言编程的应用程序和以任何格式存储的任何类型的数据,因此能够启用数据集成任务的更加有效的程序设计,以及整个新型数据集成系统的创建。
通过使其部分适合于产业特殊接口和功能性,就可以将逻辑网络程序设计方法应用到任何领域。例如,它可以应用于数据集成、建模、模拟、数据显像、动画、翻译和模块化产品应用中。对于当前基于因特网的应用,它可以适合于当前市场的简单需要,其中集合了这些考虑:基于服务器的计算模型;固有可量测性;基于JAVATM的核心功能和扩展;用于传递的网络浏览器技术;管理兆兆位数据集的能力;具有集成功能的普遍存在的数据库模型;客户化的内置功能;分布式终端用户感觉和设计前提;模块化序列数据流;和分阶段的执行方法。
逻辑网络程序设计方法特别适于数据显像应用,诸如数据中心和系统监控,视觉共同指挥(visual corporate helm),决策支持系统,复杂关系的显示和科学建模显像。逻辑网络软件可以用作具有并行、分散、同步和跟踪面向对象的序列的非线性现场座标图。当结合视觉接口时,逻辑网络的模块化方法的优点是特别明显的。分子是单个方法,从而方法命名它们。由于方法的连接或联编对于分子是固有的,所以通过面向人的功能名字或视觉提示可以快速地组合逻辑网络,而不用考虑内部操作。在任何故障点简单地运行逻辑网络将调用自诊断。最优支持环境中被可视地监控,该程序设计方法将把“编程”计算机的能力扩展到计算机识字外行。合适的分析将把复杂数据处理任务的程序设计简化到通过识别所需的部件和将片段钩在一起装配管道并装置的水平。
可以理解,在给出以上的本发明原理的描述时,可以设计许多修改和变化。这种修改和变化旨在被认为是在本发明的精神和范围之内,如所附权利要求书所定义的。
                             附录I
objectMolecule(String moleculeCallerName,String moleculeCalledName)
{
       /*Contributes to methods,methodTriggers,communication*/
       objectNames[]                            =Object names(session/client names)
       objectContexts[]                         =Equivalent to package(molecule is componate to
                                                a function
                                                collection of molecule,and is of relative Context)
       /*Socketing/Sessioning*/
       objectContextKey{}                       =controls scope of access to event,field,and method
                                                groups,names,locations,version labeling,establish
                                                status,
       {
             eventNeighbors{}                   =List of comsuming molecules(pass
                                                Events/Data)
             eventNeighborsConsumeRoute{}                =List of which Local/Remote date sets the neighbor
                                                molecules can consume(Routing);
             eventNeighborsProduceRoute{}       =List of where then consuming routing produces the
                                                date sets local to the neighbor molecule;
             /*The objectMolecule.Deamon.thread should maintain a record of molecule channel
             IO*/
             fieldChannel{}                     =Table of which channels are active
             fieldChannelExposed{}              =Table defining channels inter/external exposablity
             fieldLocalStatic{}                 =Table of static local memory routing
             fieldLocalStaticExposed{}          =Table of defining static local memory routing
                                                exposability
             fieldLocalDynamic{}                =Table of dynamic local channel routing
             fieldLocalDynamicExposed{}         =Table of defining local channel exposability
       }
       /*locairemoteSwitcher()*/
       objectMethodAccessLabeling[]             =Determines Local or Remote access for methods
       objectMethod[]                           =Methods callable name(local to Java or via API)
       objectMethodMoleculeData{}               =Data from File.moleculeName that forfills
                                                Consuming/Producing Routing.
    /*methodTrigger() data,Local/Remote flags*/
    objectWait[]
                                            =methodTrigger() lifespan,or lifespan dependancy
    objectMethodConsumingRouting[]
                                            =Which Channel/Local data have methodTrigger()
                                            block on
    objectMethodConsumingFofillment[]
                                            =Where a methodTrigger() can look for data local
                                            and or remote and if it can switch between the two
                                            and if so who takes priority.
    objectMethodProducingRouting[]          =Which Channel/Loeal space data is delivered to.
    a methodTrigger().thread is started for each objectMethod[]element.All interfacable
    molecule should have enough data to create a methodTrigger for objectDisplay().
    fieldChannel.LocalStatic.LocalDynamic{}.a localRemoteSwitcher().thread is started
    as a child to methodTrigger().thread as approriate,which is governed by
    objectMethodAccessLabeling[],objectMethodConsumingFofillment[]
}
objectDisplay()
{
        struct objectDisplayEnvi{
                 displayEnviroment[]    =Reference to current interface environment,track
grounding,Screen tracking system
                 displayState{}     =Switch modes Accept Events,Accept Args,Accept Pointer,..etc
                                        Criteria relevant object/Superscope/subscope
                 displayAlphas[]        =zBuffersLayer’s relative alpha(range 0.0-1.0)array allows
single object to multiple Depths
                                          or volume Depth assignment
                  displayZDepths[]      =zBufferLayer assignment,array allows single object to
multiple Depths
                                         or volume Depth assignment.
                  displayZElements[]  =micro layering for a given zBufferLayer
                  displayComposites[] =Object accumulation(add,subtract,dif,..)
                  displayLocations[]    =Global location when parent,relative location when child
                  regPeriod[]      =Array to(x,y image)or(x,y,z volume)
                  regDisplay{}        =Display scale as opposed to preObjectArray x,y,and/or z
dimensions and registration
                 Array[]            =array from an ObjectDisplayEngine()
                 EventArray[]            =array from an EventDisplayEngine()
                 RegArray[]           =array from an RegistrationDisplayEngine()
       }
}
objectEnviroment()
{
    Establish broadcasting pointer information channels and display through put channels.
}
------Core Array Process Methods------
Type:Data/String
MultiArray  =array with N dimensions
SinglArray  =arrayX1,arrayX2,..,arrayXN
MixedArray  =arrayX1,arrayX2,array with 1-N dimensions,..,arrayXN
Algorithm:(API call,Java Class/Method Call)
        Encode:
                 -consumer(type,MixedArray,format)produce(file)
                 *raw to format(simple to many)
                 *Multipl SinglArrays          to aif,wav,txt
                 *Multipl SinglArrays,or MixedArray to rgb,tif,jpg
        Decode:
                 -consumer(file)produce(type,MixedArray)
                 *format to raw(many to simple)
                 *aif,wav,txt to Multipl SinglArrays
                 *rgb,tif,jpg to Multipl SinglArrays,or MixedArray
        Cmd Line:
                 -pass(String cmd,String argv[])return(pid,status)
        Splitter:
                 -consume(type,MixedArray[N],how)produce(type,MixedArray)
        Mixer:
                 -consume(type,MixedArray[N],how)produce(type,MixedArray)
        Stream:
                 -consume(type,SinglArray,how,rate)produce(channel VARstream)
        PacketStream:
                 -consume(type,MixedArray,how,rate)produce(channel VAR[]stream)
        Packet:
                 -consume(channel VARstream,how)produce(type,SinglArray)
        MultiPacket:
                 -consume(channel VAR[]stream,how)produce(type,MultiArray)
        Formula w/Logic controlling output:
                 -consume(Elm&MixedArray,Sting equation)produce(Elm&MixedArray);
                 *Composite Over,under,multiple,add,differance
        Range:
                 -consume(type,MixedArray[N])produce(type,min[X1->N],max[X1->N],avg[X1->N])
        Sort:
                 -consume(type,SinglArray,key)produce(type,SinglArray)
    Element:
            -consume(type,MixedArray[N],index[])produce(type,MixedArray)
    Crop:
            -consumg(type,MixedArray[N],indexStart[X1->N],indexEnd[X1->N])
            produce(type,arrayX1->N)
    Scale:
            -consume(type,MixedArray[N],type,Factor) produce(type,MixedArray[N])
    Sample:
            -consume(type,MixedArray,step)produce(type,MixedArray)
    Flip:
            -consume(type,SinglArray,xdirection,ydiretion)produce(type,SinglArray)
    Filter:
            -consume(type,SinglArray,)produce(type,SinglArray)
    Rotate:
            -consume(type,SinglArray,angle,direction)produce(type,SinglArray)
    Interpolate:
            -consume(type,MixedArray[N],interp_type)produce(type,MixedArray[N])
Tasks:
Data manipulation Process sequencing tool

Claims (20)

1.一种计算机处理方法,其特征在于,包括以下步骤:
创建多个分别由软件微组分配置的软件实体,所述软件实体也被称为分子(10),所述软件微组分包括信号处理机(40)、至少一个输入处理机(42)、至少一个输出处理机(48)、接口处理机(44)和用于相关的方法的至少一个方法处理机(46),所述输入处理机、输出处理机和所述信号处理机用于将通信信号发送到另一分子或各分子之外的逻辑网络或从其接收通信信号并用于连接到其它微组分,所述至少一个输入处理机用于将输入数据排队,所述接口处理机用于确定何时满足由所述输入处理机接收所需的输入数据的预定输入条件,并随后调用所述方法处理机,所述方法处理机用于调用所述相关的方法来处理所述输入数据,而所述至少一个输出处理机用于将通过所述方法处理输入数据的结果输出;
将所创建的分子存储于库中以便在其后的运行时间中使用;
在给定的计算资源上部署包括多个分子的逻辑网络,所述多个分子被选择来通过调用从库中检索到并在给定的计算资源上执行的第一分子执行给定的处理任务;以及
通过所述第一分子的所述信号处理机发送通信信号来调用其他分子,所述第一分子调用一个或多个其他分子来“连动地”逐步地扩展所述逻辑网络。
2.如权利要求1所述的计算机处理方法,其特征在于,所述创建步骤包括创建多个逻辑网络,其各自使其软件实体的网络被配置成自主地使用计算资源进行数据处理任务,而所述部署步骤包括分别用多个计算资源中的一个部署多个逻辑网络。
3,如权利要求2所述的计算机处理方法,其特征在于,在分布式计算环境中的网络上分配所述多个计算资源。
4.如权利要求2所述的计算机处理方法,其特征在于,所述多个计算资源包括在并行处理环境中并行的一组中央处理单元。
5.如权利要求2所述的计算机处理方法,其特征在于,所述至少一个逻辑网络包括多个分子,且所述逻辑网络作为初始化文件存在,用于产生分子的初始主机,它在增量处理步骤的连续层中调用和产生其他分子。
6.如权利要求1所述的计算机处理方法,其特征在于,所述创建步骤包括创建具有处理机功能的分子,用于在增量处理步骤的连续层中创建下一个分子。
7.如权利要求1所述的计算机处理方法,其特征在于,所述创建步骤包括创建具有内置处理机功能的分子,用于当分子即将终止时进行其功能的清理。
8.如权利要求1所述的计算机处理方法,其特征在于,所述创建步骤包括创建具有处理机类型的分子,用于记录有关其微组分处理机的状态的信息并通过所述信号处理机将这种状态信息发送到外部。
9.如权利要求1所述的计算机处理方法,其特征在于,当存在着执行处理任务的分子时,所述信号处理机可以接收用于动态地重新配置分子的微组分处理机的信号并且具有用于该目的的处理机类型。
10.如权利要求1所述的计算机处理方法,其特征在于,所述接口处理机包括处理机类型,用于向分子提供自主等待、观看和进行所述相关的方法的特性以通过等待到所述输入处理机指示在调用用于相关的方法的所述方法处理机之前出现预定的输入条件来处理输入数据。
11.如权利要求1所述的计算机处理方法,其特征在于,所述接口处理机包括多个处理机类型,用于确定何时满足出现各自所需要的数据的各预定输入条件并用于分别调用多个方法处理机和相关的方法中的每一个。
12.如权利要求1所述的计算机处理方法,其特征在于,所述输入处理机选自分别对应于多个不同数据源类型的多个输入处理机类型中的一个。
13.一种分布式计算方法,其特征在于,包括以下步骤:
创建多个软件实体,所述软件实体也被称为分子(10),用用于发送通信信号到另一个分子或各分子之外的逻辑网络和从其接收通信信号的软件微组分配置每个软件实体,每个分子的所述微组分彼此连接以便在给定的计算环境中处理输入数据,在所述计算环境中所述分子被部署并提供处理输入数据的结果输出;
将多个分子各自部署于多个计算环境的每一个上;以及
将部署于其各自的计算环境中的每个分子初始化以便初始化增量处理步骤的连续层中数据处理功能的分子的“逻辑网络”,其中第一分子调用一个或多个其它分子来“连动地”增量扩展所述逻辑网络。
14.如权利要求13所述的分布式计算方法,其特征在于,每个计算环境中的每个逻辑网络在其各自的计算环境中自主地执行其数据处理功能,并返回一希望从该计算环境中获得的输出。
15.如权利要求14所述的分布式计算方法,其特征在于,每个逻辑网络将用于其各自计算环境的输出返回到一外部监控实体,且所述外部监控实体组合来自另外的计算环境的输出以获得分布计算的组合输出。
16.如权利要求15所述的分布式计算方法,其特征在于,所述计算环境是分布于网络上的多个计算站点,而逻辑网络通过在网络上发送信号来返回它们的输出。
17.如权利要求15所述的分布式计算方法,其特征在于,所述计算环境是并行处理环境中并行操作的一组中央处理单元中的多个计算资源。
18.一种网络计算方法,其特征在于,包括以下步骤:
创建多个软件实体,所述软件实体也被称为分子(10),用用于发送通信信号到另一个分子或各分子之外的逻辑网络和从其接收通信信号的软件微组分配置所述每个软件实体,每个分子的所述微组分彼此连接以便在给定的计算环境中处理输入数据,在所述计算环境中所述分子被部署并提供处理输入数据的结果输出;
将所述多个分子各自部署于多个计算环境的每一个上,其中所述多个计算环境是分布在网络上的计算站点;
将部署于其各自计算环境中的每个分子初始化以便初始化增量处理步骤的连续层中数据处理功能的分子的“逻辑网络”,其中第一分子调用一个或多个其它分子来“连动地”增量扩展所述逻辑网络;以及
使每个网络计算站点处的每个逻辑网络在其各自的计算环境中自主进行其数据处理功能,并返回一希望从该网络计算站点获得的输出。
19.如权利要求18所述的网络计算方法,其特征在于,每个逻辑网络将用于其各自网络计算站点的输出返回到一网络监控实体,且所述网络监控实体组合来自网络计算站点的输出以便获得用于网络的组合输出。
20.如权利要求19所述的网络计算方法,其特征在于,网络是网络的网络,即因特网,且逻辑网络被部署在因特网上的网站处以便自主地计算来自网站的数据并将它们的输出返回到网络监控实体。
CNB018235034A 1998-09-18 2001-07-23 计算机处理方法、分布式计算方法和网络计算方法 Expired - Fee Related CN1280716C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/157,212 US6282697B1 (en) 1998-09-18 1998-09-18 Computer processing and programming method using autonomous data handlers
PCT/US2001/041389 WO2003010659A1 (en) 1998-09-18 2001-07-23 Computer processing and programming method using autonomous data handlers

Publications (2)

Publication Number Publication Date
CN1537271A CN1537271A (zh) 2004-10-13
CN1280716C true CN1280716C (zh) 2006-10-18

Family

ID=26680592

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018235034A Expired - Fee Related CN1280716C (zh) 1998-09-18 2001-07-23 计算机处理方法、分布式计算方法和网络计算方法

Country Status (5)

Country Link
US (1) US6282697B1 (zh)
EP (1) EP1410180A4 (zh)
JP (1) JP4038564B2 (zh)
CN (1) CN1280716C (zh)
WO (1) WO2003010659A1 (zh)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7061486B2 (en) 1999-09-24 2006-06-13 Sun Microsystems, Inc. Using messaging to manage scene-based rendering
US7170511B2 (en) 1999-09-24 2007-01-30 Sun Microsystems, Inc. Creating a parallel structure for scene-based rendering
US6765571B2 (en) 1999-09-24 2004-07-20 Sun Microsystems, Inc. Using a master controller to manage threads and resources for scene-based rendering
US6734852B2 (en) 1999-09-24 2004-05-11 Sun Microsystems, Inc. Using rendering molecules to manage scene-based rendering
US7958491B1 (en) * 1999-11-26 2011-06-07 Micron Technology, Inc. Command line output redirection
US20020016835A1 (en) * 2000-05-25 2002-02-07 Gary Gamerman System and method for cascaded distribution of processing
US7343594B1 (en) * 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
US6826550B2 (en) * 2000-12-15 2004-11-30 International Business Machines Corporation Method, system, and program for converting application program code to executable code using neural networks based on characteristics of the inputs
US20020198970A1 (en) * 2001-04-27 2002-12-26 Shunji Kuwa Programmable controller system
US7117500B2 (en) * 2001-12-20 2006-10-03 Cadence Design Systems, Inc. Mechanism for managing execution of interdependent aggregated processes
US7159217B2 (en) * 2001-12-20 2007-01-02 Cadence Design Systems, Inc. Mechanism for managing parallel execution of processes in a distributed computing environment
US7299466B2 (en) * 2001-12-20 2007-11-20 Cadence Design Systems, Inc. Mechanism for managing execution environments for aggregated processes
US7379959B2 (en) 2002-09-07 2008-05-27 Appistry, Inc. Processing information using a hive of computing engines including request handlers and process handlers
US20040138970A1 (en) * 2002-12-02 2004-07-15 Renjith Ramachandran Scripting designer for a billing mediation system
US7472184B2 (en) * 2003-09-19 2008-12-30 International Business Machines Corporation Framework for restricting resources consumed by ghost agents
US7493386B2 (en) * 2003-09-19 2009-02-17 International Business Machines Corporation Testing applications within a grid environment using ghost agents
US7516443B2 (en) * 2003-09-19 2009-04-07 International Business Machines Corporation Performing tests with ghost agents
US7493387B2 (en) * 2003-09-19 2009-02-17 International Business Machines Corporation Validating software in a grid environment using ghost agents
US7689579B2 (en) * 2003-12-03 2010-03-30 Siemens Aktiengesellschaft Tag modeling within a decision, support, and reporting environment
US7404189B2 (en) * 2003-12-30 2008-07-22 International Business Machines Corporation Scheduler supporting web service invocation
JP2006031358A (ja) * 2004-07-15 2006-02-02 Ziosoft Inc ボリュームレンダリング等の画像処理システム
US8700671B2 (en) * 2004-08-18 2014-04-15 Siemens Aktiengesellschaft System and methods for dynamic generation of point / tag configurations
US7823169B1 (en) 2004-10-28 2010-10-26 Wheeler Thomas T Performing operations by a first functionality within a second functionality in a same or in a different programming language
US8266631B1 (en) 2004-10-28 2012-09-11 Curen Software Enterprises, L.L.C. Calling a second functionality by a first functionality
US7774789B1 (en) 2004-10-28 2010-08-10 Wheeler Thomas T Creating a proxy object and providing information related to a proxy object
US8250131B1 (en) 2004-12-08 2012-08-21 Cadence Design Systems, Inc. Method and apparatus for managing a distributed computing environment
US8442938B2 (en) * 2005-01-14 2013-05-14 Siemens Aktiengesellschaft Child data structure update in data management system
US7861212B1 (en) 2005-03-22 2010-12-28 Dubagunta Saikumar V System, method, and computer readable medium for integrating an original application with a remote application
US7797688B1 (en) 2005-03-22 2010-09-14 Dubagunta Saikumar V Integrating applications in multiple languages
US8578349B1 (en) 2005-03-23 2013-11-05 Curen Software Enterprises, L.L.C. System, method, and computer readable medium for integrating an original language application with a target language application
US20070033247A1 (en) * 2005-08-02 2007-02-08 The Mathworks, Inc. Methods and system for distributing data to technical computing workers
CN100422935C (zh) * 2005-11-08 2008-10-01 河南科技大学 一种基于网络的虚拟多处理器系统及处理方法
US7810140B1 (en) 2006-05-23 2010-10-05 Lipari Paul A System, method, and computer readable medium for processing a message in a transport
US7844759B1 (en) 2006-07-28 2010-11-30 Cowin Gregory L System, method, and computer readable medium for processing a message queue
CN101146116B (zh) * 2006-09-11 2010-11-10 河南科技大学 一种基于网络的cad图形处理系统
US8200603B1 (en) 2006-12-22 2012-06-12 Curen Software Enterprises, L.L.C. Construction of an agent that utilizes as-needed canonical rules
US7702602B1 (en) 2006-12-22 2010-04-20 Hauser Robert R Moving and agent with a canonical rule from one device to a second device
US7660780B1 (en) 2006-12-22 2010-02-09 Patoskie John P Moving an agent from a first execution environment to a second execution environment
US7702603B1 (en) 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes a compiled set of canonical rules
US7860517B1 (en) 2006-12-22 2010-12-28 Patoskie John P Mobile device tracking using mobile agent location breadcrumbs
US9311141B2 (en) 2006-12-22 2016-04-12 Callahan Cellular L.L.C. Survival rule usage by software agents
US8423496B1 (en) 2006-12-22 2013-04-16 Curen Software Enterprises, L.L.C. Dynamic determination of needed agent rules
US7698243B1 (en) 2006-12-22 2010-04-13 Hauser Robert R Constructing an agent in a first execution environment using canonical rules
US7949626B1 (en) 2006-12-22 2011-05-24 Curen Software Enterprises, L.L.C. Movement of an agent that utilizes a compiled set of canonical rules
US7664721B1 (en) 2006-12-22 2010-02-16 Hauser Robert R Moving an agent from a first execution environment to a second execution environment using supplied and resident rules
US7702604B1 (en) 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes supplied rules and rules resident in an execution environment
US7660777B1 (en) 2006-12-22 2010-02-09 Hauser Robert R Using data narrowing rule for data packaging requirement of an agent
US8132179B1 (en) 2006-12-22 2012-03-06 Curen Software Enterprises, L.L.C. Web service interface for mobile agents
US7970724B1 (en) 2006-12-22 2011-06-28 Curen Software Enterprises, L.L.C. Execution of a canonical rules based agent
US8260783B2 (en) * 2007-02-27 2012-09-04 Siemens Aktiengesellschaft Storage of multiple, related time-series data streams
US8499284B2 (en) * 2008-09-11 2013-07-30 Microsoft Corporation Visualizing relationships among components using grouping information
JP5176833B2 (ja) * 2008-09-29 2013-04-03 株式会社日立プラントテクノロジー 汚泥からの油分離方法
US8196047B2 (en) * 2009-01-20 2012-06-05 Microsoft Corporation Flexible visualization for services
WO2011028636A2 (en) * 2009-09-01 2011-03-10 Seaseer Research And Development Llc Systems and methods for visual messaging
US20110060895A1 (en) * 2009-09-09 2011-03-10 Neal Solomon System and methods for generating and organizing modular program code components
GB2482681B (en) * 2010-08-09 2013-01-09 Quadrant Systems Ltd A configurable bridge circuit for integrating a new subsystem with an existing computing environment
US9098106B2 (en) 2012-08-10 2015-08-04 Comsol Ab Systems and methods for creating application interfaces for forming and solving problems in a modeling system
KR101506629B1 (ko) 2012-11-07 2015-03-30 대우조선해양 주식회사 선박 건조 공정의 생산을 위한 협업 시스템의 대용량 데이터 처리 시스템의 성능 향상 방법
CN104919459B (zh) * 2012-12-20 2018-02-06 科姆索公司 创建用于多物理场建模的可重复使用的几何序列的系统及方法
US10650177B2 (en) 2012-12-20 2020-05-12 Comsol Ab System and method for creating application interfaces for multiphysics modeling
CN103942235B (zh) * 2013-05-15 2017-11-03 张一凡 针对大规模数据集交叉比较的分布式计算系统和方法
KR102365113B1 (ko) * 2015-05-27 2022-02-18 삼성전자주식회사 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템
US10802853B2 (en) 2016-10-14 2020-10-13 Seagate Technology Llc Active drive
US10409638B2 (en) 2017-04-10 2019-09-10 Bank Of America Corporation Digital processing system for event and/or time based triggering management, and control of tasks
CN110109748B (zh) * 2019-05-21 2020-03-17 星环信息科技(上海)有限公司 一种混合语言任务执行方法、装置及集群
CN113112028B (zh) * 2021-04-06 2022-07-01 西华大学 一种基于标签设计的机器学习时间同步方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701439A (en) * 1992-03-30 1997-12-23 Boeing North American, Inc. Combined discrete-event and continuous model simulation and analysis tool
US5421013A (en) * 1993-07-08 1995-05-30 Park City Group, Inc. Agent-based multithreading application programming interface
US5768505A (en) * 1995-12-19 1998-06-16 International Business Machines Corporation Object oriented mail server framework mechanism
US5937189A (en) * 1996-11-12 1999-08-10 International Business Machines Corporation Object oriented framework mechanism for determining configuration relations
US6038593A (en) * 1996-12-30 2000-03-14 Intel Corporation Remote application control for low bandwidth application sharing
US5893106A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Object oriented server process framework with interdependent-object creation
US6067545A (en) * 1997-08-01 2000-05-23 Hewlett-Packard Company Resource rebalancing in networked computer systems
GB2332288A (en) * 1997-12-10 1999-06-16 Northern Telecom Ltd agent enabling technology

Also Published As

Publication number Publication date
EP1410180A4 (en) 2007-09-05
JP2004537122A (ja) 2004-12-09
WO2003010659A1 (en) 2003-02-06
JP4038564B2 (ja) 2008-01-30
US6282697B1 (en) 2001-08-28
CN1537271A (zh) 2004-10-13
EP1410180A1 (en) 2004-04-21

Similar Documents

Publication Publication Date Title
CN1280716C (zh) 计算机处理方法、分布式计算方法和网络计算方法
CN1179319C (zh) 图像显示系统
CN1264336C (zh) 图像处理设备和图像处理方法
CN1043176C (zh) 一种电信交换系统
CN1130656C (zh) 对一个存储文件的若干文件拷贝进行协调的方法
CN1114859C (zh) 数据共享方法和计算机体系结构
CN1122229C (zh) 包含消息传送核心的分布式处理系统
CN1198220C (zh) 用于在单聚集过程中载入多数据集市的方法
CN1143208C (zh) 用于消息转换的装置和方法
CN1429362A (zh) 通信服务供应方法和设备以及用于开发供应模块的对象编程语言
CN101052948A (zh) 对象过程图应用程序开发系统
CN1208482A (zh) 分布式处理
CN1711522A (zh) 图形用户接口建模系统
CN1679018A (zh) 多平台优化模式
CN1097798C (zh) 资源分配的方法和系统
CN1661554A (zh) 用于构建无线应用程序的系统和方法
CN1174319C (zh) 数据结构管理装置、数据结构管理系统和方法
CN1211364A (zh) 一种管理互配单元及生产该单元的方法
CN1959642A (zh) 信息处理方法、信息处理设备和信息处理系统
CN1229728C (zh) 具有会话管理和分布式管理功能以及相应的操作管理机制的web应用系统
US20040205455A1 (en) System and method for managing workflow using a plurality of scripts
CN1097929C (zh) 多媒体网络系统和其通讯方法
CN1173933A (zh) 建立通信网络数据库的一种方法和设备
CN1820514A (zh) 管理电信网络的系统体系结构、方法和计算机程序产品
CN1256671C (zh) 管理资源争用的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SILS RESEARCH DEVELOPMENT CO., LTD.

Free format text: FORMER OWNER: INVERSI FABIRS

Effective date: 20091106

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20091106

Address after: Hawaii USA

Patentee after: Hisle research and Development Company Limited

Address before: Hawaii USA

Co-patentee before: J. Park

Patentee before: Velsi Fabers

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20061018

Termination date: 20160723