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

文档序号:6613335阅读:165来源:国知局
专利名称:远程通信系统、编译控制程序的设备和代码产生方法
技术领域
本发明涉及分布式处理,特别是但不仅仅是涉及用于远程通信网络 控制的分布式处理。更具体地,本发明涉及在分布式处理器上实现的 控制系统的开发与升级,其最好(但不是必要的)面向对象方式的过 程。
背景技术
远程通信网络日益需要支持高带宽、低延迟信息流。所需带宽迅速 从Kb i t /秒增至Mb i t /秒,对某些应用来说甚至需要Gb it /秒(具体例如点播视频、动态共享仿真和分布式计算)。为提供"智能网络"功能,如呼叫重定向到特定号码,计算机程序 要运行在与交换中心连接的很多(例如至多l 0 0台)主计算机上。 为特定用户提供服务的路径(例如某个客户的呼叫被寻路由的号码) 依赖于存储于与用户有关的主计算机中的数据。这样在几十到几百台 主计算机中就有数百万的用户记录。在"Twenty-twenty vision國software architectures for intelligence in the 21st 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丄.Cusack和E.S. Cordingley编写。尽管这个术语未总被准确使用,在此面向对象的计算指 的是这样的计算技术,在其中数据被以"封装"的形式存储,在该形式
中,数据不能被呼叫程序或例程直接访问,仅能被一个相关的程序访问, 该程序能读、写和编辑该数据。数据的记录和其相关程序被称为一个 "对象"。来自于和发送到一个对象的通信主要由"消息传递"来实现, 即对这个对象的呼叫传递数据值并激活包含在此对象当中的某个程序的 操作,然后返回数据值。对于希望利用面向对象方法的各种编程者来说很多语言都可以使用, 目前最常用的是〔++。分布式处理在几个方面上与单处理器操作不同。首先,根据其它程序 或数据与调用程序是位于同一台主计算机上还是位于不同的主计算机 上,可能需要不同的访问技术。程序或数据的位置也将影响其从其他程 序到达的速度。同时, 一台或多台主计算机可能失效,而此时其他计算 机还在运行中。分布式计算通常以"客户-服务器"的方式执行,其中某台计算机上 "客户"程序请求位于另一台计算机上的"服务器"程序,此后服务器 程序执行此功能或将客户程序请求的数据返回。面向对象技术尚未广泛应用到分布式处理中。这方面最新现状的概要情况在"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执行的各个处理阶段的示意图7 a是描述图1中智能域部分所有的数据结构图7b是描述图1中传输域部分所有的数据结构图8描述了图7 a中一个组成成分的存储器中的数据结构;
图9描述了适合于图4中的编译装置的源代码;
图1 0是描述组成图1 0到1 4的预编译过程的一部分的流程图1 1是该过程的其他部分;
图1 2是该过程的其他部分; 图l3是该过程的其他部分;
图l4是该过程的其他部分。
具体实施例方式
参考图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,它由一台编程的工 作站组成,通过网络服务器lla-llc和广域网(WAN)连接到主计算机 IO上,WAN在编译装置30、主计算机IO和服务器11间运行。
服务器也可以连接到Internet 32中的一个或多个广域网(WWW)服 务器上,从而编辑连接到Internet上(例如通过局域包交换节点)的终端 15a画15d。
参考图3,每一主计算机10包括一个框架或包含通信硬件100的服 务器,通过广域网连接到服务器ll上;处理器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) ) 、 0++编译程序312 (如来自Sun微 系统公司的SunPRO)、 一个下面将要详细描述的预编译器316、和存放 可合并到新程序中的标准函数和定义(描述子程序和子例程)的库314。
如常规那样,0++编译器包含一个编译可重薪定位二进制代码的编译 器和一个连接程序312b,此连接程序可将二进制代码与存储在库314中 的二进制代码例程相连接并将连接好的代码在内存地址空间定位以便运 行。这些编译器一般包含一个可以解释如"include"语句的编译指令以在 编译过程中读人附加的代码或执行其他的操作的编译器。
提供的还有存储定义0++程序输入代码的存储区308 (例如通过输 入设备320输入,或通过通信电路300下载,或通过存储装置204中包 含的磁盘驱动器装载), 和存储由0++编译器312产生的可执行代码的 存储区310 (例如在编译程序的控制下由处理器302完成)。还包括存储 区318,它存放与分布式处理器10数目有关的系统数据、处理器10中每 一个可用存储器的容量、处理器10的操作速度等等。
处理器102被安排有选择地运行0++编译器312来编译存放在源存储 器308中的源代码,或在0++编译器312处理完源存储器308中的源代 码后运行预编译器316,以在可执行代码存储器310中产生可执行代码。
在第一种情况下,产生的代码将在任意合适的单处理器上运行。在本 实施例中,处理器302本身被安排执行直接由€++编译器以此方式产生 的代码,以使用户可以立即测试是否程序按预想的方式执行。
在后一种情况下,预编译器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步中被0++编译器编译以将可执行 代码产生到可执行代码存储器310中。接下来在218步中通过WAN服务 器它被传送到分布式的主计算机10中。这个过程在图6中以图形化的方 式被描述。
现在对智能域中采用的数据模型进行简要介绍。下面,每个"对象" 是一个数据记录,包括多个数据域,只能被与此对象对应的代码来访问 (在一对多的关系中,与一对象类有关的同一代码实际上可以访问此类 的所有对象)。
通常,对象被分成类,同一个类的对象包含不同的数据但具有同样的
格式。每个对象与一个或多个操作这些数据的子例程(一般命名为"方 法"或"功能")相关,它们一般只包括执行该操作的装置。
与同一类的不同对象相关的子例程接收和返回相应数据的格式是相 同的(即同一类的所有对象都有一个公共的接口)。事实上,在〔++中, 对于同一类的所有对象这些子例程仅出现一次(即子例程的代码仅存储 一次),所以代码和这些对象之间是一对多的关系。因此代码是与这些 对象的类相关而不是与每个对象相关。
每个对象类可能是一个更通用类的子类,即如通常的面向对象的程序 设计那样。在此情况中,此代码可被存储而与更通用的类("超类")
相关。对象管理器108包含一个构成每个对象的数据的位置的列表,且 对一个对象的每次调用中,对象管理器访问类代码存储区110中的相关 子例程代码并为对象存储区112中相关对象的代码提供数据地址。
参考图7,在此实施例中,智能域中的主机IO提供的对象包含多个客 户对象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中数据相对应的类类型(客户)的0++源代码 100。它包含部分1000a和部分lOOOb,部分1000a包括0++编译器312 所作用的语句,部分1000b包括C+十编译器312忽略的注释语句。然而,根据本实施例,注释语句部分1000b由预编译器316所作用。 每一注释语句1002b-1012b由符号"〃"开头,以使编译器312忽略其后 的内容。注释域中的内容完全是作为编程者的文档因而完全被C十+编译器312 所忽略。在本实施例中,预编译器316被安排来解释这些注释语句。在本实施例中,注释域中的内容包含与构成分布式系统对象有关的功 能(或性能)说明数据。特别是,这些说明数据包括下列说明性数据(a)给定类中所期望的对象数目(或是内存空间的全部相应容量), .(b)利用度,即对象在访问时可用的访问时刻百分比,(c)可访问性,即对象(或是它可能被调用的特定数据)可被访问的不 同访问点的数目(如需要访问此对象的终端或主机的数目),(d皮全性,不同用户对不同数据的访问权限(即是否他们真正可以访 问,如果可以,是可读、可写或两者皆可),(e) 并发性,即可能同时激活一个给定对象或进程的其他进程数目,(f) 时间性,即一个进程必须被完成的最大、平均和/或最小时间, 对于不同的应用,这些功能规范的典型值如下一些可能的应用及它们的功能尺度智能电话网络大小 Cmb) 1000可用性 (%) 99.999访问 (点) 100M并发性 (应用) 10000完整性 CY/N) Y时间性 CMin/Ave/Max) 0/1/100远程表示1090102N0/0/0共享虛拟现实100卯10010N0/1/2企业计算10000099.99醒1000Y0/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,且它可被当作0++程序进行编译并正常运行,编译器 312并不关注由注释语句1000b所定义的功能说明。另一方面,当由预编译器316处理时,功能规范1000b会对生成新的 可编译0++代码和对编译器生成指令产生影响,下面将详细描述。对象的尺寸/数目每个对象类可以与一条尺寸语句相关联,以指明所期望的那个类的对 象数目或所需的存储空间的相应容量。 一般来说,本发明的更优实施例 被安排来解释与所期望的对象数目相关的语句(因为对于编程者来说这 更自然),并通过将这个声明的对象数目和这个类所声明的数据类型的 尺度之和相乘来把它转换成所期望的存储容量。
参考图10,预编译器在2002步被安排来读取与类相关联的任何尺寸 语句并将每一个转换成内存空间尺寸(以M字节为单位),还形成所有 这样内存尺寸的和。如果这样计算的对象模型的整个尺寸足够小以适合单个1M字节 UNIX进程的要求,预编译器则向编译器写一条指令来将此代码编译成一 个单一进程(2006步)。这简化了可能使用的寻址,编译器可以允许对 象通过引用传送数据,因为所有的对象都在同一地址空间中。否则在2008步中,预编译器316向编译器写一条指令来将此代码编 译到多个UNIX进程中。在2010步,预编译器316可以选择代码被编译 到的目标主机的最小数目。选择步骤2004和2010根据存放在系统数据存储器318中的数据被执 行,这些数据指明每一台主机10中有多少内存空间可用。在其他实施例中,这样计算的对象模型的尺寸也可以被用来以另外方 法控制寻址;例如,对象模型的尺寸可以用来指示编译器选择使用内存 寻址(所有对象都可在同一内存空间中被定位)、文件寻址(对于数目 巨大的对象)或对象UID;或使用虚拟内存指针。利用度一种确保特定对象具有高利用度的特定方法是生成一个对象的多个 拷贝(当然在可能情况下需要更新所有拷贝中的数据使其都是一样的)。 一个给定对象的利用度粗略来说与此对象响应时所用的时间成反比例关 系。这样, 一个对象所期望的拷贝数目基本上与此对象的利用度和平均 响应时间成比例。相应地,参考图ll,在3002步中,预编译器316被安排读取对象类 所需的利用度,且在3004步中读取指示类对象的平均操作时间。接下来,在3006步中,预编译器并行地选择已存在的对象拷贝数目
并给出需要的可利用度,并在3008步中,预编译器扩充那个类的构造函 数代码(实例化这个类的新对象)以使所需要的拷贝数在运行时中并发 地被生成(在不同的主机10上)。为了保证数据完整性,在3006步中选择的数目一般来说是1 (在这种 情况下预编译器在3008步中不写入附加代码),除非在需要高利用度的 地方,根据类响应时间和所要求的利用度,象上面所述的那样2份或更 多份拷贝被选择。在其他实施例中,不是参考目标访问时间并相应地生成一个重复对象 的期望数目,重复对象的一个预定数目可被选择(例如2)且对象的访问 时间可被修改(在下面详细描述的事先确定的最小和最大值之间)以适 应它。可访问性因为不同的主计算机10被连接到WAN11、 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,每台主机IO将并行地处理不同对象的多个 进程。参见图14,在6002步预编译器读取与每个类相关联的操作时间。取 决于所有平均操作时间的总和,在6004步预编译器包含一条编译指令来 为每一台主计算机10建立一个高速缓存大小,它与每台主计算机10的 系统数据存储器318中记录的存储容量相符合,以在可用内存中提供与 所需访问时间的总和成反比例的高速缓存大小。 在6006步,对每个类定义测试是否小于平均或最大的操作时间被指 明,且如果是这样,在6008步对那个类选择一个和平均操作时间成反比 例的优先权,在6010步源代码被加入到定义此类的代码中,以实现一个 测试自从类(或类中的特定函数和操作)被激活后预定的时间是否超时 的定时器,如果是,则退出此操作。所选择的权值被写入到一个权值的列表,它由编译器编译并由对象管 理器108针对每台主机IO来使用,根据该权值每个对象运行的优先级被 设置,以使得具有相对较长平均响应时间的对象被操作系统106赋予一 个相对低的优先级的等待并被认为是"后台"任务。概述这样,当预编译器316的操作完成以后,存入到源代码存储器308中 的扩展源代码包括附加源代码和通过下列方法实现功能或性能规范的编 译器指令(a) 将附加代码或数据加入到类代码110中,或(b) 对于所有主计算机10修改对象管理器代码108,或(c) 指示编译器根据不同的主计算机10产生独立版本的对象管理器。 根据此扩展源代码,对于输入源代码中的每一个声明类编译器接下来生成一个包含类代码110的可执行代码文件,并对每一主计算机10也可 以包括对象管理器108。不是对于每一主计算机10编译对象管理器108的代码,最好对于每 一主计算机10提供一个被对象管理器108所采用的数据文件,以修改相 应的操作。这样,当远程通信系统被改动时,例如可用系统信息的改变,如增加 一台新的主计算机或扩充主计算机上的内存,或是因为一个或多个对象 类的功能被改变,在上述的本地测试以后,预编译和编译过程被重复且
新的可执行文件通过广域网络被传送给每一台主机10,就象上面描述的那样。如果一台新的主计算机被简单地加入到系统而没有做其他改动,原来 编译的可执行代码的一份拷贝可能简单地通过广域网络提供给新的主计 算机,使它和已存在的主计算机一样的方式运行。可以看到,被第一种编译器所忽略的语句(例如注释语句)中的系统 特殊要求的规范使得可以在系统释放前对其基本功能进行简单的本地测试,这样当系统运行期间被改动时能尽量减小主计算机10的停机时间。其他改动的实施例及修改从上文看很显然,很多修改和替换都是可以的。例如,尽管由于以上原因,还是可以很方便地将本发明作为一个预编译器和常规的0++编译器合作,同样也可以将本发明集成到一个非常规的编译器中(事实上预 编译器和编译器结合很明确地包含这一点)。自然地,本发明不仅仅对于0++可用,对于其他为分布式环境提供的 面向对象的语言如Smalltalk (TM)同样适用。更一般地讲,也可以将相关的技术应用到非面向对象的语言和非分布式系统中。虽然本发明被描述成远程通信系统中包含的编译装置时,事实上编译器装置可以处于不同的权限中且通过国际远程通信网络可连接到主计算机上;相应地,在权利要求中要求保护与其使用的远程通信网络结合及脱离的编译器装置。自然地,远程通信以外的应用是可能的,例如共享的分布式计算。 许多其他的改动和修改对于有经验的人来说是很显然的。因此本发明旨在包含任何和所有本文所涉及的主题,而不论其是否被其后的权利要求所覆盖。我们其它的英国专利申请9600823.0,在同一日以同样的标题提交, 对本发明是可用的,且结合在此作为参考。尤其是,本文所描述的生成一个类型模型的机制最好扩展成包含每一 个对象的附加数据域,这些域说明根据本发明识别的功能操作数据,然后它们被作为编译好的可执行代码部分提供以便每个对象管理器108使 用。根据此方式,同样的可执行程序可以被提供给每一台主计算机10且 使用存放在存储器318中的系统信息的需求被避免。
权利要求
1.一种远程通信系统,包括一个分布式控制系统,该分布式控制系统包括多个互连的计算机和用于编译计算机控制程序的编译设备,该编译设备包括系统数据存储器,用于存储系统数据;预编译器;编译器;源代码存储器,用于存储源程序;以及可执行代码存储器,用于存储由该编译器产生的可执行代码;该预编译器可操作用以对在该源代码存储器中存储的初始源程序中的注释进行检查,以找到一个或多个所要求的系统操作的具体规范,以及对于这样找到的具体规范或每一个具体规范,访问该系统数据存储器中当前存储的相应的系统数据,评估所要求的系统操作能否被初始源程序满足,且在得到负面评估结果时,产生适当的附加源程序语句和编译器指令,并通过在其中合并所述附加源程序语句和编译器指令来修改该源程序,以及该编译器在该预编译器的操作之后可操作用以响应在该源代码存储器中当前存储的该源程序中的可执行语句,产生可执行代码以及将这样产生的可执行代码存储在该可执行代码存储器中。
2. 根据权利要求1的系统,其中该编译器是独立于该预编译器 的常规编译器。
3. 根据权利要求l的系统,其中该预编译器和该编译器被集成 在一起。
4. 根据权利要求1至3中任一项的系统,其中所需系统操作的 所述一个或多个具体规范与由所述控制程序实现的操作时间有关。
5. 根据权利要求4的系统,其中所述操作时间包含一个或多个 最小操作时间、 一个平均操作时间和一个最大操作时间。
6. 根据权利要求1至3中任一项的系统,其中所需系统操作的 所述一个或多个具体规范与所述系统中预期的等效记录个数有关。
7. 根据权利要求1至3中任一项的系统,其中所需系统操作的 所述一个或多个具体规范与该系统中可能被访问的上述数据记录的 访问点的数目有关。
8. 根据权利要求1至3中任一项的系统,其中所需系统操作的 所述一个或多个具体规范与被允许访问上述数据记录或其一部分的 用户类别有关。
9. 根据权利要求1至3中任一项的系统,其中所需系统操作的 所述一个或多个具体规范与上述数据必须立即可用的程度有关。
10. —种用于编译分布式控制系统的程序的设备,该设备包括 系统数据存储器,用于存储系统数据;预编译器; 编译器;源代码存储器,用于存储源程序;以及可执行代码存储器,用于存储由该编译器产生的可执行代码; 该预编译器可操作用以对在该源代码存储器中存储的初始源程序中的注释进行检查,以找到一个或多个所要求的系统操作的具体规 范,以及对于这样找到的具体规范或每一个具体规范,访问该系统数 据存储器中当前存储的相应的系统数据,评估所要求的系统操作能否 被初始源程序满足,且在得到负面评估结果时,产生适当的附加源程 序语句和编译器指令,并通过在其中合并所述附加源程序语句和编译 器指令来修改该源程序,和该编译器在该预编译器的操作之后可操作用以响应在该源代码 存储器中当前存储的该源程序中的可执行语句,产生可执行代码以及 将这样产生的可执行代码存储在该可执行代码存储器中。
11. 根据权利要求io的设备,其中该编译器是独立于该预编译器的常规编译器。
12. 根据权利要求10的设备,其中该预编译器和该编译器被集 成在一起。
13. —种用于产生在分布式计算系统上执行的代码的方法,该方法包括产生初始源代码程序,它包括定义上述代码结构的可执行语句, 和包含所需系统操作的具体规范的注释;访问来自于该分布式计算系统存储器的适当的系统操作参数,该 存储器包含有当前系统操作参数;评估所需的系统操作是否能被该初始源程序满足;在得到负面评估结果时,产生适当的附加源程序语句和编译器指 令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中 来产生修改后的源程序;和响应该初始源程序中的可执行语句,或在上述得到负面评估结果时对该修改后的源程序进行响应,以产生用于在上述分布式计算系统 上执行的可执行代码。
14. 根据权利要求13的方法,其中上述分布式系统是远程通信 系统。
15. —种用于产生在分布式计算系统上执行的代码的方法,该方 法包括检查初始源程序中的注释,该初始源程序包括定义上述代码结构 的可执行语句和包含所需系统操作的具体规范的注释,以便找到所述 具体规范;对于这样找到的每一个具体规范,访问来自于该分布式计算系统 的存储器的相应的系统数据;基于该具体规范和该相应的系统数据,评估所需的系统操作是否 能被该初始源程序满足;在得到负面评估结果时,产生适当的附加源程序语句和编译器指 令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中 来产生修改后的源程序;和响应该初始源程序中的可执行语句,或在上述得到负面评估结果 时,对该修改后的源程序进行响应,以产生用于在上述分布式计算系 统上执行的可执行代码。
16. —种用于产生在分布式计算系统上执行的代码的产品,包括 产生初始源代码程序的装置,该初始源代码程序包括定义上述代码结构的可执行语句,和包含所需系统操作的具体规范的注释;访问来自于该分布式计算系统存储器的适当的系统操作参数的 装置,该存储器包含有当前系统操作参数;评估所需的系统操作是否能被该初始源程序满足的装置; 在得到负面评估结果时、产生适当的附加源程序语句和编译器指令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中来产生修改后的源程序的装置;和响应该初始源程序中的可执行语句,或在上述得到负面评估结果时,对该修改后的源程序进行响应,以产生用于在上述分布式计算系统上执行的可执行代码的装置。
17. —种用于产生在分布式计算系统上执行的代码的产品,包括: 检査包括定义上述代码结构的可执行语句和包含所需系统操作的具体规范的注释的初始源程序中的注释,以便找到所述具体规范的装置;对于这样找到的每一个具体规范,访问来自于该分布式计算系统 的存储器的相应的系统数据的装置;基于该具体规范和该相应的系统数据,评估所需的系统操作是否 能被该初始源程序满足的装置;在得到负面评估结果时,产生适当的附加源程序语句和编译器指 令,并通过将该附加源程序语句和编译器指令合并到该初始源程序中 来产生修改后的源程序的装置;和响应该初始源程序中的可执行语句,或在上述得到负面评估结果 时,对该修改后的源程序进行响应,以产生用于在上述分布式计算系 统上执行的可执行代码的装置。
全文摘要
一种远程通信系统,包括分布式控制系统,该分布式控制系统包括多个互连的计算机和用于编译计算机控制程序的编译设备,该编译设备包括系统数据存储器,用于存储系统数据;预编译器;编译器;源代码存储器,用于存储源程序;以及可执行代码存储器,用于存储由该编译器产生的可执行代码;该预编译器可操作用以对在该源代码存储器中存储的初始源程序中的注释进行检查,该编译器在该预编译器的操作之后可操作用以响应在该源代码存储器中当前存储的该源程序中的可执行语句,产生可执行代码以及将这样产生的可执行代码存储在该可执行代码存储器中。
文档编号G06F9/46GK101154165SQ20071016986
公开日2008年4月2日 申请日期1997年1月7日 优先权日1996年1月16日
发明者保罗·安冬尼·马丁 申请人:英国电讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1