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