CN100557569C - 远程通信系统、编译控制程序的设备和代码产生方法和装置 - Google Patents

远程通信系统、编译控制程序的设备和代码产生方法和装置 Download PDF

Info

Publication number
CN100557569C
CN100557569C CNB2007101698631A CN200710169863A CN100557569C CN 100557569 C CN100557569 C CN 100557569C CN B2007101698631 A CNB2007101698631 A CN B2007101698631A CN 200710169863 A CN200710169863 A CN 200710169863A CN 100557569 C CN100557569 C CN 100557569C
Authority
CN
China
Prior art keywords
source program
compiler
code
statement
storer
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
CNB2007101698631A
Other languages
English (en)
Other versions
CN101154165A (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.)
British Telecommunications PLC
Original Assignee
British Telecommunications PLC
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 British Telecommunications PLC filed Critical British Telecommunications PLC
Publication of CN101154165A publication Critical patent/CN101154165A/zh
Application granted granted Critical
Publication of CN100557569C publication Critical patent/CN100557569C/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis

Abstract

一种远程通信系统,包括分布式控制系统,该分布式控制系统包括多个互连的计算机和用于编译计算机控制程序的编译设备,该编译设备包括:系统数据存储器,用于存储系统数据;预编译器;编译器;源代码存储器,用于存储源程序;以及可执行代码存储器,用于存储由该编译器产生的可执行代码;该预编译器可操作用以对在该源代码存储器中存储的初始源程序中的注释进行检查,该编译器在该预编译器的操作之后可操作用以响应在该源代码存储器中当前存储的该源程序中的可执行语句,产生可执行代码以及将这样产生的可执行代码存储在该可执行代码存储器中。

Description

远程通信系统、编译控制程序的设备和代码产生方法和装置
本申请是申请号为97191730.2、申请日为1997年1月7日/发明名称为“分布式处理”的中国专利申请的分案申请。
技术领域
本发明涉及分布式处理,特别是但不仅仅是涉及用于远程通信网络控制的分布式处理。更具体地,本发明涉及在分布式处理器上实现的控制系统的开发与升级,其最好(但不是必要的)面向对象方式的过程。
背景技术
远程通信网络日益需要支持高带宽、低延迟信息流。所需带宽迅速从Kbit/秒增至Mbit/秒,对某些应用来说甚至需要Gbit/秒(具体例如:点播视频、动态共享仿真和分布式计算)。
为提供“智能网络”功能,如呼叫重定向到特定号码,计算机程序要运行在与交换中心连接的很多(例如至多100台)主计算机上。为特定用户提供服务的路径(例如某个客户的呼叫被寻路由的号码)依赖于存储于与用户有关的主计算机中的数据。这样在几十到几百台主计算机中就有数百万的用户记录。
在″Twenty-twenty vision-software architectures for intelligence in the21st century”,P.A.Martin,BT Technology Journal,Vol 13 No.2,April 1995中,本发明者已经提出了用面向对象技术来实现需要的分布式处理。面向对象技术的描述可在BT Technology Journal,Vol 11,No.3,July,1993,“Object oriented technology”中找到,它由E.L.Cusack和E.S.Cordingley编写。尽管这个术语未总被准确使用,在此面向对象的计算指的是这样的计算技术,在其中数据被以“封装”的形式存储,在该形式中,数据不能被呼叫程序或例程直接访问,仅能被一个相关的程序访问,该程序能读、写和编辑该数据。  数据的记录和其相关程序被称为一个“对象”。来自于和发送到一个对象的通信主要由“消息传递”来实现,即对这个对象的呼叫传递数据值并激活包含在此对象当中的某个程序的操作,然后返回数据值。
对于希望利用面向对象方法的各种编程者来说很多语言都可以使用,目前最常用的是C++。
分布式处理在几个方面上与单处理器操作不同。首先,根据其它程序或数据与调用程序是位于同一台主计算机上还是位于不同的主计算机上,可能需要不同的访问技术。程序或数据的位置也将影响其从其他程序到达的速度。同时,一台或多台主计算机可能失效,而此时其他计算机还在运行中。
分布式计算通常以“客户-服务器”的方式执行,其中某台计算机上“客户”程序请求位于另一台计算机上的“服务器”程序,此后服务器程序执行此功能或将客户程序请求的数据返回。
面向对象技术尚未广泛应用到分布式处理中。这方面最新现状的概要情况在“Object oriented programming systems”Blair G.,Pitman Publishing,London,1991(ISBN 0-273-03132-5)尤其是从223-243页的第9章中和“Distributed systems and objects”,David Hutchison and Jonathan Walpole中也可找到。先前的努力主要是为一种已存在的计算机语言添加新的语法,或生成一种新的计算机语言将常规的面向对象的程序设计扩展以处理分布式处理。
发明内容
在第一方面,本发明提供一种远程通信系统,包括一个分布式控制系统,该分布式控制系统包括多个互连的计算机和用于编译计算机控制程序的编译设备,该编译设备包括:系统数据存储器,用于存储系统数据;预编译器;编译器;源代码存储器,用于存储源程序;以及可执行代码存储器,用于存储由该编译器产生的可执行代码;
该预编译器可操作用以对在该源代码存储器中存储的初始源程序中的注释进行检查,以找到一个或多个所要求的系统操作的具体规范,以及对于这样找到的具体规范或每一个具体规范,访问该系统数据存储器中当前存储的相应的系统数据,评估所要求的系统操作能否被初始源程序满足,且在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过在其中合并所述附加源程序语句和编译器指令来修改该源程序,以及该编译器在该预编译器的操作之后可操作用以响应在该源代码存储器中当前存储的该源程序中的可执行语句,产生可执行代码以及将这样产生的可执行代码存储在该可执行代码存储器中。
方便起见,本发明的第一方面的编译器包含一个预编译器及一个常规编译器,但认为本发明的这个功能可被直接合并到一个重新书写的编译器中。
这样,根据本发明的这个第一方面,在被本发明的此第一方面的编译器编译并在多处理器系统上运行之前,源代码可以被程序员利用常规的编译器进行编译和测试以便在单处理器上执行,多处理器环境专用的语句被单机编译器忽略。这使得程序员在无需进行实时测试的情况下可以确认程序的基本操作。
第二方面,本发明提供了一种用于编译分布式控制系统的程序的设备,该设备包括:系统数据存储器,用于存储系统数据;预编译器;编译器;源代码存储器,用于存储源程序;以及可执行代码存储器,用于存储由该编译器产生的可执行代码;
该预编译器可操作用以对在该源代码存储器中存储的初始源程序中的注释进行检查,以找到一个或多个所要求的系统操作的具体规范,以及对于这样找到的具体规范或每一个具体规范,访问该系统数据存储器中当前存储的相应的系统数据,评估所要求的系统操作能否被初始源程序满足,且在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过在其中合并所述附加源程序语句和编译器指令来修改该源程序,和该编译器在该预编译器的操作之后可操作用以响应在该源代码存储器中当前存储的该源程序中的可执行语句,产生可执行代码以及将这样产生的可执行代码存储在该可执行代码存储器中。
第三方面,本发明提供一种用于产生在分布式计算系统上执行的代码的方法,该方法包括:
产生初始源代码程序,它包括定义上述代码结构的可执行语句,和包含所需系统操作的具体规范的注释;
访问来自于该分布式计算系统存储器的适当的系统操作参数,该存储器包含有当前系统操作参数;
评估所需的系统操作是否能被该初始源程序满足;
在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序;和
响应该初始源程序中的可执行语句,或在上述得到负面评估结果时对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码。
第四方面,本发明提供一种用于产生在分布式计算系统上执行的代码的方法,该方法包括:
检查初始源程序中的注释,该初始源程序包括定义上述代码结构的可执行语句和包含所需系统操作的具体规范的注释,以便找到所述具体规范;
对于这样找到的每一个具体规范,访问来自于该分布式计算系统的存储器的相应的系统数据;
基于该具体规范和该相应的系统数据,评估所需的系统操作是否能被该初始源程序满足;
在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序;和
响应该初始源程序中的可执行语句,或在上述得到负面评估结果时,对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码。
第五方面,本发明提供一种用于产生在分布式计算系统上执行的代码的产品,包括:
产生初始源代码程序的装置,该初始源代码程序包括定义上述代码结构的可执行语句,和包含所需系统操作的具体规范的注释;
访问来自于该分布式计算系统存储器的适当的系统操作参数的装置,该存储器包含有当前系统操作参数;
评估所需的系统操作是否能被该初始源程序满足的装置;
在得到负面评估结果时、产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序的装置;和
响应该初始源程序中的可执行语句,或在上述得到负面评估结果时,对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码的装置。
第六方面,本发明提供一种用于产生在分布式计算系统上执行的代码的产品,包括:
检查包括定义上述代码结构的可执行语句和包含所需系统操作的具体规范的注释的初始源程序中的注释,以便找到所述具体规范的装置;
对于这样找到的每一个具体规范,访问来自于该分布式计算系统的存储器的相应的系统数据的装置;
基于该具体规范和该相应的系统数据,评估所需的系统操作是否能被该初始源程序满足的装置;
在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序的装置;和
响应该初始源程序中的可执行语句,或在上述得到负面评估结果时,对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码的装置。
其他方面和本发明的实施例在以后被描述和声明。
参考附图,本发明的实施例仅通过示例的方式来描述。
附图说明
图1是描述实施本发明的远程通信系统各元素的框图;
图2是描述图1系统中另外实施例的框图;
图3是描述组成图1和图2系统的一部分的主计算机的各元素的框图;
图4是描述组成图1和图2系统的一部分的编译器装置的各元素的框图;
图5是描述图4的编译装置操作的流程图;
图6是图5执行的各个处理阶段的示意图;
图7a是描述图1中智能域部分所有的数据结构图;
图7b是描述图1中传输域部分所有的数据结构图;
图8描述了图7a中一个组成成分的存储器中的数据结构;
图9描述了适合于图4中的编译装置的源代码;
图10是描述组成图10到14的预编译过程的一部分的流程图;
图11是该过程的其他部分;
图12是该过程的其他部分;
图13是该过程的其他部分;
图14是该过程的其他部分。
具体实施方式
参考图1,根据本发明组建的远程通信系统包括多个由通信频道4(如:微波连接、光缆、同轴电缆或基于上述任何介质之上实现的虚电路)互连的交换中心或交换机2a、2b,它们构成了传输域6。连接到传输域6的智能域8包括多台主计算机10a、10b,它们通过信号链路12a、12b以及互连主计算机10a、10b的12c与交换中心2a、2b进行信号通信。例如,二者可以通过协议如信号系统7(SS7)被互连。
最终用户的终端装置或设备如电话14a、14b和宽带通信设备如视频播放机16联合组成了最终用户域18,它通过局域环连接20a、20b、20c(例如光纤、蜂窝式无线电或双绞铜电缆线)连接到传输域6上。
另外被提供的是一个服务提供者域22,它包括提供服务(例如视频服务)的设备,如视频播放机24和计算机终端26,通过局域环连接28a、28b、28c(如ISDN通道或其他一些高带宽链路)连接到传输域6上。
如众所周知的模式,通过传输域6,最终用户的终端装置14或16被用来向服务提供者域22传送请求。结果是一条通道通过传输域6被建立起来且服务提供者域22通过这条通道向终端用户域18传送服务(例如传送实时电影资料、或电子版的数据文件)。
在常规的普通电话服务中,传输域6只是简单地被最终用户域产生的拨号所控制来建立传输通路。然而,当前传输域中的“智能网络”控制由智能域8提供。智能域8从传输域6中接收已拨号码和/或正在拨的号码,并执行与这些号码相符合的呼叫处理。智能域最典型的是提供号码翻译服务,即已拨号码被翻译以向另一个号码提供前向呼叫服务。在这种情况下,已拨号码与主计算机10中的某一台中存储的一条记录相对应,作为线路12中某一条上信号的响应它被访问,以产生相应的重定向号码。
一般来说,作为传输域6中某一事件的响应(如来自于最终用户域18的呼叫初始化),智能域提供控制信息来控制传输域6。
其他数据也被存放到智能域中。在本实施例中,每次呼叫的记帐数据被存放到智能域中,以对每个用户进行周期性地记帐。
参考图2,智能域8进一步包含一个编译装置30,它由一台编程的工作站组成,通过网络服务器11a-11c和广域网(WAN)连接到主计算机10上,WAN在编译装置30、主计算机10和服务器11间运行。
服务器也可以连接到Internet 32中的一个或多个广域网(WWW)服务器上,从而编辑连接到Internet上(例如通过局域包交换节点)的终端15a-15d。
参考图3,每一主计算机10包括一个框架或包含通信硬件100的服务器,通过广域网连接到服务器11上;处理器102;存储器104,它包括随机访问存储器式的快速访问存储器和磁或光盘驱动式的脱机存储器。
存储于存储装置104中的是一个操作系统106(例如UNIX(TM));一个对象管理程序108;和一个由类代码110和对象数据组成的对象模型,所有这些都将在下面被详细讨论。
每个编辑终端15包括一台个人计算机,并可能利用用户家中的相应电话14通过调制解调器连接到公共电话插座上。
每个编辑终端15因此包括一个处理器、一台屏幕输出设备、一个输入设备(例如键盘和(或光标控制设备如鼠标)存储装置ROM、RAM和硬盘),该输入设备包含一图形用户环境(例如Windows(TM))、一个通信程序和一个对象浏览程序。
参考图4,编译装置包括连接到WAN服务器11上的通信接口电路板300;处理器302;和存储装置304(没有单独标出),此存储装置304中含有快速访问存储器(RAM)和高容量存储器(例如硬盘驱动器),存放着操作系统(如UNIX(TM))、C++编译程序312(如来自Sun微系统公司的SunPRO)、一个下面将要详细描述的预编译器316、和存放可合并到新程序中的标准函数和定义(描述子程序和子例程)的库314。
如常规那样,C++编译器包含一个编译可重新定位二进制代码的编译器和一个连接程序312b,此连接程序可将二进制代码与存储在库314中的二进制代码例程相连接并将连接好的代码在内存地址空间定位以便运行。这些编译器一般包含一个可以解释如“include”语句的编译指令以在编译过程中读人附加的代码或执行其他的操作的编译器。
提供的还有:存储定义C++程序输入代码的存储区308(例如通过输入设备320输入,或通过通信电路300下载,或通过存储装置204中包含的磁盘驱动器装载);和存储由C++编译器312产生的可执行代码的存储区310(例如在编译程序的控制下由处理器302完成)。还包括存储区318,它存放与分布式处理器10数目有关的系统数据、处理器10中每一个可用存储器的容量、处理器10的操作速度等等。
处理器102被安排有选择地运行C++编译器312来编译存放在源存储器308中的源代码,或在C++编译器312处理完源存储器308中的源代码后运行预编译器316,以在可执行代码存储器310中产生可执行代码。
在第一种情况下,产生的代码将在任意合适的单处理器上运行。在本实施例中,处理器302本身被安排执行直接由C++编译器以此方式产生的代码,以使用户可以立即测试是否程序按预想的方式执行。
在后一种情况下,预编译器316首先处理存放在源存储器308中的源代码(考虑到与组成运行代码的主机10的分布式系统有关的任何系统数据),并在源存储器308中产生增补的源代码,以使编译器312在可执行代码区310中编译产生可执行代码。然而,这个可执行代码并不需要在编译装置30上是可运行的,因为它是在多分布式主机10上运行的。
参考图5,在监控程序307的控制下编译器30的一般操作如下:
在202步,源代码被输入到源代码存储器308中(如通过输入设备320)。在204步中,操作员可以决定编辑源存储器308中的源代码,其中,被编辑的文本被输入到源存储器308中(例如使用常规的文本处理程序)。
一旦任一上述的编辑完成,在206步中,用户可以选择是否对源代码进行局部测试。如果用户进行局部测试,在第208步,处理器运行C++编译器312以将存放在源存储器308中的源代码编译成可执行代码并存放到可执行代码存储器310中,且在210步中,处理器302执行此可执行代码。一个仿真程序可以被提供来监听无意义的操作并替代诸如显示到输出屏幕322上的操作,以使用户可以了解到底发生了什么。
如果在执行过程中发生错误,在第212步,用户可以决定返回到第204步来编辑源代码存储器308中的源代码。如果此源代码满足要求,则在第214步中,预编译器316被应用到源代码存储器308中的源代码上以产生增补代码,后者进一步在第216步中被C++编译器编译以将可执行代码产生到可执行代码存储器310中。接下来在218步中通过WAN服务器它被传送到分布式的主计算机10中。这个过程在图6中以图形化的方式被描述。
现在对智能域中采用的数据模型进行简要介绍。下面,每个“对象”是一个数据记录,包括多个数据域,只能被与此对象对应的代码来访问(在一对多的关系中,与一对象类有关的同一代码实际上可以访问此类的所有对象)。
通常,对象被分成类,同一个类的对象包含不同的数据但具有同样的格式。每个对象与一个或多个操作这些数据的子例程(一般命名为“方法”或“功能”)相关,它们一般只包括执行该操作的装置。
与同一类的不同对象相关的子例程接收和返回相应数据的格式是相同的(即同一类的所有对象都有一个公共的接口)。事实上,在C ++中,对于同一类的所有对象这些子例程仅出现一次(即子例程的代码仅存储一次),所以代码和这些对象之间是一对多的关系。因此代码是与这些对象的类相关而不是与每个对象相关。
每个对象类可能是一个更通用类的子类,即如通常的面向对象的程序设计那样。在此情况中,此代码可被存储而与更通用的类(“超类”)相关。对象管理器108包含一个构成每个对象的数据的位置的列表,且对一个对象的每次调用中,对象管理器访问类代码存储区110中的相关子例程代码并为对象存储区112中相关对象的代码提供数据地址。
参考图7,在此实施例中,智能域中的主机10提供的对象包含多个客户对象500(每个都拥有与成百上千个用户中任何一个相关的数据),它们在与一个新客户进行会话过程中生成;当客户自愿离开或从网络脱离时消亡;当一个客户的需求发生改变时被编辑:一组在呼叫开始时被生成,在呼叫结束后被中止的呼叫对象600a-600c;一组与客户终端设备上的每一条目相关且在客户终端设备与网络的第一次连接中生成的通信设备对象700a-700c。
参考图7b,在此实施例中,传输域6的交换中心2a、2b...进一步包括主计算机,它们存储对象800a-800b、900a-900f,这些对象分别代表交换中心的交换机和这些交换机的端口。这样,每个交换机对象800包括一个任何时刻相应交换机状态的记录;这些对象永久存储于内存中并与交换中心2中所示的物理设备是一一对应的,这样对端口或交换对象的写操作改变相应端口或交换机的状态,且对端口或交换机对象的读操作给出相应物理设备实际情况的真实反映。
作为例子,客户对象里的数据结构在图8中被描述。
由对象500维护的属性数据包括一个客户类型域502(可能指示此客户是一个雇员或一些其他非平常状态,或是一个正常客户);一个用户ID域504;一个指示对象500被生成的主机10的主机域506(方便起见以http/TCP/IP的格式表示)。
另外还存放的是与提供给客户服务相关的数据,例如,客户的通常电话号码(域508);在一天特定时间内客户的呼叫被转向的电话号码(域510);和呼叫被转向的时间(域512)。
最后,对客户的记帐信息以呼叫域514的存储格式被存储,对于每一次呼叫存储被叫(和/或呼叫)电话号码、呼叫的日期和时间、和本次呼叫的花费(域514)。
此信息的不同部分需要被不同的人所访问。例如,定义提供给客户的服务的域508-512可以被客户服务人员或由客户自己通过一个用户终端15所编辑,而记帐数据(域514)应当只能由操作网络的记帐和会计人员所写。当然,客户不应该通过用户终端15对他的记帐记录进行重写。
在操作时,传输域中发生的事件(如在终端用户域中监视用户的“摘机”状态)产生智能域中与此对象相关联的代码的操作。例如,当用户终端域中电话摘机时,生成一个新“呼叫”对象600的代码被产生。当被呼叫的号码被检测到时,它通过信号链路12被传输到智能域8中;呼叫一方的客户对象500被激活来增补记帐记录域;且被呼叫一方的客户对象500被访问以决定此呼叫应被转发的号码,接下来信息被传送到传输域中的交换机对象800来建立一条通路,以在此通路之上运载呼叫。
在呼叫传送过程中,智能域的作用通常是有限的。当检测到挂机事件而清除呼叫时,与客户对象500相关联的记帐功能代码对记帐数据域进行更新,同时呼叫对象被对象管理器108删除。
图9描述了声明与图8中数据相对应的类类型(客户)的C++源代码100。它包含部分1000a和部分1000b,部分1000a包括C++编译器312所作用的语句,部分1000b包括C++编译器312忽略的注释语句。
然而,根据本实施例,注释语句部分1000b由预编译器316所作用。每一注释语句1002b-1012b由符号“//”开头,以使编译器312忽略其后的内容。
注释域中的内容完全是作为编程者的文档因而完全被C++编译器312所忽略。在本实施例中,预编译器316被安排来解释这些注释语句。
在本实施例中,注释域中的内容包含与构成分布式系统对象有关的功能(或性能)说明数据。特别是,这些说明数据包括下列说明性数据:
(a)给定类中所期望的对象数目(或是内存空间的全部相应容量),
(b)利用度,即对象在访问时可用的访问时刻百分比,
(c)可访问性,即对象(或是它可能被调用的特定数据)可被访问的不同访问点的数目(如需要访问此对象的终端或主机的数目),
(d)安全性,不同用户对不同数据的访问权限(即是否他们真正可以访问,如果可以,是可读、可写或两者皆可),
(e)并发性,即可能同时激活一个给定对象或进程的其他进程数目,
(f)时间性,即一个进程必须被完成的最大、平均和/或最小时间,
对于不同的应用,这些功能规范的典型值如下:
           一些可能的应用及它们的功能尺度
                大小    可用性  访问    并发性    完整性    时间性
                (mb)    (%)    (点)    (应用)    (Y/N)    (Min/Ave/Max)
智能电话网络    1000    99.999  100M    10000      Y        0/1/100
远程表示        10      90      10      2          N        0/0/0
共享虚拟现实    100     90      100     10         N        0/1/2
企业计算        100000  99.99   10M     1000       Y        0/1/10
返回图9,语句1002a定义了一个叫做“客户”的对象类,语句1002b说明了此类的对象必需在99.99%的时间内可用。
语句1004a定义了一个叫做“name”的32字节的阵列,语句1004b说明客户支持服务(CSS)进程必须对此内容有读和写的访问权限,而其他进程必须仅有读权限(以使仅客户支持服务人员可以更改存放在与单一客户有关的类客户对象中的用户名)。
语句1008a定义了一个功能“客户”,语句1008b说明了客户支持服务有访问权。语句1006b说明了功能“客户”的最小、平均和最大操作时间(以毫秒为单位)。
语句1010a声明了一个void型函数(即无返回值)printBill,它打印客户对象的金额,语句1010b说明了相应最小、平均和最大响应时间。
最后语句1012a声明了一个void型函数callDelivered,当一个呼叫必须被处理时它被激活,语句1012b说明了此函数的最小、平均和最大响应时间。
因此就象所表示的那样,图9中的代码包括可执行的C++语句1000a和注释语句1000b,且它可被当作C++程序进行编译并正常运行,编译器312并不关注由注释语句1000b所定义的功能说明。
另一方面,当由预编译器316处理时,功能规范1000b会对生成新的可编译C++代码和对编译器生成指令产生影响,下面将详细描述。
对象的尺寸/数目
每个对象类可以与一条尺寸语句相关联,以指明所期望的那个类的对象数目或所需的存储空间的相应容量。一般来说,本发明的更优实施例被安排来解释与所期望的对象数目相关的语句(因为对于编程者来说这更自然),并通过将这个声明的对象数目和这个类所声明的数据类型的尺度之和相乘来把它转换成所期望的存储容量。
参考图10,预编译器在2002步被安排来读取与类相关联的任何尺寸语句并将每一个转换成内存空间尺寸(以M字节为单位),还形成所有这样内存尺寸的和。
如果这样计算的对象模型的整个尺寸足够小以适合单个1M字节UNIX进程的要求,预编译器则向编译器写一条指令来将此代码编译成一个单一进程(2006步)。这简化了可能使用的寻址,编译器可以允许对象通过引用传送数据,因为所有的对象都在同一地址空间中。
否则在2008步中,预编译器316向编译器写一条指令来将此代码编译到多个UNIX进程中。在2010步,预编译器316可以选择代码被编译到的目标主机的最小数目。
选择步骤2004和2010根据存放在系统数据存储器318中的数据被执行,这些数据指明每一台主机10中有多少内存空间可用。
在其他实施例中,这样计算的对象模型的尺寸也可以被用来以另外方法控制寻址;例如,对象模型的尺寸可以用来指示编译器选择使用内存寻址(所有对象都可在同一内存空间中被定位)、文件寻址(对于数目巨大的对象)或对象UID;或使用虚拟内存指针。
利用度
一种确保特定对象具有高利用度的特定方法是生成一个对象的多个拷贝(当然在可能情况下需要更新所有拷贝中的数据使其都是一样的)。一个给定对象的利用度粗略来说与此对象响应时所用的时间成反比例关系。这样,一个对象所期望的拷贝数目基本上与此对象的利用度和平均响应时间成比例。
相应地,参考图11,在3002步中,预编译器316被安排读取对象类所需的利用度,且在3004步中读取指示类对象的平均操作时间。
接下来,在3006步中,预编译器并行地选择已存在的对象拷贝数目并给出需要的可利用度,并在3008步中,预编译器扩充那个类的构造函数代码(实例化这个类的新对象)以使所需要的拷贝数在运行时中并发地被生成(在不同的主机10上)。
为了保证数据完整性,在3006步中选择的数目一般来说是1(在这种情况下预编译器在3008步中不写入附加代码),除非在需要高利用度的地方,根据类响应时间和所要求的利用度,象上面所述的那样2份或更多份拷贝被选择。
在其他实施例中,不是参考目标访问时间并相应地生成一个重复对象的期望数目,重复对象的一个预定数目可被选择(例如2)且对象的访问时间可被修改(在下面详细描述的事先确定的最小和最大值之间)以适应它。
可访问性
因为不同的主计算机10被连接到WAN 11、12的不同点上,一些特定的主计算机10与其他的计算机相比到特定终端15或主机10之间有较短的通信链路。这些数据被存放到系统数据存储器318中。因此将对象存放到那些将访问它们的终端的主计算机10上是有好处的。
参考图12,在4002步对于每一个数据声明,预编译器316读取将访问那个类的对象的终端15的标识(例如用户,客户支持,服务提供者,记帐和规则)和编号,且在4004步利用存放在系统数据存储器318中的数据,确定此类的新对象应该存放的主计算机10以为这些终端提供最好的访问。
在4006步,预编译器316可能加入一些新的源代码以使编译器更改这个为不同主计算机10编译的对象管理器108,以使它们传送所有的请求来生成与4004步选择的特定主机10相关的类的新对象。
安全性
在4008步预编译器316加入新的源代码来测试正在激活一个函数来更改数据的特定条目的对象或进程的标识,并仅在此标识与所期望的用户类别相一致的地方允许访问。这样,个人的数据仅可由个人的终端进行读或写。
并发性
当对一个对象数据进行多次并发访问是可能的,且第一个对象访问另一个也被并发访问的对象时,不一致的现象可能发生。相应地,在更优实施例中,用于避免不一致的装置被提供。参见图13,对于每一个类,在5002步预编译器316读取可能访问那个类的对象的并发进程个数;如果没包含并发信息,或并发进程数目明确地为1,则在5004步中无需采取进一步的措施。如果对一个给定的对象类来说,并发进程的数目超出了5004步预定的数目(可以是2或更大的数),则在5006步对那个类的并发控制方法被选择,在此实施例中它可能是一个简单的加锁进程,当一个对象被访问后,在第一次访问终止之前不可能有别的访问。
在5008步,附加源代码被加入到初始源代码中,以使编译器对相关的类的代码增加一个加锁步骤。
时间性
使用多任务操作系统106,每台主机10将并行地处理不同对象的多个进程。
参见图14,在6002步预编译器读取与每个类相关联的操作时间。取决于所有平均操作时间的总和,在6004步预编译器包含一条编译指令来为每一台主计算机10建立一个高速缓存大小,它与每台主计算机10的系统数据存储器318中记录的存储容量相符合,以在可用内存中提供与所需访问时间的总和成反比例的高速缓存大小。
在6006步,对每个类定义测试是否小于平均或最大的操作时间被指明,且如果是这样,在6008步对那个类选择一个和平均操作时间成反比例的优先权,在6010步源代码被加入到定义此类的代码中,以实现一个测试自从类(或类中的特定函数和操作)被激活后预定的时间是否超时的定时器,如果是,则退出此操作。
所选择的权值被写入到一个权值的列表,它由编译器编译并由对象管理器108针对每台主机10来使用,根据该权值每个对象运行的优先级被设置,以使得具有相对较长平均响应时间的对象被操作系统106赋予一个相对低的优先级的等待并被认为是“后台”任务。
概述
这样,当预编译器316的操作完成以后,存入到源代码存储器308中的扩展源代码包括附加源代码和通过下列方法实现功能或性能规范的编译器指令:
(a)将附加代码或数据加入到类代码110中,或
(b)对于所有主计算机10修改对象管理器代码108,或
(c)指示编译器根据不同的主计算机10产生独立版本的对象管理器。
根据此扩展源代码,对于输入源代码中的每一个声明类编译器接下来生成一个包含类代码110的可执行代码文件,并对每一主计算机10也可以包括对象管理器108。
不是对于每一主计算机10编译对象管理器108的代码,最好对于每一主计算机10提供一个被对象管理器108所采用的数据文件,以修改相应的操作。
这样,当远程通信系统被改动时,例如可用系统信息的改变,如增加一台新的主计算机或扩充主计算机上的内存,或是因为一个或多个对象类的功能被改变,在上述的本地测试以后,预编译和编译过程被重复且新的可执行文件通过广域网络被传送给每一台主机10,就象上面描述的那样。
如果一台新的主计算机被简单地加入到系统而没有做其他改动,原来编译的可执行代码的一份拷贝可能简单地通过广域网络提供给新的主计算机,使它和已存在的主计算机一样的方式运行。
可以看到,被第一种编译器所忽略的语句(例如注释语句)中的系统特殊要求的规范使得可以在系统释放前对其基本功能进行简单的本地测试,这样当系统运行期间被改动时能尽量减小主计算机10的停机时间。
其他改动的实施例及修改
从上文看很显然,很多修改和替换都是可以的。例如,尽管由于以上原因,还是可以很方便地将本发明作为一个预编译器和常规的C++编译器合作,同样也可以将本发明集成到一个非常规的编译器中(事实上预编译器和编译器结合很明确地包含这一点)。
自然地,本发明不仅仅对于C++可用,对于其他为分布式环境提供的面向对象的语言如Smalltalk(TM)同样适用。更一般地讲,也可以将相关的技术应用到非面向对象的语言和非分布式系统中。
虽然本发明被描述成远程通信系统中包含的编译装置时,事实上编译器装置可以处于不同的权限中且通过国际远程通信网络可连接到主计算机上;相应地,在权利要求中要求保护与其使用的远程通信网络结合及脱离的编译器装置。
自然地,远程通信以外的应用是可能的,例如共享的分布式计算。
许多其他的改动和修改对于有经验的人来说是很显然的。因此本发明旨在包含任何和所有本文所涉及的主题,而不论其是否被其后的权利要求所覆盖。
我们其它的英国专利申请9600823.0,在同一日以同样的标题提交,对本发明是可用的,且结合在此作为参考。
尤其是,本文所描述的生成一个类型模型的机制最好扩展成包含每一个对象的附加数据域,这些域说明根据本发明识别的功能操作数据,然后它们被作为编译好的可执行代码部分提供以便每个对象管理器108使用。根据此方式,同样的可执行程序可以被提供给每一台主计算机10且使用存放在存储器318中的系统信息的需求被避免。

Claims (18)

1.一种远程通信系统,包括一个分布式控制系统,该分布式控制系统包括多个互连的计算机和用于编译计算机控制程序的编译设备,该编译设备包括:
系统数据存储器,用于存储系统数据;
预编译器;
编译器;
源代码存储器,用于存储源程序;以及
可执行代码存储器,用于存储由该编译器产生的可执行代码;
该预编译器可操作用以对在该源代码存储器中存储的初始源程序中的注释进行检查,以找到一个或多个所要求的系统操作的具体规范,以及对于这样找到的具体规范或每一个具体规范,访问该系统数据存储器中当前存储的相应的系统数据,评估所要求的系统操作能否被初始源程序满足,且在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过在其中合并所述附加源程序语句和编译器指令来修改该源程序,以及
该编译器在该预编译器的操作之后可操作用以响应在该源代码存储器中当前存储的该源程序中的可执行语句,产生可执行代码以及将这样产生的可执行代码存储在该可执行代码存储器中。
2.根据权利要求1的远程通信系统,其中该编译器是独立于该预编译器的常规编译器。
3.根据权利要求1的远程通信系统,其中该预编译器和该编译器被集成在一起。
4.根据权利要求1至3中任一项的远程通信系统,其中所需系统操作的所述一个或多个具体规范与由所述控制程序实现的操作时间有关。
5.根据权利要求4的远程通信系统,其中所述操作时间包含一个或多个最小操作时间、一个平均操作时间和一个最大操作时间。
6.根据权利要求1至3中任一项的远程通信系统,其中所述计算机用于将对象记录中的控制数据和相关的数据读和/或写程序一起存储。
7.根据权利要求6的远程通信系统,其中所需系统操作的所述一个或多个具体规范与所述分布式控制系统中预期的等效对象记录个数有关。
8.根据权利要求6的远程通信系统,其中所需系统操作的所述一个或多个具体规范与该远程通信系统中可能被访问的上述对象记录访问点的数目有关。
9.根据权利要求6的远程通信系统,其中所需系统操作的所述一个或多个具体规范与被允许访问上述对象记录或其一部分的用户类别有关。
10.根据权利要求6的远程通信系统,其中所需系统操作的所述一个或多个具体规范与上述控制数据必须立即可用的程度有关。
11.一种用于编译分布式控制系统的程序的设备,该设备包括:
系统数据存储器,用于存储系统数据;
预编译器;
编译器;
源代码存储器,用于存储源程序;以及
可执行代码存储器,用于存储由该编译器产生的可执行代码;
该预编译器可操作用以对在该源代码存储器中存储的初始源程序中的注释进行检查,以找到一个或多个所要求的系统操作的具体规范,以及对于这样找到的具体规范或每一个具体规范,访问该系统数据存储器中当前存储的相应的系统数据,评估所要求的系统操作能否被初始源程序满足,且在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过在其中合并所述附加源程序语句和编译器指令来修改该源程序,和
该编译器在该预编译器的操作之后可操作用以响应在该源代码存储器中当前存储的该源程序中的可执行语句,产生可执行代码以及将这样产生的可执行代码存储在该可执行代码存储器中。
12.根据权利要求11的设备,其中该编译器是独立于该预编译器的常规编译器。
13.根据权利要求11的设备,其中该预编译器和该编译器被集成在一起。
14.一种用于产生在分布式计算系统上执行的代码的方法,该方法包括:
产生初始源代码程序,它包括定义上述代码的结构的可执行语句,和包含所需系统操作的具体规范的注释;
访问来自于该分布式计算系统存储器的适当的系统操作参数,该存储器包含有当前系统操作参数;
评估所需的系统操作是否能被该初始源程序满足;
在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序;和
响应该初始源程序中的可执行语句,或在上述得到负面评估结果时对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码。
15.根据权利要求14的方法,其中上述分布式系统是远程通信系统。
16.一种用于产生在分布式计算系统上执行的代码的方法,该方法包括:
检查初始源程序中的注释,该初始源程序包括定义上述代码的结构的可执行语句和包含所需系统操作的具体规范的注释,以便找到所述具体规范;
对于这样找到的每一个具体规范,访问来自于该分布式计算系统的存储器的相应的系统数据;
基于该具体规范和该相应的系统数据,评估所需的系统操作是否能被该初始源程序满足;
在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序;和
响应该初始源程序中的可执行语句,或在上述得到负面评估结果时对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码。
17.一种用于产生在分布式计算系统上执行的代码的产品,包括:
产生初始源代码程序的装置,该初始源代码程序包括定义上述代码的结构的可执行语句,和包含所需系统操作的具体规范的注释;
访问来自于该分布式计算系统存储器的适当的系统操作参数的装置,该存储器包含有当前系统操作参数;
评估所需的系统操作是否能被该初始源程序满足的装置;
在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序的装置;和
响应该初始源程序中的可执行语句,或在上述得到负面评估结果时对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码的装置。
18.一种用于产生在分布式计算系统上执行的代码的产品,包括:
用于检查初始源程序中的注释以便找到所需系统操作的具体规范的装置,所述初始源程序包括定义上述代码的结构的可执行语句和包含所述具体规范的注释;
对于这样找到的每一个具体规范,访问来自于该分布式计算系统的存储器的相应的系统数据的装置;
基于该具体规范和该相应的系统数据,评估所需的系统操作是否能被该初始源程序满足的装置;
在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序的装置;和
响应该初始源程序中的可执行语句,或在上述得到负面评估结果时对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码的装置。
CNB2007101698631A 1996-01-16 1997-01-07 远程通信系统、编译控制程序的设备和代码产生方法和装置 Expired - Fee Related CN100557569C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9600854.5 1996-01-16
GBGB9600854.5A GB9600854D0 (en) 1996-01-16 1996-01-16 Distributed processing

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN97191730A Division CN1208481A (zh) 1996-01-16 1997-01-07 分布式处理

Publications (2)

Publication Number Publication Date
CN101154165A CN101154165A (zh) 2008-04-02
CN100557569C true CN100557569C (zh) 2009-11-04

Family

ID=10787110

Family Applications (2)

Application Number Title Priority Date Filing Date
CN97191730A Pending CN1208481A (zh) 1996-01-16 1997-01-07 分布式处理
CNB2007101698631A Expired - Fee Related CN100557569C (zh) 1996-01-16 1997-01-07 远程通信系统、编译控制程序的设备和代码产生方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN97191730A Pending CN1208481A (zh) 1996-01-16 1997-01-07 分布式处理

Country Status (13)

Country Link
US (2) US6438746B1 (zh)
EP (1) EP0875028B1 (zh)
JP (1) JP3878217B2 (zh)
KR (1) KR19990077378A (zh)
CN (2) CN1208481A (zh)
AU (1) AU707109B2 (zh)
CA (1) CA2240508C (zh)
DE (1) DE69734348T2 (zh)
GB (1) GB9600854D0 (zh)
MX (1) MX9805682A (zh)
NO (1) NO983263L (zh)
NZ (1) NZ325380A (zh)
WO (1) WO1997026595A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7152200B2 (en) * 1997-12-31 2006-12-19 Qwest Communications International Inc. Internet-based database report writer and customer data management system
DE19919874A1 (de) * 1999-04-30 2000-11-02 Univ Dresden Tech Verfahren zur Informationsübergabe bei der Steuerung von Abläufen
US6772140B1 (en) * 1999-11-01 2004-08-03 Harris-Exigent, Inc. Hierarchical syntax for satellite command and control directives
WO2002029559A1 (en) * 2000-09-27 2002-04-11 Conducive Technology Corp Scripting business logic in a distributed object oriented environment
JP2002116917A (ja) * 2000-10-05 2002-04-19 Fujitsu Ltd オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ
US7346849B1 (en) * 2001-04-03 2008-03-18 Cypress Semiconductor Corp. Executable code derived from user-selectable links embedded within the comments portion of a program
US7707544B2 (en) * 2002-12-05 2010-04-27 Bea Systems, Inc. System and method for generating and reusing software application code with source definition files
GB0303270D0 (en) 2003-02-13 2003-03-19 Renishaw Plc A machine tool control process and apparatus therefor
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US20040187099A1 (en) * 2003-03-20 2004-09-23 Convergys Information Management Group, Inc. System and method for processing price plans on a device based rating engine
JP5396979B2 (ja) * 2009-04-10 2014-01-22 日本電気株式会社 ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム
CN110825378B (zh) * 2019-09-17 2023-07-18 秦皇岛米格教育科技有限公司 基于程序积木的编程系统和控制系统
CN115658078B (zh) * 2022-12-27 2023-03-17 金篆信科有限责任公司 数据库的预编译处理方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327561A (en) * 1991-09-20 1994-07-05 International Business Machines Corporation System and method for solving monotone information propagation problems
JP3050645B2 (ja) * 1991-06-04 2000-06-12 川崎製鉄株式会社 亜鉛めっき付着ムラ原因を突き止める方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463172A1 (en) * 1989-12-26 1992-01-02 Fujitsu Limited Object oriented distributed processing system
US5307499A (en) * 1990-11-30 1994-04-26 Singapore Computer Systems Limited Interpretive object-oriented facility which can access pre-compiled classes
DE4131380A1 (de) * 1991-09-20 1993-03-25 Siemens Ag Verfahren zur adaption einer objektorientierten applikation
US5717929A (en) * 1993-03-30 1998-02-10 Sanyo Electric Co., Ltd. Apparatus and method for program execution, and image reproduction apparatus with special effects utilizing such apparatus and method
US5539907A (en) * 1994-03-01 1996-07-23 Digital Equipment Corporation System for monitoring computer system performance
GB9600823D0 (en) * 1996-01-16 1996-03-20 British Telecomm Distributed processing
US5960200A (en) * 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US5892950A (en) * 1996-08-09 1999-04-06 Sun Microsystems, Inc. Interface for telecommunications network management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3050645B2 (ja) * 1991-06-04 2000-06-12 川崎製鉄株式会社 亜鉛めっき付着ムラ原因を突き止める方法
US5327561A (en) * 1991-09-20 1994-07-05 International Business Machines Corporation System and method for solving monotone information propagation problems

Also Published As

Publication number Publication date
CN1208481A (zh) 1999-02-17
AU1387997A (en) 1997-08-11
KR19990077378A (ko) 1999-10-25
US6438746B1 (en) 2002-08-20
US6343374B1 (en) 2002-01-29
DE69734348D1 (de) 2005-11-17
GB9600854D0 (en) 1996-03-20
MX9805682A (es) 1998-11-29
NO983263D0 (no) 1998-07-15
NZ325380A (en) 1999-07-29
AU707109B2 (en) 1999-07-01
JP3878217B2 (ja) 2007-02-07
CA2240508A1 (en) 1997-07-24
EP0875028B1 (en) 2005-10-12
CA2240508C (en) 2005-10-18
JP2000503430A (ja) 2000-03-21
WO1997026595A1 (en) 1997-07-24
EP0875028A1 (en) 1998-11-04
NO983263L (no) 1998-07-15
DE69734348T2 (de) 2006-07-06
CN101154165A (zh) 2008-04-02

Similar Documents

Publication Publication Date Title
US6718371B1 (en) XML-based integrated services framework
US6216262B1 (en) Distributed processing
CN100557569C (zh) 远程通信系统、编译控制程序的设备和代码产生方法和装置
CN108510082A (zh) 对机器学习模型进行处理的方法及装置
US6356931B2 (en) Method and system for remotely browsing objects
CN108287839A (zh) 一种页面加载方法和设备
CA2285205C (en) System and method for tracking records in a distributed computing system
US6256779B1 (en) Distributed processing
Raposo et al. Efficient Visualization in a mobile WWW environment
CN1114879C (zh) 一种可以访问多媒体文档的方法和系统
AU747018B2 (en) Distributed processing
Forin et al. Parallel processing with Agora
CN1356647A (zh) 轻量用户交互管理架构
Renesse et al. An introduction to the TACOMA distributed system. Version 1.0
Silberzahn et al. A new object request broker architecture in implementing a medical picture retrieval system
Vogel et al. Configuration in the framework of open distributed processing
Reilly et al. CREST Data Library
Yoshida Remote Object Accessing Mechanism in SIMPOS: Its Design and Application
FR2846498A1 (fr) Procede de communication entre serveurs et dispositif pour sa mise en oeuvre

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091104

Termination date: 20130107

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