在分布式系统中租用组成员资格的方法、装置和产品的制作方法

文档序号:6418925阅读:142来源:国知局
专利名称:在分布式系统中租用组成员资格的方法、装置和产品的制作方法
相关发明本申请是美国专利申请号08/729,421(1996年10月11日申请)的部分续展申请,并作为参考资料在此引入。
现引证下列美国专利申请作为本申请依据并归并于本申请中。
1998年2月26日申请的发明名称为“分布式计算系统”(“DistributedComputing System”)的临时美国专利申请U.S.Ser.No.:60/076,048。
上述相同日期申请的发明名称为“用于租用存储的方法和系统”(“Methodand System for Leasing Storage”)(标注有代理人案卷号No.:06502.0011-01000)的美国专利申请U.S.Ser.No.:09/044,923。
上述相同日期申请的发明名称为“用于在分布式系统中租用委派证的方法、装置和产品”(“Method,Apparatus,and Product for Leasing ofDelegation Certificates in a Distributed System”)(标注有代理人案卷号No.:06502.0011-02000)的美国专利申请U.S.Ser.No.:09/044,838。
上述相同日期申请的发明名称为“故障检测的租用”(“Leasing forFailure Detection”)(标注有代理人案卷号No.:06502.0011-04000)的美国专利申请U.S.Ser.No.:09/044,916。
上述相同日期申请的发明名称为“基于事件的系统中用于传输行为的方法”(“Method for Transporting Behavior in Event Based System”)(标注有代理人案卷号No.:06502.0054-00000)的美国专利申请U.S.Ser.No.:09/044,933。
上述相同日期申请的发明名称为“分布式系统中对象的延迟重组和事件通知的远程装载”(“Deferred Reconstruction of Objects and Remote Loadingfor Event Notification in a Distributed System”)(标注有代理人案卷号No.:06502.0062-01000)的美国专利申请U.S.Ser.No.:09/044,919。
上述相同日期申请的发明名称为“用于远程定义法调用的方法和装置”(“Methods and Apparatus for Remote Method Invocation”)(标注有代理人案卷号No.:06502.0102-00000)的美国专利申请U.S.Ser.No.:09/044,938。
上述相同日期申请的发明名称为“用于确定性散列识别远程定义法的方法和系统”(“Method and System for Deterministic Hashes to identify RemoteMethods”)(标注有代理人案卷号No.:06502.0103-00000)的美国专利申请U.S.Ser.No.:09/045,652。
上述相同日期申请的发明名称为“用于确定分布式系统内远程对象状态的方法和装置”(标注有代理人案卷号No.:06502.0104-00000)的美国专利申请U.S.Ser.No.:09/044,790。
上述相同日期申请的发明名称为“分布式系统中用于执行与远程进程调用相关联的处理的可下载灵巧代理”(“Downloadable Smart Proxies forPerforming Processing Associated with a Remote Procedure Call in aDistributed System”)(标注有代理人案卷号No.:06502.0105-00000)的美国专利申请U.S.Ser.No.:09/044,930。
上述相同日期申请的发明名称为“远程定义法的暂停和继续”(“Suspension and Continuation of Remote Methods”)(标注有代理人案卷号No.:06502.0106-00000)的美国专利申请U.S.Ser.No.:09/044,917。
上述相同日期申请的发明名称为“数据库中用于多索引条目以及多模板匹配的方法和系统”(“Method and System for Multi-Entry and Multi-TemplateMatching in a Database”)(标注有代理人案卷号No.:06502.0107-00000)的美国专利申请U.S.Ser.No.:09/044,835。
上述相同日期申请的发明名称为“数据库中用于原地修改的方法和系统”(“Method and System for In-Place Modifications in a Database”)(标注有代理人案卷号No.:06502.0108)的美国专利申请U.S.Ser.No.:09/044,839。
上述相同日期申请的发明名称为“数据库中用于类型安全属性匹配的方法和系统”(“Method and System for Typesafe Attribute Matching in aDatabase”)(标注有代理人案卷号No.:06502.0109-00000)的美国专利申请U.S.Ser.No.:09/044,945。
上述相同日期申请的发明名称为“分布式系统中动态查询服务”(“DynamicLookup Service in a Distributed System”)(标注有代理人案卷号No.:06502.0110-00000)的美国专利申请U.S.Ser.No.:09/044,931。
上述相同日期申请的发明名称为“分布式系统中提供可下载代码用于与一设备通信的装置和方法”(“Apparatus and Method for ProvidingDownloadableCode for Use in Communicating with a Device in a Distributed System”)(标注有代理人案卷号No.:06502.0112-00000)的美国专利申请U.S.Ser.No.:09/044,939。
上述相同日期申请的发明名称为“便于存取查找服务的方法和系统(Method and system for Facilitating Access to a Lookup Service”),(标注有代理人案卷号No.:06502.0113-00000)的美国专利申请U.S.Ser.No.:09/044,826。
上述相同日期申请的发明名称为“分布式系统中用于动态验证信息的装置和方法”(“Apparatus and Method for Dynamically Verifying Informationin a Distributed System”)(标注有代理人案卷号No.:06502.0114-00000)的美国专利申请U.S.Ser.No.:09/044,932。
1998年2月26日申请的发明名称为“用于网络上动态分布式计算的方法和装置”(“Method and Apparatus for Dynamic Distributed Computing Overa Network”)的美国专利申请U.S.Ser.No.:09/030,840。
上述相同日期申请的发明名称为“永久性共享存储空间的交互设计工具”(“An Interactive Design Tool for Persistent Shared Memory Spaces”)(标注有代理人案卷号No.:06502.0116-00000)的美国专利申请U.S.Ser.No.:09/044,936。
上述相同日期申请的发明名称为“基于多形态令牌的控制”(“PolymorphicToken-Based Control”)(标注有代理人案卷号No.:06502.0117-00000)的美国专利申请U.S.Ser.No.:09/044,934。
上述相同日期申请的发明名称为“基于堆栈的访问控制”(“Stack-BasedAccess Control”)(标注有代理人案卷号No.:06502.0118-00000)的美国专利申请U.S.Ser.No.:09/044,915。
上述相同日期申请的发明名称为“基于堆栈的安全要求”(“Stack-BasedSecurity Requirements”)(标注有代理人案卷号No.:06502.0119-00000)的美国专利申请U.S.Ser.No.:09/044,944。
上述相同日期申请的发明名称为“安全要求的全定义法指定”(“Per-Method Designation of Security Requirements”)(标注有代理人案卷号No.:06502.0120-00000)的美国专利申请U.S.Ser.No.:09/044,837。
A.发明领域本发明通常涉及数据处理系统,并且特别涉及在数据处理系统中租用对象的组成员资格(group membership)。
B.相关技术的描述适当资源管理对于有效使用计算机是一个重要方面。一般,资源管理包括响应于请求分配资源(例如,存储器)以及在适当的时候(例如,当该请求者不再要求资源时)除去分配资源。一般,资源包括在计算机中执行的计算实体(例如,应用、程序、小应用程序,等等)所参照的数据。
实践中,当在计算机上执行的应用寻求参照资源时,计算机必须首先分配或指定资源,从而应用可适当地参照它们。当应用不再参照资源,那么计算机可以去分配或回收资源重新使用。在计算机中,每个资源具有唯一“句柄(handle)”,通过该句柄可参照该资源。可通过各种方法(诸如,地址、阵列索引、唯一值、指针,等等)来实施该句柄。
资源管理对于单个计算机来说相对简单,因为容易确定指示何时可回收资源的事件(诸如,何时应用不再参照它们或者在掉电之后)。对于连接多个计算机的分布式系统而言,资源管理就较难一些了,因为在几个不同计算机中的应用都可应用相同的资源。
在分布式系统中的断开可能导致不适当和过早回收资源或者回收资源失败。例如,在分布式系统中的不同计算机上操作的多个应用可参照位于其他机器上的资源。如果在设有资源的计算机与参照那些资源的应用之间的连接被中断,那么计算机可能过早地回收资源。另一方面,尽管应用不能访问资源的时间很长,但是计算机还是可永久地保持该资源。
这些困难导致发展系统来管理网络资源,其中之一被称为“分布式垃圾收集”。该术语描述了由用于分布式系统的语音或运行期系统提供的能够自动管理由在网络中的不同计算机上的应用或应用组所用到的资源的功能(facility)。
一般,垃圾收集运用当任一应用部分不再参照资源时可释放它们以供将来使用的概念。分布式垃圾收集扩展这一概念到分布式计算领域,当没有应用在任何计算机上引用它们时,回收资源分布式垃圾收集必须在分配资源和引用这些资源之间保持完整性。换句话说,当在网络中的任一计算机上运行的应用继续参照该资源时,不能允许该系统去分配或释放资源。这种参照资源结合(reference-to-resourcebinding)(被称为“参照完整性”)不保证该参考总是允许访问它所参照的资源。例如,网络故障可导致该访问不可行。然而,完整性保证了如果可用该参考来获得对任一资源的访问,那么它将是首先参照的相同的资源。
运用垃圾收集的分布式系统还必须回收在有限的将来不再参照的资源。换句话说,系统必须提供没有“存储漏洞”的保证。存储漏洞通常在所有应用撤消对资源的参考时发生,但是由于例如错误地确定一些仍然参照该资源的应用,所以系统不能回收资源来重新使用。
参照完整性故障和存储漏洞通常导致在参照该资源的应用和管理这些资源的分配和去分配的垃圾收集系统之间断开。例如,断开在参照资源的应用和管理该资源的垃圾收集系统之间的网络连接可能阻止垃圾收集系统确定是否以及何时回收资源。另一方面,垃圾收集系统可能错误地确定由于应用不在预定时间内访问资源,所以它可收集该资源。以用大量技术来通过尝试保证这种机理在没有存储漏洞的条件下保持参照完整性,提高分布式垃圾收集机理。一种传统的方法用参考计数(reference counting)形式,其中对于参考每个资源的应用数进行计数。当资源的计数到了零时,垃圾收集系统可回收资源。然而,这种资源计数方法只有在用相应的参考计数器来产生资源时才有用。在这种情况下,当附加应用参考该资源时,垃圾收集系统递增资源的参考计数,而当应用不再参考该资源时便递减计数。
然而,特别在分布式系统中可能发生故障的情况下,参考计数方法就有问题。这种故障可采取计算机或应用故障或网络故障的形式,它们阻止传递通知垃圾收集系统一个资源不再参考的消息。如果由于网络断开而不传递消息,那么垃圾收集系统不知道何时回收资源。
为了阻止这种故障,一些传统参考计数方法包括“保持活性(keepalive)”消息,它们还被称为“砰回(ping back)”。根据该方法,在网络中的应用把消息发送到监督资源的垃圾收集系统,并指示应用仍可传播。这些消息阻止垃圾收集系统丢失对资源的参考。不能接收到这种“保持活性”消息意味着垃圾收集系统可递减对于资源的参考计数,并当计数到零时,垃圾收集系统可回收该资源。然而,这仍可导致在由于网络故障而不能接收“保持活性”消息发生的参考计数达到零之后过早回收资源。这破坏了参考完整性需求。
解决在垃圾收集系统中的参考完整性问题的另一个建议方法是不仅保持参考计数,而且还保持与参考资源的每个计算实体相对应的标识符。参见A.Birrell等人所著的“对于网络对象的分布式垃圾收集”(号116,数字系统研究中心,1993年12月15日)。这种方法存在着于参考计数方法相同的问题。此外,该方法要求对于参考每个资源的每个计算实体的附加唯一标识符,添加开销,这导致在分布式系统中不必要地增加通信以及增加存储要求(即,与参考每个资源的应用相对应的标识符表)。
发明概述根据本发明,通过在分布式系统中的各方(例如,保持参考资源的应用和管理该资源的垃圾收集系统)同意保证资源和对该资源的参考期间租用资源,保证参考完整性而没有昂贵的存储漏洞。在租用日期结束时,对参考资源的保证将继续,允许垃圾收集系统回收资源。由于保持参考资源的应用以及管理该资源的垃圾收集系统同意有限的保证租用时期(period),所以这两者都可知道租用和保证何时期满。这保证了在参考租用持续时间内的参考完整性,并避免了由于网络差错而不能释放资源的情况。
根据本发明的另一个实施例(如在下面将具体描述),提供了一种租用组成员资格的方法。该方法包括下列步骤接收来自远程对象的特定激活组和租用日期的租用请求,并确定将远程对象与在激活组中的其他对象(如果有的话)相同的地址空间相关联并在其中运行的租用日期。
附图简述加入并构成本说明书一部分的附图示出了本发明的实施例,并于说明书一起用来解释本发明的优点和原理。在附图中,

图1是根据本发明的实施方法由应用调用处理器执行的步骤的流程图;图2是根据本发明的实施方法由服务器调用处理器执行的处理肮脏调用的步骤的流程图;图3是根据本发明的实施方法由服务器调用处理器执行的处理清除调用(clear call)的步骤的流程图;图4是根据本发明的实施方法由服务器调用处理器执行的启动垃圾收集处理的步骤的流程图5是在分布式处理系统中较佳调用流的示图;图6是根据本发明的实施方法调用(invocation)服务的组件的方框图;图7是可用在本发明的实施过程中的分布式处理系统的示图;图8是根据本发明的实施方法在分布式处理系统的平台中的各软件组件(component)的示图;图9是使用本发明的另一个实施例使用的数据处理系统的示图;图10是根据本发明的另一个实施例,当改变激活组时由对象执行的步骤的流程图;图11是由图9的激活影子进程(daemon)执行的步骤的流程图;和图12是根据本发明的另一个实施例,当远程对象要求到激活组的成员资格时由激活组执行的步骤的流程图。
详细描述下面,详细描述在附图中所示的本发明的实施方法。其中,在附图和下面的说明中用相同标号表示相同或相似的部分。
由以传统分布式处理系统体系结构组成的计算机实施本发明。然而,实施本发明的体系结构和步骤不是传统的,因为对于它们提供保证参考完整性并消除存储漏洞的分布式垃圾收集方案。
A.概观位于分布式处理系统中的每个计算机中的方法调用(MI)组件实施本发明的分布式垃圾收集方案。MI组件可包括最好以JAVATM编程语言编写的多个软件模块。
一般,无论何时在分布式处理系统中的应用通过名称查询作为对一些其他调用的返回值或另一种方法和搜寻存取资源获得对分布式资源的参照,应用调用资源或管理该资源的MI组件。该MI组件(称为管理MI组件)留意对该资源的未完结(outstanding)参考的数量。当对一资源(参考)的参照数是零时,管理MI组件可回收资源。通常将对一资源的参考数的计数称为“参考计数”,而且还将递增参考计数的调用称为“肮脏调用(dirty call)”。
当应用不再要求分布式资源时,它把不同调用发送到该资源或管理MI组件。一旦接收到该调用,管理MI组件递减对于该资源的参考计数。可将这种丢失参考的调用称为“清除调用(clean call)”。
根据本发明的实施方法,肮脏调用可包括用于参考资源的请求时间间隔,被称为租用日期。一旦接收到肮脏调用,管理MI组件发出表示允许租用的时期的返回调用。管理MI组件跟踪用于那些参考的租用日期以及未完结参考的数量。结果,当对资源的参考计数到零时或当对于资源的租用日期期满时,管理MI组件可回收资源。
B.过程在MI组件中的应用调用处理器执行如图1所式的应用调用过程100的步骤。在管理MI组件中的服务器调用处理器分别执行如图2-4所示的过程200、300和400的步骤,管理MI组件的垃圾收集器根据服务器调用处理器的指令,执行传统的过程来回收前面必定参照的资源。因此,不解释对于垃圾回收器的传统过程。
1.应用调用处理器图1是过程100的流程图,其中MI组件的应用调用处理器用该过程100来处理对于参考由分布式处理系统中的相同或另一个MI组件管理的资源的应用请求。
在应用已获得对资源的参考之后,应用调用处理器把肮脏调用,包括资源的参考和所请求的租用日期,发送到对于该资源的管理MI组件(步骤110)。可把肮脏调用发送到资源本身或管理MI组件。
于是,应用调用处理器等待和接收来自管理MI组件(步骤120)的返回调用。返回调用包括准许租用日期,在该时期内管理MI组件保证肮脏调用的参考将该资源结合。换句话说,管理MI组件不同意在准许时期(grant period)内收集与肮脏调用的参考相对应的资源。如果管理MI组件不提供准许时期,或者拒绝租用请求,那么应用调用处理器将必须发出另一个肮脏调用直至它接收到准许时期。
应用调用处理器监视该应用对参考的运用,而且或者当应用清楚地通知应用调用处理器不再需要该参考或者当应用调用处理器本身作出这个决定(步骤130)时,应用调用处理器向管理MI组件发出清除调用(步骤140)。通过类似于用于肮脏调用的方法,可将清除调用直接送到参考的资源,而且管理MI组件将处理清除调用。后来,应用调用处理器从该应用所用到的参考表中去除该参考(步骤150)。
如果用该参考该应用还未做完(步骤130),但是应用调用处理器确定该参考的准许时期大约期满(步骤160),于是应用调用处理器重复步骤110和120以保证由代表该应用的管理MI组件保持对该资源的参考。
2.服务器调用处理器MI组件的服务器调用处理器执行三个主要过程(1)处理肮脏调用;(2)处理输入(incoming)清除调用;和(3)启动垃圾收集循环以在适当的时候回收资源。
(ⅰ)肮脏调用图2是过程200的流程图,其中MI组件的服务器调用处理器用该过程来处理MI软件组件管理的参考资源的请求,即,肮脏调用。这些请求来自分布式处理系统中的MI组件的应用调用处理器,包括相同MI组件的应用调用处理器作为处理请求的服务器调用处理器。
首先,服务器调用处理器接收肮脏调用(步骤210)。服务器调用处理器确定可接受的准许时期(步骤220)。准许时期可于请求的租用日期或一些其他时间时期相同。服务器调用处理器根据大量条件(包括所请求的资源量和前面对于相同资源准许的其他准许时期数)确定适当的准许时期。
当服务器调用处理器确定不分配资源用于参考肮脏调用(步骤230),服务器调用处理器分配所需的资源(步骤240)。
于是,服务器调用处理器递增与肮脏调用的参考相对应的参考计数(步骤250),设定用于参考资源结合的可接受准许时期(步骤260)和以准许时期把返回调用发送到应用调用处理器(步骤270)。通过这种方法,服务器调用处理器控制关于在它的控制下的资源参考的输入肮脏调用。
应用可通过在当前租用期满之前请求延长而发送肮脏调用来延长租用。如过程200所示,将延长租用的请求视为如同初始请求租用。延长只意味着在一些附加时间间隔内不回收资源,除非参考计数到零。
(ⅱ)清除调用MI组件的服务器调用处理器还处理来自应用调用处理器的输入清除调用。当在分布式处理系统中的应用不再要求参考资源时,它通知管理所参考的资源的MI组件,从而可回收资源来重新使用。图3是带有MI组件的服务器调用处理器用来处理清除调用的步骤的过程300的流程图。
当服务器调用处理器接收带有MI组件管理的资源参考的清除调用时(步骤310),服务器调用处理器递减相应的参考计数(步骤320)。可把清除调用发送到该资源,同时服务器调用处理器监视资源并执行过程300来处理调用。结果,服务器调用处理器将返回调用发送到MI组件,它发送清除调用以确认接收(步骤330)。根据本发明的实施方法,不能重新使用丢失参考的清除调用,但是必须确认它。
(ⅲ)垃圾收集服务器调用处理器还启动垃圾收集循环来回收资源,为此它确定是对该资源不做任何参考还是对于该资源的同意租用日期已期满。如图4所示的过程400包括服务器调用处理器用来启动垃圾收集循环的步骤的流程图。
服务器调用处理器监视参考计数以及准许的租用日期,并确定对于MI组件所管理的资源,参考计数是否为零,或者对于该参考的准许时期是否已期满(步骤410)。当任一条件存在时,服务器调用处理器启动该资源的垃圾收集(步骤420)。否则,服务器调用处理器继续监视参考计数和准许租用日期。
C.调用流程图5是示出在分布式处理系统中的MI组件之间的调用流程图。管理MI组件525通过监视对那些资源530的参考来管理资源530(参见垃圾收集505)。由于管理MI组件525管理资源,所以管理MI组件525的服务器调用处理器执行该调用流程描述的操作。
图5还分别示出应用510和540具有相应的MI组件515和545。每个应用510和540都获得对一个资源530的参考,并寻求获得访问资源530之一,从而必定对相应的资源做参考。为了获得访问,应用510和540分别调用它们的相应MI组件515和545,以分别将肮脏调用551和571发送到MI组件525。由于MI组件515和525处理应用请求来访问另一个MI组件(诸如,管理MI组件525)管理的资源530,所以MI组件515和545的应用调用处理器执行该调用流程描述的操作。
响应于肮脏调用551和571,管理MI组件525分别把返回调用552和572发送到每个MI组件515和545。肮脏调用包括用于肮脏调用551和571的参考的准许租用日期。
类似地,图5还示出MI组件515和545,它们分别把清除调用561和581发送到管理MI组件525。清除调用561和581通知管理MI组件525应用510和540分别不再请求访问在清除调用561和581规定的资源。管理MI组件525分别以返回调用562和582响应于清除调用561和581。返回调用562和582与返回调用552和572的不同之处在于返回调用562和582是来自接收到的清除调用561和581的M1组件525的简单确认。
应用510和540都请求访问相同的资源。例如,应用510可请求访问“RESOURCE(1)”,同时前面准许应用540访问该资源。MI组件525通过在同意的租用日期内使该资源对应用510和540都可用来处理这种情况。于是,MI组件525将不启动垃圾收集循环来回收“RESOURCE(1)”直至应用510和540都丢下它们对该资源的参考或者最近的同意时期已期满,任何一种情况都首次发生。
通过允许多于一个应用同时访问相同资源,本发明还允许应用在它把清除调用发送到管理MI组件以丢下对资源的参考之后,访问资源。发生这种情况是因为仍由另一个应用参考该资源或者参考的租用还没有期满,从而管理MI组件525还不回收资源。然而,在有限时期之后,或者当不再有任何应用租用或当最后租用期满时,回收资源。
D.MI组件图6是根据本发明的实施方法的MI组件600的模块的方框图。MI组件600可包括对于上述每个参考监控的参考组件605、应用调用处理器640、服务器调用处理器650和垃圾收集器660。
参考组件605最好用参考数据部分610、参考计数620和准许时期寄存器630构成一张表格或可比较结构。MI组件600将参考计数620和准许时期630用于在相应参考数据部分610中规定的每个参考,来确定何时启动垃圾收集器660回收相应资源。
应用调用处理器640是执行图1中的过程100的步骤的软件模块。服务器调用处理器650是执行图2-4中的过程200、300和400的步骤的软件模块。垃圾收集器660是响应于来自服务器调用处理器650的指令回收资源的软件模块,如上所述。
E.分布式处理系统图7示出可用来执行本发明的分布式处理系统50。在图7中,分布式处理系统50包括以由网络云(network cloud)55表示的网络结构连接的三个独立和异构平台100、200和300。由图7中的云55表示的网络结构的组合和协议并不重要,只要它允许在平台700、800和900之间进行信息传播。此外,用三个平台仅仅是为了说明而不是将本发明局限于用特定数量的平台。此外,特定为了体现结构对于本发明并不关键。例如,可根据本发明使用的另一种网络体系结果可将一个平台用作所有其他平台连接到其上的网络控制器。
在分布式处理系统50的实施方法中,平台700、800和900中的每个平台都分别包括处理器710、810和910和存储器750、850和950。包括在每个处理器710、810和910中的分别是应用720、820和920;操作系统740、840和940以及MI组件730、830和930。
应用720、820和920可以是前面被写入并修正以根据本发明工作或者特别被写入以利用由本发明提供的服务的程序。应用720、820和920启动操作以根据本发明执行。
MI组件730、830和930对应于参照图6所述的MI组件600。
操作系统740、840和940分别是依靠相应处理器710、810和910的标准操作系统。平台700、800和900可以是异构。例如,平台700具有SunMicrosystem Corp.制造的UltraSparc微处理器作为处理器710,并用Solaris操作系统740。平台800具有由Silicon Graphics Corps制造的MIPS微处理器作为处理器810并用Unix操作系统840。最后,平台900具有由IntelCorp.制造的Pentium微处理器作为处理器910并运用Microsoft Windows95操作系统940。本发明并不局限于此,还可容纳同构平台。
Sun,Sun Microsystem、Solaris、Java和Sun Logo是Sun Microsystems,Inc.在美国和其他国家的商标或已登记商标。许可使用UltraSparc和所有其他SPARC商标,而且是SPARC International Inc.在美国和其他国家的商标。带有SPARC商标的产品是根据Sun Microsystems,Inc.开发的体系结构。
存储器750、850和950具有几个功能,诸如用于相关平台的通用存储器。另一个功能是分别在处理器710、810和910执行之前存储应用720、820和920;MI组件730、830和930以及操作系统740、840和940。此外,存储器部分750、850和850可构成网络50中的所有平台700、800和900可用的共享存储器。
E.MI服务可用客户/服务器模式实施本发明。客户产生请求,诸如肮脏调用和清除调用,而且服务器响应该请求。
如图7所示的每个MI组件730、830和930最好包括客户组件和服务器组件。图8示出了客户平台100和服务器平台110的方框图,它采用了图7中的平台700、800和900的任意两个。
平台1000和1100分别包括存储器1050和1150以及处理器1010和1110。在平台1000和1100中的元件起到类似于上面参照图7所述的元件的功能。在该例子中,处理器1010执行客户应用1020和处理器1110执行服务器应用1120。处理器1010和1110还分别执行操作系统1040和1140以及MI组件1030和1130。
MI组件1030和1130都包括服务器调用处理器1031和1131;应用调用处理器1032和1132和垃圾收集器1033和1133。每个MI组件1030和1130还包括参考组件,它们分别包含对于各MI组件1030和1130监视的每个参考的参考数据部分1034和1134;参考计数1035和1135以及准许时期寄存器1036和1136。
应用调用处理器1032和1132表示客户服务并分别与表示服务器服务的服务器调用处理器1031和1131进行通信。由于平台1000和1100包括服务器调用处理器、应用调用处理器、垃圾收集器和参考组件,平台可作为客户或服务器。
然而,为了讨论下列情况,平台1000被指定为客户平台和平台1100被指定为服务器平台。在该例子中,客户应用1020获得对分布式资源的参考,并用MI组件1030来把肮脏调用送到由服务器平台1100的MI组件1130管理的资源。
此外,服务器平台1100可执行服务器应用1120。服务器应用1120还可用MI组件1130来发送肮脏调用,其中当MI组件1130管理那些肮脏调用的资源时,可由MI组件1130处理上述肮脏调用。另一方面,服务器应用1120可用MI组件1130来把肮脏调用发送到由MI组件1030管理的资源。
因此,对于客户平台1000的MI组件1030的服务器调用处理器1031、垃圾收集器1033和参考计数1035不是活动的,因此在图8用阴影线表示。同样,服务器平台1100的MI组件1130的应用调用处理器1132也用阴影线表示因为它还处于静止状态。
当客户应用1020获得与资源相对应的参考时,应用调用处理器1032发送服务器调用处理器1131接收到的肮脏调用。肮脏调用包括请求租用日期。服务器调用处理器1131递增对于在肮脏调用中的参考的参考计数1135,并确定准许时期。作为响应,服务器调用处理器1131在准许时期内把返回调用发送到应用调用处理器1030。应用调用处理器1032用准许时期来更新记录的准许时期1035,并确定何时回收与它的肮脏调用相对应的资源。
服务器调用处理器1131还监视与对它管理的资源参考相对应的参考计数和准许时期。当它的参考计数1135之一是零时,或者当对于参考的准许时期1135期满时,无论首先发生哪种情况,服务器调用处理器1131都启动垃圾收集器1133来回收与具有参考计数零或期满准许时期的参考相对应的资源。
根据本发明的实施方法的租用参考方案不要求包含在协议内的平台1000和1100上的时钟同步。该方案只要求它们的可比较时期增加。租用不在特定时刻到期,但是在特定时间间隔之后到期。只要在时间间隔上大致一致,平台1000和1100将对于准许租用日期大致一致。此外,由于对计算机而言,租用时间是很长的,所以时钟速率的微小差别的影响不大或没有影响。
肮脏调用的传输时间可影响协议。如果MI组件1030保持租用参考并等待直至在租用期满之前请求更新,那么租用可在MI组件1130接收请求之前期满。如果是这样的话,MI组件1130可在接收到更新请求之前回收资源。于是,考虑到发送到处理肮脏调用的平台的时间,当发送肮脏调用时,发送者应把时间因子添加到请求的租用日期,从而可在资源租用日期到期之前更新肮脏调用。
F.总结根据本发明,分布式垃圾收集方案通过提供对应于在分布式处理系统中的资源参考的准许租用日期,保证参考完整性并消除存储漏洞,从而当准许的租用日期到期时,对资源的参考也到期。于是,可收集资源。当在分布式处理系统中的处理参照分配给资源参考的计数器不再参考资源时,还可收集资源。
本发明的另一个实施例如上所述,租用技术与垃圾收集相关。然而,本发明的另一个实施例,如下所述,可用来管理在激活组(activation group)中的对象成员资格。
在利用JavaTM编程环境(“示例分布式系统”)的分布式系统中,对象包含可远程调用的方法。可由客户运用JavaTM远程方法启动系统(RMI)(作为Mountain View,CA的Sun Microsystem,Inc.制造的Java Software开发套件部分售出)调用这些方法。在示例分布式系统中,当客户对远程对象调用一种方法时,该对象可能不在远程机器上的存储器中。在这种情况下,在远程机器上的已知为激活影子进程的RMI组件启动JavaTM虚拟机(JVM)然后激活该对象。Java虚拟机还作为Java软件开发套件部分提供,并在Lindholm和Yellin中详细描述。Java虚拟机说明书(Addison-Wesley(1997)),并作为参考资料在此引入。“激活对象”使得将对象带到辅助存储器的存储空间并调用所要求的方法。应注意,该对象和JVM都在单个地址空间中运行。每次客户调用已不在存储器中的用于远程对象的一种方法,都重复该处理。在待批美国专利申请号__(发明名称为“在分布式系统中的动态查找服务”,作为参考资料在此引入)中详细描述了示例分布式系统。
将对象带到它们自己的地址空间一次一个的缺点在于它不充分。由于将每个对象装入分开的地址空间,所以要求装入的对象跨过处理边界来访问另一个装入的对象,它要求充分的处理时间。因此,可以将相关对象装入相同地址空间以避免跨过处理边界并促进参考的局域性,因为相关对象通常趋于相互访问。在另一个实施例中,把相关对象组成对象组或者一组对象。因为在一组中的对象相互相关,所以它们足以在相同JVM上运行,且后来在相同地址空间中运行。通过在相同地址空间中在相同JVM上运行,相关对象可充分地相互访问(即,直接,而不必跨过处理边界)。
在相关对象成组的情况下,当客户程序对远程对象调用一种方法时,激活进程确定该远程对象是否是已知为激活组的一组远程对象的成员。如果该对象属于激活组且还没有将该组装入存储器,那么激活进程将启动JVM并将该对象装入JVM的地址空间中。后来调用对激活组中的其他对象的方法将导致激活进程将这些对象装入相同地址空间。一旦将所要求的对象装在JVM上,激活影子进程将激活该对象,而且调用所请求的方法。
在JVM中将相关对象组成在一起的缺点是特定对象可能独占激活组的可用资源从而损害了其他组成员。例如,在带有多个对象的白板(white-board)程序运用光标对象想要画显示器的公共区域,将光标对象装入想用它的激活对象组。当想用它的对象允许光标对命令作出快速响应时,把光标对象设置在相同的地址空间,因为在没有跨过处理边界的情况下访问光标对象。然而,当特殊对象独占光标对象的时间如此之长以至于负面影响想用光标对象的其他对象时,会产生问题。
另一个实施例通过对位于激活组中的对象采用租用技术来消除独占的威胁。租用保证了在激活组中没有任何对象可独占另一个对象。例如,每个对象必须请求租用来加入激活组(即,获得进入激活组的成员资格)。激活组本身确定准许租用的时间有多长。对于白板程序,激活组可准许很短的租用。这保证了没有对象可独占光标对象,因为在每个对象的租用时间到期时,便从激活组中将它抽出。
在另一个实施例中,对象请求租用是激活组的成员。对象必须规定它希望成员资格持续的时间(租用日期),而且由对象(激活组对象)表示和管理的激活组确定准许租用的时间多长。除了时间时期之外,租用请求包括对象是否要确切租用的指示。当要求租用时,对象可请求确切的租用日期。在这种情况下,激活组只准许租用该对象,如果准许的租用日期是所请求的整个租用日期。
每个对象由租用管理到激活组中的。即使租用到期,还可为该对象提供到它自己的激活组中的成员资格,直至它要求成为不同激活组的成员。
一旦对象要求从激活组租用,激活组就向该对象返回租用对象,它包括确定租用持续时间、更新租用以及取消租用的方法。租用对象是可以多种方法扩展以提供更多功能性的那种实例,但是将基本类定义如下interface Lease{public long getDuration();public void cancel()throws UnknownleaseException,RemoteException;public void renew (long renewDuration)throwsLeaseDeniedException,UnkownLeaseException,RemoteException;}这类包括getDuration方法、取消方法和更新方法。调用“getDuration”方法使对象具有准许租用日期长度。该时期代表激活组准许的最近租用。然而,对象的责任是确定租用的未完结时间。
“更新”方法允许远程对象更新租用,要求更多时间,而不必重新启动原来的租用请求。对象可能希望更新租用的情况包括何时原始租用证明是不充分的(即,远程对象要求附加成员资格)或者何时只准许部分租用(即,小于所要求的租用)。
对象可采用更新方法来请求附加租用日期,或者对象可继续调用更新方法多次,直至准许多个附加租用日期。更新方法没有返回值,如果准许更新,那么可在进行调用的租用对象中反映出新租用日期。如果激活组不能或不愿意更新租用,那么在进行调用的租用对象中要提出理由。
当对象希望从激活组收回但是仍然有剩余时间来租用时,对象调用“取消”方法。取消方法允许激活组从激活组中去除对象,从而该对象可能不再访问激活组中的任一个对象没有交叉处理范围。相反,一旦租用结束(即,自然终止),那么激活组知道要抽出该对象。在这种情况下,一旦租用自然终止,对象没有义务通知激活组。
图9示出适于本发明的另一个实施例使用的数据处理系统9000。数据处理系统9000包括通过网络9006连接到第二个计算机系统9004的计算机系统9002。网络9006可以是局域网、广域网或因特网。
计算机系统9002包括存储器9008、辅助存储装置9010、中央处理单元(CPU)9012、输入装置9016和视频显示器9014。存储器9008还包括JavaTM运行时间系统9042,它包括Java虚拟机(JVM)9044、RMI9046和激活组9040。激活组9040可具有与它相关的不能被激活但仍位于辅助存储装置9010上的一些对象9048。此外,存储器9008包括Java运行时间系统9022和Java运行时间系统9102,其中Java运行时间系统9022包括JVM9024、RMI9026和激活组9018,而Java运行时间系统9102包含激活影子进程9100、JVM9104和RMI9106。激活影子进程9100负责通过将它们带到作为激活组9040或激活组9018部分的存储器中来激活对象9048。
计算机系统9004包括存储器9050、辅助存储装置9052、CPU9054、输入装置9058和视频显示器9056。存储器9050还包括Java运行时间系统9062,它包括JVM9064、RMI9066和可通过调用到RMI9066来请求调用远程对象(例如,一个对象9048)的方法的客户程序9040。熟悉本技术领域的人员可理解数据处理系统9000和计算机9002和9004可包括附加和不同的组件。
虽然将另一个实施例的方面描述为存储在存储器中,但是熟悉本技术领域的人员应理解还可将这些方面存储在其他计算机可读媒体(诸如,硬盘、软盘或CD-Rom(光盘)、因特网的载波或RAM或ROM的其他形式之类的辅助存储装置)上或从中读取它。此外,虽然将另一个实施例描述为在JavaTM编程环境中操作,但是熟悉本技术领域的人员应理解另一个实施例可在其他环境中操作。
图10示出对象成为新激活组的一个成员的过程中执行的步骤的流程图。例如,在激活组9040中的对象可能想要成为激活组9018的成员。对象想要这样做是因为它计划执行可与激活组9018相关的处理(例如,关于图象处理)并希望通过在具有执行图象操作的对象的激活组中运行来获得参考局域性的好处。为了成为新建立组的成员,对象把租用请求发送到激活组9018(步骤10004)。在该步骤中对象把租用请求发送到激活组,它是经过包含所请求的租用日期的多个参数的对象。
在发送租用请求之后,对象通过确定它是否接收到租用对象来确定租用是否成功(步骤10006)。如果租用成功,那么对象通知激活进程9100它与调用组9018的新关系(步骤1008)。当通知激活影子进程时,对象提供租用对象的拷贝,其中激活影子进程可用它来确定租用日期的长度。在通知激活影子进程之后,对象作为激活组9108的一部分运行(步骤10010)。在该步骤中,如果激活对象,那么它将在Java运行时间系统9022中执行。一些时间以后,对象确定它是否需要更多的时间来作为激活组的一部分来运行(步骤10012)。如果对象需要更多时间,那么该对象对通过租用请求返回的租用对象调用更新方法(步骤10014)。于是,对象确定更新请求是否成功(步骤10016)。如果是,那么处理继续到步骤10010。否则,处理结束。
如果对象不需要更多的时间,那么该对象对租用对象调用取消方法来终止租用(步骤10018)。该步骤取消租用,以后取消对象在激活组中的成员资格。接着,对象获得对另一个激活组的租用,也许是它来自的那个激活组9040(步骤10020)。应注意,如果对象不加入另一个激活组,那么下一次激活它激活影子进程使它成为它自己激活组的成员。
图11示出当请求调用对象诸如当客户程序9060调用RMI9066对远程对象调用方法(例如,对象之一9048)时,调用影子进程执行的步骤的流程图。调用影子进程9100执行的第一步骤是从RMI9106接收请求(步骤11002)。可以调用RMI9106作为从客户9060远程方法调用的结果。当客户9060调用远程方法时,它通过RMI9066做到。在RMI9066调用远程方法之后,用于调用的(代码)存根(stub)包括该对象用来进行通信以及参考它的激活影子进程9100的网络端口。于是,当接收调用远程方法的请求时,RMI9066首先尝试通过它的对象的网络端口调用该方法。如果成功,那么对象保持活动并保持在存储器中,因为通过RMI9066最后调用它的方法之一。然而,如果失败,那么由于需要激活该对象,所以RMI9066通过RMI9106向激活影子进程9100发出请求。
在接收到来自RMI9106的请求之后,激活影子进程确定租用对象是否已到期(步骤11004)。在另一个实施例中,每个对象都是激活组的成员,而且通常具有未完结租用。激活影子进程9100保持将计算机9002中的所有对象映射到与它们相关的相应激活组。如果激活影子进程确定租用已到期,那么激活影子进程把所请求的对象设置它自己的激活组中(步骤11006)。在该步骤中,激活影子进程存储请求对象是他自己的激活组中的成员的指示。在把该对象设置在它自己的激活组中之后,激活影子进程启动JVM并激活该对象(步骤11008)。在该步骤中,激活影子进程启动JVM并将该对象从辅助存储器9010装入JVM的地址空间。此外,激活影子进程对该对象调用所请求的方法。
如果激活影子进程确定租用不到期,那么激活影子进程确定该对象是其中成员之一的激活组是否当前正在JVM中运行(步骤11010)。如果不是,那么激活影子进程启动对于激活组的JVM(步骤11012),而且激活影子进程激活该对象(步骤10014)。在该步骤中,激活影子进程把该对象从辅助存储器带到存储器(启动JVM的地址空间)并调用所请求的方法。
图12示出当对象请求租用时激活组(例如,9018)所执行的步骤的流程图。由激活组执行的第一步骤是检查租用请求的参数以证实请求的性能(步骤12004)。如上所述,参数包括请求的租用日期和确切的租用指示。
在检查参数之后,激活组确定该请求是否适当(步骤12006)。例如,激活组证实规定所需租用日期,而且如果请求确切的租用,那么激活组确定它可准许该请求。例如,激活组可能不情愿地准许租用一段时间,而在这段时间内该对象已请求确切租用了。如果激活组确定租用请求是不适当的,那么激活组返回表示错误的例外对象(步骤12008)且处理结束。
如果请求是适当的,那么激活组确定充分的租用日期(步骤12010)。激活组产生租用对象并把它返回到远程对象(步骤12012)。
上述描述本发明的实施方法用于说明。它不是穷举且本发明并不局限于此。根据上述交易可对它进行修正和变化并可通过实践本发明来获得。例如,所述实施方法包括软件,但是可实施本发明作为硬件和软件的组合或者只用软件实施。本发明的范围由所附权利要求书来限定。
权利要求
1.一种在处理系统中的方法,其特征在于,包括下列步骤从远程对象接收租用请求,所述租用请求规定对象的激活组以及所请求的租用日期;和确定所述远程对象成为所述激活组中成员的租用日期。
全文摘要
提供一种在分布式处理系统中租用组成员的系统。根据该系统,远程对象请求激活组在一段时间内成为该激活组中的成员。响应于该请求,激活组确定远程对象成为激活组的成员的适当租用日期并在于激活组中的其他对象相同的地址空间内运行。
文档编号G06F9/46GK1298510SQ99805397
公开日2001年6月6日 申请日期1999年2月17日 优先权日1998年2月26日
发明者J·H·瓦尔多, A·M·沃尔蕾斯, R·谢夫勒, K·C·R·C·阿诺德 申请人:太阳微系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1