远程进程的的挂起和继续的方法和设备的制作方法

文档序号:6418913阅读:196来源:国知局
专利名称:远程进程的的挂起和继续的方法和设备的制作方法
技术领域
本发明涉及分布式计算系统,尤其涉及远程进程的挂起和继续的方法和设备。
相关申请依靠以下所述的美国专利申请,在本申请中通过参考引入。
1998年2月26日提交的名为“分布式计算系统”的60/076,048号临时美国专利申请。
同一天提交的名为“租用存储器的方法和系统”的09/044,923号美国专利申请,其律师备案号为06502.0011-01000。
同一天提交的名为“租用分布式系统中的授权证书的方法、设备和产品”的09/044,838号美国专利申请,其律师备案号为06502.0011-02000。
同一天提交的名为“租用分布式系统中的小组成员的方法、设备和产品”的09/044,834号美国专利申请,其律师备案号为06502.0011-03000。
同一天提交的名为“租用故障检测”的09/044,916号美国专利申请,其律师备案号为06502.0011-04000。
同一天提交的名为“在基于事件的系统中的传送行为的方法”的09/044,933号美国专利申请,其律师备案号为06502.0054-00000。
同一天提交的名为“分布式系统中的事件通知的对象和远程安装的延迟重构”的09/044,919号美国专利申请,其律师备案号为06502.00162-01000。
同一天提交的名为“远程方法启用的方法和设备”的09/044,938号美国专利申请,其律师备案号为06502.0102-00000。
同一天提交的名为“识别远程方法的确定性散列方法和系统”的09/045,652号美国专利申请,其律师备案号为06502.0103-00000。
同一天提交的名为“确定分布式系统中的远程对象的状态的方法和设备”的09/044,790号美国专利申请,其律师备案号为06502.0104-00000。
同一天提交的名为“用于执行有关分布式系统中的远程过程调用的处理的可下载智能代理”的09/044,930号美国专利申请,其律师备案号为06502.0105-00000。
同一天提交的名为“数据库中的多入口和多模板匹配的方法和系统”的09/044,835号美国专利申请,其律师备案号为06502.0107-00000。
同一天提交的名为“数据库中的原地修改的方法和系统”的09/044,839号美国专利申请,其律师备案号为06502.0108。
同一天提交的名为“数据库中的类型安全属性匹配的方法和系统”的09/044,945号美国专利申请,其律师备案号为06502.0109-00000。
同一天提交的名为“分布式系统中的动态查找服务”的09/044,931号美国专利申请,其律师备案号为06502.0110-00000。
同一天提交的名为“用于提供在与分布式系统中的一个装置进行通信时所使用的可下载代码的设备和方法”的09/044,939号美国专利申请,其律师备案号为06502.0112-00000。
同一天提交的名为“便于访问查找服务的方法和系统”的09/044,826号美国专利申请,其律师备案号为06502.0113-00000。
同一天提交的名为“用于动态地检验分布式系统中的信息的设备和方法”的09/044,932号美国专利申请,其律师备案号为06502.0114-00000。
同一天提交的名为“在一网络上进行动态分布式计算的方法和设备”的09/044,840号美国专利申请,其律师备案号为06502.0115-00000。
同一天提交的名为“持久性共享的存储空间的交互设计工具”的09/044,936号美国专利申请,其律师备案号为06502.0116-00000。
同一天提交的名为“基于多形态令牌的控制”的09/044,934号美国专利申请,其律师备案号为06502.0117-00000。
同一天提交的名为“基于堆栈的访问控制”的09/044,915号美国专利申请,其律师备案号为06502.0118-00000。
同一天提交的名为“基于堆栈的安全需求”的09/044,944号美国专利申请,其律师备案号为06502.0119-00000。
同一天提交的名为“安全需求的按方法指定”的09/044,837号美国专利申请,其律师备案号为06502.0120-00000。
背景技术
典型的分布式计算系统使得一网络上的许多不同的客户可获得许多服务器的服务和计算能力。通常,客户机使用远程过程调用(RPC)系统来访问服务器机上的处理能力。RPC系统处理远程机上的请求并把想要的结果返还发出请求的客户。用来发送请求并返还结果的网络可以是局域网(LAN)、广域网(WAN),而且它还可包括因特网。因特网上的高级分布式计算使用此客户-服务器配置在世界范围内提供电子商务(e-商务)、电信办公和交互式娱乐服务。
随着分布式计算范例的使用和普及的增长,在服务器系统上可获得完成客户系统发出请求的资源变得越来越重要。来自客户的每个请求一般促使服务器进程指定资源,这些资源包括处理请求用的一个或多个线程(thread)。线程(有时叫做轻型进程)是具有独立控制流的进程内的一个分开的指令序列。线程必须从系统中开辟完成特定请求所需的资源。如果可获得诸如存储器和数据等资源,则可平行地执行完成多个任务的多个线程。
产生线程的进程可使用线程调度器,以根据线程的优先级、执行状态(即,睡眠、存活(alive)、停用、运行)及各线程之间的相关性来协调线程的平行执行。单个处理器系统上的线程调度器在许多线程之间分配处理器的计算能力,以提供这些线程实际上在平行运行的错觉。有许多不同的调度技术可以使用,包括先到先服务、最短线程优先、优先级调度以及诸如轮流坐庄(round-robin)等抢占式调度技术。对于特定的实施可按需要组合这些技术以形成混合调度技术。在多处理器系统上,调度器把不同线程与不同处理器相联系,以平行地执行线程并利用附加的计算能力。
不幸的是,如果不能立即获得这些资源,线程不可能继续执行并可能被阻止进一步的处理。这些被阻止执行的线程占用诸如存储器以及与线程本身有关的数据和控制结构等服务器资源。最终,服务器可能用完分派入局客户请求的线程。入局客户请求可能被拒绝,服务器实际上将被从分布式计算环境中移去。此阻塞情况也可能因与拒绝对输入调用的服务有关的开销而降低服务器服务于现有请求的能力。
当前的分布式计算系统未被设计成解决此线程分派问题。这些系统在远程服务器进程被阻塞而等待一资源或特定事件时不释放线程和相关的资源。结果,事务处理密集的分布式计算环境可能遭受如上所述的阻塞情况。例如,假定一服务器进程接收到因特网上的多个客户要求下载文件的多个请求。服务器进程接收来自服务器操作系统的多个线程,以平行地处理这些请求,但所请求的文件被其它进程锁定而不能获得。常规的系统将阻塞对每个线程的进一步处理并等待文件被解除锁定。即使其它进程可利用线程资源来处理其它任务,但服务器上的线程将维持空闲。当服务器系统上的线程数目耗尽时,服务器进程将拒绝服务于其它的客户。最终,服务器系统将难于处理一般的任务。
在许多分布式计算系统上,不能够分派线程和其它资源可能对总处理吞吐量带来负面影响。甚至,如果不能在服务器系统上有效地分派线程和其它资源,分布式计算系统上可获得的高速带宽将变得不能被使用。
基于常规系统中所发现的以上限制,想要改善分布式计算环境中所使用的线程和其它资源的分派。

发明内容
与这里所实施和广泛描述的本发明相一致,一种使能对服务器系统挂起处理和释放资源的远程方法的方法和设备包括接收来自客户系统上的远程方法调用的请求。给此远程方法分派来自服务器系统的系统资源并启用该方法。一种系统级类型的资源是线程。该方法确定目前是否可获得处理该远程方法所需的任何通用资源。通用的资源可以是存储器、磁盘存储空间、数据或系统资源可依赖的任何资源。当远程方法依赖的普通资源不可获得时使远程方法暂停进一步处理,并释放系统资源给服务器系统。
符合本发明的另一种方法使得先前被挂起的远程方法继续在服务器系统上的处理,并对客户应用程序产生结果。此方法包括接收与发生挂起的远程方法有关的继续事件的指示。把系统资源和通用资源分派给远程方法,以预备继续处理此远程方法。该远程方法利用组合的分派资源来继续执行和产生结果。使用诸如远程方法启用(RMI)等远程过程调用(RPC)系统把这些结果从服务器系统发送到客户系统上的客户应用程序。
附图概述被引入并构成本说明书一部分的附图示出本发明的一个实施例,它与以下描述一起用于说明本发明的优点和原理。
在图中

图1示出适用于符合本发明的方法和系统的网络;图2是适用于符合本发明的方法和系统的计算机系统的方框图;
图3是适用于符合本发明的方法和系统的客户-服务器网络化环境的方框图;图4是符合本发明的方法和系统的远程方法调用的挂起和继续处理所使用的子系统的方框图;图5是为挂起和继续符合本发明的方法和系统的远程方法调用所进行的步骤的流程图;图6是为挂起符合本发明的方法和系统的远程方法调用所进行的步骤的流程图;以及图7是为继续符合本发明的方法和系统的远程方法调用所进行的步骤的流程图。
本发明的较佳实施方式介绍现在将详细地参考附图中所示的本发明的一个实现。在可能时,在附图和以下的描述中使用相同的标号,以指示相同的或类似的部分。
依据本发明所设计的系统假定计算机系统可主持客户或服务器功能。假定每个计算机在客户-服务器系统中的作用与在客户和服务器之间所进行的特定调用有关。例如,客户进程通常请求位于远程机上的服务器进程所产生的服务。相反,服务器进程位于接收和服务于客户请求的机器上。因此,同一计算机系统可在请求服务时起到客户的作用,并在完成对一客户的请求时起到服务器的作用。
符合本发明的系统解决了已有技术的缺点并提供了用于挂起和继续远程进程的方法和设备。过去,远程过程调用(RPC)系统在远程进程被阻塞而等待一事件发生或释放一资源时不能使远程进程释放资源。此技术使客户进程与服务器进程之间的连接保持有效,但使诸如线程、存储器和辅助存储器等重要资源空闲。相反,依据本发明设计的系统允许远程服务器进程阻止进一步的处理以释放线程和其它资源,同时不撤销客户与服务器系统之间的连接。此新技术使得其它进程即使在一远程进程被阻塞时也可利用服务器资源。具体来说,这防止了远程服务器进程拒绝对客户的访问。结果,本发明的实施例更有效地使用线程和其它资源,这增加了分布式技术系统的有效总处理能力。
此外,符合本发明的系统的优点还在于,它们与现有客户-服务器系统上的客户兼容。这在诸如因特网等异构网络化计算环境中尤其重要。由于对服务器进行了更改以更有效地分派和释放资源,本发明不会影响客户系统的设计和操作。相应地,客户不需要更改,而可以与当前设计的系统一起进行工作。
分布式系统概述符合本发明的方法和系统在具有各种部件(包括硬件和软件)的分布式系统(“示例的分布式系统”)中进行操作。示例的分布式系统(1)允许系统的用户在一许多装置的网络上共享服务和资源;(2)向程序员提供允许开发稳健而安全的分布式系统的工具和编程模式;以及(3)简化管理分布式系统的任务。为了实现这些目标,示例的分布式系统利用JavaTM编程环境,从而允许以无缝的方式在各装置之间转移代码和数据。相应地,示例的分布式系统处在Java编程环境的顶层,并开发该环境的特性,包括它所提供的安全性及它所提供的强大类型定义。在Jaworski,Java 1.1 Developer’s Guide.Sams.net(1997)中更清楚地描述了Java编程环境,这里通过参考而引入。
在示例的分布式系统中,把不同的计算机和装置结合成为对用户来说表现为单个的系统。通过表现为单个系统,示例的分布式系统提供了单个系统可提供的访问简化和共享能力,而不放弃个人计算机或工作站的灵活性和个人化响应。示例的分布式系统可包含由用户所操作的数千个装置,这些用户在地理上分散,但他们约定了委托、管理和政策等基本概念。
在示例的分布式系统内有一个或多个装置所提供的服务的各种逻辑分组,公知每个这样的逻辑分组是Djinn。“服务”指可被用户、程序、装置或其它服务所访问并可以是与计算、存储相关、与通信相关或与提供对另一个用户的访问相关的资源、数据或功能。作为Djinn的一部分所提供的服务的例子包括诸如打印机、显示器和磁盘等装置;诸如应用程序或实用程序等软件;诸如数据库和文件等信息;以及系统的用户。
用户和装置都可加入Djinn。在加入一Djinn时,用户或装置把零个或多个的服务加到Djinn并可访问(经历安全性约束)它所包含的任一个服务。因而,装置和用户结合成为一Djinn,以共享对其服务的访问。Djinn的服务编程上表现为Java编程环境的对象,此Java编程环境可包括其它对象、以不同的编程语言编写的软件成分或硬件装置。服务具有定义可请求该服务的操作的界面,该服务的类型确定了构成该服务的界面。
图1示出示例的分布式系统100,它包括计算机102、计算机104以及通过网络108互连的装置106。装置106可以是许多装置中的任一个,诸如打印机、传真机、存储装置、计算机或其它装置。网络108可以是局域网、广域网或因特网。虽然把示例的分布式系统100示为仅包括两个计算机和一个装置,但本领域内的技术人员应理解,示例的分布式系统100可包括附加的计算机或装置。
图2更详细地示出计算机102,以示出示例的分布式系统100的许多软件成分。本领域内的技术人员将理解,可类似地构成计算机104或装置106。计算机102包括存储器202、辅助存储装置204、中央处理单元(CPU)206、输入装置208和视频显示器210。存储器202包括查找服务212、发现服务器214和JayaTM运行时间系统216。Java运行时间系统216包括JavaTM远程方法启用系统(RMI)218和JavaTM虚拟机220。辅助存储装置204包括JavaTM空间222。
如上所述,示例的分布式系统100基于Java编程环境继而利用Java运行时间系统216。Java运行时间系统216包括JavaTMAPI,允许程序在Java允许时间系统的顶部运行,从而可以独立于平台的方式访问这种系统功能,包括主操作系统的视窗能力和网络化能力。由于Java API为跨移植了Java运行时间系统216的所有操作系统提供了单个公共API,所以在Java运行时间系统顶部运行的程序以独立于平台的方式运行,而不管主平台的操作系统或硬件结构。Java运行时间系统216作为可从加里福尼亚州Mountain View的Sun Microsystems获得的JavaTM软件开发工具包的一部分而提供。
Java虚拟机220也有利于平台独立性。Java虚拟机220起到类似于抽象计算机器的作用,它接收字节码形式的程序中的指令,并通过把这些字节码动态地转换成诸如对象码等用于执行的形式来解释它们,并执行它们。RMI 218通过允许在一个计算机或装置上执行的对象启用另一计算机或装置上的对象的方法,从而有利于远程方法启用。也提供了RMI和Java虚拟机作为Java软件开发工具包的一部分。
查找服务212定义了特定Djinn可获得的的服务。即,在示例的分布式系统100内可存在不止一个Djinn因而不止一个查找服务。查找服务212包含该Djinn内的每个服务的一个对象,每个对象包含有助于对相应的系统进行访问的各种方法。在名为“有助于对查找服务的访问的法和系统”的09/044,826号未决美国专利申请中更详细地描述了查找服务212及其服务,在这里通过参考引入。
发现服务214在称为引导和加入或发现进程中检测何时把一新的装置加到示例的分布式系统100上,以及在检测到此新的装置时,发现服务器把对查找服务212的一个引用(reference)传送给新的装置,从而此新装置可向此查找服务登记其服务,并可成为此Djinn的一员。在记录后,新装置变为Djinn的一个成员,结果,它可访问包含在查找服务212中的所有服务。在名为“提供在与分布式系统中的装置通信时所使用的可下载代码的设备和方法”的09/044,939号未决美国专利申请中更详细地描述了引导和加入的进程,在这里通过参考而引入。
Java空间222是由示例的分布式系统100内的程序用来存储对象的对象资源库。程序使用Java空间222来永久性地存储对象并使得它们可被示例的分布式系统内的其它装置访问。在1997年11月17日提交的名为“利用多形态入口和入口匹配的数据库系统”的08/971,529号未决美国专利申请中更详细地描述了Java空间,该申请已转让给共同的受让人,在这里通过参考而引入。本领域内的技术人员应理解,示例的分布式系统100可包含许多查找服务、发现服务和Java空间。
虽然描述了在示例的分布式系统和Java编程环境中操作的符合本发明的系统和方法,本领域内的技术人员应理解,本发明可在其它系统和其它编程环境中实施。此外,虽然把本发明的方面描述为存储在存储器中,但本领域内的技术人员应理解,还可把这些方面存储在其它类型的计算机可读媒体上或从中读取,诸如辅助存储装置,类似于硬盘、软盘或CD-ROM;来自因特网的载波;或其它形式的RAM或ROM。Sun、Sun Microsystems、SunLogo、Java和基于Java的商标是SunMicrosystems股份有限公司在美国和其它国家的商标或注册商标。
示例的客户-服务器系统图3示出符合本发明的示例的客户-服务器系统以及示例的分布式系统100。相应地,客户-服务器系统300由客户计算机302(也叫做客户302)、服务器计算机312(也叫做服务器312)和耦合在客户302和服务器312之间的网络310构成。可使用JavaTM面向对象的语言并作为对RMI 218的加强来实现此特定客户-服务器系统。然而,本领域内的技术人员应理解,可使用普通的远程过程调用(RPC)系统和其它面向对象和非面向对象的语言来实现符合本发明的类似系统。
客户302包括具有远程方法调用306、远程承接程序(stub)308和远程方法运行时间309的客户应用程序304。客户应用程序304通常是用户所开发的软件且包括用于启用服务器312上的进程的远程方法调用306。例如,客户应用程序304可以是以JavaTM编程语言编写的JavaTM应用程序。使用诸如RMI等RPC机构来实现远程方法调用。
远程方法承接程序308对远程方法调用306所提供的数据和参数进行编组(marshal)。以可被服务器312上的远程方法框架(skeleton)315去编组(unmarshall)的预定格式来排列数据和参数。在服务器312上有关远程方法调用306的进程时,远程方法运行时间309跟踪这些进程的状态。远程方法运行时间309还确定客户应用程序304与服务器312之间的通信链路是正常还是未连接。远程方法运行时间309可向服务器312查询链路的状态。如果合理的时间周期内没有响应或服务器312指示故障,则远程方法运行时间309通知客户应用程序304远程方法调用终止。
网络310在客户302和服务器312之间提供了通信链路。网络310可以是因特网或公司或校园范围的内部网。网络310可使用TCP/IP或包括Novell Netware、AppliTalk、X.25的任何其它网络协议或能支持诸如RMI等RPC系统的任何其它网络。
服务器312包括相应的远程方法运行时间314和远程方法框架315。与客户302相反,服务器312还包括通用资源管理器316、事件处理器317、远程方法资源管理器322、远程事件处理器323以及大量远程方法资源324。服务器312还包括远程对象A 318以及远程对象B 320。每个远程对象与客户应用程序304可使用远程方法调用306来启用的许多方法(未示出)。服务器312的另一个结构可包括用于执行特定系统所需的远程方法的任意数目的远程对象。
远程方法运行时间314负责不断地通知客户302远程方法的执行状态。远程方法运行时间314给客户302提供指示远程方法在处理数据的信息。依据本发明,即使在远程方法挂起时,处理状态也不阻塞。取而代之,远程方法运行时间314保持与客户302的连接,直到远程方法完成对请求任务的处理。远程方法运行时间314还在远程方法异常或出错而终止时向客户302指示。
该方法确定目前是否可获得处理远程方法所需的的任何通用资源。通用资源可以是存储器、磁盘存储空间、数据或系统资源可依赖的任何资源。
远程方法框架315负责对网络310上发送的数据和参数进行去编组。把参数和数据用作在服务器312上执行远程方法的形式参数。
通用资源管理器316和事件处理器317管理在服务器312所执行的本地进程和方法所使用的资源。在服务器312上执行的本地方法注意通用资源管理器316和事件处理器317,以协调通用资源的分派和解除分派。这些通用资源可包括诸如存储器等主存储器、或诸如磁盘和磁带驱动器等辅助存储器。与以下所讨论的系统资源不同,通用资源通常不用于完成远程方法请求。事件处理器317检测与本地进程有关的事件,因此,在本说明书中不包括事件处理器317的细节。实质上,通用资源管理器316和事件处理器317专用于管理与未被诸如客户302等客户远程启用的那些进程和方法有关的资源。
相反,远程方法资源管理器322和远程事件处理器323负责分派和解除分派远程方法所需的远程方法资源324。可把远程方法资源324看作一个系统资源,因为它们使方法可利用诸如网络技术的系统层资源。通常,这些系统资源将与如上所述的通用资源有关。
远程方法资源管理器322在有关远程对象318、远程对象320和其它对象(未示出)的远程方法之间传递远程方法资源324。远程事件处理器323检测何时释放一远程方法处理特定任务所需的资源。利用如下所述的本发明的一个实现有助于传递这些远程方法资源。
远程方法的挂起和继续在远程方法将被阻塞时启用挂起方法。这通常刚好发生在远程方法被阻塞而等待可获得资源前。挂起方法把远程方法标为挂起,远程方法资源管理器把线程和其它资源返还服务器系统。在可获得资源时,远程方法资源管理器和继续方法一起工作,以把这些线程和其它远程方法资源分派给挂起的远程方法。最终,远程方法运行时间启用挂起的远程方法,从而它继续处理。例如等待一写操作的远程方法对阻塞状态输入-就绪,并通过调用挂起操作而释放线程和其它资源。挂起操作把此远程方法标为挂起,远程方法资源管理器把这些线程返还有关服务器系统的线程池。一旦写操作发生,则继续方法把挂起的远程方法标为可运行,远程方法资源管理器把线程和其它资源分派回挂起的远程进程。远程方法运行时间启用先前挂起的远程方法,以使该远程方法读取数据。
图4是示出挂起和继续处理一远程方法所使用的基本软件子系统的方框图。这些软件子系统包括远程方法资源324、远程方法资源管理器322以及具有远程方法416和执行状态418的示例远程对象A 318。
图4中的远程方法资源324包括线程池402,它具有使用中的线程404、可获得的线程406以及RPC状态408。使用中的线程404包含对远程方法当前所使用的线程的引用,而可获得的线程406包含远程方法当前可使用的线程。在远程方法被挂起时,把RPC状态408保存在远程方法资源324中,以存储诸如RMI等RPC系统所使用的信息。此信息可包括RPC系统继续处理挂起的远程方法并把结果返还客户的信息。在另一实施例中,远程方法资源324还可包括除了线程以外的其它资源。这些其它的网络资源可包括主存储器、辅存储器及结合处理远程方法所使用的任何其它资源。
远程方法资源管理器322包括挂起方法410、继续方法412和状态存储器414。挂起方法410获得来自远程方法416的执行状态418以及来自远程方法资源324的RPC状态408。在远程方法416被挂起前把此状态信息存储在状态存储器414中。通常,在远程方法416指示它将被阻塞且它具有线程和其它资源时,挂起方法410把远程方法416标为挂起。最终,远程方法资源管理器322把线程和其它资源返还服务器312,并挂起远程方法416的进一步处理。例如,假设远程方法416尝试从一暂时空的队列中读取数据。当远程方法416检测到该队列为空时,远程方法416将启用挂起方法410,以开始挂起进程。
继续方法412与挂起方法410相伴。继续方法412通常是在可获得资源或已发生特定事件时启用的。例如,把数据写到特定队列可触发一继续事件,该事件可启用继续方法412。继续方法412找到等待该资源的挂起远程方法的位置并把它标为可运行。最终,远程方法资源管理器322把线程和其它资源分派给先前挂起的远程方法。使用存储在状态存储器414中的执行状态418和RPC状态408,以保证远程方法416继续被挂起前的适当点处的处理。
在操作中,把挂起和继续方法一起使用,以管理服务器系统312上的线程和其它资源。图5是示出依据本发明的方法和系统挂起和继续一远程调用所执行的步骤的流程图。
最初,服务器312接收来自客户302上的远程方法调用306的请求来处理远程方法416。相应地,远程方法框架315对在请求中发送的数据和参数进行去编组(步骤506)。在这些数据和参数被远程方法框架315解码后,把它们传送到远程方法416。
服务器312的远程方法运行时间向客户302上的远程方法运行时间309指示服务器312已接收到启用远程方法416的请求并正在处理该请求(步骤507)。即使远程方法416被挂起且线程和其它资源被释放时,客户应用程序304继续接收服务器312正在处理该请求的指示。
远程方法资源管理器322把这些线程和其它资源分派给将要被启用的远程方法416(步骤508)。从线程池402中的可获得线程406中取得分派给远程方法416的线程。可使用多个线程来平行地处理几个远程方法或任务。假设可获得这些线程和其它资源,则远程方法运行时间314代表客户应用程序304启用远程方法416(步骤510)。如果远程方法资源管理器不能把一线程或其它资源分派给远程方法416,则把它添加到等待释放来自其它进程的线程或其它资源的执行队列中。
远程方法416包括用于确定是否存在挂起状态的指令(步骤512)。这些指令还包括确定何时存在继续状态的信息。挂起状态发生在远程方法416依赖一不能获得的资源或还未发生某一事件时。相反,继续事件发生在该资源可获得或该事件已发生时。对于挂起状态的例子,假设远程方法416在对数据点进行采样并在每个采样之间暂停了很长的时间间隔。在此长的暂停期间,远程方法416可被阻塞而等待定时器事件指示下一时间间隔的结束。
在检测到挂起状态时,远程方法416释放资源并向远程事件处理器323登记各条继续指令,以监测某些资源和事件(步骤516)。接着,挂起远程方法416的进一步处理,并等待特定继续事件以继续处理(步骤518)。
当发生继续事件时,把资源分派给远程方法且远程方法重新开始处理(步骤520)。继续事件是在一挂起的远程方法进行进一步处理所依赖的资源可获得或事件发生时所产生的事件。远程事件处理器323处理挂起的远程方法416所登记的继续指令。远程方法完成该任务并把结果返还客户应用程序304(步骤514)。应理解,在完成一任务并把结果返还客户前可把远程方法挂起和继续许多次。
远程方法的挂起附图6是依据本发明的方法和系统挂起一远程调用所执行的步骤的流程图。最初,远程方法416监测到已发生挂起事件并选择释放线程和其它资源(步骤602)。由挂起方法416把远程方法标为挂起。在被挂起前,远程方法416给远程方法资源管理器322提供执行状态418、RPC状态408并释放线程和其它资源(步骤604)。远程方法资源管理器322把这些线程放回可获得的线程406中。或者,远程方法416可选择挂起处理而不释放任何线程或资源。
执行状态418记录有关远程方法418被挂起时的状态信息,包括局部变量、程序计数器和有关远程方法416的任何其它信息。如上所述,RPC状态408记录在远程方法416被挂起时与诸如RMI等RPC系统有关的状态信息。RPC状态408使RPC系统在远程方法416继续执行时与客户通信并返还结果。
接着,远程方法资源管理器322存储RPC状态408和执行状态418(步骤608)。远程方法资源管理器322存储此状态信息以在将来的某时继续处理挂起的远程方法。远程方法416还向监测某些资源和事件的远程事件处理器323登记各继续指令。一般,继续指令用于对数据继续预处理并与适当的挂起进程联系。最后,挂起远程方法416的进一步处理并等待继续事件的发生(步骤610)。
远程方法的继续图7是依据本发明的方法和系统继续诸如远程方法41等先前挂起的远程方法所执行的步骤的流程图。通常,在满足特定条件时异步地发生此进程的每一步骤。
最初,远程事件处理器323接收已发生特定继续事件的指令。远程事件处理器323把继续事件与一特定远程方法相关联(步骤702)并启用相应的继续指令。继续事件是在挂起的远程方法的进一步处理所依赖的资源可获得或事件发生时所产生的事件。例如,继续事件可发生在把信息写到挂起的远程方法等待读取的队列时。
继续指令调用继续方法412,该继续方法412把挂起的远程方法416标为可运行进程。最终,远程方法资源管理器322发现挂起方法416的状态指示该远程方法现在可运行并可继续处理(步骤704)。步骤704通常是一异步进程,它发生在远程方法资源管理器检查挂起进程时,它在远程进程的状态变为可运行时不是必要的。远程方法资源管理器322把诸如线程等资源分派给远程方法416(步骤706)。
远程方法运行时间314装载来自状态存储器414的执行状态418和RPC状态408。执行状态418使远程方法416准备继续它在被挂起前停止处的处理(步骤708)。为了以软件来实现,远程方法416可以是几段相关的代码,每一段都是在前一代码部分在挂起前停止时开始的。或者,可把远程方法416实现为在代码段中的不同点处开始执行的单个代码段。如上所述,RPC状态408使诸如RMI 218等RPC系统继续处理并把结果返还适当的远程方法调用306。
远程方法运行时间314使远程方法416继续执行。然后,远程方法416使用所分配的线程和其它资源继续服务器上的处理(步骤710)。最终,远程方法416产生结果,并把这些结果提供给远程方法框架315以继续编码和分组打包(packeting)(步骤712)。经由网络310把这些经编码的结果传送给远程方法承接程序308,在这里对这些结果进行解码并提供给远程方法调用306(步骤714)。
虽然为了说明在这里描述了特定的实施例,但可进行各种修改而不背离本发明的精神和范围。相应地,本发明不限于以上所述的实施例,而是由附加的权利要求书的等价物的整个范围来限定。
权利要求
1.一种在一具有资源的服务器系统上执行的方法,所述服务器系统经由一网络可操作地耦合到一客户系统并使一远程方法挂起处理及释放相应资源给服务器系统,其特征在于所述方法包括以下步骤通过使用一远程过程调用(RPC)系统所发送的一远程方法调用来接收来自一客户系统的请求,还包括以下子步向客户系统指示服务器系统已接收到启用一远程方法的请求;把资源分派给该远程方法;启用该远程方法;确定该远程方法是否依赖于不可获得的任何资源或还未发生的事件;挂起远程方法的进一步处理,并在该远程方法依赖于不可获得的资源或还未发生的事件时从该远程方法释放资源,还包括以下子步释放先前分派给该远程方法系统的资源以由服务器系统上的其它进程和方法所使用;提供与该远程方法有关的执行状态以及与此远程方法调用有关的远程过程调用(RPC)状态,以在随后的某一时间周期继续处理此远程方法;以及阻塞远程方法的进一步处理,直到释放不可获得的资源且远程方法可获得该资源或出现了引起远程方法挂起的事件。
2.一种在一具有多个资源的服务器系统上执行的方法,所述服务器系统经由一网络可操作地耦合到一客户系统,以使先前挂起的远程方法在服务器系统上继续处理,其特征在于所述方法包括以下步骤接收已发生与挂起的远程方法有关的继续事件的指示,其中该继续事件是在可获得该远程方法所需的资源或先前引起该远程方法挂起的事件发生时产生的;把资源分派给该远程方法,以准备继续处理,还包括以下子步向远程方法资源管理器指示该远程方法可继续处理,以及把由远程方法资源管理器所控制的资源分配给该远程方法;利用所分派的资源继续远程方法的执行,包括以下子步以执行状态和具有RPC状态的远程过程调用(RPC)系统对此远程方法进行初始化,其中执行状态包括与该远程方法在被挂起前有关的信息,RPC状态包括有关远程方法调用的信息;从该远程方法产生结果;以及把结果从服务器系统发送到客户系统上的客户应用程序。
3.一种在一服务器系统上执行的方法,以使一远程方法挂起处理并把资源释放给服务器系统,所述服务器系统经由一网络可操作地耦合到一客户系统,其特征在于所述方法包括以下步骤接收来自客户系统上的远程方法调用的请求;把系统资源分派给与该服务器系统有关的远程方法;启用与该服务器系统有关的远程方法;确定处理该远程方法所需的通用资源的可获得性;以及在远程方法依赖于不可获得的通用资源时挂起远程方法的进一步处理。
4.如权利要求3所述的方法,其特征在于服务器系统包括处理器、主存储装置、辅存储装置、显示装置以及输入/输出机构。
5.如权利要求3所述的方法,其特征在于系统资源包括线程。
6.如权利要求3所述的方法,其特征在于通用资源包括数据。
7.如权利要求3所述的方法,其特征在于该请求是使用远程方法启用(RMI)系统发送的。
8.如权利要求3所述的方法,其特征在于挂起步骤还包括以下子步,把系统资源和通用资源释放给服务器系统;以及阻塞远程方法的进一步处理,直到释放不可获得的资源且远程方法可获得该资源。
9.如权利要求8所述的方法,其特征在于挂起方法还包括提供与远程方法有关的执行状态以及与远程方法调用有关的远程过程调用(RPC)状态,以在随后的时间周期继续处理该远程方法。
10.一种在一服务器系统上执行的方法,以使先前挂起的远程方法在服务器系统上继续处理并对客户系统的客户应用程序产生结果,所述客户系统经由一网络可操作地耦合到服务器系统,其特征在于所述方法包括以下步骤接收已发生与挂起的远程方法有关的继续事件的指示;把系统资源和通用资源分派给该远程方法,以准备继续处理利用所分派的资源继续远程方法的执行;从该远程方法产生结果;以及把结果从服务器系统发送到客户系统上的客户应用程序。
11.如权利要求10所述的方法,其特征在于服务器系统包括处理器、主存储装置、辅存储装置、显示装置以及输入/输出机构。
12.如权利要求10所述的方法,其特征在于系统资源包括线程。
13.如权利要求10所述的方法,其特征在于通用资源包括数据。
14.如权利要求10所述的方法,其特征在于继续远程方法的执行的步骤还包括以下子步以执行状态和具有RPC状态的远程过程调用(RPC)系统对此远程方法进行初始化,其中执行状态包括与该远程方法在被挂起前有关的信息,RPC状态包括有关远程方法调用的信息;以及从该远程方法产生结果。
15.如权利要求10所述的方法,其特征在于发送步骤使用远程方法启用(RMI)系统。
16.一种计算机可读媒体,它包含通过以下步骤使得在一计算机服务器系统上执行的远程方法挂起处理并把资源分派给计算机服务器系统的指令接收来自客户系统上的远程方法调用的请求;把系统资源分派给与该服务器系统有关的远程方法;启用与该服务器系统有关的远程方法;确定处理该远程方法所需的通用资源的可获得性;以及在远程方法依赖于不可获得的通用资源时挂起远程方法的进一步处理。
17.如权利要求16所述的计算机可读媒体,其特征在于系统资源包括线程。
18.如权利要求16所述的计算机可读媒体,其特征在于通用资源包括数据。
19.如权利要求16所述的计算机可读媒体,其特征在于该请求是使用远程方法启用(RMI)系统发送的。
20.如权利要求16所述的计算机可读媒体,其特征在于挂起步骤还包括以下模块,释放模块,把系统资源和通用资源释放给服务器系统;以及阻塞模块,用于阻塞远程方法的进一步处理,直到释放不可获得的资源且远程方法可获得该资源。
21.一种计算机可读媒体,它包含通过以下步骤使得先前被挂起的远程方法继续在服务器系统上的处理并对客户系统上的客户应用程序产生结果的指令接收已发生与挂起的远程方法有关的继续事件的指示;把系统资源和通用资源分派给该远程方法,以准备继续处理利用所分派的资源继续远程方法的执行;从该远程方法产生结果;以及把结果从服务器系统发送到客户系统上的客户应用程序。
22.如权利要求21所述的计算机可读媒体,其特征在于系统资源包括线程。
23.如权利要求21所述的计算机可读媒体,其特征在于通用资源包括数据。
24.如权利要求21所述的计算机可读媒体,其特征在于发送使用远程方法启用(RMI)系统。
25.一种用于使一远程方法挂起处理并把资源释放给一服务器系统的设备,所述服务器系统经由一网络可操作地耦合到一客户系统,其特征在于所述设备包括接收器模块,构成为接收来自客户系统上的远程方法调用的请求;分派模块,构成为把系统资源分派给与该服务器系统有关的远程方法;启用模块,构成为启用与该服务器系统有关的远程方法;确定模块,构成为确定处理该远程方法所需的通用资源的可获得性;以及挂起模块,构成为在远程方法依赖于不可获得的通用资源时挂起远程方法的进一步处理。
26.如权利要求25所述的设备,其特征在于服务器系统包括处理器、主存储装置、辅存储装置、显示装置以及输入/输出机构。
27.如权利要求25所述的设备,其特征在于系统资源包括线程。
28.如权利要求25所述的设备,其特征在于通用资源包括数据。
29.如权利要求25所述的设备,其特征在于该请求是使用远程方法启用(RMI)系统发送的。
30.如权利要求25所述的设备,其特征在于挂起模块还包括,释放模块,构成为把系统资源和通用资源释放给服务器系统;以及阻塞模块,构成为阻塞远程方法的进一步处理直到释放不可获得的资源且远程方法可获得该资源。
31.一种用于使先前挂起的远程方法继续在一服务器系统上的处理并对一客户系统上的客户应用程序产生结果的设备,所述客户系统经由一网络可操作地耦合到服务器系统,其特征在于所述设备包括接收器模块,构成以接收已发生与挂起的远程方法有关的继续事件的指示;分派模块,构成为把系统资源和通用资源分派给该远程方法,以准备继续处理继续模块,构成为利用所分派的资源继续远程方法的执行;产生模块,构成为从该远程方法产生结果;以及发送模块,构成为把结果从服务器系统发送到客户系统上的客户应用程序。
32.如权利要求31所述的设备,其特征在于服务器系统包括处理器、主存储装置、辅存储装置、显示装置以及输入/输出机构。
33.如权利要求31所述的设备,其特征在于系统资源包括线程。
34.如权利要求31所述的设备,其特征在于通用资源包括数据。
35.如权利要求31所述的设备,其特征在于发送模块使用远程方法启用(RMI)系统。
36.一种耦合到一服务器系统的设备,用于使一远程方法挂起处理并把资源释放给该服务器系统,所述服务器系统经由一网络可操作地耦合到一客户系统,其特征在于所述设备包括用于接收来自客户系统上的远程方法调用的请求的装置用于把系统资源分派给与该服务器系统有关的远程方法的装置;用于启用与该服务器系统有关的远程方法的装置;用于确定处理该远程方法所需的通用资源的可获得性的装置;以及用于在远程方法依赖于不可获得的通用资源时挂起远程方法的进一步处理的装置。
37.如权利要求36所述的设备,其特征在于还包括可操作地耦合到服务器系统的客户系统。
38.一种耦合到一服务器系统的设备,用于使先前挂起的远程方法继续在一服务器系统上的处理并对一客户系统上的客户应用程序产生结果的设备,所述客户系统经由一网络可操作地耦合到服务器系统,其特征在于所述设备包括用于接收已发生与挂起的远程方法有关的继续事件的指示的装置;用于把系统资源和通用资源分派给该远程方法,以准备继续处理的装置用于利用所分派的资源继续远程方法的执行的装置;用于从该远程方法产生结果的装置;以及用于把结果从服务器系统发送到客户系统上的客户应用程序的装置。
39.如权利要求38所述的设备,其特征在于还包括可操作地耦合到服务器系统的客户系统。
全文摘要
提供了一种用于使阻塞的远程方法把线程和其它资源释放给服务器系统上的其它方法的方法和设备。在一分布式计算环境中,给远程方法分派大量网络资源,但在远程方法等待诸如另一进程的写操作等操作完成时阻塞远程方法。在阻塞了足够的远程方法时,线程和其它网络资源可能用完。请求服务器服务的客户系统可经历较慢的响应时间。此方法和系统提供了一种使远程方法在被阻塞时把诸如线程等网络资源释放给其它方法使用的技术。一旦解决使远程方法被阻塞的情况时,远程方法继续执行。该技术使得高容量的客户-服务器交易系统可更有效地利用分布式计算环境中的线程和其它资源。
文档编号G06F15/16GK1298502SQ99805303
公开日2001年6月6日 申请日期1999年2月18日 优先权日1998年2月26日
发明者K·C·R·C·阿诺德, A·M·沃尔蕾斯 申请人:太阳微系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1