租用存储器的方法和系统的制作方法

文档序号:6418933阅读:192来源:国知局
专利名称:租用存储器的方法和系统的制作方法
有关申请本申请是1996年10月11日提交的编号为08/729,421的美国专利申请的部分延续,通过参照将该申请引用于此。
依赖于下述的美国专利申请,通过参照将这些申请引用于此。
题为《分布式计算系统》的美国临时专利申请,编号60/076,048,提交日期1998年2月26日。
题为《分布式系统中委派证书租用的方法、装置与产品》的美国专利申请,编号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.0062-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,917,代理人目录号06502.0106-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/030,840,提交日期1998年2月26日。
题为《一种持久共享存储器空间的交互式设计工具》的美国专利申请,编号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,提交日期同上。
背景技术
A.发明领域本发明一般涉及数据处理系统,更详细地说,涉及数据处理系统中的租用存储器。
B.有关技术的描述适当的资源管理是高效和有效地使用电脑的一个重要方面。一般而言,资源管理包括响应于请求,对资源(例如,存储器)进行分配;以及,在适当的时候(例如,当请求者不再要求资源时),对资源重新分配。一般而言,资源包含由在电脑上执行的各种计算实体(例如,应用程序、程序和小应用程序等)引用的数据。
实际上,当在电脑上执行应用程序需要引用各种资源时,电脑必须首先分配或指派资源,以便应用程序能够恰当地引用它们。当应用程序不再引用资源时,电脑可以重新分配或回收该资源,以供以后再用。在电脑中,每个资源都有一个独特的“句柄”(handle),通过它可以引用该资源。该句柄可以利用各种不同的方式(诸如地址、阵列索引、单一值、指针、等等)来处理。
对于单台电脑而言,资源管理相对简单,因为表明何时可以回收资源(诸如,当应用程序不再引用它们时,或在发生电源故障之后)的各种事件很容易确定。而连接多台电脑的分布式系统的资源管理则较为困难,因为几台不同的电脑中的应用程序可能会同时使用相同的资源。
分布式系统中的连接中断会导致资源回收不当和过早,或者,会导致回收资源失败。例如,在分布式系统中,运行于不同电脑上的多个应用程序可能会引用位于其它计算机上的资源。如果中断各台电脑(资源所在处)与引用这些资源的应用程序之间的连接,那么,电脑可能会过早地回收该资源。另一种情况是,尽管应用程序无法存取这些资源的时间延长了,但是电脑可能还是一直保持着这些资源。
这些困境推动了一些管理网络资源的系统的开发,其中的一种系统称为“分布式无用数据(garbage)收集”。该术语描述了由一个语言系统或运行时系统为分布式系统提供的一种功能(facility),可对运行于一个网络中不同电脑的一个应用程序或一组应用程序所使用的资源进行自动管理。
一般而言,无用数据收集运用了这样一个概念,即,当应用程序的任何部分不再引用资源时,就可以释放这些资源,以供将来使用。分布式无用数据收集将此概念扩展到这样的范畴,即,当任何电脑中没有应用程序引用资源时,对这些资源实行分布式的计算和回收。
分布式无用数据收集必须保持被分配的资源与对这些资源的引用之间的完整性。换言之,当运行于网络中任何电脑的某个应用程序继续引用某个资源时,不允许该系统重新分配或释放该资源。这种引用-资源的绑定(binding)被称作“引用完整性”,它并不保证该引用总是允许对其引用的资源进行存取。例如,当网络发生故障时就无法进行这种存取。但是,完整性确保如果可以利用该引用来存取任何资源,那么,首先把该引用提供给相同的资源。
使用无用数据收集的分布式系统还必须回收在有限将来的某段时间不再被引用的各种资源。换言之,该系统必须保证不发生“存储器漏洞”(memoryleaks)。如果所有的应用程序停止引用一个资源,而该系统由于(例如)误认为某个应用程序仍然在引用该资源,从而没有对该资源实行再用回收,则会发生存储器漏洞。
引用完整性失败和存储器漏洞常常由引用资源的各种应用程序与对这些资源进行分配和重新分配管理的无用数据收集系统之间发生断开所致。例如,如果断开引用一个资源的某个应用程序与管理该资源的一个无用数据收集系统之间的网络连接,则可能使该无用数据收集系统无法确定是否与何时回收该资源。另一种情况是,由于某个应用程序没有在预定时间存储器取一个资源,因此,无用数据收集系统也许会误认为,它可以收集该资源。通过试图确保这类机制保持引用完整性(而不发生存储器漏洞),已采用许多技术来改进分布式无用数据收集机制。一种传统的方法使用引用计数的形式,其中,保持引用每个资源的应用程序的数目的计数。当一个资源的计数为零时,无用数据收集系统可以回收该资源。但是,只有该资源具备一个对应的引用计数器,这种引用计数方案才行得通。在此情况下,当额外的应用程序引用资源时,无用数据收集系统会递增该资源的引用计数;而当一个应用程序不再引用资源时,无用数据收集系统则会递减其引用计数。
然而,引用计数方案特别容易碰到分布式系统内发生故障方面的各种问题。这类故障可以是电脑或应用程序失灵,也可以是网络故障,它们阻碍了通知无用数据收集系统某个资源不再被引用的信息的传递。如果由于网络断开而无法传递信息,那么,无用数据收集系统就不知道何时回收该资源了。
为了防止发生这样的故障,一些传统的引用计数方案包括“保持有效”(keep-alive)信息(也被称作“弹回”(ping back))。根据这个方案,网络中的应用程序将信息发送给监督资源的无用数据收集系统,并指出这些应用程序仍然可以进行通信。这些信息阻止无用数据收集系统中断引用各种资源。没有收到这种“保持有效”信息则表示无用数据收集系统能够递减某个资源的引用计数,因此,当计数达到零的时候,无用数据收集系统可以回收该资源。但是,这仍然会因为网络发生故障,无法收到“保持有效”信息,导致随着达到零的引用计数对资源的过早回收。这违反了引用完整性的要求。
另一个提出的用于解决无用数据收集系统中的引用完整性问题的方法是不仅保存一个引用计数,而且保存与引用资源的每个计算实体相对应的一个标识符。参见A.Birrell等人所著的《网络目标的分布式无用数据收集》,数字系统研究中心,116号,1993年12月15日。这个方法也受到与引用计数方案所面临的相同问题的困扰。此外,这个方法要求为引用每个资源的每个计算实体添加独特的标识符,增加了将不必要地加大分布式系统内的通信和添加存储器要求(即,与引用每个资源的应用程序相对应的标识符列表)的开销(overhead)。
发明概要根据本发明,通过在一个时间间隔内租用资源,可保证引用完整性(不会发生高代价的存储器漏洞)。在这段时间间隔内,分布式系统中的各方(例如,引用一个资源的某个应用程序和管理该资源的无用数据收集系统)同意保证该资源及对其的引用。在租用时间间隔结束时,引用资源的保证将逐渐失效,从而使无用数据收集系统回收该资源。由于引用该资源的应用程序和管理该资源的无用数据收集系统在一个有限的保证租用时间间隔内达成一致,所以,双方都知道租用何时期满(保证也因此结束)。这保证了引用租用期间的引用完整性,并且无须担忧因网络差错而导致无法释放该资源。除存储器外,租用技术还可以应用于其它类型的存储器(诸如,各种存储设备)。
与本发明中的一个可选择的实施例一致,如这里实施和概述的,提供了一种租用存储器位置的方法。这种方法包括如下的步骤从一个规定存储器位置和租用时间间隔的调用程序接收一项请求;确定一个租用时间间隔(其间,该调用程序对指定的存储器位置进行存取);向该调用程序建议准许的租用时间间隔;以及,允许该调用程序在确定的租用时间间隔内存取该存储器位置。
附图简介包括入说明书并且构成说明书一部分的附图阐明了本发明的一个实施例,并结合描述对本发明的优点和原理进行解释。在这些附图中,

图1是根据本发明的一个实施例的应用程序调用处理器执行的步骤流程图;图2是根据本发明的一个实施例的服务器调用处理器处理“脏”调用(dirtycalls)的步骤流程图;图3是根据本发明的一个实施例的服务器调用处理器处理“洁”调用(cleancalls)的步骤流程图;图4是根据本发明的该项实施例的由服务器调用处理器进行的启动一个无用数据收集程序的步骤流程图;图5是在分布式处理系统内的一种较佳调用流的图表;图6是根据本发明的一种方法调用服务的执行部分的方框图;图7是可用于本发明的一个实施例中的一个分布式处理系统的图表;和图8是根据本发明的该实施例的分布式处理系统的平台中的单个软件部分的图表;和图9是用于在分布式处理系统(可用于本发明的一个可选择的实施例)中租用存储器位置的一个数据处理系统的图表;和图I0A和图10B是根据本发明的一个可选择的实施例的向服务器请求租用时客户机执行的步骤流程图;和图11根据本发明的一个可选择的实施例的向客户机请求租用时服务器执行的步骤流程图。
详细描述现在,来详细参考如附图所示的本发明的一个实施例。只要有可能,相同的标号将在附图和以后的描述中被用来指出相同的或类似的部分。
本发明可用按传统分布式处理系统体系结构组织的电脑来实施。但是,本发明的体系结构和实施本发明的过程并不传统,因为它们提供了一种确保引用完整性和排除存储器漏洞的分布式无用数据收集方案。
A.概况位于分布式处理系统中的每台电脑内的方法调用(MI)部件实施本发明的分布式无用数据收集方案。该MI部件可以包含许多最好用JAVATM编程语言编写的软件模块。
一般而言,每当分布式处理系统中的某个应用程序通过作为其它某个调用的返回值的名称查找或另一种方法能够引用一个分布式资源并想存取该资源时,该应用程序就调用该资源或管理该资源的MI部件。这个MI部件(称作“管理MI部件”)留意对该资源的未结束的引用次数。当对一个资源的引用次数为零时,管理MI部件将回收该资源。对一个资源引用次数的计数通常被称为“引用计数”,递增引用计数的调用可称作“脏调用”。
当某个应用程序不再需要一个分布式资源时,它给该资源或管理MI部件发送一个不同的调用。管理MI部件在收到这个调用后,就会递减该资源的引用计数。这种结束引用的调用可被称作“洁调用”。
根据本发明的一项实施,脏调用可包括引用资源所需的时间间隔(称作“租用时间间隔”)。管理MI部件在收到这个脏调用后,就会发送一个指出租用准许的时间间隔的返回调用。这样,管理MI部件跟踪这些引用的租用时间间隔和未结束引用的次数。因此,当一个资源的引用计数为零时,或者,当该资源的租用时间间隔期满时,管理MI部件会回收该资源。
B.过程
MI部件中的应用程序调用处理器执行图1所示的应用程序调用过程100的步骤。MI部件中的服务器调用处理器分别执行图2-4所示的过程200、300和400的步骤。管理MI部件的无用数据收集器根据来自服务器调用处理器的指令,执行回收先前引用过的资源的传统过程。因此,无用数据收集器的传统过程将不作解释。
1.应用程序调用处理器图1是过程100的流程图,MI部件的应用程序调用管理处理器运用该程序来处理应用程序引用资源的请求,资源由位于分布式处理系统内的同一个MI部件或另一个MI部件来进行管理。
在某个应用程序引用一个资源后,应用程序调用处理器会发送一个脏调用给资源管理MI部件,该脏调用包括资源的引用和所请求的租用时间间隔(步骤110)。可以把该脏调用引到资源本身或管理MI部件。
然后,应用程序调用处理器等待并接收来自管理MI部件的一个返回调用(步骤120)。该返回调用包括一个准许的租用时间间隔,在该时间间隔内,管理MI部件保证脏调用的引用将限于其资源。换言之,在此准许的时间间隔内,管理MI部件同意不收集对应于脏调用引用的资源。如果管理MI部件不提供一个准许的时间间隔,或拒绝租用请求,那么,应用程序调用处理器将必须发送另一个脏调用,直到它收到一个准许的时间间隔为止。
应用程序调用处理器监控该应用程序对引用的运用,并且当应用程序明确告知应用程序调用处理器不再要求引用时,或当应用程序调用处理器自行作出这个决定时(步骤130),应用程序调用处理器将一个洁调用发送给管理MI部件(步骤140)。以类似于脏调用使用的方法,该洁调用可能会被指引到引用过的资源,而管理MI部件则将对该洁调用进行处理。然后,应用程序调用处理器把该引用从正在被应用程序使用的引用列表中除去(步骤150)。
如果应用程序还没有完成引用(步骤130),而应用程序调用处理器确定引用的准许时间间隔即将期满(步骤160),那么,应用程序调用处理器会重复步骤110和120,以确保代表应用程序的管理MI部件保持对该资源的引用。
2.服务器调用处理器MI部件的服务器调用处理器执行三项主要过程(1)处理脏调用,(2)处理输入的洁调用;和(3)启动一个无用数据收集时间间隔,以便在适当的时候回收资源。
(ⅰ)脏调用图2是过程200的流程图。MI部件的服务器调用处理器使用该过程来处理引用由MI软件部件管理的资源的请求(即,脏调用)。这些请求来自分布式处理系统内的MI部件的应用程序调用处理器,包括与处理请求的服务器调用处理器相同的MI部件的应用程序调用处理器。
首先,服务器调用处理器接收一个脏调用(步骤210)。然后,服务器调用处理器确定一个可接受的准许的时间间隔(步骤220)。该准许的时间间隔可能和所请求的租用时间间隔或其它某个时间间隔相同。服务器调用处理器根据许多条件(包括所需资源的数量和先前对相同资源的其它准许的时间间隔的数目)来确定合适的准许的时间间隔。
当服务器调用处理器确定还没有分配供脏调用引用的资源时(步骤230),服务器调用处理器会分配所需的资源(步骤240)。
随后,服务器调用处理器递增对应于脏调用引用的引用计数(步骤250),为引用一资源的绑定设置可接受的准许的时间间隔(步骤260),并将返回调用发送到一个具有该准许的时间间隔的应用程序调用处理器(步骤270)。这样,服务器调用处理器对输入的脏调用引用资源实行控制。
应用程序通过在当前租用期满之前发送具有延期请求的脏调用,可以延长租用期。如过程200中所示,对延长租用期的请求的处理与对租用的最初请求的处理相同。延期只意味着,除非引用计数为零,否则,在某段额外的时间间隔期内不会回收该资源。
(ⅱ)洁调用MI部件的服务器调用处理器还处理从应用程序调用处理器输入的洁调用。当分布式处理系统内的某个应用程序不再需要引用一个资源时,它会告知管理该引用资源的MI部件,以便回收该资源,供日后再用。图3是过程300的流程图,它具有MI部件的服务器调用处理器处理洁调用的步骤。
当服务器调用处理器接收到引用某个资源(由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处理应用程序对资源530(由另一个MI部件(诸如管理MI部件525)实行管理)进行存取的请求,所以,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的MI部件525的确认。
应用程序510和540两者可能都会请求对相同的资源进行存取。例如,应用程序510可能会请求对“资源(1)”进行存取,而应用程序540先前已被允许对该资源进行存取。面对这种情况,MI部件525的处理方法是使应用程序510和540都能在同意的租用时间间隔内获得该资源。这样,直到应用程序510和540都已停止其对该资源的引用或最近同意的租用时间间隔已经期满(无论哪件事先发生),MI部件525才会启动回收“资源(1)”的无用数据收集时间间隔。通过允许一个以上的应用程序同时存取相同的资源,本发明也允许某个应用程序在给停止引用资源的管理MI部件发送洁调用之后存取该资源。之所以发生这种情况的原因是该资源仍然被另一个应用程序引用;或该引用的租用还未到期,因此,管理MI部件525还没有对该资源进行回收。但是,当不再有应用程序实行租用时,或者,当最近的租用已到期时,该资源将在一个有限的时间间隔后被回收。
D.MI部件图6是根据本发明的一个实施例的MI部件600的模块的方框图。MI部件600可以包括用于受监控的每个引用的引用部分605、应用程序调用处理器640、服务器调用处理器650和无用数据收集器660。
引用部分605最好包括具备参考数据部分610、引用计数620和准许的时间间隔寄存器630的一张表格或一个可比较的结构。MI部件600利用一个对应的参考数据部分610中指定的每次引用的引用计数620和准许时间间隔630,来决定何时启动回收对应的资源的无用数据收集器660。
应用程序调用处理器640是执行图1中过程100的步骤的软件模块。服务器调用处理器650是执行图2~4中的过程200、300和400的步骤的软件模块。如上所述,无用数据收集器660是响应于来自服务器调用处理器650的指令而回收资源的软件模块。
E.分布式处理系统图7示出了一个可用于执行本发明的分布式处理系统50。在图7中,分布式处理系统50包含三个独立的和不同种类的平台100、200和300。这些平台被连接在由网络云(network cloud)55代表的一个网络配置中。只要该网络配置(在图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根据本发明来调用将被执行的各项操作。
参照图6,MI部件730、830和930与以上所述的MI部件600相对应。
操作系统740、840和940是分别与对应的处理器710、810和910相连接的标准操作系统。平台700、800和900可以是异种的。例如,平台700具有SunMicrosystems Corp.生产的UltraSparc微处理器作为处理器710,并使用Solaris操作系统740。平台800具有Silicon Graphics Corp.生产的MIPS微处理器作为处理器810,并使用Unix操作系统840。最后,平台900具有Intel Corp.生产的Pentium微处理器作为处理器910,并使用Microsoft Windows 95操作系统940。本发明的局限性不大,也可以适应同构的各种平台。
Sun、Sun Microsystems、Solaris、Java与Sun Logo都是美国和其它国家的SunMicrosystems,Inc.的商标或注册商标。UltraSparc和其它所有的SPARC商标均被授权使用,并且是美国和其它国家的SPARC International,Inc.的商标。具备SPARC商标的产品基于由Sun Microsystems公司开发的结构。
存储器750、850和950具有几项功能(诸如,对于关联平台的通用存储器)。另一项功能是在处理器710、810和910分别执行之前,存储应用程序720、820和920,以及MI部件730、830和930,还有操作系统740、840和940。此外,存储器750、850和950的各个部分可以构成网络50中所有平台700、800和900可用的共享的存储器。
E.MI服务本发明可以利用一个客户机/服务器模型来执行。该客户机产生各种请求(例如,脏调用和洁调用),而该服务器则对请求作出响应。
图7所示的每个MI部件730、830和930最好既包括客户机部分,又包括服务器部分。图8(它是客户机平台1000和服务器平台1100的方框图)适用于图7所示的平台700、800和900中的任何两个平台。
平台1000和1100分别包含存储器1050和1150,以及处理器1010和1110。参照图7,平台1000和1100中元件的功能与以上所述的类似元件的功能相同。在此例中,处理器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管理的各种资源。
因此,服务器调用处理器1031、无用数据收集器1033和客户机平台1000的MI部件1030的引用计数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.结论根据本发明,一个分布式无用数据收集方案通过提供与分布式处理系统中资源引用相对应的准许的租用时间间隔来确保引用完整性和消除存储器漏洞,以便当该准许的租用时间间隔期满时,对资源的引用也告结束。然后,就可以收集这些资源。根据分配给这些资源引用的计数器,当分布式处理系统中的程序不再引用资源时,也可以对它们进行收集。
本发明的可选择的实施例如上所述,租用技术涉及无用数据收集。但是,如下所述,本发明的一个可选择的实施例可以用于各种存储装置。
存储装置具有许多存储器位置,它们包含各种不同的数据的逻辑分组(可以被一个以上的程序使用)。这些逻辑分组可以采取文件、数据库或文档的形式。存储器位置的租用允许在预先商议的时间内对存储器位置进行存取(例如,读、写存取)。对于存储器位置的租用而言,存储器位置中包含什么类型的数据或存储器位置是否包含任何数据并不重要。另外,存储器位置的租用可以应用在存储器的不同级别(例如,数据库域(field)、文件、存储器块或实际的存储器位置)上。
在一个电脑系统或一个分布式系统中,许多程序可以争夺存储于不同组的存储器位置中的文件。这样,存储器位置的组可以拥有许多竞相存取的程序。在这种情况下,可采用租用技术来裁定存储器位置的使用。
当使用对一组存储器位置(包含一个文件的数据)的租用时,一个程序(“客户机”)从文件系统管理器(“服务器”)请求一个租用,以便在一个时间间隔(“租用时间间隔”)内对该组存储器位置进行存取。根据可用性、优先权和以下所述的其它因素,服务器或者拒绝该请求,或者同意一个租用时间间隔。该准许的租用时间间隔可以是所请求的整个租用时间间隔,也可以是租用时间间隔的某个部分。一旦客户机接收到一个租用,该客户机就可以在此租用时间间隔内对该组存储器位置进行存取。
当请求一个租用时间间隔时,该客户机可能会请求一个严格租用时间间隔。在这种情况下,若该租用时间间隔是所请求的整个租用时间间隔(相对于一部分租用时间间隔),服务器才同意此租用。
当一个租用有效时,客户机被保证对该组存储器位置进行存取,并可以在这些位置上实行读、写操作。同样,在一个有效租用时间间隔内,服务器将保持存储器位置的完整性。例如,在租用时间间隔期间,服务器将不允许受租用的文件被删除、重写,或受到除客户机以外的任何实体的影响。但是,租用期满后,服务器就不再向客户机保证该文件的完整性了,因此,服务器可能会删除该文件,或对其进行实质上的更改,或向另一客户机(所行方法可能相同)准许一个租用。不包括未结束租用的存储器位置将被服务器回收。
每个存储器位置可以拥有一个关联限制参数(诸如存取参数或特权参数)。存取参数确定服务器支持该存储器位置的存取的类型。例如,一个存储器位置可以只被定义为读存取。在此情况下,服务器只允许为后来被准许租用的那个特殊的存储器位置提供读存取。相反,服务器不会允许客户机试图写入那个存储器位置。其它潜在的存储器位置存取参数可以包括写存取、分配存取、再分配存取和子块存取(即,对于大存储块)。
关联的特权参数规定客户机在将准许一个租用之前必须具有的特权等级。服务器用特权参数来为完成各种租用请求区分优先次序。换言之,当服务器对相同的存储器位置有多项未完成的租用请求时,它会根据提出该请求的客户机的特权等级,来为这些请求区分优先次序。
该可选择的实施例还通过向相同的存储器位置准许多个并发(concurrent)租用,来支持到一组存储器进行并发存取。例如,如果一个特殊的存储器位置的参数指定“读”存取,则服务器可以向那个存储器位置准许多个并发租用,而不破坏该存储器位置的完整性。并发租用也可应用于(例如)大型文件。服务器可以只准许租用该文件的较小子块,而不损害该较大文件的完整性。
一旦客户机请求一个租用,服务器就向该客户机返回一个目标,包括确定租用时期的方法,更新该租用的方法和取消该租用的方法。该目标是一个等级实例,可用多种方式对其扩展,以便提供更大的功能性。但是,基本等级定义如下<pre listing-type="program-listing"><![CDATA[interface Lease{]]></pre>
<pre listing-type="program-listing"><![CDATA[  obj FileHandle;  public long getDuretion();  public void cancel()throws UnknownLeaseException,RemoteException;  Public void renew (long renewDuration) throws LeaseDeniedException, UnknownLeaseException, RemoteException;}]]></pre>具体地说,调用“getDuration”方法为客户机提供了准许的租用时间间隔的长度。这个时间间隔代表由服务器准许的最近的租用。但是,确定所需的租用时间数量则是客户机的责任。
“更新”方法使客户机能够更新租用,请求更多时间,而不必重新提出原先的租用请求。客户机可能希望更新该租用的情况包括当原先的租用不够(即,客户机请求额外使用存储器位置)时;或者,当只准许了部分租用(即,少于所请求的租用)时。
客户机可以利用该更新方法来请求额外的租用时间间隔,或者,客户机可以连续多次调用更新方法,直到许多额外的租用时间间隔被准许。更新方法没有返回值;如果同意更新,则在租用目标(根据它作出调用)将反映出新的租用时间间隔。如果服务器无法或不愿更新租用,则由更新方法产生的LeaseDeniedException会阐明其中的原因。
最后,当客户机希望取消该租用,而租用时间还未用完时,客户机会调用“取消”方法。这样,取消使服务器能够回收存储器位置,以便其它程序存取它们。因此,取消方法确保服务器能够优化对分布式系统中各种存储器位置的使用。相反,当一个租用一结束(即自然终止),服务器就知道收回对存储器位置的控制。所以,当租用自然终止时,客户机不承担通知服务器的义务。
图9描绘了适合被本发明的一个可选择的实施例使用的数据处理系统9000。该数据处理系统9000包括与互联网9002相连接的电脑系统9001。电脑系统9001包括存储器9003、辅助存储装置9004、中央处理器(CPU)9006、输入装置9008和一个视频显示器9010。存储器包含管理辅助存储装置9004上的文件9018的文件系统管理器(“服务器”)9016。客户机9014通过从服务器9016请求一个租用来请求对文件9018中的一个或多个文件进行存取。如以下进一步的描述的,作为响应,服务器9016可能选择准许或拒绝该租用。熟悉该技术的人士会明白,电脑9000可包含额外的或不同的部件。
虽然该可选择的实施例的各个方面被描述为存储于存储器9003,但是,熟悉该技术的人士会明白,这些方面也可以被存储在其它的电脑可读取媒体(诸如辅助存储装置(如硬盘、软盘或CD-Rom)、来自互联网9002的载波或其它形式的RAM或ROM)中。此外,熟悉该技术的人士会明白,可以利用该可选择的实施例来租用辅助存储器(如数据库、电子表格和文档)中其它形式的数据。
图10A和10B描绘了一幅从服务器请求一个租用时客户机所执行的步骤的流程图。客户机执行的第一个步骤是向服务器发送一个租用请求(步骤10002)。这个请求是一个包括许多参数的功能调用,这些参数包括(1)客户机希望租用的所请求的存储器位置;(2)想要的租用时间间隔;(3)严格租用指示器;(4)客户机所要的存取类型;和(5)客户机的特权。
所请求的存储器位置表示了将被租用的存储器位置。想要的租用时间间隔包含客户机想使用存储器位置的一段时间。严格租用请求表示了是否正在提出一个严格租用请求或少于所需量的租用是否足够。所请求的存取类型表明了客户机请求的存储器位置存取的类型。存取类型包括读存取、写存取、分配存取、再分配存取和子块存取(即,对于大存储块)。特权字段指出用户或客户机的特权等级。为形成有效的请求,客户机的请求必须既包含所请求的存储器位置,又包含想要的租用时间间隔。
通常有两种产生对存储器位置的租用请求的情况。第一种情况发生在创建一个文件时。用于创建该文件的创建命令也会产生一项对服务器的租用请求,以便对该文件进行存取。利用租用技术来控制新的文件的请求可确保存储器位置负起责任。因此,服务器不倾向于为新的文件准许较长的或无限期的租用。第二种情况发生在客户机希望对现存的存储器位置或已有现存租用的一个文件进行存取时(即,在并发租用的情况下)。
发送该请求后,客户机根据它有没有从服务器收到一个租用目标,来确定是否已准许一个租用(步骤10006)。如上所述,该租用目标包含各种信息(包括文件处理、getDuration方法、更新方法和取消方法)。应该注意,如果服务器由于任何原因而拒绝租用,则该服务器会产生异常(由客户机的各种异常处理程序来处理)。
如果由于请求不适当而不准许一个租用(步骤10008),则将调用客户机的一个异常处理程序来重新配置该请求(步骤10010),处理继续进行到步骤10002。不适当的请求包括太大的租用时间间隔请求或未知存储器位置的租用请求。如果请求不适当,则客户机会重新配置该请求,以创建一个有效的请求。例如,如果服务器不能同意一个严格租用的请求,则客户机会重新配置该请求,示出一个较短的租用时间间隔;或者,如果是关于一个未知存储器位置的请求,则客户机会重新配置该请求,给出一个已知的存储器位置。
但是,如果由于存储器位置正在被另一个客户机租用而不准许租用(步骤10012),则将调用一个异常处理程序来等待一段预定的时间(步骤10014),处理继续进行到步骤10002。
然而,另一种可供选择的方案是,服务器可以排列租用请求。在这种情况下,在等待了一段预定的时间之后,客户机确定它是否收到一个表明已经准许租用的回应。如果随后准许一个租用,则处理将继续到图10B中的步骤10024。如果不准许租用,则客户机会等候,然后继续到步骤10002。
如果客户机确定租用请求在步骤10006中获得了成功,那么,客户机就取得了有效租用。这样,客户机可以存取实行租用的存储器位置(步骤10024)。存取存储器位置之后,客户机确定它是否已完成对存储器位置的存取(步骤10026)。如果客户机完成了对存储器位置的存取,则该客户机将确定租用是否已到期(步骤10028)。若租用已到期,则处理会结束,客户机与服务器之间也无须进行通信(即,发生自然终止)。否则,如果租用仍然有效,那么,客户机就会调用取消方法(步骤10030)。客户机这样做是出于优化的目的。客户机通过租用目标来存取取消方法。取消方法通知服务器客户机已经不再对存储器位置感兴趣了。因此,取消方法允许服务器回收该存储器位置,迅速供其它程序使用。
如果客户机还没有用完被租用的文件,则客户机会确定该租用是否即将到期(步骤10032)。这是通过客户机将当前时刻与租用持续时间作比较来实现的。通过调用getDuration方法,可查明租用持续时间。如果租用尚未期满,则客户机可以继续在步骤10024中存取存储器位置。但是,如果租用即将到期,则客户机必须决定要不要更新该租用(步骤10034)。如果客户机选择更新租用,则该客户机会调用租用目标的更新方法。若调用更新方法,处理将继续进行到步骤10024。如果客户机不更新租用,则处理会结束,客户机与服务器之间也无须进行通信(即,自然终止)。
图11描绘了当客户机请求一个租用时服务器所执行的步骤的流程图。当客户机创建一个文件、请求租用一个文件(已有一个租用)或调用更新方法时,可以调用这些步骤。服务器执行的第一个步骤是接收客户机提出的一个租用请求(步骤11002)。收到该请求后,服务器会检查参数,以检验该请求是否适当(步骤11004)。
在检查了这些参数之后,服务器确定该请求适当与否(步骤11006)。例如,服务器会核对所需的存储器位置是否真的是实际存储器位置,以及,客户机是否拥有一个充分的特权等级。服务器还要核实,想要的租用时间间隔已被指定。此外,服务器还须核对是否存在所请求的存取类型。如果服务器确定租用请求不适当,则该服务器会产生异常,调用合适的客户机事件处理程序(步骤11008),处理将告结束。
如果请求适当,则服务器会实行租用时间间隔算法(“LPA”),以确定应该被准许的租用时间间隔(步骤11010)。该LPA提供一个租用时间间隔(可从客户机的想要的租用时间间隔到根本没有租用)。LPA考虑了许多确定租用时间间隔方面的因素。这些因素包括(无论该请求是否来自一种更新方法)创建指令或随后的租用请求、客户机的使用模式、存储器位置的需求和存储器位置的规模(如果请求对一个大的分组进行存取)。此外,LPA会考虑到存储器位置的值。例如,如果某个特殊的存储器位置的存取费用昂贵且需求很大,则LPA可能只准许短期租用。
一旦LPA确定租用时间间隔,服务器就会确定是否准许租用时间间隔(即大于零)(步骤11012)。如果不准许租用时间间隔,则服务器会产生异常(步骤11008),处理将告结束。如上所述,一种可供选择的方案是,服务器可以排列租用请求。在这种情况下,服务器将这些租用请求存储起来,供以后处理。
如果LPA准许了租用时间间隔,那么,服务器会确定客户机是否请求了严格租用(步骤11016)。如果客户机已请求严格租用,则服务器将确定由LPA准许的租用时间间隔是否少于所请求的租用时间间隔(步骤11018)。如果由LPA准许的租用时间间隔小于所请求的严格租用时间间隔,那么,服务器将产生异常(步骤11008),处理结束。
如果不请求严格租用或准许严格租用,那么,服务器会建立一个租用目标,并将其返回客户机(步骤11020)。应该注意,服务器通过监视有效的租用时间间隔来回收被租用的存储器位置(不再具有与它们有关的任何有效租用)。
前面对本发明的一项实施的描述用于举例、说明的目的,它并不是穷举的,因而也不将本发明限于所述的确切的内容。可以根据以上的教导或通过对本发明的实践,来进行修改和变化。例如,所描述的实施包括软件,但本发明可以结合硬件和软件或只利用硬件来加以实施。本发明的范围由权利要求书及其同等物来确立。
权利要求
1.具有存储器的一个电脑系统中的一种方法,其特征在于包括以下步骤从规定一部分存储器和规定所请求的租用时间间隔的调用程序中接收-存取请求;确定该调用程序对存储器的这个部分进行存取的一个租用时间间隔;向该调用程序建议确定的租用时间间隔;和允许该调用程序在确定的租用时间间隔内对存储器的这个部分进行存取。
全文摘要
为分布式处理系统提供一种租用存储器位置的方法和系统。与这种方法和系统相对应,客户机从服务器(诸如文件系统管理器)请求一个时间间隔(租用时间间隔)的对存储器位置的存取。响应于这一请求,服务器调用一种租用时间间隔算法,这种算法考虑客户机存取存储器某些位置时的各种因素来决定租用时间间隔。租用被允许后,服务器发送一个目标给客户机,向客户机建议租用时间间隔并为其提供修改租用的功能(例如取消租用或更新租用)。服务器提供并发租用、严格租用和各种类型存取的租用。所有对存储器位置的租用无效后,服务器重新收回存储器位置。
文档编号G06F9/50GK1298516SQ99805493
公开日2001年6月6日 申请日期1999年2月17日 优先权日1998年2月26日
发明者A·M·沃尔蕾斯, J·H·瓦尔多, K·C·R·C·阿诺德 申请人:太阳微系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1