專利名稱:租用存儲器的方法和系統(tǒng)的制作方法
有關申請本申請是1996年10月11日提交的編號為08/729,421的美國專利申請的部分延續(xù),通過參照將該申請引用于此。
依賴于下述的美國專利申請,通過參照將這些申請引用于此。
題為《分布式計算系統(tǒng)》的美國臨時專利申請,編號60/076,048,提交日期1998年2月26日。
題為《分布式系統(tǒng)中委派證書租用的方法、裝置與產(chǎn)品》的美國專利申請,編號09/044,838,代理人目錄號06502.0011-02000,提交日期同上。
題為《分布式系統(tǒng)中分組成員租用的方法、裝置與產(chǎn)品》的美國專利申請,編號09/044,834,代理人目錄號06502.0011-03000,提交日期同上。
題為《故障檢測的租用》的美國專利申請,編號09/044,916,代理人目錄號06502.0011-04000,提交日期同上。
題為《在基于事件的系統(tǒng)中傳送性能的方法》的美國專利申請,編號09/044,933,代理人目錄號06502.0054-00000,提交日期同上。
題為《在分布式系統(tǒng)中目標的延期重建和事件通知的遠程加載》的美國專利申請,編號09/044,919,代理人目錄號06502.0062-01000,提交日期同上。
題為《遠程方法調(diào)用的方法與裝置》的美國專利申請,編號09/044,938,代理人目錄號06502.0102-00000,提交日期同上。
題為《識別遠程方法的確定性散列信息的方法和系統(tǒng)》的美國專利申請,編號09/045,652,代理人目錄號06502.0103-00000,提交日期同上。
題為《確定分布式系統(tǒng)中的遠程目標的狀態(tài)的方法與裝置》的美國專利申請,編號09/044,790,代理人目錄號06502.0104-00000,提交日期同上。
題為《用于處理與分布式系統(tǒng)中的遠程程序調(diào)用相關聯(lián)的可下載的智能代理》的美國專利申請,編號09/044,930,代理人目錄號06502.0105-00000,提交日期同上。
題為《遠程方法的中止和延續(xù)》的美國專利申請,編號09/044,917,代理人目錄號06502.0106-00000,提交日期同上。
題為《數(shù)據(jù)庫中的多輸入與多模板匹配的方法和系統(tǒng)》的美國專利申請,編號09/044,835,代理人目錄號06502.0107-00000,提交日期同上。
題為《數(shù)據(jù)庫中就地修改的方法和系統(tǒng)》的美國專利申請,編號09/044,839,代理人目錄號06502.0108,提交日期同上。
題為《數(shù)據(jù)庫中類型安全屬性匹配的方法和系統(tǒng)》的美國專利申請,編號09/044,945,代理人標簽號06502.0109-00000,提交日期同上。
題為《分布式系統(tǒng)中的動態(tài)查找服務》的美國專利申請,編號09/044,931,代理人目錄號06502.0110-00000,提交日期同上。
題為《提供與分布式系統(tǒng)中的設備通信的可下載編碼的裝置和方法》的美國專利申請,編號09/044,939,代理人目錄號06502.0112-00000,提交日期同上。
題為《便于對查找服務進行存取的方法和系統(tǒng)》的美國專利申請,編號09/044,826,代理人目錄號06502.0113-00000,提交日期同上。
題為《在分布式系統(tǒng)中動態(tài)檢驗信息的裝置和方法》的美國專利申請,編號09/044,932,代理人目錄號06502.0114-00000,提交日期同上。
題為《網(wǎng)上動態(tài)分布式計算的方法和裝置》的美國專利申請,編號09/030,840,提交日期1998年2月26日。
題為《一種持久共享存儲器空間的交互式設計工具》的美國專利申請,編號09/044,936,代理人目錄號06502.0116-00000,提交日期同上。
題為《多形態(tài)的基于令牌的控制》的美國專利申請,編號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.發(fā)明領域本發(fā)明一般涉及數(shù)據(jù)處理系統(tǒng),更詳細地說,涉及數(shù)據(jù)處理系統(tǒng)中的租用存儲器。
B.有關技術的描述適當?shù)馁Y源管理是高效和有效地使用電腦的一個重要方面。一般而言,資源管理包括響應于請求,對資源(例如,存儲器)進行分配;以及,在適當?shù)臅r候(例如,當請求者不再要求資源時),對資源重新分配。一般而言,資源包含由在電腦上執(zhí)行的各種計算實體(例如,應用程序、程序和小應用程序等)引用的數(shù)據(jù)。
實際上,當在電腦上執(zhí)行應用程序需要引用各種資源時,電腦必須首先分配或指派資源,以便應用程序能夠恰當?shù)匾盟鼈?。當應用程序不再引用資源時,電腦可以重新分配或回收該資源,以供以后再用。在電腦中,每個資源都有一個獨特的“句柄”(handle),通過它可以引用該資源。該句柄可以利用各種不同的方式(諸如地址、陣列索引、單一值、指針、等等)來處理。
對于單臺電腦而言,資源管理相對簡單,因為表明何時可以回收資源(諸如,當應用程序不再引用它們時,或在發(fā)生電源故障之后)的各種事件很容易確定。而連接多臺電腦的分布式系統(tǒng)的資源管理則較為困難,因為幾臺不同的電腦中的應用程序可能會同時使用相同的資源。
分布式系統(tǒng)中的連接中斷會導致資源回收不當和過早,或者,會導致回收資源失敗。例如,在分布式系統(tǒng)中,運行于不同電腦上的多個應用程序可能會引用位于其它計算機上的資源。如果中斷各臺電腦(資源所在處)與引用這些資源的應用程序之間的連接,那么,電腦可能會過早地回收該資源。另一種情況是,盡管應用程序無法存取這些資源的時間延長了,但是電腦可能還是一直保持著這些資源。
這些困境推動了一些管理網(wǎng)絡資源的系統(tǒng)的開發(fā),其中的一種系統(tǒng)稱為“分布式無用數(shù)據(jù)(garbage)收集”。該術語描述了由一個語言系統(tǒng)或運行時系統(tǒng)為分布式系統(tǒng)提供的一種功能(facility),可對運行于一個網(wǎng)絡中不同電腦的一個應用程序或一組應用程序所使用的資源進行自動管理。
一般而言,無用數(shù)據(jù)收集運用了這樣一個概念,即,當應用程序的任何部分不再引用資源時,就可以釋放這些資源,以供將來使用。分布式無用數(shù)據(jù)收集將此概念擴展到這樣的范疇,即,當任何電腦中沒有應用程序引用資源時,對這些資源實行分布式的計算和回收。
分布式無用數(shù)據(jù)收集必須保持被分配的資源與對這些資源的引用之間的完整性。換言之,當運行于網(wǎng)絡中任何電腦的某個應用程序繼續(xù)引用某個資源時,不允許該系統(tǒng)重新分配或釋放該資源。這種引用-資源的綁定(binding)被稱作“引用完整性”,它并不保證該引用總是允許對其引用的資源進行存取。例如,當網(wǎng)絡發(fā)生故障時就無法進行這種存取。但是,完整性確保如果可以利用該引用來存取任何資源,那么,首先把該引用提供給相同的資源。
使用無用數(shù)據(jù)收集的分布式系統(tǒng)還必須回收在有限將來的某段時間不再被引用的各種資源。換言之,該系統(tǒng)必須保證不發(fā)生“存儲器漏洞”(memoryleaks)。如果所有的應用程序停止引用一個資源,而該系統(tǒng)由于(例如)誤認為某個應用程序仍然在引用該資源,從而沒有對該資源實行再用回收,則會發(fā)生存儲器漏洞。
引用完整性失敗和存儲器漏洞常常由引用資源的各種應用程序與對這些資源進行分配和重新分配管理的無用數(shù)據(jù)收集系統(tǒng)之間發(fā)生斷開所致。例如,如果斷開引用一個資源的某個應用程序與管理該資源的一個無用數(shù)據(jù)收集系統(tǒng)之間的網(wǎng)絡連接,則可能使該無用數(shù)據(jù)收集系統(tǒng)無法確定是否與何時回收該資源。另一種情況是,由于某個應用程序沒有在預定時間存儲器取一個資源,因此,無用數(shù)據(jù)收集系統(tǒng)也許會誤認為,它可以收集該資源。通過試圖確保這類機制保持引用完整性(而不發(fā)生存儲器漏洞),已采用許多技術來改進分布式無用數(shù)據(jù)收集機制。一種傳統(tǒng)的方法使用引用計數(shù)的形式,其中,保持引用每個資源的應用程序的數(shù)目的計數(shù)。當一個資源的計數(shù)為零時,無用數(shù)據(jù)收集系統(tǒng)可以回收該資源。但是,只有該資源具備一個對應的引用計數(shù)器,這種引用計數(shù)方案才行得通。在此情況下,當額外的應用程序引用資源時,無用數(shù)據(jù)收集系統(tǒng)會遞增該資源的引用計數(shù);而當一個應用程序不再引用資源時,無用數(shù)據(jù)收集系統(tǒng)則會遞減其引用計數(shù)。
然而,引用計數(shù)方案特別容易碰到分布式系統(tǒng)內(nèi)發(fā)生故障方面的各種問題。這類故障可以是電腦或應用程序失靈,也可以是網(wǎng)絡故障,它們阻礙了通知無用數(shù)據(jù)收集系統(tǒng)某個資源不再被引用的信息的傳遞。如果由于網(wǎng)絡斷開而無法傳遞信息,那么,無用數(shù)據(jù)收集系統(tǒng)就不知道何時回收該資源了。
為了防止發(fā)生這樣的故障,一些傳統(tǒng)的引用計數(shù)方案包括“保持有效”(keep-alive)信息(也被稱作“彈回”(ping back))。根據(jù)這個方案,網(wǎng)絡中的應用程序?qū)⑿畔l(fā)送給監(jiān)督資源的無用數(shù)據(jù)收集系統(tǒng),并指出這些應用程序仍然可以進行通信。這些信息阻止無用數(shù)據(jù)收集系統(tǒng)中斷引用各種資源。沒有收到這種“保持有效”信息則表示無用數(shù)據(jù)收集系統(tǒng)能夠遞減某個資源的引用計數(shù),因此,當計數(shù)達到零的時候,無用數(shù)據(jù)收集系統(tǒng)可以回收該資源。但是,這仍然會因為網(wǎng)絡發(fā)生故障,無法收到“保持有效”信息,導致隨著達到零的引用計數(shù)對資源的過早回收。這違反了引用完整性的要求。
另一個提出的用于解決無用數(shù)據(jù)收集系統(tǒng)中的引用完整性問題的方法是不僅保存一個引用計數(shù),而且保存與引用資源的每個計算實體相對應的一個標識符。參見A.Birrell等人所著的《網(wǎng)絡目標的分布式無用數(shù)據(jù)收集》,數(shù)字系統(tǒng)研究中心,116號,1993年12月15日。這個方法也受到與引用計數(shù)方案所面臨的相同問題的困擾。此外,這個方法要求為引用每個資源的每個計算實體添加獨特的標識符,增加了將不必要地加大分布式系統(tǒng)內(nèi)的通信和添加存儲器要求(即,與引用每個資源的應用程序相對應的標識符列表)的開銷(overhead)。
發(fā)明概要根據(jù)本發(fā)明,通過在一個時間間隔內(nèi)租用資源,可保證引用完整性(不會發(fā)生高代價的存儲器漏洞)。在這段時間間隔內(nèi),分布式系統(tǒng)中的各方(例如,引用一個資源的某個應用程序和管理該資源的無用數(shù)據(jù)收集系統(tǒng))同意保證該資源及對其的引用。在租用時間間隔結(jié)束時,引用資源的保證將逐漸失效,從而使無用數(shù)據(jù)收集系統(tǒng)回收該資源。由于引用該資源的應用程序和管理該資源的無用數(shù)據(jù)收集系統(tǒng)在一個有限的保證租用時間間隔內(nèi)達成一致,所以,雙方都知道租用何時期滿(保證也因此結(jié)束)。這保證了引用租用期間的引用完整性,并且無須擔憂因網(wǎng)絡差錯而導致無法釋放該資源。除存儲器外,租用技術還可以應用于其它類型的存儲器(諸如,各種存儲設備)。
與本發(fā)明中的一個可選擇的實施例一致,如這里實施和概述的,提供了一種租用存儲器位置的方法。這種方法包括如下的步驟從一個規(guī)定存儲器位置和租用時間間隔的調(diào)用程序接收一項請求;確定一個租用時間間隔(其間,該調(diào)用程序?qū)χ付ǖ拇鎯ζ魑恢眠M行存取);向該調(diào)用程序建議準許的租用時間間隔;以及,允許該調(diào)用程序在確定的租用時間間隔內(nèi)存取該存儲器位置。
附圖簡介包括入說明書并且構(gòu)成說明書一部分的附圖闡明了本發(fā)明的一個實施例,并結(jié)合描述對本發(fā)明的優(yōu)點和原理進行解釋。在這些附圖中,
圖1是根據(jù)本發(fā)明的一個實施例的應用程序調(diào)用處理器執(zhí)行的步驟流程圖;圖2是根據(jù)本發(fā)明的一個實施例的服務器調(diào)用處理器處理“臟”調(diào)用(dirtycalls)的步驟流程圖;圖3是根據(jù)本發(fā)明的一個實施例的服務器調(diào)用處理器處理“潔”調(diào)用(cleancalls)的步驟流程圖;圖4是根據(jù)本發(fā)明的該項實施例的由服務器調(diào)用處理器進行的啟動一個無用數(shù)據(jù)收集程序的步驟流程圖;圖5是在分布式處理系統(tǒng)內(nèi)的一種較佳調(diào)用流的圖表;圖6是根據(jù)本發(fā)明的一種方法調(diào)用服務的執(zhí)行部分的方框圖;圖7是可用于本發(fā)明的一個實施例中的一個分布式處理系統(tǒng)的圖表;和圖8是根據(jù)本發(fā)明的該實施例的分布式處理系統(tǒng)的平臺中的單個軟件部分的圖表;和圖9是用于在分布式處理系統(tǒng)(可用于本發(fā)明的一個可選擇的實施例)中租用存儲器位置的一個數(shù)據(jù)處理系統(tǒng)的圖表;和圖I0A和圖10B是根據(jù)本發(fā)明的一個可選擇的實施例的向服務器請求租用時客戶機執(zhí)行的步驟流程圖;和圖11根據(jù)本發(fā)明的一個可選擇的實施例的向客戶機請求租用時服務器執(zhí)行的步驟流程圖。
詳細描述現(xiàn)在,來詳細參考如附圖所示的本發(fā)明的一個實施例。只要有可能,相同的標號將在附圖和以后的描述中被用來指出相同的或類似的部分。
本發(fā)明可用按傳統(tǒng)分布式處理系統(tǒng)體系結(jié)構(gòu)組織的電腦來實施。但是,本發(fā)明的體系結(jié)構(gòu)和實施本發(fā)明的過程并不傳統(tǒng),因為它們提供了一種確保引用完整性和排除存儲器漏洞的分布式無用數(shù)據(jù)收集方案。
A.概況位于分布式處理系統(tǒng)中的每臺電腦內(nèi)的方法調(diào)用(MI)部件實施本發(fā)明的分布式無用數(shù)據(jù)收集方案。該MI部件可以包含許多最好用JAVATM編程語言編寫的軟件模塊。
一般而言,每當分布式處理系統(tǒng)中的某個應用程序通過作為其它某個調(diào)用的返回值的名稱查找或另一種方法能夠引用一個分布式資源并想存取該資源時,該應用程序就調(diào)用該資源或管理該資源的MI部件。這個MI部件(稱作“管理MI部件”)留意對該資源的未結(jié)束的引用次數(shù)。當對一個資源的引用次數(shù)為零時,管理MI部件將回收該資源。對一個資源引用次數(shù)的計數(shù)通常被稱為“引用計數(shù)”,遞增引用計數(shù)的調(diào)用可稱作“臟調(diào)用”。
當某個應用程序不再需要一個分布式資源時,它給該資源或管理MI部件發(fā)送一個不同的調(diào)用。管理MI部件在收到這個調(diào)用后,就會遞減該資源的引用計數(shù)。這種結(jié)束引用的調(diào)用可被稱作“潔調(diào)用”。
根據(jù)本發(fā)明的一項實施,臟調(diào)用可包括引用資源所需的時間間隔(稱作“租用時間間隔”)。管理MI部件在收到這個臟調(diào)用后,就會發(fā)送一個指出租用準許的時間間隔的返回調(diào)用。這樣,管理MI部件跟蹤這些引用的租用時間間隔和未結(jié)束引用的次數(shù)。因此,當一個資源的引用計數(shù)為零時,或者,當該資源的租用時間間隔期滿時,管理MI部件會回收該資源。
B.過程
MI部件中的應用程序調(diào)用處理器執(zhí)行圖1所示的應用程序調(diào)用過程100的步驟。MI部件中的服務器調(diào)用處理器分別執(zhí)行圖2-4所示的過程200、300和400的步驟。管理MI部件的無用數(shù)據(jù)收集器根據(jù)來自服務器調(diào)用處理器的指令,執(zhí)行回收先前引用過的資源的傳統(tǒng)過程。因此,無用數(shù)據(jù)收集器的傳統(tǒng)過程將不作解釋。
1.應用程序調(diào)用處理器圖1是過程100的流程圖,MI部件的應用程序調(diào)用管理處理器運用該程序來處理應用程序引用資源的請求,資源由位于分布式處理系統(tǒng)內(nèi)的同一個MI部件或另一個MI部件來進行管理。
在某個應用程序引用一個資源后,應用程序調(diào)用處理器會發(fā)送一個臟調(diào)用給資源管理MI部件,該臟調(diào)用包括資源的引用和所請求的租用時間間隔(步驟110)??梢园言撆K調(diào)用引到資源本身或管理MI部件。
然后,應用程序調(diào)用處理器等待并接收來自管理MI部件的一個返回調(diào)用(步驟120)。該返回調(diào)用包括一個準許的租用時間間隔,在該時間間隔內(nèi),管理MI部件保證臟調(diào)用的引用將限于其資源。換言之,在此準許的時間間隔內(nèi),管理MI部件同意不收集對應于臟調(diào)用引用的資源。如果管理MI部件不提供一個準許的時間間隔,或拒絕租用請求,那么,應用程序調(diào)用處理器將必須發(fā)送另一個臟調(diào)用,直到它收到一個準許的時間間隔為止。
應用程序調(diào)用處理器監(jiān)控該應用程序?qū)σ玫倪\用,并且當應用程序明確告知應用程序調(diào)用處理器不再要求引用時,或當應用程序調(diào)用處理器自行作出這個決定時(步驟130),應用程序調(diào)用處理器將一個潔調(diào)用發(fā)送給管理MI部件(步驟140)。以類似于臟調(diào)用使用的方法,該潔調(diào)用可能會被指引到引用過的資源,而管理MI部件則將對該潔調(diào)用進行處理。然后,應用程序調(diào)用處理器把該引用從正在被應用程序使用的引用列表中除去(步驟150)。
如果應用程序還沒有完成引用(步驟130),而應用程序調(diào)用處理器確定引用的準許時間間隔即將期滿(步驟160),那么,應用程序調(diào)用處理器會重復步驟110和120,以確保代表應用程序的管理MI部件保持對該資源的引用。
2.服務器調(diào)用處理器MI部件的服務器調(diào)用處理器執(zhí)行三項主要過程(1)處理臟調(diào)用,(2)處理輸入的潔調(diào)用;和(3)啟動一個無用數(shù)據(jù)收集時間間隔,以便在適當?shù)臅r候回收資源。
(ⅰ)臟調(diào)用圖2是過程200的流程圖。MI部件的服務器調(diào)用處理器使用該過程來處理引用由MI軟件部件管理的資源的請求(即,臟調(diào)用)。這些請求來自分布式處理系統(tǒng)內(nèi)的MI部件的應用程序調(diào)用處理器,包括與處理請求的服務器調(diào)用處理器相同的MI部件的應用程序調(diào)用處理器。
首先,服務器調(diào)用處理器接收一個臟調(diào)用(步驟210)。然后,服務器調(diào)用處理器確定一個可接受的準許的時間間隔(步驟220)。該準許的時間間隔可能和所請求的租用時間間隔或其它某個時間間隔相同。服務器調(diào)用處理器根據(jù)許多條件(包括所需資源的數(shù)量和先前對相同資源的其它準許的時間間隔的數(shù)目)來確定合適的準許的時間間隔。
當服務器調(diào)用處理器確定還沒有分配供臟調(diào)用引用的資源時(步驟230),服務器調(diào)用處理器會分配所需的資源(步驟240)。
隨后,服務器調(diào)用處理器遞增對應于臟調(diào)用引用的引用計數(shù)(步驟250),為引用一資源的綁定設置可接受的準許的時間間隔(步驟260),并將返回調(diào)用發(fā)送到一個具有該準許的時間間隔的應用程序調(diào)用處理器(步驟270)。這樣,服務器調(diào)用處理器對輸入的臟調(diào)用引用資源實行控制。
應用程序通過在當前租用期滿之前發(fā)送具有延期請求的臟調(diào)用,可以延長租用期。如過程200中所示,對延長租用期的請求的處理與對租用的最初請求的處理相同。延期只意味著,除非引用計數(shù)為零,否則,在某段額外的時間間隔期內(nèi)不會回收該資源。
(ⅱ)潔調(diào)用MI部件的服務器調(diào)用處理器還處理從應用程序調(diào)用處理器輸入的潔調(diào)用。當分布式處理系統(tǒng)內(nèi)的某個應用程序不再需要引用一個資源時,它會告知管理該引用資源的MI部件,以便回收該資源,供日后再用。圖3是過程300的流程圖,它具有MI部件的服務器調(diào)用處理器處理潔調(diào)用的步驟。
當服務器調(diào)用處理器接收到引用某個資源(由MI部件管理)的潔調(diào)用時(步驟310),服務器調(diào)用處理器會確定一個對應的引用計數(shù)(步驟320)。該潔調(diào)用會被發(fā)送到該資源,而服務器調(diào)用處理器則監(jiān)視該資源并執(zhí)行過程300以處理這個調(diào)用。隨后,服務器調(diào)用處理器發(fā)送給MI部件(它曾發(fā)送該潔調(diào)用以確認接收)一個返回調(diào)用(步驟330)。根據(jù)本發(fā)明的這個實施,潔調(diào)用停止引用可能不會被拒絕,但是,它必須得到確認。
(ⅲ)無用數(shù)據(jù)收集服務器調(diào)用處理器還啟動一個無用數(shù)據(jù)收集時間間隔以回收資源。對于該資源它決定不再對其進行引用;或者,經(jīng)同意的該資源的租用時間間隔已經(jīng)期滿。圖4所示的過程400包括服務器調(diào)用處理器啟動一個無用數(shù)據(jù)收集時間間隔的步驟流程圖。
服務器調(diào)用處理器監(jiān)視引用計數(shù)和準許的租用時間間隔,并確定由MI部件管理的某個資源的引用計數(shù)是否為零,或某項引用的準許的時間間隔是否已經(jīng)期滿(步驟410)。無論在這兩種條件中的哪一種條件下,服務器調(diào)用處理器都會開始該資源的無用數(shù)據(jù)收集(步驟420)。否則,服務器調(diào)用處理器會繼續(xù)監(jiān)視引用計數(shù)和準許的租用時間間隔。
C.調(diào)用流程圖5是示出分布式處理系統(tǒng)內(nèi)的MI部件之間的調(diào)用流程的圖表。管理MI部件525通過監(jiān)視對這些資源530的引用來管理資源530(參見無用數(shù)據(jù)收集505)。因為管理MI部件525管理這些資源,所以,管理MI部件525的服務器調(diào)用處理器執(zhí)行該調(diào)用流程圖所描述的各項操作。
圖5還示出,應用程序510和540分別具有對應的MI部件515和545。每個應用程序510和540都能夠引用資源530中的一個資源,并都想對資源530中的一個資源進行存取,以便使引用限于對應的資源。為了進行存取,應用程序510和540分別調(diào)用其對應的MI部件515和545,以便分別將臟調(diào)用551和571發(fā)送給MI部件525。因為MI部件515和525處理應用程序?qū)Y源530(由另一個MI部件(諸如管理MI部件525)實行管理)進行存取的請求,所以,MI部件515和545的應用程序調(diào)用處理器執(zhí)行該調(diào)用流程圖所描述的各項操作。
響應于臟調(diào)用551和571,管理MI部件525分別將返回調(diào)用552和572發(fā)送給MI部件515和545。臟調(diào)用包括臟調(diào)用551和571引用的準許的租用時間間隔。
同樣,圖5還示出,MI部件515和545分別將潔調(diào)用561和581發(fā)送給管理MI部件525。潔調(diào)用561和581通知管理MI部件525應用程序510和540分別不再請求對潔調(diào)用561和581中指定的資源進行存取。管理MI部件525分別用返回調(diào)用562和582來回應潔調(diào)用561和581。返回調(diào)用562和582與返回調(diào)用552和572的不同之處在于,返回調(diào)用562和582只是來自所接收到的潔調(diào)用561和581的MI部件525的確認。
應用程序510和540兩者可能都會請求對相同的資源進行存取。例如,應用程序510可能會請求對“資源(1)”進行存取,而應用程序540先前已被允許對該資源進行存取。面對這種情況,MI部件525的處理方法是使應用程序510和540都能在同意的租用時間間隔內(nèi)獲得該資源。這樣,直到應用程序510和540都已停止其對該資源的引用或最近同意的租用時間間隔已經(jīng)期滿(無論哪件事先發(fā)生),MI部件525才會啟動回收“資源(1)”的無用數(shù)據(jù)收集時間間隔。通過允許一個以上的應用程序同時存取相同的資源,本發(fā)明也允許某個應用程序在給停止引用資源的管理MI部件發(fā)送潔調(diào)用之后存取該資源。之所以發(fā)生這種情況的原因是該資源仍然被另一個應用程序引用;或該引用的租用還未到期,因此,管理MI部件525還沒有對該資源進行回收。但是,當不再有應用程序?qū)嵭凶庥脮r,或者,當最近的租用已到期時,該資源將在一個有限的時間間隔后被回收。
D.MI部件圖6是根據(jù)本發(fā)明的一個實施例的MI部件600的模塊的方框圖。MI部件600可以包括用于受監(jiān)控的每個引用的引用部分605、應用程序調(diào)用處理器640、服務器調(diào)用處理器650和無用數(shù)據(jù)收集器660。
引用部分605最好包括具備參考數(shù)據(jù)部分610、引用計數(shù)620和準許的時間間隔寄存器630的一張表格或一個可比較的結(jié)構(gòu)。MI部件600利用一個對應的參考數(shù)據(jù)部分610中指定的每次引用的引用計數(shù)620和準許時間間隔630,來決定何時啟動回收對應的資源的無用數(shù)據(jù)收集器660。
應用程序調(diào)用處理器640是執(zhí)行圖1中過程100的步驟的軟件模塊。服務器調(diào)用處理器650是執(zhí)行圖2~4中的過程200、300和400的步驟的軟件模塊。如上所述,無用數(shù)據(jù)收集器660是響應于來自服務器調(diào)用處理器650的指令而回收資源的軟件模塊。
E.分布式處理系統(tǒng)圖7示出了一個可用于執(zhí)行本發(fā)明的分布式處理系統(tǒng)50。在圖7中,分布式處理系統(tǒng)50包含三個獨立的和不同種類的平臺100、200和300。這些平臺被連接在由網(wǎng)絡云(network cloud)55代表的一個網(wǎng)絡配置中。只要該網(wǎng)絡配置(在圖7中,由云55代表)允許平臺700、800與900之間信息的交流,它的組成和協(xié)議并不重要。此外,僅三個平臺的使用只是用于進行說明,而并非令本發(fā)明限于只使用特定數(shù)量的平臺。另外,特殊的網(wǎng)絡結(jié)構(gòu)并不是本發(fā)明的關鍵所在。例如,根據(jù)本發(fā)明可使用的另一個網(wǎng)絡結(jié)構(gòu)將一個平臺用作網(wǎng)絡控制器,其它所有的平臺將與該控制器相連接。
在分布式處理系統(tǒng)50的實施中,平臺700、800和900分別包括處理器710、810和910,以及存儲器750、850和950。每個處理器710、810和910的內(nèi)部分別包括應用程序720、820和920,分別包括操作系統(tǒng)740、840和940,還分別包括MI部件730、830和930。
應用程序720、820和920可以是以前編寫和修改過的本發(fā)明需要的程序,也可以是特別被編寫來利用本發(fā)明所提供的服務的程序。應用程序720、820和920根據(jù)本發(fā)明來調(diào)用將被執(zhí)行的各項操作。
參照圖6,MI部件730、830和930與以上所述的MI部件600相對應。
操作系統(tǒng)740、840和940是分別與對應的處理器710、810和910相連接的標準操作系統(tǒng)。平臺700、800和900可以是異種的。例如,平臺700具有SunMicrosystems Corp.生產(chǎn)的UltraSparc微處理器作為處理器710,并使用Solaris操作系統(tǒng)740。平臺800具有Silicon Graphics Corp.生產(chǎn)的MIPS微處理器作為處理器810,并使用Unix操作系統(tǒng)840。最后,平臺900具有Intel Corp.生產(chǎn)的Pentium微處理器作為處理器910,并使用Microsoft Windows 95操作系統(tǒng)940。本發(fā)明的局限性不大,也可以適應同構(gòu)的各種平臺。
Sun、Sun Microsystems、Solaris、Java與Sun Logo都是美國和其它國家的SunMicrosystems,Inc.的商標或注冊商標。UltraSparc和其它所有的SPARC商標均被授權使用,并且是美國和其它國家的SPARC International,Inc.的商標。具備SPARC商標的產(chǎn)品基于由Sun Microsystems公司開發(fā)的結(jié)構(gòu)。
存儲器750、850和950具有幾項功能(諸如,對于關聯(lián)平臺的通用存儲器)。另一項功能是在處理器710、810和910分別執(zhí)行之前,存儲應用程序720、820和920,以及MI部件730、830和930,還有操作系統(tǒng)740、840和940。此外,存儲器750、850和950的各個部分可以構(gòu)成網(wǎng)絡50中所有平臺700、800和900可用的共享的存儲器。
E.MI服務本發(fā)明可以利用一個客戶機/服務器模型來執(zhí)行。該客戶機產(chǎn)生各種請求(例如,臟調(diào)用和潔調(diào)用),而該服務器則對請求作出響應。
圖7所示的每個MI部件730、830和930最好既包括客戶機部分,又包括服務器部分。圖8(它是客戶機平臺1000和服務器平臺1100的方框圖)適用于圖7所示的平臺700、800和900中的任何兩個平臺。
平臺1000和1100分別包含存儲器1050和1150,以及處理器1010和1110。參照圖7,平臺1000和1100中元件的功能與以上所述的類似元件的功能相同。在此例中,處理器1010執(zhí)行客戶機應用程序1020,而處理器1110則執(zhí)行服務器應用程序1120。處理器1010和1110還分別執(zhí)行操作系統(tǒng)1040和1140,以及MI部件1030和1130。
每個MI部件1030和1130都分別包括服務器調(diào)用處理器1031和1131,分別包括應用程序調(diào)用處理器1032和1132,以及分別包括無用數(shù)據(jù)收集器1033和1133。MI部件1030和1130還都包含各個引用部分(分別包括用于MI部件1030或1130各自監(jiān)視的每次引用的參考數(shù)據(jù)部分1034和1134,分別包括引用計數(shù)1035和1135,以及分別包括準許的時間間隔寄存器1036和1136)。
應用程序調(diào)用處理器1032和1132代表客戶機服務,并分別與服務器調(diào)用處理器1031和1131(代表服務器服務)進行通信。由于平臺1000和1100包含服務器調(diào)用處理器、應用程序調(diào)用處理器、無用數(shù)據(jù)收集器和引用部分,因此,這兩個平臺均可作為客戶機或服務器。
但是,考慮到以后的討論,平臺,1000被指派為客戶機平臺,而平臺1100則被指派為服務器平臺。在此例中,客戶機應用程序1020能夠引用各種分布式資源,并使用MI部件1030將臟調(diào)用發(fā)送給由服務器平臺1100的MI部件1130管理的各種資源。
此外,服務器平臺1100可以執(zhí)行服務器應用程序1120。服務器應用程序1120還可以使用MI部件1130來發(fā)送臟調(diào)用。當這些臟調(diào)用的資源由MI部件1130管理時,臟調(diào)用可由MI部件1130來處理。另一種情況是,服務器應用程序1120可以使用MI部件1130來將臟調(diào)用發(fā)送給由MI部件1030管理的各種資源。
因此,服務器調(diào)用處理器1031、無用數(shù)據(jù)收集器1033和客戶機平臺1000的MI部件1030的引用計數(shù)1035都處于不運行狀態(tài),所以,在圖8中把它們打上陰影。同樣,服務器平臺1100的MI部件1130的應用程序調(diào)用處理器1132由于也處于休眠狀態(tài)而被打上陰影。
當客戶機應用程序1020能夠引用一個對應的資源時,應用程序調(diào)用處理器1032會發(fā)送一個臟調(diào)用(被服務器調(diào)用處理器1131接收)。該臟調(diào)用包括一個所請求的租用時間間隔。服務器調(diào)用處理器1131遞增該臟調(diào)用中引用的引用計數(shù)1135,并確定一個準許的時間間隔。作為回應,服務器調(diào)用處理器1131將一個返回調(diào)用發(fā)送給擁有該準許的時間間隔的應用程序調(diào)用處理器1030。應用程序調(diào)用處理器1032利用該準許的時間間隔來更新已記錄的準許的時間間隔1035,并確定與其臟調(diào)用的引用相對應的資源何時可以被回收。
服務器調(diào)用處理器1131還對與其管理的資源引用相對應的引用計數(shù)和準許的時間間隔實行監(jiān)視。當它的引用計數(shù)1135中的一個引用計數(shù)為零時,或者,當某項引用的準許的時間間隔1135已經(jīng)到期時(無論哪件事先發(fā)生),服務器調(diào)用處理器1131可以啟動無用數(shù)據(jù)收集器1133,來回收對應于該引用的資源(其引用計數(shù)為零,或準許的時間間隔期滿)。
根據(jù)本發(fā)明的該項實施,被租用引用方案不要求協(xié)議中涉及的平臺1000和1100上的時鐘保持同步。該方案只是要求它們具有各個可比較的增大的時間間隔。租用并非在某個特殊的時刻到期,而是在某個特殊的時間間隔之后才到期。只要在間隔方面大致達成一致,則平臺1000和1100將會在準許的租用時間間隔方面大致達成一致。此外,由于租用的定時(用電腦術語來講)相當長,所以,時鐘速率的較小差異帶來的影響很小,或根本沒有什么影響。
臟調(diào)用的傳送時間會影響協(xié)議。如果MI部件1030持有對引用的租用并一直等待到該租用期滿請求更新之前,則該租用可以在MI部件1130接收到這個請求之前到期。若如此,則MI部件1130可以在收到更新請求之前對該資源進行回收。這樣,當發(fā)送臟調(diào)用時,鑒于到處理一個臟調(diào)用資源的平臺的傳送時間,發(fā)送器應該為所請求的租用時間間隔加入時間因素,以便能夠在該資源的租用時間間隔期滿之前能進行更新臟調(diào)用。
F.結(jié)論根據(jù)本發(fā)明,一個分布式無用數(shù)據(jù)收集方案通過提供與分布式處理系統(tǒng)中資源引用相對應的準許的租用時間間隔來確保引用完整性和消除存儲器漏洞,以便當該準許的租用時間間隔期滿時,對資源的引用也告結(jié)束。然后,就可以收集這些資源。根據(jù)分配給這些資源引用的計數(shù)器,當分布式處理系統(tǒng)中的程序不再引用資源時,也可以對它們進行收集。
本發(fā)明的可選擇的實施例如上所述,租用技術涉及無用數(shù)據(jù)收集。但是,如下所述,本發(fā)明的一個可選擇的實施例可以用于各種存儲裝置。
存儲裝置具有許多存儲器位置,它們包含各種不同的數(shù)據(jù)的邏輯分組(可以被一個以上的程序使用)。這些邏輯分組可以采取文件、數(shù)據(jù)庫或文檔的形式。存儲器位置的租用允許在預先商議的時間內(nèi)對存儲器位置進行存取(例如,讀、寫存取)。對于存儲器位置的租用而言,存儲器位置中包含什么類型的數(shù)據(jù)或存儲器位置是否包含任何數(shù)據(jù)并不重要。另外,存儲器位置的租用可以應用在存儲器的不同級別(例如,數(shù)據(jù)庫域(field)、文件、存儲器塊或?qū)嶋H的存儲器位置)上。
在一個電腦系統(tǒng)或一個分布式系統(tǒng)中,許多程序可以爭奪存儲于不同組的存儲器位置中的文件。這樣,存儲器位置的組可以擁有許多競相存取的程序。在這種情況下,可采用租用技術來裁定存儲器位置的使用。
當使用對一組存儲器位置(包含一個文件的數(shù)據(jù))的租用時,一個程序(“客戶機”)從文件系統(tǒng)管理器(“服務器”)請求一個租用,以便在一個時間間隔(“租用時間間隔”)內(nèi)對該組存儲器位置進行存取。根據(jù)可用性、優(yōu)先權和以下所述的其它因素,服務器或者拒絕該請求,或者同意一個租用時間間隔。該準許的租用時間間隔可以是所請求的整個租用時間間隔,也可以是租用時間間隔的某個部分。一旦客戶機接收到一個租用,該客戶機就可以在此租用時間間隔內(nèi)對該組存儲器位置進行存取。
當請求一個租用時間間隔時,該客戶機可能會請求一個嚴格租用時間間隔。在這種情況下,若該租用時間間隔是所請求的整個租用時間間隔(相對于一部分租用時間間隔),服務器才同意此租用。
當一個租用有效時,客戶機被保證對該組存儲器位置進行存取,并可以在這些位置上實行讀、寫操作。同樣,在一個有效租用時間間隔內(nèi),服務器將保持存儲器位置的完整性。例如,在租用時間間隔期間,服務器將不允許受租用的文件被刪除、重寫,或受到除客戶機以外的任何實體的影響。但是,租用期滿后,服務器就不再向客戶機保證該文件的完整性了,因此,服務器可能會刪除該文件,或?qū)ζ溥M行實質(zhì)上的更改,或向另一客戶機(所行方法可能相同)準許一個租用。不包括未結(jié)束租用的存儲器位置將被服務器回收。
每個存儲器位置可以擁有一個關聯(lián)限制參數(shù)(諸如存取參數(shù)或特權參數(shù))。存取參數(shù)確定服務器支持該存儲器位置的存取的類型。例如,一個存儲器位置可以只被定義為讀存取。在此情況下,服務器只允許為后來被準許租用的那個特殊的存儲器位置提供讀存取。相反,服務器不會允許客戶機試圖寫入那個存儲器位置。其它潛在的存儲器位置存取參數(shù)可以包括寫存取、分配存取、再分配存取和子塊存取(即,對于大存儲塊)。
關聯(lián)的特權參數(shù)規(guī)定客戶機在將準許一個租用之前必須具有的特權等級。服務器用特權參數(shù)來為完成各種租用請求區(qū)分優(yōu)先次序。換言之,當服務器對相同的存儲器位置有多項未完成的租用請求時,它會根據(jù)提出該請求的客戶機的特權等級,來為這些請求區(qū)分優(yōu)先次序。
該可選擇的實施例還通過向相同的存儲器位置準許多個并發(fā)(concurrent)租用,來支持到一組存儲器進行并發(fā)存取。例如,如果一個特殊的存儲器位置的參數(shù)指定“讀”存取,則服務器可以向那個存儲器位置準許多個并發(fā)租用,而不破壞該存儲器位置的完整性。并發(fā)租用也可應用于(例如)大型文件。服務器可以只準許租用該文件的較小子塊,而不損害該較大文件的完整性。
一旦客戶機請求一個租用,服務器就向該客戶機返回一個目標,包括確定租用時期的方法,更新該租用的方法和取消該租用的方法。該目標是一個等級實例,可用多種方式對其擴展,以便提供更大的功能性。但是,基本等級定義如下<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>具體地說,調(diào)用“getDuration”方法為客戶機提供了準許的租用時間間隔的長度。這個時間間隔代表由服務器準許的最近的租用。但是,確定所需的租用時間數(shù)量則是客戶機的責任。
“更新”方法使客戶機能夠更新租用,請求更多時間,而不必重新提出原先的租用請求。客戶機可能希望更新該租用的情況包括當原先的租用不夠(即,客戶機請求額外使用存儲器位置)時;或者,當只準許了部分租用(即,少于所請求的租用)時。
客戶機可以利用該更新方法來請求額外的租用時間間隔,或者,客戶機可以連續(xù)多次調(diào)用更新方法,直到許多額外的租用時間間隔被準許。更新方法沒有返回值;如果同意更新,則在租用目標(根據(jù)它作出調(diào)用)將反映出新的租用時間間隔。如果服務器無法或不愿更新租用,則由更新方法產(chǎn)生的LeaseDeniedException會闡明其中的原因。
最后,當客戶機希望取消該租用,而租用時間還未用完時,客戶機會調(diào)用“取消”方法。這樣,取消使服務器能夠回收存儲器位置,以便其它程序存取它們。因此,取消方法確保服務器能夠優(yōu)化對分布式系統(tǒng)中各種存儲器位置的使用。相反,當一個租用一結(jié)束(即自然終止),服務器就知道收回對存儲器位置的控制。所以,當租用自然終止時,客戶機不承擔通知服務器的義務。
圖9描繪了適合被本發(fā)明的一個可選擇的實施例使用的數(shù)據(jù)處理系統(tǒng)9000。該數(shù)據(jù)處理系統(tǒng)9000包括與互聯(lián)網(wǎng)9002相連接的電腦系統(tǒng)9001。電腦系統(tǒng)9001包括存儲器9003、輔助存儲裝置9004、中央處理器(CPU)9006、輸入裝置9008和一個視頻顯示器9010。存儲器包含管理輔助存儲裝置9004上的文件9018的文件系統(tǒng)管理器(“服務器”)9016。客戶機9014通過從服務器9016請求一個租用來請求對文件9018中的一個或多個文件進行存取。如以下進一步的描述的,作為響應,服務器9016可能選擇準許或拒絕該租用。熟悉該技術的人士會明白,電腦9000可包含額外的或不同的部件。
雖然該可選擇的實施例的各個方面被描述為存儲于存儲器9003,但是,熟悉該技術的人士會明白,這些方面也可以被存儲在其它的電腦可讀取媒體(諸如輔助存儲裝置(如硬盤、軟盤或CD-Rom)、來自互聯(lián)網(wǎng)9002的載波或其它形式的RAM或ROM)中。此外,熟悉該技術的人士會明白,可以利用該可選擇的實施例來租用輔助存儲器(如數(shù)據(jù)庫、電子表格和文檔)中其它形式的數(shù)據(jù)。
圖10A和10B描繪了一幅從服務器請求一個租用時客戶機所執(zhí)行的步驟的流程圖。客戶機執(zhí)行的第一個步驟是向服務器發(fā)送一個租用請求(步驟10002)。這個請求是一個包括許多參數(shù)的功能調(diào)用,這些參數(shù)包括(1)客戶機希望租用的所請求的存儲器位置;(2)想要的租用時間間隔;(3)嚴格租用指示器;(4)客戶機所要的存取類型;和(5)客戶機的特權。
所請求的存儲器位置表示了將被租用的存儲器位置。想要的租用時間間隔包含客戶機想使用存儲器位置的一段時間。嚴格租用請求表示了是否正在提出一個嚴格租用請求或少于所需量的租用是否足夠。所請求的存取類型表明了客戶機請求的存儲器位置存取的類型。存取類型包括讀存取、寫存取、分配存取、再分配存取和子塊存取(即,對于大存儲塊)。特權字段指出用戶或客戶機的特權等級。為形成有效的請求,客戶機的請求必須既包含所請求的存儲器位置,又包含想要的租用時間間隔。
通常有兩種產(chǎn)生對存儲器位置的租用請求的情況。第一種情況發(fā)生在創(chuàng)建一個文件時。用于創(chuàng)建該文件的創(chuàng)建命令也會產(chǎn)生一項對服務器的租用請求,以便對該文件進行存取。利用租用技術來控制新的文件的請求可確保存儲器位置負起責任。因此,服務器不傾向于為新的文件準許較長的或無限期的租用。第二種情況發(fā)生在客戶機希望對現(xiàn)存的存儲器位置或已有現(xiàn)存租用的一個文件進行存取時(即,在并發(fā)租用的情況下)。
發(fā)送該請求后,客戶機根據(jù)它有沒有從服務器收到一個租用目標,來確定是否已準許一個租用(步驟10006)。如上所述,該租用目標包含各種信息(包括文件處理、getDuration方法、更新方法和取消方法)。應該注意,如果服務器由于任何原因而拒絕租用,則該服務器會產(chǎn)生異常(由客戶機的各種異常處理程序來處理)。
如果由于請求不適當而不準許一個租用(步驟10008),則將調(diào)用客戶機的一個異常處理程序來重新配置該請求(步驟10010),處理繼續(xù)進行到步驟10002。不適當?shù)恼埱蟀ㄌ蟮淖庥脮r間間隔請求或未知存儲器位置的租用請求。如果請求不適當,則客戶機會重新配置該請求,以創(chuàng)建一個有效的請求。例如,如果服務器不能同意一個嚴格租用的請求,則客戶機會重新配置該請求,示出一個較短的租用時間間隔;或者,如果是關于一個未知存儲器位置的請求,則客戶機會重新配置該請求,給出一個已知的存儲器位置。
但是,如果由于存儲器位置正在被另一個客戶機租用而不準許租用(步驟10012),則將調(diào)用一個異常處理程序來等待一段預定的時間(步驟10014),處理繼續(xù)進行到步驟10002。
然而,另一種可供選擇的方案是,服務器可以排列租用請求。在這種情況下,在等待了一段預定的時間之后,客戶機確定它是否收到一個表明已經(jīng)準許租用的回應。如果隨后準許一個租用,則處理將繼續(xù)到圖10B中的步驟10024。如果不準許租用,則客戶機會等候,然后繼續(xù)到步驟10002。
如果客戶機確定租用請求在步驟10006中獲得了成功,那么,客戶機就取得了有效租用。這樣,客戶機可以存取實行租用的存儲器位置(步驟10024)。存取存儲器位置之后,客戶機確定它是否已完成對存儲器位置的存取(步驟10026)。如果客戶機完成了對存儲器位置的存取,則該客戶機將確定租用是否已到期(步驟10028)。若租用已到期,則處理會結(jié)束,客戶機與服務器之間也無須進行通信(即,發(fā)生自然終止)。否則,如果租用仍然有效,那么,客戶機就會調(diào)用取消方法(步驟10030)。客戶機這樣做是出于優(yōu)化的目的??蛻魴C通過租用目標來存取取消方法。取消方法通知服務器客戶機已經(jīng)不再對存儲器位置感興趣了。因此,取消方法允許服務器回收該存儲器位置,迅速供其它程序使用。
如果客戶機還沒有用完被租用的文件,則客戶機會確定該租用是否即將到期(步驟10032)。這是通過客戶機將當前時刻與租用持續(xù)時間作比較來實現(xiàn)的。通過調(diào)用getDuration方法,可查明租用持續(xù)時間。如果租用尚未期滿,則客戶機可以繼續(xù)在步驟10024中存取存儲器位置。但是,如果租用即將到期,則客戶機必須決定要不要更新該租用(步驟10034)。如果客戶機選擇更新租用,則該客戶機會調(diào)用租用目標的更新方法。若調(diào)用更新方法,處理將繼續(xù)進行到步驟10024。如果客戶機不更新租用,則處理會結(jié)束,客戶機與服務器之間也無須進行通信(即,自然終止)。
圖11描繪了當客戶機請求一個租用時服務器所執(zhí)行的步驟的流程圖。當客戶機創(chuàng)建一個文件、請求租用一個文件(已有一個租用)或調(diào)用更新方法時,可以調(diào)用這些步驟。服務器執(zhí)行的第一個步驟是接收客戶機提出的一個租用請求(步驟11002)。收到該請求后,服務器會檢查參數(shù),以檢驗該請求是否適當(步驟11004)。
在檢查了這些參數(shù)之后,服務器確定該請求適當與否(步驟11006)。例如,服務器會核對所需的存儲器位置是否真的是實際存儲器位置,以及,客戶機是否擁有一個充分的特權等級。服務器還要核實,想要的租用時間間隔已被指定。此外,服務器還須核對是否存在所請求的存取類型。如果服務器確定租用請求不適當,則該服務器會產(chǎn)生異常,調(diào)用合適的客戶機事件處理程序(步驟11008),處理將告結(jié)束。
如果請求適當,則服務器會實行租用時間間隔算法(“LPA”),以確定應該被準許的租用時間間隔(步驟11010)。該LPA提供一個租用時間間隔(可從客戶機的想要的租用時間間隔到根本沒有租用)。LPA考慮了許多確定租用時間間隔方面的因素。這些因素包括(無論該請求是否來自一種更新方法)創(chuàng)建指令或隨后的租用請求、客戶機的使用模式、存儲器位置的需求和存儲器位置的規(guī)模(如果請求對一個大的分組進行存取)。此外,LPA會考慮到存儲器位置的值。例如,如果某個特殊的存儲器位置的存取費用昂貴且需求很大,則LPA可能只準許短期租用。
一旦LPA確定租用時間間隔,服務器就會確定是否準許租用時間間隔(即大于零)(步驟11012)。如果不準許租用時間間隔,則服務器會產(chǎn)生異常(步驟11008),處理將告結(jié)束。如上所述,一種可供選擇的方案是,服務器可以排列租用請求。在這種情況下,服務器將這些租用請求存儲起來,供以后處理。
如果LPA準許了租用時間間隔,那么,服務器會確定客戶機是否請求了嚴格租用(步驟11016)。如果客戶機已請求嚴格租用,則服務器將確定由LPA準許的租用時間間隔是否少于所請求的租用時間間隔(步驟11018)。如果由LPA準許的租用時間間隔小于所請求的嚴格租用時間間隔,那么,服務器將產(chǎn)生異常(步驟11008),處理結(jié)束。
如果不請求嚴格租用或準許嚴格租用,那么,服務器會建立一個租用目標,并將其返回客戶機(步驟11020)。應該注意,服務器通過監(jiān)視有效的租用時間間隔來回收被租用的存儲器位置(不再具有與它們有關的任何有效租用)。
前面對本發(fā)明的一項實施的描述用于舉例、說明的目的,它并不是窮舉的,因而也不將本發(fā)明限于所述的確切的內(nèi)容。可以根據(jù)以上的教導或通過對本發(fā)明的實踐,來進行修改和變化。例如,所描述的實施包括軟件,但本發(fā)明可以結(jié)合硬件和軟件或只利用硬件來加以實施。本發(fā)明的范圍由權利要求書及其同等物來確立。
權利要求
1.具有存儲器的一個電腦系統(tǒng)中的一種方法,其特征在于包括以下步驟從規(guī)定一部分存儲器和規(guī)定所請求的租用時間間隔的調(diào)用程序中接收-存取請求;確定該調(diào)用程序?qū)Υ鎯ζ鞯倪@個部分進行存取的一個租用時間間隔;向該調(diào)用程序建議確定的租用時間間隔;和允許該調(diào)用程序在確定的租用時間間隔內(nèi)對存儲器的這個部分進行存取。
全文摘要
為分布式處理系統(tǒng)提供一種租用存儲器位置的方法和系統(tǒng)。與這種方法和系統(tǒng)相對應,客戶機從服務器(諸如文件系統(tǒng)管理器)請求一個時間間隔(租用時間間隔)的對存儲器位置的存取。響應于這一請求,服務器調(diào)用一種租用時間間隔算法,這種算法考慮客戶機存取存儲器某些位置時的各種因素來決定租用時間間隔。租用被允許后,服務器發(fā)送一個目標給客戶機,向客戶機建議租用時間間隔并為其提供修改租用的功能(例如取消租用或更新租用)。服務器提供并發(fā)租用、嚴格租用和各種類型存取的租用。所有對存儲器位置的租用無效后,服務器重新收回存儲器位置。
文檔編號G06F9/50GK1298516SQ99805493
公開日2001年6月6日 申請日期1999年2月17日 優(yōu)先權日1998年2月26日
發(fā)明者A·M·沃爾蕾斯, J·H·瓦爾多, K·C·R·C·阿諾德 申請人:太陽微系統(tǒng)公司