專(zhuān)利名稱:具有增強(qiáng)的存儲(chǔ)器清除的多計(jì)算機(jī)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算,尤其涉及經(jīng)由通信網(wǎng)絡(luò)互連的多個(gè)計(jì)算機(jī)的同時(shí)操作。
背景技術(shù):
以本申請(qǐng)人的名義公布的、公布號(hào)為WO 2005/103926的國(guó)際專(zhuān)利申 請(qǐng)PCT/AU2005/000580 (代理所巻號(hào)為5027F-WO )(公布號(hào)為 2005-0262313的美國(guó)專(zhuān)利申請(qǐng)11/111,946與其對(duì)應(yīng))公開(kāi)了被編寫(xiě)成^SL^ 單計(jì)算機(jī)上執(zhí)行的應(yīng)用程序的不同部分如何能夠在多個(gè)計(jì)算機(jī)的對(duì)應(yīng)的 不同計(jì)算機(jī)上基本同時(shí)地操作。該同時(shí)操作到本申請(qǐng)的優(yōu)先權(quán)日為止尚未 在商業(yè)上4吏用。題目為"Computer Architecture Method of Operation for Multi-Computer Distributed Processing and Co-ordinated Memory and Asset Handling"的美國(guó)專(zhuān)利申請(qǐng)11/ 259885所對(duì)應(yīng)的國(guó)際專(zhuān)利申請(qǐng) PCT/AU2005/001641 (^理所巻號(hào)為5027F-D1-WO ),以;SL^本申請(qǐng)" 義下的、截至本申請(qǐng)的優(yōu)先權(quán)日未公布的國(guó)際專(zhuān)利申請(qǐng) PCT/AU2006/000532 (代理所巻號(hào)為5027F-D2-WO )還揭示了更多的細(xì) 節(jié)。上述每一個(gè)在先申請(qǐng)的說(shuō)明書(shū)內(nèi)容通過(guò)交叉引用4^P結(jié)合在本說(shuō)明書(shū) 中。簡(jiǎn)要地說(shuō),上述專(zhuān)利說(shuō)明書(shū)公開(kāi)了被編寫(xiě)成僅在單計(jì)算機(jī)上操作的至 少一個(gè)應(yīng)用程序能夠在每個(gè)均具有獨(dú)立的本地存儲(chǔ)器的若干計(jì)算機(jī)上被 同時(shí)操作。該程序的操作所需的存儲(chǔ)器位置在每個(gè)計(jì)算機(jī)的獨(dú)立的本地存 儲(chǔ)器中被復(fù)制。每次在應(yīng)用程序?qū)⑿聰?shù)據(jù)寫(xiě)到任一復(fù)制的存儲(chǔ)器位置時(shí), 傳輸該新數(shù)據(jù),并且將其存儲(chǔ)在每個(gè)計(jì)算機(jī)的每個(gè)對(duì)應(yīng)的存儲(chǔ)器位置。因 此,不考慮可能的傳輸延遲,每個(gè)計(jì)算機(jī)的本地存儲(chǔ)器與每個(gè)其它計(jì)算機(jī) 的本地存儲(chǔ)器的內(nèi)容基4^目同,并且被更新以保持如此。由于所有應(yīng)用程 序通常讀取數(shù)據(jù)比它們產(chǎn)生待寫(xiě)的新數(shù)據(jù)要頻繁得多,所以上述方案4吏得 能夠在計(jì)算速度方面實(shí)現(xiàn)較大的優(yōu)勢(shì)。尤其是,該策略使得通過(guò)商用通信 網(wǎng)絡(luò)互連的兩個(gè)或更多商用計(jì)算機(jī)能夠同時(shí)操作,從而在被編寫(xiě)成僅在單計(jì)算機(jī)上執(zhí)行的應(yīng)用程序下運(yùn)行。在許多情況下,上述方案能4^人滿意地工作。這尤其適用于程序員意 識(shí)到可能有更新延遲并因而可調(diào)整程序的流程以將其解決的情況。然而, 存在使用陳舊的內(nèi)容或值而不是最新的內(nèi)容而可能引起問(wèn)題的情況。上述通過(guò)引用并入的說(shuō)明書(shū)公開(kāi)了延i^t全部對(duì)應(yīng)的存儲(chǔ)器位置的 清除,直到全部計(jì)算機(jī)已停止訪問(wèn)特定存儲(chǔ)器位置。 一旦最后的計(jì)算機(jī)不 再需要訪問(wèn)特定的本地存儲(chǔ)器位置,該本地存儲(chǔ)器位置可以被清除(或回 收),并且全部其它機(jī)器上的全部對(duì)應(yīng)的存儲(chǔ)器位置也可以被清除(或回 收)。本發(fā)明的目的是希望加速多計(jì)算機(jī)系統(tǒng)中本地存儲(chǔ)器位置的清除或 回收,從而允許這樣的存儲(chǔ)器位置更快地被重新分配給未來(lái)的任務(wù)。發(fā)明內(nèi)容根據(jù)本發(fā)明的第一方面,公開(kāi)了一種禁用固有存在于多個(gè)計(jì)算機(jī)的每 一個(gè)計(jì)算機(jī)中的本地存儲(chǔ)器清除過(guò)程的方法,所述多個(gè)計(jì)算機(jī)中每個(gè)計(jì)算 機(jī)具有自己的對(duì)應(yīng)的獨(dú)立#存儲(chǔ)器,每個(gè)計(jì)算機(jī)基本同時(shí)地執(zhí)M編寫(xiě) 成在僅僅單個(gè)計(jì)算機(jī)上執(zhí)行的應(yīng)用程序的對(duì)應(yīng)的不同部分,且每個(gè)計(jì)算機(jī)通過(guò)通信網(wǎng)絡(luò)連接以允許對(duì)應(yīng)的存儲(chǔ)器位置的更新,所述方法包括步驟(0將所述本地存儲(chǔ)器的存儲(chǔ)器位置分為第一可達(dá)性類(lèi)和第二類(lèi),在第 一可達(dá)性類(lèi)中,本地存儲(chǔ)器位置在所述計(jì)算機(jī)中的被選中的計(jì)算機(jī)或全部 計(jì)算機(jī)上被復(fù)制,因此需要通過(guò)所述通信網(wǎng)絡(luò),用能訪問(wèn)的其它計(jì)算機(jī)的對(duì)應(yīng)存儲(chǔ)器位置的變化來(lái)進(jìn)行更新,以維護(hù)^4^儲(chǔ)器一致性,在第二類(lèi) 中,本M儲(chǔ)器位置只存在于本地計(jì)算機(jī)中,因此不需要更新;(ii) 對(duì)于所述第二類(lèi)存儲(chǔ)器位置,允許所述固有本地存儲(chǔ)器清除過(guò)程自 由操作;(iii) 對(duì)于所述第一類(lèi)存儲(chǔ)器位置,禁用所述固有本M儲(chǔ)器清除過(guò)程; 和(iv) 將所述第 一類(lèi)存儲(chǔ)器位置中不能被所述計(jì)算機(jī)中除具有所述可降級(jí) 第一類(lèi)存儲(chǔ)器位置的本地計(jì)算機(jī)之外的任何計(jì)算機(jī)所引用的任何第一類(lèi) 存儲(chǔ)器位置從所述第 一類(lèi)降級(jí)到所述第二類(lèi)。根據(jù)本發(fā)明的第二方面,公開(kāi)了一種清除過(guò)程被修改的多計(jì)算機(jī)系統(tǒng),在該多計(jì)算機(jī)系統(tǒng)中,多個(gè)計(jì)算機(jī)每個(gè)均具有其對(duì)應(yīng)的獨(dú)立本M儲(chǔ)器,每個(gè)均具有固有的本J4^儲(chǔ)器清除過(guò)程,每個(gè)均基本同時(shí)地執(zhí)frML編 寫(xiě)成在僅僅單個(gè)計(jì)算機(jī)上執(zhí)行的應(yīng)用程序的對(duì)應(yīng)的不同部分,且每個(gè)均通 過(guò)通信網(wǎng)絡(luò)連接以允許對(duì)應(yīng)存儲(chǔ)器位置的更新,所述系統(tǒng)包括可達(dá)性裝 置,以將所述本M儲(chǔ)器的存儲(chǔ)器位置分類(lèi)為第一類(lèi)和第二類(lèi),在第一類(lèi) 中,本地存儲(chǔ)器位置在所述計(jì)算機(jī)中的被選中的計(jì)算機(jī)或全部計(jì)算機(jī)上被 復(fù)制,因此需要通過(guò)所述通信網(wǎng)絡(luò),用其它計(jì)算機(jī)的對(duì)應(yīng)存儲(chǔ)器位置的變 化來(lái)進(jìn)行更新,以維護(hù)基本存儲(chǔ)器一致性,在第二類(lèi)中,本地存儲(chǔ)器位置 只存在于本地計(jì)算機(jī)中,因此不需要更新;且所述系統(tǒng)包括禁用裝置,其 連接到所述可達(dá)性裝置并連接到所述多個(gè)計(jì)算機(jī)中的每一個(gè)計(jì)算機(jī),以關(guān) 于僅在所述第一分類(lèi)中的存儲(chǔ)器位置禁用所述固有的本地存儲(chǔ)器清除過(guò) 程,且所述可達(dá)性裝置包括降級(jí)裝置,來(lái)將所述第一類(lèi)存儲(chǔ)器位置中不能 被所述計(jì)算機(jī)中除具有所述可降級(jí)第 一類(lèi)存儲(chǔ)器位置的本地計(jì)算機(jī)之外 的任何計(jì)算機(jī)所引用的任何第一類(lèi)存儲(chǔ)器位置從所述笫一類(lèi)降級(jí)到所述 第二類(lèi)。根據(jù)本發(fā)明的笫三方面,公開(kāi)了一種用于與至少一個(gè)其它計(jì)算^/^ft 以便執(zhí)行以上方法或形成以上系統(tǒng)的單個(gè)計(jì)算機(jī)。根據(jù)本發(fā)明的第四方面,公開(kāi)了一種計(jì)算^4呈序產(chǎn)品,其包括存儲(chǔ)在 存儲(chǔ)介質(zhì)中且用于使多個(gè)計(jì)算機(jī)執(zhí)行以上方法的程序指令集。根據(jù)本發(fā)明的第五方面,公開(kāi)了通過(guò)通信網(wǎng)絡(luò)互連并用于保證執(zhí)行以 上方法的多個(gè)計(jì)算機(jī)。
圖1A示意性示出了被布置成運(yùn)行JAVA代碼從而構(gòu)成單JAVA虛擬 機(jī)的現(xiàn)有技術(shù)計(jì)算機(jī);圖1B是類(lèi)似于圖1A的圖,但是圖解了代碼的初始加栽;圖1C圖解了每個(gè)均為JAVA虛擬機(jī)的多個(gè)計(jì)算機(jī)形成多計(jì)算機(jī)系統(tǒng) 的互連;圖2示意性圖解了 "n"個(gè)運(yùn)行應(yīng)用的計(jì)算機(jī),至少一個(gè)附加的服務(wù) 器機(jī)器X作為服務(wù)器與這些計(jì)算機(jī)連接;圖3是所有多個(gè)機(jī)器中的存儲(chǔ)器位置的示意圖,示出了包含類(lèi)和對(duì)象的存儲(chǔ)器位置;圖4是示出圖3的各存儲(chǔ)器位置及其被到達(dá)的能力的單個(gè)可達(dá)性表;圖5示出與圖4的單個(gè)^t目對(duì)應(yīng)的多個(gè)可達(dá)性表;圖6是與圖3類(lèi)似的圖,且示出不再指向存儲(chǔ)器位置A的存儲(chǔ)器位 置X;圖7是對(duì)應(yīng)于圖6的單個(gè)可達(dá)性表; 圖8示出對(duì)應(yīng)于圖7的多個(gè)可達(dá)性表;圖9是與圖3和圖6類(lèi)似的、示出 一個(gè)存儲(chǔ)器位置的回收的存儲(chǔ)器圖;圖IO和圖11分別示出與圖9的存儲(chǔ)器變化相對(duì)應(yīng)的單個(gè)和多個(gè)可達(dá) 性表;圖12示出另一個(gè)存儲(chǔ)器變化;以及圖13和圖14分別示出與圖12的存儲(chǔ)器變化相對(duì)應(yīng)的單個(gè)和多個(gè)可 達(dá)性表。
具體實(shí)施方式
各實(shí)施例將參照J(rèn)AVA語(yǔ)言進(jìn)行描述,然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理 解,本發(fā)明不局限于該語(yǔ)言,特別地,可用于其它語(yǔ)言(包含過(guò)程性語(yǔ)言、 聲明性語(yǔ)言和面向?qū)ο笳Z(yǔ)言),包含MICROSOFT.NET平臺(tái)和體系結(jié)構(gòu) (Visual Basic 、 Visual C和Visual C++,以及Visual C#)、 FORTRAN 、 C、 C++、 COBOL、 BASIC等等?,F(xiàn)有技術(shù)中已知的是提供通過(guò)建立圖1A中所示的虛擬機(jī)來(lái)利用特定 語(yǔ)言的應(yīng)用程序的單計(jì)算機(jī)或機(jī)器(由各制造商中的任何一個(gè)所生產(chǎn),并且具有以各種不同語(yǔ)言中的任何一種語(yǔ)言^Mt的^Mt系統(tǒng)(或者等同控制 軟件或其它機(jī)制))。圖1A的代碼和數(shù)據(jù)以及虛擬機(jī)配置或方案采取用JAVA語(yǔ)言編寫(xiě)并 且在JAVA虛擬機(jī)61內(nèi)執(zhí)行的應(yīng)用代碼50的形式。因而在應(yīng)用的期望語(yǔ) 言為JAVA語(yǔ)言的情況下,使用JAVA虛擬機(jī),其中JAVA虛擬機(jī)能夠運(yùn) 行JAVA形式的代碼,而不論機(jī)器制造商和計(jì)算機(jī)或機(jī)器的內(nèi)部細(xì)節(jié)如 何。有關(guān)更多細(xì)節(jié),參見(jiàn)由美國(guó)Sun Microsystems公司的T. Lindholm和 F.Yellin所著的"The JAVA Virtual Machine Specification"笫二版,其通過(guò)引用結(jié)合于此。根據(jù)本發(fā)明的實(shí)施例,通過(guò)提供如圖IB所示被方便地稱為"分布式 運(yùn)行時(shí)"或"分布式運(yùn)行時(shí)系統(tǒng)"DRT 71的附加設(shè)備,改進(jìn)圖1A的常 規(guī)技術(shù)方案。圖IB和1C中,通過(guò)由箭頭75或75A或75B所示的加載過(guò)程,應(yīng) 用代碼50被加載到與分布式運(yùn)行時(shí)系統(tǒng)71合作的JAVA虛擬機(jī)Ml、M2........ Mn上。如此處所使用的,術(shù)語(yǔ)"分布式運(yùn)行時(shí)"和"分布式運(yùn)行時(shí)系統(tǒng)"實(shí)質(zhì)上是同義的,并且通過(guò)闡述而不是限制,通常被理解成 包含支持在特定平臺(tái)上運(yùn)行的、用特定語(yǔ)言編寫(xiě)的軟件的庫(kù)代碼和進(jìn)程。 此外,分布式運(yùn)行時(shí)系統(tǒng)還可以包含支持在特定分布式計(jì)算環(huán)境內(nèi)運(yùn)行 的、用特定語(yǔ)言編寫(xiě)的軟件的庫(kù)代碼和進(jìn)程。運(yùn)行時(shí)系統(tǒng)(無(wú)論是否是分 布式運(yùn)行時(shí)系統(tǒng))通常處理程序與操作系統(tǒng)之間的接口的細(xì)節(jié),例如系統(tǒng) 調(diào)用、程序啟動(dòng)和終止、以及存儲(chǔ)器管理。為說(shuō)明背景,常規(guī)的分布式計(jì) 算環(huán)境(DCE)(其不提供本發(fā)明優(yōu)選實(shí)施例中所使用的本發(fā)明的分布式 運(yùn)行時(shí)或分布式運(yùn)行時(shí)系統(tǒng)71的能力)可以從開(kāi)放軟件基金會(huì)得到。該 分布式計(jì)算環(huán)境(DCE )執(zhí)行一種針對(duì)在機(jī)器上運(yùn)行的軟件的計(jì)算機(jī)到計(jì) 算機(jī)的通信形式,但是除其許多限制之夕卜,其不能實(shí)現(xiàn)所期望的修改或通信操作。除其功能與操作之外,優(yōu)選的DRT 71協(xié)調(diào)多個(gè)機(jī)器Ml 、 M2........Mn之間的特定通信。此外,優(yōu)選的分布式運(yùn)行時(shí)71在JAVA應(yīng)用50的 由箭頭75A或75B所示的在圖1C的每個(gè)JAVA虛擬機(jī)72或機(jī)器JVM弁1 、JVM#2........ JVM紐上的加栽過(guò)程期間開(kāi)始運(yùn)行。根據(jù)此處所提供的描迷應(yīng)當(dāng)理解,雖然許多示例和描述被提供成與JAVA語(yǔ)言和JAVA虛擬機(jī) 相關(guān),以使得讀者能了解具體例子的益處,但是本發(fā)明不局限于JAVA語(yǔ) 言或JAVA虛擬機(jī),或者任何其他語(yǔ)言、虛擬機(jī)、機(jī)器或者操作環(huán)境。圖1C以改進(jìn)形式示出了每個(gè)如圖1B所示的JAVA虛擬機(jī)的方案。 顯然,相同的應(yīng)用代碼50被加載到每個(gè)機(jī)器Ml、 ]\12...]\111上。然而, 各機(jī)器Ml、 M2…Mn之間的通信由箭頭83表示,并且雖然通過(guò)機(jī)器硬 件物理上傳送,但是有利地被每個(gè)機(jī)器內(nèi)的各自DRT71/l…71/n所控制。 因而,實(shí)際上這可以v^Mft念上理解成經(jīng)由網(wǎng)絡(luò)或其它通信鏈路53而相互 通信的DRT 71/1, ...71/n,而不是自身或彼此直接通信的機(jī)器Ml、 M2...Mn。所設(shè)想和包含的是機(jī)器M1、 M2…Mn或DRT 71/1、 71/2...71/n 之間的這種直接通信,或者這樣的通信的組合。優(yōu)選的DRT71提供獨(dú)立 于傳送、協(xié)議和鏈接的通信。一個(gè)公共應(yīng)用程序或應(yīng)用代碼50,及其可執(zhí)行版本(可能具有修改) 在多個(gè)計(jì)算機(jī)或機(jī)器Ml、 M2...Mn上同時(shí)或并發(fā)執(zhí)行。應(yīng)用程序50被 編寫(xiě)為在單機(jī)器或計(jì)算機(jī)上執(zhí)行(或者在模擬單計(jì)算;MMt的上述專(zhuān)利申請(qǐng)的多計(jì)算機(jī)系統(tǒng)上操作)。實(shí)質(zhì)上,改進(jìn)的結(jié)構(gòu)是在每個(gè)單獨(dú)機(jī)器上復(fù) 制相同的存儲(chǔ)器結(jié)構(gòu)和內(nèi)容。術(shù)語(yǔ)"公共應(yīng)用程序"應(yīng)被理解為是指被編寫(xiě)成在單機(jī)器上操作的, 且在多個(gè)計(jì)算機(jī)或機(jī)器M1、 M2,.,Mn中的每一個(gè)上、或者可選地在所述 多個(gè)計(jì)算機(jī)或機(jī)器Ml 、 M2…Mn的某個(gè)子集的每一個(gè)上全部或部分地加 載和/或執(zhí)行的應(yīng)用程序或應(yīng)用程序代碼。換句話說(shuō),具有以應(yīng)用程序代 碼50表示的公共應(yīng)用程序。其為單個(gè)拷貝,或每個(gè)均被單獨(dú)修改以生成 應(yīng)用程序或程序代碼的修改拷貝或版本的多個(gè)相同拷貝。于是每個(gè)拷貝或 實(shí)例被準(zhǔn)備以在對(duì)應(yīng)的機(jī)器上執(zhí)行。在它們被修改之后,從它們執(zhí)行類(lèi)似 的IMt并且彼此一致且連貫^行的意義上來(lái)i兌,它們是公共的。應(yīng)當(dāng)理 解,實(shí)現(xiàn)本發(fā)明的實(shí)施例的多個(gè)計(jì)算機(jī)、機(jī)器、信息設(shè)備等可以任選地連 接到或耦合到未實(shí)現(xiàn)本發(fā)明的實(shí)施例的其它計(jì)算機(jī)、機(jī)器、信息設(shè)備等。在每個(gè)機(jī)器上運(yùn)行相同的應(yīng)用程序50 (例如并行合并排序、計(jì)算流 體動(dòng)力學(xué)應(yīng)用或數(shù)據(jù)挖掘應(yīng)用),但是該應(yīng)用程序的可執(zhí)行代碼根據(jù)需要 在每個(gè)機(jī)器修改,使得每個(gè)機(jī)器上的每個(gè)執(zhí)行實(shí)例(拷貝或復(fù)本)使其在協(xié)調(diào),使得它們以一致、連貫和協(xié)調(diào)的方式一起工作,并且看起來(lái)〗象應(yīng)用 的一個(gè)全局實(shí)例(即"元應(yīng)用")。相同或基^目同的應(yīng)用代碼的各拷貝或復(fù)本,每個(gè)被加栽到互操作且 相連接的機(jī)器或計(jì)算機(jī)中對(duì)應(yīng)的一個(gè)上。由于每個(gè)機(jī)器或計(jì)算機(jī)的特性可 能不同,所以應(yīng)用代碼50可在加栽之前被修改、在加栽過(guò)程期間被修改、 或者在加載過(guò)程之后^L修改(雖然有一些缺點(diǎn)),以在每個(gè)機(jī)器上提供應(yīng)用 代碼的定制或修改。不同機(jī)器上的程序或應(yīng)用代碼之間的一些不同點(diǎn)可以 是允許的,只要能夠保持本文所述的其它對(duì)互操作性、 一致性和連貫性的 要求。在下文將會(huì)明白,機(jī)器M1、 M2…Mn中的每個(gè)機(jī)器,因而4^P機(jī) 器M1、 M2…Mn具有相同或基^目同的應(yīng)用代碼50,其通常具有可以是 特定于機(jī)器的修改。在每個(gè)機(jī)器M1、 ]\12...]\111上的應(yīng)用代碼50 (或其相關(guān)部分)的加載 之前、加栽期間、或執(zhí)行前的任何時(shí)候,每個(gè)應(yīng)用代碼50由對(duì)應(yīng)的修改 器(modifier) 51根據(jù)相同的規(guī)則(或基4^目同的規(guī)則,因?yàn)樵诿總€(gè)修改器51/1、 51/2...51/n內(nèi)允許小的優(yōu)化改變)來(lái)修改。機(jī)器M1、 M2...Mn中的每個(gè)機(jī)器與相同的(或基^M目同或類(lèi)似的) 修改器51 (在某些實(shí)施例中被實(shí)現(xiàn)為分布式運(yùn)行時(shí)或DRT71,而在其它 實(shí)施例中被實(shí)現(xiàn)為應(yīng)用代碼和數(shù)據(jù)50的附件,并且也能夠在JAVA虛擬 機(jī)自身內(nèi)實(shí)現(xiàn))一起操作。因而,所有的機(jī)器M1、 ]\12...1\111都具有針對(duì) 所需每個(gè)修改的相同的(或基;M目同或類(lèi)似的)修改器51。例如,對(duì)于 存儲(chǔ)器管理和復(fù)制、初始化、結(jié)束、和/或同步可能需要不同的修改(盡 管可能不是所有實(shí)施例都需要所有這些修改類(lèi)型)。存在修改器51和分布式運(yùn)行時(shí)71的可替選實(shí)現(xiàn)。例如,如圖1C中 虛線所示,修改器51可以被實(shí)現(xiàn)為分布式運(yùn)行時(shí)71的部件,或分布式運(yùn) 行時(shí)71內(nèi)部的部件,因此DRT71可實(shí)現(xiàn)修改器51的功能和操作??商?選地,修改器51的功能和操作可以在用于實(shí)現(xiàn)DRT 71的結(jié)構(gòu)、軟件、 固件或其它裝置之外實(shí)現(xiàn),例如在代碼和數(shù)據(jù)50內(nèi),或者在JAVA虛擬 機(jī)自身內(nèi)。在一個(gè)實(shí)施例中,修改器51和DRT 71兩者都以提供DRT和 修改器的功能的單段計(jì)算機(jī)程序代碼來(lái)實(shí)現(xiàn)或編寫(xiě)。在這種情況下,修改 器功能和結(jié)構(gòu)實(shí)際上被包含到DRT中。與其實(shí)現(xiàn)無(wú)關(guān)地,修改器功能和 結(jié)構(gòu)負(fù)責(zé)修改應(yīng)用代碼程序的可執(zhí)行代碼,而分布式運(yùn)行時(shí)功能和結(jié)構(gòu)負(fù) 責(zé)實(shí)現(xiàn)各計(jì)算機(jī)或機(jī)器兩者和兩者以上之間的通信。在一個(gè)實(shí)施例中,通 信功能通過(guò)每個(gè)機(jī)器上的DRT的計(jì)算機(jī)程序代碼內(nèi)的中間協(xié)議層來(lái)實(shí) 現(xiàn)。例如,DRT可以用JAVA語(yǔ)言來(lái)實(shí)現(xiàn)通信棧,并使用傳輸控制協(xié)i" 網(wǎng)際協(xié)議(TCP/IP)來(lái)提供機(jī)器之間的通信或?qū)υ?。這些功能或操作可 以用各種方法來(lái)實(shí)現(xiàn),并且根據(jù)本文提供的描述應(yīng)當(dāng)理解,這些功能或操作如何確切地被實(shí)現(xiàn),或者在結(jié)構(gòu)和/或過(guò)程性元素之間或在計(jì)算機(jī)程序 代碼或數(shù)據(jù)結(jié)構(gòu)之間如何被確切劃分對(duì)本發(fā)明來(lái)說(shuō)并不是重要或至關(guān)重 要的。然而,在圖1C所示的方案中,提供了多個(gè)單獨(dú)計(jì)算機(jī)或機(jī)器M1、 M2…Mn,其中每個(gè)都經(jīng)由通信網(wǎng)絡(luò)53或其它通信鏈路互連。每個(gè)單獨(dú) 計(jì)算機(jī)或機(jī)器都設(shè)置有對(duì)應(yīng)的修改器51。每個(gè)單獨(dú)計(jì)算M設(shè)置有連接 到通信網(wǎng)絡(luò)的通信端口。通信網(wǎng)絡(luò)53或路徑可以是任何電子信令、數(shù)據(jù)、 或數(shù)字通信網(wǎng)絡(luò)或路徑,并且優(yōu)選為慢速,因而成本低的通信路徑,例如 因特網(wǎng)上的、或者包含ETHERNET或INFINIBAND的任何常見(jiàn)組網(wǎng)結(jié) 構(gòu)及其擴(kuò)展和改進(jìn)上的網(wǎng)絡(luò)連接。優(yōu)選地,計(jì)算機(jī)設(shè)置有與通信網(wǎng)絡(luò)53 連接的一個(gè)或多個(gè)乂>知通信端口 (例如CISCO Power Connect 5224交換機(jī)x由于上述方案,如果機(jī)器M1、 M2........ Mn中的每個(gè)機(jī)器都具有例如10MB的內(nèi)部或本地存儲(chǔ)器容量,則應(yīng)用代碼50整體上可用的總存 儲(chǔ)器空間并不是如所期望的那樣為10MB乘以機(jī)器數(shù)量。也不是所有n 個(gè)機(jī)器的內(nèi)部存儲(chǔ)器容量的加性組合。相反,其為10MB,或者大于10MB 但是小于nxlOMB的某個(gè)數(shù)。在各機(jī)器的內(nèi)部存儲(chǔ)器容量不同(這是允 許)的情況下,于是在一個(gè)機(jī)器中的內(nèi)部存儲(chǔ)器小于至少一個(gè)其它機(jī)器的 內(nèi)部存儲(chǔ)器容量的情況下,當(dāng)這樣的存儲(chǔ)器(或其一部分)被作為"公共"存儲(chǔ)器(即機(jī)器Ml... Mil的每個(gè)機(jī)器上的類(lèi)似等同存儲(chǔ)器),或相反被用 于執(zhí)行公共應(yīng)用代碼時(shí),任何一個(gè)機(jī)器的最小存儲(chǔ)器的大小可用作各機(jī)器 的最大存儲(chǔ)器容量。然而,盡管對(duì)待每個(gè)機(jī)器的內(nèi)部存儲(chǔ)器的方式可能最初看起來(lái)是性能 的可能約束,但是,在下文中將會(huì)理解這如何導(dǎo)致操作和性能的提高.當(dāng) 然,每個(gè)機(jī)器M1、 ]\12...1\111都有專(zhuān)用的(即非公共的)內(nèi)部存儲(chǔ)器容量。 各機(jī)器M1, M2, ...Mn的專(zhuān)用內(nèi)部存儲(chǔ)器容量通常近似相等,但是也不 一定如此。例如,當(dāng)多計(jì)算機(jī)系統(tǒng)是利用由不同實(shí)體所擁有或操作的現(xiàn)有 計(jì)算機(jī)、機(jī)器或信息設(shè)備來(lái)實(shí)現(xiàn)或組成時(shí),內(nèi)部存儲(chǔ)器容量可能是相當(dāng)不 同的。另一方面,如果正在實(shí)現(xiàn)一個(gè)新的多計(jì)算機(jī)系統(tǒng),則每個(gè)機(jī)器或計(jì) 算機(jī)優(yōu)選為選擇具有相同的內(nèi)部存儲(chǔ)器容量,但不一定如此。應(yīng)當(dāng)理解,每個(gè)機(jī)器的獨(dú)立本地存儲(chǔ)器僅僅代表該機(jī)器總存儲(chǔ)器中被 分配給應(yīng)用程序的在該機(jī)器上運(yùn)行的部分的那部分存儲(chǔ)器。因而,其它存 儲(chǔ)器將被該機(jī)器的^^作系統(tǒng)以及與應(yīng)用程序50無(wú)關(guān)的其它計(jì)算任務(wù)所占 用。原型多計(jì)算機(jī)系統(tǒng)的非商業(yè)操作表明,并不是該系統(tǒng)中每個(gè)機(jī)器或計(jì) 算^p使用或需要引用(例如,具有每個(gè)可能的存儲(chǔ)器位置的本地復(fù)本) 每個(gè)可能的存儲(chǔ)器位置。結(jié)果,只要每個(gè)機(jī)器的本地存儲(chǔ)器對(duì)于該機(jī)器的 操作是足夠的,則無(wú)需每個(gè)機(jī)器的本地存儲(chǔ)器與每個(gè)其它機(jī)器相同,就可 以操作多計(jì)算機(jī)系統(tǒng)。也就是說(shuō),假如特定機(jī)器不需要引用(例如具有一 些特定存儲(chǔ)器位置的本地復(fù)本) 一些特定存儲(chǔ)器位置,則那些特定存儲(chǔ)器 位置在該特定機(jī)器中未被復(fù)制是無(wú)關(guān)緊要的。選擇每個(gè)機(jī)器中內(nèi)部存儲(chǔ)器的量以在每個(gè)機(jī)器中以及所連接或耦合的多個(gè)機(jī)器、計(jì)算機(jī)或信息設(shè)備M1、 M2........ Mn的星座或網(wǎng)絡(luò)上達(dá)到期望性能等級(jí)也是有利的。在描述了這些內(nèi)部和公共存儲(chǔ)器考慮因素后,根據(jù)本文提供的描述應(yīng)當(dāng)理解,機(jī)器之間可以是公共的存儲(chǔ)器的量并 不是限制。在一些實(shí)施例中,多個(gè)單獨(dú)計(jì)算機(jī)或機(jī)器的一些或全部可以被包含在單個(gè)外殼或機(jī)架(例如由Hewlett-Packard Development公司,Intel公司, IBM公司等制造的所謂"刀片服務(wù)器")、由Intd、 AMD或其它^^司制 造的多處理器(例如對(duì)稱式多處理器SMP)或多核處理器(例如雙核處 理器以及芯片多線程處理器)內(nèi),或者被實(shí)現(xiàn)在單個(gè)印刷電路板上或甚至 在單個(gè)芯片或芯片組內(nèi)。類(lèi)似地,還包含具有多核,多CPU的或其它處 理邏輯的計(jì)算機(jī)或機(jī)器。當(dāng)用非JAVA語(yǔ)言或應(yīng)用代碼環(huán)境來(lái)實(shí)現(xiàn)時(shí),通用平臺(tái)和/或虛擬機(jī) 和/或機(jī)器和/或運(yùn)行時(shí)系統(tǒng)能夠操作該平臺(tái)和/或虛擬機(jī)和/或機(jī)器和/或運(yùn) 行時(shí)系統(tǒng)環(huán)境的語(yǔ)言(例如,可能包含但不局限于源代碼語(yǔ)言、中間代碼 語(yǔ)言、目標(biāo)代碼語(yǔ)言、機(jī)器代碼語(yǔ)言以及任何其它代碼語(yǔ)言中的任何一個(gè) 或多個(gè))的應(yīng)用代碼50,并且不論機(jī)器或處理器制造商以及機(jī)器的內(nèi)部 細(xì)節(jié)如何,利用該平臺(tái)和/或虛擬機(jī)和/或機(jī)器和/或運(yùn)行時(shí)系統(tǒng)和/或語(yǔ)言體 系結(jié)構(gòu)。還應(yīng)當(dāng)理解,平臺(tái)和/或運(yùn)行時(shí)系統(tǒng)可包含虛擬機(jī)和非虛擬機(jī)軟 件和/或固件體系結(jié)構(gòu),以及硬件和直接硬件編碼的應(yīng)用和實(shí)現(xiàn)。對(duì)于更一般的虛擬機(jī)或抽f^環(huán)境,以及對(duì)于可不使用或要求使用類(lèi) 和/或?qū)ο蟮哪壳昂蛯?lái)的計(jì)算機(jī)和/或計(jì)算機(jī)器和/或信息設(shè)備或處理系 統(tǒng),本發(fā)明結(jié)構(gòu)、方法和計(jì)算機(jī)程序以及計(jì)算;^序產(chǎn)品仍然適用。不使 用類(lèi)和/或?qū)ο蟮挠?jì)算機(jī)和/或計(jì)算機(jī)器的例子例如包含由Intel公司等制 造的x86計(jì)算機(jī)體系結(jié)構(gòu),由Sun Microsystems公司等制造的SPARC計(jì) 算機(jī)體系結(jié)構(gòu),由IBM公司等制造的Power PC計(jì)算機(jī)體系結(jié)構(gòu),以及 由Apple Computer公司等制造的個(gè)人計(jì)算機(jī)產(chǎn)品。對(duì)于不使用類(lèi)或?qū)ο蟮母拍畹倪@些類(lèi)型的計(jì)算機(jī)、計(jì)算機(jī)器、信息設(shè) 備以及在其上實(shí)現(xiàn)的虛擬機(jī)或虛擬計(jì)算環(huán)境,可概括為例如包含基4^t據(jù) 類(lèi)型(例如整型數(shù)據(jù)類(lèi)型,浮點(diǎn)數(shù)據(jù)類(lèi)型,長(zhǎng)整型I8:據(jù)類(lèi)型,X5UJt度數(shù)據(jù) 類(lèi)型,串?dāng)?shù)據(jù)類(lèi)型,字符lt據(jù)類(lèi)型和布爾數(shù)據(jù)類(lèi)型),結(jié)構(gòu)化數(shù)據(jù)類(lèi)型(例 如數(shù)組和記錄),派生的類(lèi)型,或者過(guò)程性語(yǔ)言或其它語(yǔ)言或環(huán)境的其它 代碼或數(shù)據(jù)結(jié)構(gòu),如函數(shù)、指針、組件、模塊、結(jié)構(gòu)、引用和聯(lián)合。當(dāng)這 些結(jié)構(gòu)和過(guò)程按需要組合應(yīng)用時(shí),它們維護(hù)計(jì)算環(huán)境,其中在該計(jì)算環(huán)境 下,計(jì)算機(jī)或計(jì)算環(huán)境的存儲(chǔ)器位置、地址范圍、對(duì)象、類(lèi)、資產(chǎn)、資源 或任何其它過(guò)程或結(jié)構(gòu)方面,在多個(gè)單獨(dú)機(jī)器M1、 M2…Mn上以協(xié)調(diào)的、連貫的和一致的方式按需要被產(chǎn)生、維護(hù)、操作和去活或刪除。應(yīng)用代碼50的這種分析或細(xì)查可發(fā)生在加載應(yīng)用代碼50之前,或者 在應(yīng)用代碼50加栽過(guò)程期間,或者甚至在應(yīng)用代碼50加栽過(guò)程之后(或 者這些情況的某種組合)。這可被比作改寫(xiě)(instrumentation )、程序轉(zhuǎn)換、 翻譯、或者編譯過(guò)程,因?yàn)閼?yīng)用代碼可用附加的指令編寫(xiě),和/或由保留 含義的程序操縱來(lái)修改,和/或可選地從輸入代碼語(yǔ)言翻譯成不同的代碼 語(yǔ)言(例如,從源代碼語(yǔ)言或中間代碼語(yǔ)言轉(zhuǎn)換到目標(biāo)代碼語(yǔ)言或機(jī)器代 碼語(yǔ)言)。關(guān)于這一點(diǎn),應(yīng)當(dāng)理解,術(shù)語(yǔ)"編譯"通?;虬闯R?guī)涉及代碼 或語(yǔ)言上的改變,例如從源代碼到目標(biāo)代碼,或者從一種語(yǔ)言到另一種語(yǔ) 言。然而,在這種情況下,術(shù)語(yǔ)"編譯"(及其語(yǔ)法上的等同內(nèi)容)未被 如此限制,并且也可以包含或包括相同代碼或語(yǔ)言內(nèi)的修改。例如,將編 譯及其等同內(nèi)容理解成包括普通編譯(例如,但不限于從源代碼到目標(biāo)代 碼)和從源代碼到源代碼的編譯,以及從目標(biāo)代碼到目標(biāo)代碼的編譯,以 及其中的任何變更組合。還包含所謂的"中間代碼語(yǔ)言",其為一種"偽 目標(biāo)代碼"。舉例而言,但非限制性地,在一個(gè)實(shí)施例中,對(duì)應(yīng)用代碼50的分析 或細(xì)查發(fā)生在應(yīng)用程序代碼的加栽期間,應(yīng)用程序代碼的加栽是例如由操 作系統(tǒng)從硬盤(pán)或其它存儲(chǔ)設(shè)備、介質(zhì)或源中讀取應(yīng)用代碼50,并且將其 拷貝到存儲(chǔ)器中,以及準(zhǔn)備開(kāi)始執(zhí)行該應(yīng)用程序代碼而實(shí)現(xiàn)的。在另一個(gè) 實(shí)施例中,在 JAVA虛擬機(jī)中,分析或細(xì)查可發(fā)生在java.la叫ClassLoader.loadClass 方法(例如"java.lang.ClassLoader.loadClass()")的類(lèi)加載過(guò)程期間??商孢x地,或者此外,對(duì)應(yīng)用代碼50 (或應(yīng)用代碼的一部分)的分 析或細(xì)查甚至可發(fā)生在應(yīng)用程序代碼加載過(guò)程之后,例如在操作系統(tǒng)已將 應(yīng)用代碼加載到存儲(chǔ)器中之后,或者任選地,甚至在應(yīng)用程序代碼的相關(guān) 對(duì)應(yīng)部分的執(zhí)行已經(jīng)開(kāi)始之后,例如在JAVA虛擬機(jī)已經(jīng)通過(guò)"java.lang.Classloader.loadClass()"方法將應(yīng)用代碼加載到虛擬機(jī)中并且 任選地開(kāi)始執(zhí)行之后。計(jì)算領(lǐng)域的普通技術(shù)人員會(huì)知道,各種可能的技術(shù)可以用于修改計(jì)算 機(jī)代碼,這些技術(shù)包括但不限于改寫(xiě)、程序轉(zhuǎn)換、翻譯或編譯裝置和/或一種這樣的技術(shù)是,在無(wú)需在先或之后改變應(yīng)用代碼的語(yǔ)言的情況 下,對(duì)應(yīng)用代碼進(jìn)行修改。另一種這樣的技術(shù)是將原始代碼(例如,JAVA方法。語(yǔ)言源代碼)轉(zhuǎn)換成中間表示(或中間代碼語(yǔ)言,或偽碼),例如JAVA 字節(jié)代碼。 一旦該轉(zhuǎn)換發(fā)生,就對(duì)字節(jié)代碼進(jìn)行修改,然后轉(zhuǎn)換可被逆轉(zhuǎn)。 這提供了被修改JAVA代碼的所期望的結(jié)果。另一個(gè)可能的技術(shù)是直接從源代碼或者通過(guò)上述中間語(yǔ)言或通過(guò)一 些其它中間手段,將應(yīng)用程序轉(zhuǎn)換到機(jī)器代碼。然后,在加栽和執(zhí)行機(jī)器 代碼之前修改機(jī)器代碼。另一個(gè)這樣的技術(shù)是將原始代碼轉(zhuǎn)換成中間表 示,該中間表示從而被修改并且l^被轉(zhuǎn)換成機(jī)器代碼。本發(fā)明包括所有這樣的修改途徑,以及兩個(gè)、三個(gè)甚至更多這樣的途 徑的纟且合。DRT 71或其它代碼修改裝置負(fù)責(zé)在單獨(dú)機(jī)器M1、 M2…Mn中每個(gè) 機(jī)器上建立或復(fù)制使得多個(gè)機(jī)器能互操作的存儲(chǔ)器結(jié)構(gòu)和內(nèi)容。在一些實(shí) 施例中,此復(fù)制的存儲(chǔ)器結(jié)構(gòu)相同。而在其它實(shí)施例中,此存儲(chǔ)器結(jié)構(gòu)會(huì) 有部分相同,而其它部分不同。在另外的其它實(shí)施例中,存儲(chǔ)器結(jié)構(gòu)^ 格式或存儲(chǔ)約定(如大端字節(jié)序(Big Endian)或小端字節(jié)序(Little Endian) 格式或約定)方面不同。當(dāng)這些結(jié)構(gòu)和過(guò)程按需要組合應(yīng)用時(shí),它們維護(hù)計(jì)算環(huán)境,其中在該 計(jì)算環(huán)境下,計(jì)算機(jī)或計(jì)算環(huán)境的存儲(chǔ)器位置、地址范圍、對(duì)象、類(lèi)、資 產(chǎn)、資源或任何其它過(guò)程或結(jié)構(gòu)方面,在多個(gè)單獨(dú)機(jī)器M1、 ]\12...1\111上 以協(xié)調(diào)的、連貫的和一致的方式按需要被產(chǎn)生、維護(hù)、操作和去活或刪除。因此,術(shù)語(yǔ)"一個(gè)"、"單"和"公共"應(yīng)用代碼或程序包含以下情形, 在該情形中,所有機(jī)器M1、 1\!2...]\111操作或執(zhí)行相同的程序或代碼而不 是不同的(和無(wú)關(guān)的)程序,換言之,相同或基^t目同的應(yīng)用代碼的拷貝 或復(fù)^M^載到互操作J4目連接的機(jī)器或計(jì)算機(jī)中的每一個(gè)上。在使用分布式軟件的常規(guī)方案中,從一個(gè)機(jī)器的軟件到物理上位于另 一個(gè)機(jī)器上的存儲(chǔ)器的存儲(chǔ)器訪問(wèn)通常通過(guò)互連各機(jī)器的網(wǎng)絡(luò)進(jìn)行。因 而,每個(gè)機(jī)器的本地存儲(chǔ)器都能夠被任何其它機(jī)器所訪問(wèn),因此不能說(shuō)是 獨(dú)立的。然而,因?yàn)閷?duì)物理上位于另一個(gè)計(jì)算機(jī)上的存儲(chǔ)器的讀和/或?qū)?存儲(chǔ)器訪問(wèn)需要利用互連各計(jì)算機(jī)的慢速網(wǎng)絡(luò),所以在這些配置中,這樣 的存儲(chǔ)器訪問(wèn)可導(dǎo)致存儲(chǔ)器讀/寫(xiě)處理操作中的實(shí)質(zhì)性延遲,可能大約為 106-107個(gè)機(jī)器中央處理單元的周期(假定為同時(shí)期的處理器速度)。最終, 該延遲取決于多個(gè)因素,例如通信網(wǎng)絡(luò)的速度、帶寬和/或時(shí)延。這很大 程度上說(shuō)明了現(xiàn)有技術(shù)方案中多個(gè)互連機(jī)器的低性能。然而,在本方案中,因?yàn)樗写鎯?chǔ)器位置(或所有存儲(chǔ)器位置的某個(gè) 子集)的當(dāng)前值被存儲(chǔ)在產(chǎn)生讀存儲(chǔ)器需求的處理所執(zhí)行的機(jī)器上,所以 對(duì)存儲(chǔ)器位置或數(shù)據(jù)的所有讀取都在本地得到滿足。類(lèi)似地,因?yàn)樗写鎯?chǔ)器位置(或所有存儲(chǔ)器位置的某個(gè)子集)的當(dāng) 前值被存儲(chǔ)在生成寫(xiě)存儲(chǔ)器需求的處理所執(zhí)行的機(jī)器上,所以存儲(chǔ)器位置 或數(shù)據(jù)的所有寫(xiě)入都在本地得到滿足。這樣的^存儲(chǔ)器讀和寫(xiě)處理操作通常在102-103個(gè)中央處理單元周期內(nèi)滿足。因而實(shí)際上,涉及和/或?qū)懙拇鎯?chǔ)器訪問(wèn)的等待基本上較少。 此夕卜,每個(gè)機(jī)器的本地存儲(chǔ)器不能被任何其它機(jī)器訪問(wèn),因此可被稱作是 獨(dú)立的。本發(fā)明獨(dú)立于傳送、網(wǎng)絡(luò)和通信路徑,并且不依賴于各機(jī)器或各DRT 之間的通信如何進(jìn)行。在一個(gè)實(shí)施例中,甚至機(jī)器或DRT之間的電子郵 件(email)交互也可以滿足通信的需要。結(jié)合以上所述,從圖2中可以看出,有若干機(jī)器M1、 M2、…Mn, "n"為大于或等于2的整數(shù),圖1的應(yīng)用程序50在機(jī)器Ml、 M2、…Mn上基本上同時(shí)運(yùn)行。這些機(jī)器按層次順序被分配以數(shù)字1、 2、 3.......等等。該順序通常是循環(huán)的或閉合的,使得當(dāng)機(jī)器2和機(jī)器3在層次上相鄰 時(shí),機(jī)器"n"和機(jī)器l也是如此。優(yōu)選地,存在另一個(gè)機(jī)器X,其被提 供來(lái)4吏各種內(nèi)務(wù)處理功能(housekeeping functions )能被執(zhí)行,例如充當(dāng) 鎖服務(wù)器。特別地,所述另一個(gè)機(jī)器X可以是低價(jià)機(jī)器,并且比可能具 有令人滿意的屬性如處理M度的其它機(jī)器便宜很多。此外, 一個(gè)附加的 低價(jià)機(jī)器(X+l)優(yōu)選地可用于在機(jī)器X出現(xiàn)故障時(shí)提供冗余。當(dāng)提供兩 個(gè)這樣的服務(wù)器機(jī)器X和X+1時(shí),為了簡(jiǎn)單,它們優(yōu)選地作為集群結(jié)構(gòu) 的X5U機(jī)器來(lái)操作。根據(jù)本發(fā)明,必要時(shí),機(jī)器X和X+1能夠作為多計(jì)算 機(jī)系統(tǒng)來(lái)操作。然而,這一般會(huì)導(dǎo)致不期望的復(fù)雜度。如果未提供機(jī)器X, 則其功能(例如內(nèi)務(wù)處理功能)由其它機(jī)器中的一個(gè)、 一些或4^P機(jī)器來(lái)提 供?,F(xiàn)在參考圖3,多個(gè)機(jī)器M1、 M2…Mn中的每一個(gè)機(jī)器(如果存在 任何服務(wù)器機(jī)器X,則不同于任何服務(wù)器機(jī)器X)具有其被示意性示出的 存儲(chǔ)器位置。對(duì)于機(jī)器Ml,存在類(lèi)XI以及對(duì)象Al和B。對(duì)于機(jī)器M2, 存在類(lèi)X2 (與機(jī)器Ml中的類(lèi)XI相同)以及對(duì)象A2和D。機(jī)器M2中 的對(duì)象A2與機(jī)器M1中的對(duì)象A1相同。對(duì)于機(jī)器Mn,存在類(lèi)Xn以及 對(duì)象An和E。類(lèi)Xn和對(duì)象An分別與類(lèi)XI和X2以及對(duì)象Al和A2相同。因?yàn)闄C(jī)器Ml、 M2和Mn中的每一個(gè)機(jī)器都能夠M儲(chǔ)器位置X 和A讀取和向存儲(chǔ)器位置X和A寫(xiě)入,所以這些存儲(chǔ)器位置中的每一個(gè) 存儲(chǔ)器位置的邊界都用雙線表示。優(yōu)選地,方便的是由圖2的服務(wù)器機(jī)器X維護(hù)表,該表列出每個(gè)存 儲(chǔ)器位置以及能夠訪問(wèn)該表中的每個(gè)存儲(chǔ)器位置的機(jī)器。這樣的表被稱作 可達(dá)性表,且在圖4中示出。圖4的表中的第一行涉及存儲(chǔ)器位置A,其 能夠被機(jī)器M1、 M2和Mn訪問(wèn)。圖4的表中的笫二行涉及存儲(chǔ)器位置 B,其僅能夠被機(jī)器M1訪問(wèn)。類(lèi)似地,對(duì)象D僅能夠被機(jī)器M2訪問(wèn), 而對(duì)象E僅能夠被機(jī)器Mn訪問(wèn)。然而,類(lèi)X能夠被所有機(jī)器M1、 M2 和Mn訪問(wèn)??梢栽O(shè)置單個(gè)可達(dá)性表,其位于服務(wù)器機(jī)器X中且由服務(wù)器機(jī)器X 維護(hù)。然而,計(jì)算機(jī)系統(tǒng)也可以在沒(méi)有服務(wù)器機(jī)器X的情況下操作,在 這種情況下,期望每個(gè)機(jī)器操作其自己的可達(dá)性表。圖5示出在對(duì)應(yīng)于圖 4的情況下各機(jī)器的各可達(dá)性表.在上述的多機(jī)器環(huán)境中,如果類(lèi)X或?qū)ο驛的內(nèi)容由于衫L各機(jī)器中 的一個(gè)機(jī)器寫(xiě)入而改變,則有必要通過(guò)網(wǎng)絡(luò)53將該變化發(fā)送給所有其它 機(jī)器。然而,因?yàn)閷?duì)象B、 D和E每個(gè)僅能夠被單個(gè)機(jī)器訪問(wèn),所以,由 于這些存儲(chǔ)器位置僅能夠被其M機(jī)器訪問(wèn),在建立或更新這些存儲(chǔ)器位 置的內(nèi)容方面的考慮較少。當(dāng)類(lèi)X需要引用對(duì)象A時(shí),則稱類(lèi)X指向?qū)ο驛。在圖3中,這通 過(guò)分別從類(lèi)X1、 X2和Xn指向?qū)ο驛l、 A2和An的箭頭表示?,F(xiàn)在參考圖6,在應(yīng)用程序50的執(zhí)行過(guò)程中,由機(jī)器Mn執(zhí)行分配 操作,在該操作中,以空或"取空值"的引用來(lái)覆寫(xiě)從類(lèi)Xn到對(duì)象An 的引用。這樣,類(lèi)Xn不再指向?qū)ο驛n。與該操作對(duì)應(yīng),機(jī)器M1和M2 上的類(lèi)XI和X2被更新為不再分別引用對(duì)象Al和A2。在存在服務(wù)器機(jī) 器X的情況下,該改變由服務(wù)器機(jī)器X執(zhí)行;或者在不存在服務(wù)器機(jī)器 X的情況下,由機(jī)器Mn的DRT 71/n執(zhí)行。圖7和圖8的表中分別示出了在圖6中所示變化之后的情況。然而, 由于三個(gè)對(duì)象Al、 A2和An繼續(xù)存在,且繼續(xù)可以由機(jī)器Ml、 M2和 Mn訪問(wèn),所以沒(méi)有實(shí)際的改變。因此,圖7和圖8的表與圖4和圖5的 表相同。因此,盡管類(lèi)X不再指向?qū)ο驛,但是,對(duì)例如對(duì)象A2的任何 改變必須被傳ii^機(jī)器Ml和Mn以更新對(duì)象Al和An。圖9示出在機(jī)器Mn的操作系統(tǒng)或者DRT 71/n確定機(jī)器Mn上不再 需要對(duì)象An之后的情況。這時(shí),機(jī)器Mn自由回收當(dāng)前被對(duì)象A的本地 拷貝(An)占用的存儲(chǔ)器。這樣的存儲(chǔ)器回收系統(tǒng)是計(jì)算機(jī)中固有的, 并且是保證本地存儲(chǔ)器不因未被使用的部分而變得混亂所必須的。另夕卜, 這樣的系統(tǒng)在后臺(tái)操作,因此,程序員可以相信不用的對(duì)象等會(huì)被及時(shí)清 除。因此,程序員不需要采取特定的動(dòng)作來(lái)刪除或結(jié)束不用的對(duì)象。當(dāng)在機(jī)器Mn上發(fā)生這樣的變化時(shí),更新圖10的單個(gè)可達(dá)性表或圖 11中的機(jī)器Mn的可達(dá)性表,以指示在機(jī)器Mn上對(duì)象A不再可被訪問(wèn)。 注意,在這個(gè)階段,對(duì)象A仍然被認(rèn)作是共享的,因?yàn)樵谶@個(gè)示例中至 少兩個(gè)機(jī)器M1和M2仍能夠訪問(wèn)對(duì)象A。因此,在圖9中,對(duì)象A仍然 由雙線包圍。因此,必須對(duì)A2進(jìn)行對(duì)A1的任何改變,反之亦然?,F(xiàn)在參考圖12,這時(shí)或之后某時(shí)間,機(jī)器M2例如確定機(jī)器M2不 再需要或本地使用機(jī)器M2上的對(duì)象A2。因此,機(jī)器M2的操作系統(tǒng)或 DRT 71/2可以執(zhí)行固有的過(guò)程來(lái)回收當(dāng)前由全局對(duì)象A的本地拷貝A2 所使用的存儲(chǔ)器。結(jié)果,如圖13和圖14所示,修改可達(dá)性表,使得對(duì)象A不再被記 錄為可被機(jī)器M2訪問(wèn)。結(jié)果,對(duì)象A在圖12中被示出為僅僅被單線所 包圍。即,只有機(jī)器M1可以訪問(wèn)對(duì)象A (所以,其在圖12中可以僅僅 稱為A而不是Al——因?yàn)樾g(shù)語(yǔ)Al會(huì)暗示對(duì)象在機(jī)器Ml上的拷貝還存 在于至少一個(gè)其它機(jī)器上)。結(jié)果,如果需要,可以完全刪除可達(dá)性表中對(duì)對(duì)象A的引用。更重 要的是,對(duì)象A的變化不需要被傳達(dá)到任何其它機(jī)器,并且如果機(jī)器M1 不再需要引用對(duì)象A,則可以#器Ml中刪除對(duì)象A以回收先前被對(duì) 象A占用的存儲(chǔ)器空間。上述詳細(xì)描述涉及存儲(chǔ)器位置,然而,其同樣適用于結(jié)構(gòu)、資產(chǎn)或資 源(其在JAVA中被稱為類(lèi)或?qū)ο?。這些將已被分配了能夠被所有機(jī)器 全局使用的(全局)名字或標(biāo)記(因?yàn)閼?yīng)當(dāng)理解,不同機(jī)器的本地存儲(chǔ)器 結(jié)構(gòu)可能是不同的)。因而,分配給一個(gè)機(jī)器中具體存儲(chǔ)器位置的本地或 實(shí)際名字可能不同于分配給另 一個(gè)機(jī)器中對(duì)應(yīng)的存儲(chǔ)器位置的本地名字。 當(dāng)類(lèi)或?qū)ο蟊蛔畛醭跏蓟瘯r(shí),該全局名字分配優(yōu)選地發(fā)生在加栽時(shí)的編譯 過(guò)程期間。這通過(guò)由服務(wù)器機(jī)器X維護(hù)的表,可以非常方便地實(shí)現(xiàn)。該 表也可以包含可達(dá)性數(shù)據(jù)。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可達(dá)性數(shù)據(jù)使結(jié)構(gòu)、資產(chǎn)或資源(即 存儲(chǔ)器位置)能被分成兩個(gè)類(lèi)別或類(lèi)。第一類(lèi)別由能夠被所有機(jī)器訪問(wèn)的 位置構(gòu)成。關(guān)于這樣的存儲(chǔ)器位置所執(zhí)行的寫(xiě)動(dòng)作有必要被分布到所有的 機(jī)器,使得所有對(duì)應(yīng)的存儲(chǔ)器位置具有相同的內(nèi)容(由于傳輸更新數(shù)據(jù)造 成的延遲除外)。然而,關(guān)于第二類(lèi)別,因?yàn)檫@些存儲(chǔ)器位置僅可被本地 計(jì)算機(jī)訪問(wèn),所以對(duì)這些存儲(chǔ)器位置的寫(xiě)動(dòng)作不需要分布到所有其它機(jī) 器,也不需要在其它機(jī)器上存在對(duì)應(yīng)的存儲(chǔ)器位置。作為該分類(lèi)的結(jié)果, 可以快速識(shí)別并回收不使用的存儲(chǔ)器位置。前面僅描述了本發(fā)明的一些實(shí)施例,本領(lǐng)域的技術(shù)人員知道,在不偏離本發(fā)明的范圍的情況下,可以對(duì)其進(jìn)行修改。例如,圖4和圖7的表每 個(gè)均示出對(duì)應(yīng)于每個(gè)存儲(chǔ)器位置的行。實(shí)際上,對(duì)于僅被其本地機(jī)器訪問(wèn) 的存儲(chǔ)器位置如D和E,在表中根本不必具有行。相反,如果該存儲(chǔ)器 位置變?yōu)榭杀灰粋€(gè)或多個(gè)其它機(jī)器訪問(wèn),只創(chuàng)建這樣的行。前面僅描述了本發(fā)明的一些實(shí)施例,本領(lǐng)域的技術(shù)人員知道,在不偏 離本發(fā)明的范圍的情況下,可以對(duì)其進(jìn)行修改。例如,提及JAVA,包含 JAVA語(yǔ)言以及JAVA平臺(tái)和體系結(jié)構(gòu)。在所有描述的修改實(shí)例中,其中應(yīng)用代碼50在加栽之前、在加栽期 間、或者甚至在加栽之后^a4未修改的應(yīng)用代碼的執(zhí)行開(kāi)始之前被修改, 應(yīng)當(dāng)理解,被修改的應(yīng)用代碼在進(jìn)行的修改之后取代未修改的應(yīng)用代碼而 被加栽,以及取代未修改的應(yīng)用代碼而被執(zhí)行??商孢x地,在修改發(fā)生在加栽之后以及在未修改的應(yīng)用代碼的執(zhí)行開(kāi) 始之后的情況下,應(yīng)當(dāng)理解,未修改的應(yīng)用代碼可以被對(duì)應(yīng)于進(jìn)行的修改、 所修改的應(yīng)用代碼所M替換;或者,可替選地,隨著對(duì)正在執(zhí)行的未修 改應(yīng)用代碼遞增地進(jìn)行^"改,未修改的應(yīng)用代碼可以被部分或者遞增地替 換。無(wú)論使用這樣的修改途徑中的哪種,被進(jìn)行之后的修改都取代未修改 的應(yīng)用代碼而執(zhí)行。針對(duì)多個(gè)機(jī)器Ml、 M2...Mn中的每一個(gè)機(jī)器上的所有類(lèi)似等同本地對(duì)象(類(lèi),資產(chǎn)或資源等)^^用全局標(biāo)識(shí)符作為"元名字"或"元標(biāo)識(shí)"的形式是有利的。例如,不必,每個(gè)機(jī)器上多個(gè)類(lèi)似等同對(duì)象的每個(gè)類(lèi) 似等同本地對(duì)象的每個(gè)唯一本地名字或標(biāo)識(shí),取而代之,可以定義或使用對(duì)應(yīng)于每個(gè)機(jī)器上的多個(gè)類(lèi)似等同對(duì)象的全局名字(例如 "globalname7787"),在此情況下每個(gè)機(jī)器將全局名字與特定的本地名字 或?qū)ο舐?lián)系起來(lái)(例如"globalname7787"對(duì)應(yīng)于機(jī)器Ml上的對(duì)象"1ocalobject456" , "globalname7787"對(duì)應(yīng)于機(jī)器M2上的對(duì)象 "localobject885",以及"globalname7787"對(duì)應(yīng)于機(jī)器M3上的對(duì)象 "localobjectlll"等等)。根據(jù)本文所提供的詳細(xì)描述,本領(lǐng)域的技術(shù)人員還會(huì)明白,在由每個(gè) DRT 71當(dāng)最初記錄或創(chuàng)建所有對(duì)象中的全部或某子集的列表時(shí)創(chuàng)建的 表、列表或其它數(shù)據(jù)結(jié)構(gòu)(例如存儲(chǔ)器位置或字段)中,對(duì)于各個(gè)機(jī)器 Ml、 M2…Mn上的每個(gè)這樣的記錄的對(duì)象,存在在機(jī)器M1、 M2...Mn中 的每個(gè)機(jī)器上公共或類(lèi)似的名字或標(biāo)識(shí)。然而,在各個(gè)機(jī)器中,因?yàn)槊總€(gè)機(jī)器可能,并且通常會(huì)根據(jù)其自身的內(nèi)部處理來(lái)存儲(chǔ)不同存儲(chǔ)器位置處的 存儲(chǔ)器值或內(nèi)容,所以對(duì)應(yīng)于指定的名字或標(biāo)識(shí)的本M象將會(huì)或者可能 會(huì)隨時(shí)間而變化。因而,每個(gè)DRT中的表、列表、或其它數(shù)據(jù)結(jié)構(gòu)一般 會(huì)具有對(duì)應(yīng)于單個(gè)存儲(chǔ)器名字或標(biāo)識(shí)的不同本地存儲(chǔ)器位置,但是每個(gè)全 局的"存儲(chǔ)器名字"或標(biāo)識(shí)會(huì)具有存儲(chǔ)在不同本地存儲(chǔ)器位置中的相同的 "存儲(chǔ)器值或內(nèi)容"。所以,對(duì)于每個(gè)全局名字,會(huì)存在一族對(duì)應(yīng)獨(dú)立本 地存儲(chǔ)器位置,其中在每個(gè)計(jì)算機(jī)中有一個(gè)族成員。雖然本地存儲(chǔ)器名字 可能不同,但是資產(chǎn)、對(duì)象、位置等基本上具有相同內(nèi)容或值。所以族是 連貫的。本文所使用的術(shù)語(yǔ)"表"或"表格"意圖包括任何列表或有組織的、 無(wú)論為何種格式、并且在其內(nèi)可以以有序的方式存儲(chǔ)和讀出數(shù)據(jù)的數(shù)據(jù)結(jié) 構(gòu)。根據(jù)本文提供的說(shuō)明,本領(lǐng)域的普通技術(shù)人員也應(yīng)該明白,應(yīng)用程序 代碼50在加栽期間的上述修改可以用多種方法或由各種裝置來(lái)實(shí)現(xiàn)。這 些方法或裝置包含但不局限于至少下列五種方法以及這五種的變型或組 合,包含(i) 加栽時(shí)的再編譯;(ii) 加載之前的預(yù)編譯過(guò)程;(iii) 加載之前的編譯;(iv) "即時(shí)(just-in-time)"編譯,或(v) 加栽后的再編譯(但是,例如當(dāng)在分布式環(huán)境中執(zhí)行相關(guān)或?qū)?yīng)的 應(yīng)用代碼之前)。通常,術(shù)語(yǔ)"編譯"意味著代碼或語(yǔ)言方面的改變,例如從源代碼到 目標(biāo)代碼,或從一種語(yǔ)言到另一種語(yǔ)言。顯然,在本說(shuō)明書(shū)中,術(shù)語(yǔ)"編譯"(及其語(yǔ)法上的等同內(nèi)容)的使用未被如此限制,并且也可以包含或 包括相同代碼或語(yǔ)言內(nèi)的修改。計(jì)算機(jī)和/或編程技術(shù)領(lǐng)域的技術(shù)人員應(yīng)該知道,當(dāng)附加的代碼或指 令被插入到已有代碼或指令集中以將其修改時(shí),已有代碼或指令集4艮可能 需要進(jìn)一步修改(例如通過(guò)對(duì)連續(xù)指令的再編號(hào)),使得偏移,分支、屬性、標(biāo)記(markup)等被正確處理或滿足。類(lèi)似地,在JAVA語(yǔ)言中,存儲(chǔ)器位置包含例如字段和數(shù)組兩種類(lèi)型。 以上所述涉及字段,并且數(shù)組類(lèi)型所需的改變基本上是相同的必要變更。 并且,本發(fā)明同樣適用于與JAVA類(lèi)似的編程語(yǔ)言(包含過(guò)程性的、聲明 性的和面向?qū)ο蟮恼Z(yǔ)言),包括Microsoft.NET平臺(tái)和體系結(jié)構(gòu)(Visual Basic、 Visual C/C++,以及C弁),F(xiàn)ORTRAN, C/C++ , COBOL、 BASIC 等。本文所使用的術(shù)語(yǔ)"對(duì)象"和"類(lèi)"源自JAVA環(huán)境,并且意圖包括 源自不同環(huán)境如動(dòng)態(tài)^接庫(kù)(DLL ),目標(biāo)代碼包,功能單元或存儲(chǔ)器位 置的類(lèi)似術(shù)語(yǔ)。關(guān)于本發(fā)明的實(shí)施例描述了各種裝置,例如包含但不限于鎖裝置、分 布式運(yùn)行時(shí)裝置、修改器或修改裝置等。在本發(fā)明的至少一個(gè)實(shí)施例中, 這些各種裝置中的任何一個(gè)或每個(gè)可通過(guò)在計(jì)算機(jī)邏輯電路、處理器、 ASIC、邏輯或電子電路硬件、微處理器、微控制器或其它邏輯內(nèi)執(zhí)行的 計(jì)算機(jī)程序代碼語(yǔ)句或指令(可能包括通過(guò)多個(gè)計(jì)算機(jī)程序代碼語(yǔ)句或指 令)來(lái)實(shí)現(xiàn),以修改這樣的邏輯或電路的操作來(lái)實(shí)現(xiàn)所述的操作或功能。 在另一個(gè)實(shí)施例中,這些各種裝置中的任何一個(gè)或每個(gè)可以用固件實(shí)現(xiàn), 而在其它實(shí)施例中,其可以用^t件實(shí)現(xiàn)。此外,在本發(fā)明的至少一個(gè)實(shí)施 例中,這些各種裝置中的任何一個(gè)或每個(gè)可由計(jì)算機(jī)程序軟件、固件和/ 或硬件的組合來(lái)實(shí)現(xiàn)。上述方法、過(guò)程和/或例程中的任何一個(gè)和每個(gè)可有利地被實(shí)現(xiàn)為存 儲(chǔ)在任何有形介質(zhì)上或以電子、信號(hào)或數(shù)字形式存在的計(jì)算機(jī)程序和/或 計(jì)算積4呈序產(chǎn)品。這樣的計(jì)算枳^呈序或計(jì)算;^序產(chǎn)品分別包括指令,和 /或被組織成模塊、程序、子程序,或者以任何其它方式組織,以便在處 理邏輯如計(jì)算機(jī)、計(jì)算機(jī)器或信息設(shè)備的處理器或微處理器中執(zhí)行;計(jì)算 機(jī)程序或計(jì)算機(jī)程序產(chǎn)品修改其在上面執(zhí)行的計(jì)算機(jī)的操作,或者修改與該計(jì)算機(jī)程序或計(jì)算機(jī)程序產(chǎn)品所在的或在上面執(zhí)行的計(jì)算;M目耦合、連 接或者以信號(hào)通信的計(jì)算機(jī)上的操作。這樣的計(jì)算積艱序或計(jì)算;l^呈序產(chǎn)品修改計(jì)算機(jī)、計(jì)算機(jī)器和/或信息設(shè)備的操作和體系結(jié)構(gòu)性的結(jié)構(gòu),以 改變計(jì)算機(jī)的技術(shù)操作,并實(shí)現(xiàn)本文所述的技術(shù)效果。因此,本發(fā)明可包含一種計(jì)算機(jī)程序產(chǎn)品,其包括一組程序指令,其 中該組程序指令存儲(chǔ)在存儲(chǔ)介質(zhì)中,或者以任何形式電子地存在,并且可 用于使多個(gè)計(jì)算機(jī)執(zhí)行如本文(包括任一權(quán)利要求中)所述的方法、過(guò)程、 例程等中的任何一個(gè)。此外,本發(fā)明包含(但不局限于)多個(gè)計(jì)算機(jī),或者與經(jīng)由通信網(wǎng)絡(luò) 或其它通信鏈路或路徑互連、并且每個(gè)可用于基本同時(shí)或并行地執(zhí)g編 寫(xiě)成僅在單個(gè)計(jì)算機(jī)上或者在各計(jì)算機(jī)中對(duì)應(yīng)的不同的計(jì)算機(jī)上操作的 應(yīng)用代碼的相同或不同部分的單個(gè)計(jì)算機(jī)。所述計(jì)算機(jī)被編程成在被加栽計(jì)算;t^序產(chǎn)品時(shí)或者根據(jù)后續(xù)指令,執(zhí)行說(shuō)明書(shū)中描述的、或任一權(quán)利 要求書(shū)中提出的任何方法、過(guò)程或例程。類(lèi)似地,本發(fā)明在其范圍內(nèi)還包 含被布置成與類(lèi)似的、或基本類(lèi)似的計(jì)算機(jī)合作以形成多計(jì)算機(jī)系統(tǒng)的單 個(gè)計(jì)算機(jī)??偠灾?,提供了 一種禁用固有存在于多個(gè)計(jì)算機(jī)中的每一個(gè)計(jì)算機(jī) 中的本J4^儲(chǔ)器清除過(guò)程的方法,所述多個(gè)計(jì)算機(jī)中每個(gè)計(jì)算機(jī)具有自己 的對(duì)應(yīng)的獨(dú)立本*儲(chǔ)器,每個(gè)計(jì)算機(jī)基本同時(shí)地執(zhí)M編寫(xiě)成在僅僅單 個(gè)計(jì)算機(jī)上執(zhí)行的應(yīng)用程序的對(duì)應(yīng)的不同部分,且每個(gè)計(jì)算機(jī)通過(guò)通信網(wǎng) 絡(luò)連接以允許對(duì)應(yīng)的存儲(chǔ)器位置的更新,所述方法包括步驟(i) 將所述本地存儲(chǔ)器的存儲(chǔ)器位置分為第一可達(dá)性類(lèi)和第二類(lèi),在第 一可達(dá)性類(lèi)中,本地存儲(chǔ)器位置在所述計(jì)算機(jī)中的被選中的計(jì)算機(jī)或全部 計(jì)算機(jī)上被復(fù)制,因此需要通過(guò)所述通信網(wǎng)絡(luò),用能訪問(wèn)的其它計(jì)算機(jī)的 對(duì)應(yīng)存儲(chǔ)器位置的變化來(lái)進(jìn)行更新,以維護(hù)基本存儲(chǔ)器一致性,在第二類(lèi) 中,本地存儲(chǔ)器位置只存在于本地計(jì)算機(jī)中,因此不需要更新;(ii) 對(duì)于第二類(lèi)存儲(chǔ)器位置,允許固有本地存儲(chǔ)器清除過(guò)程自由操作;(iii) 對(duì)于第一類(lèi)存儲(chǔ)器位置,禁用固有本地存儲(chǔ)器清除過(guò)程;和(iv) 將第一類(lèi)存儲(chǔ)器位置中不能被所述計(jì)算機(jī)中除具有所述可降級(jí)第一 類(lèi)存儲(chǔ)器位置的本地計(jì)算機(jī)之外的任何計(jì)算機(jī)所引用的任何第一類(lèi)存儲(chǔ) 器位置從第 一類(lèi)降級(jí)到第二類(lèi)。優(yōu)選地,該方法還包括步驟(v) 在可達(dá)性表中維護(hù)關(guān)于存儲(chǔ)器位置分類(lèi)的數(shù)據(jù)。優(yōu)選地,該方法還包括步驟(vi)維護(hù)單個(gè)可達(dá)性表。優(yōu)選地,該方法包括步驟(vii )在不構(gòu)成多個(gè)計(jì)算機(jī)之一且通過(guò)通信網(wǎng)絡(luò)連接到所述多個(gè)計(jì)算機(jī)的 服務(wù)器計(jì)算機(jī)上維護(hù)單個(gè)可達(dá)性表。優(yōu)選地,該方法還包括步驟(viii)維護(hù)多個(gè)可達(dá)性表,每個(gè)可達(dá)性表在多個(gè)計(jì)算機(jī)中對(duì)應(yīng)的計(jì)算機(jī) 上。優(yōu)選地,存儲(chǔ)器位置包括資產(chǎn)、結(jié)構(gòu)或資源。還^^供一種計(jì)算積4呈序產(chǎn)品,其包括存儲(chǔ)在存儲(chǔ)介質(zhì)中、用于使多個(gè) 計(jì)算機(jī)執(zhí)行以上方法中的任一個(gè)方法的程序指令集。此外,提供了通過(guò)通信網(wǎng)絡(luò)互連并用于保證執(zhí)行以上方法中的任一個(gè) 方法的多個(gè)計(jì)算機(jī)。此外,提供了一種清除過(guò)程被修改的多計(jì)算機(jī)系統(tǒng),在該多計(jì)算機(jī)系 統(tǒng)中,多個(gè)計(jì)算機(jī)每個(gè)均具有其對(duì)應(yīng)的獨(dú)立本地存儲(chǔ)器,每個(gè)均具有固有 的本地存儲(chǔ)器清除過(guò)程,每個(gè)均基本同時(shí)地執(zhí)#^編寫(xiě)成在僅僅單個(gè)計(jì)算 機(jī)上執(zhí)行的應(yīng)用程序的對(duì)應(yīng)的不同部分,且每個(gè)均通過(guò)通信網(wǎng)絡(luò)連接以允 許對(duì)應(yīng)存儲(chǔ)器位置的更新,所述系統(tǒng)包括可達(dá)性裝置,以將所W地存儲(chǔ) 器的存儲(chǔ)器位置分類(lèi)為第一類(lèi)和第二類(lèi),在第一類(lèi)中,本地存儲(chǔ)器位置在 所述計(jì)算機(jī)中的被選中的計(jì)算機(jī)或全部計(jì)算機(jī)上被復(fù)制,因此需要通過(guò)所 述通信網(wǎng)絡(luò),用其它計(jì)算機(jī)的對(duì)應(yīng)存儲(chǔ)器位置的變化來(lái)進(jìn)行更新,以維護(hù) 基^儲(chǔ)器一致性,在第二類(lèi)中,本地存儲(chǔ)器位置只存在于本地計(jì)算機(jī)中, 因此不需要更新;且所述系統(tǒng)包括禁用裝置,其連接到所述可達(dá)性裝置并 連接到所述多個(gè)計(jì)算機(jī)中的每一個(gè)計(jì)算機(jī),以關(guān)于僅在所述第一分類(lèi)中的 存儲(chǔ)器位置禁用所述固有的本地存儲(chǔ)器清除過(guò)程,且所述可達(dá)性裝置包括 降級(jí)裝置,來(lái)將所述第一類(lèi)存儲(chǔ)器位置中不能被所述計(jì)算機(jī)中除具有所述 可降級(jí)第一類(lèi)存儲(chǔ)器位置的本地計(jì)算機(jī)之外的任何計(jì)算機(jī)所引用的任何笫 一類(lèi)存儲(chǔ)器位置從所述第 一類(lèi)降級(jí)到所述第二類(lèi)。優(yōu)選地,可達(dá)性裝置包括可達(dá)性表,其中維護(hù)有關(guān)存儲(chǔ)器位置分類(lèi)的 數(shù)據(jù)。優(yōu)選地,包括連接到通信網(wǎng)絡(luò)的服務(wù)器計(jì)算機(jī),該服務(wù)器計(jì)算機(jī)包括單個(gè)可達(dá)性表.優(yōu)選地,多個(gè)計(jì)算機(jī)中的每一個(gè)計(jì)算機(jī)包括對(duì)應(yīng)的可達(dá)性表。 優(yōu)選地,存儲(chǔ)器位置包括資產(chǎn)、結(jié)構(gòu)或資源。另外,提供一種用于與至少一個(gè)其它計(jì)算機(jī)*,以便執(zhí)行以上方法 中的任一個(gè)方法或形成以上計(jì)算機(jī)系統(tǒng)的單個(gè)計(jì)算機(jī)。本文所使用的術(shù)語(yǔ)"包括"(及其語(yǔ)法變型)用于表示"具有"或"包 含"的包括性含義,而不是用于表示"僅由......組成"的排它性含義.
權(quán)利要求
1.一種禁用固有存在于多個(gè)計(jì)算機(jī)的每一個(gè)計(jì)算機(jī)中的本地存儲(chǔ)器清除過(guò)程的方法,所述多個(gè)計(jì)算機(jī)中每個(gè)計(jì)算機(jī)具有自己的對(duì)應(yīng)的獨(dú)立本地存儲(chǔ)器,每個(gè)計(jì)算機(jī)基本同時(shí)地執(zhí)行被編寫(xiě)成在僅僅單個(gè)計(jì)算機(jī)上執(zhí)行的應(yīng)用程序的對(duì)應(yīng)的不同部分,且每個(gè)計(jì)算機(jī)通過(guò)通信網(wǎng)絡(luò)連接以允許對(duì)應(yīng)的存儲(chǔ)器位置的更新,所述方法包括步驟(i)將所述本地存儲(chǔ)器的存儲(chǔ)器位置分為第一可達(dá)性類(lèi)和第二類(lèi),在第一可達(dá)性類(lèi)中,本地存儲(chǔ)器位置在所述計(jì)算機(jī)中的被選中的計(jì)算機(jī)或全部計(jì)算機(jī)上被復(fù)制,因此需要通過(guò)所述通信網(wǎng)絡(luò),用能訪問(wèn)的其它計(jì)算機(jī)的對(duì)應(yīng)存儲(chǔ)器位置的變化來(lái)進(jìn)行更新,以維護(hù)基本存儲(chǔ)器一致性,在第二類(lèi)中,本地存儲(chǔ)器位置只存在于本地計(jì)算機(jī)中,因此不需要更新;(ii)對(duì)于所述第二類(lèi)存儲(chǔ)器位置,允許所述固有本地存儲(chǔ)器清除過(guò)程自由操作;(iii)對(duì)于所述第一類(lèi)存儲(chǔ)器位置,禁用所述固有本地存儲(chǔ)器清除過(guò)程;和(iv)將所述第一類(lèi)存儲(chǔ)器位置中不能被所述計(jì)算機(jī)中除具有所述可降級(jí)第一類(lèi)存儲(chǔ)器位置的本地計(jì)算機(jī)之外的任何計(jì)算機(jī)所引用的任何第一類(lèi)存儲(chǔ)器位置從所述第一類(lèi)降級(jí)到所述第二類(lèi)。
2. 根據(jù)權(quán)利要求l所述的方法,還包括步驟(v) 在可達(dá)性表中維護(hù)關(guān)于所述存儲(chǔ)器位置分類(lèi)的數(shù)據(jù)。
3. 根據(jù)權(quán)利要求2所述的方法,還包括步驟(vi) 維護(hù)單個(gè)所述可達(dá)性表。
4. 根據(jù)權(quán)利要求3所述的方法,包括步驟(vii) 在不構(gòu)成所述多個(gè)計(jì)算機(jī)之一且通過(guò)所述通信網(wǎng)絡(luò)連接到所述 多個(gè)計(jì)算機(jī)的服務(wù)器計(jì)算機(jī)上維護(hù)所述單個(gè)可達(dá)性表。
5. 根據(jù)權(quán)利要求2所述的方法,還包括步驟(viii) 維護(hù)多個(gè)可達(dá)性表,每個(gè)可達(dá)性表在所述多個(gè)計(jì)算機(jī)中對(duì)應(yīng)的 計(jì)算機(jī)上。
6. 根據(jù)權(quán)利要求1-5中任一個(gè)所述的方法,其中,所述存儲(chǔ)器位置 包括資產(chǎn)、結(jié)構(gòu)或資源。
7. —種計(jì)算M序產(chǎn)品,其包括存儲(chǔ)在存儲(chǔ)介質(zhì)中且用于使多個(gè)計(jì) 算機(jī)執(zhí)行根據(jù)權(quán)利要求1 - 6中任一個(gè)所述的方法的程序指令集。
8. 通過(guò)通信網(wǎng)絡(luò)互連并用于保證執(zhí)行根據(jù)權(quán)利要求1 - 6中任一個(gè)所 述的方法的多個(gè)計(jì)算機(jī)。
9. 一種清除過(guò)程被修改的多計(jì)算機(jī)系統(tǒng),在該多計(jì)算機(jī)系統(tǒng)中,多 個(gè)計(jì)算機(jī)每個(gè)均具有其對(duì)應(yīng)的獨(dú)立本地存儲(chǔ)器,每個(gè)均具有固有的本地存儲(chǔ)器清除過(guò)程,每個(gè)均基本同時(shí)地執(zhí)^t編寫(xiě)成在僅僅單個(gè)計(jì)算機(jī)上執(zhí)行 的應(yīng)用程序的對(duì)應(yīng)的不同部分,且每個(gè)均通過(guò)通信網(wǎng)絡(luò)連接以允許對(duì)應(yīng)存 儲(chǔ)器位置的更新,所述系統(tǒng)包括可達(dá)性裝置,以將所述本地存儲(chǔ)器的存儲(chǔ) 器位置分類(lèi)為第一類(lèi)和第二類(lèi),在第一類(lèi)中,本地存儲(chǔ)器位置在所述計(jì)算 機(jī)中的被選中的計(jì)算機(jī)或全部計(jì)算機(jī)上被復(fù)制,因此需要通過(guò)所述通信網(wǎng) 絡(luò),用其它計(jì)算機(jī)的對(duì)應(yīng)存儲(chǔ)器位置的變化來(lái)進(jìn)行更新,以維護(hù)基M儲(chǔ) 器一致性,在第二類(lèi)中,本地存儲(chǔ)器位置只存在于本地計(jì)算機(jī)中,因此不 需要更新;且所述系統(tǒng)包括禁用裝置,其連接到所述可達(dá)性裝置并連接到 所述多個(gè)計(jì)算機(jī)中的每一個(gè)計(jì)算機(jī),以關(guān)于僅在所述第一分類(lèi)中的存儲(chǔ)器 位置禁用所述固有本地存儲(chǔ)器清除過(guò)程,且所述可達(dá)性裝置包括降級(jí)裝 置,來(lái)將所述第一類(lèi)存儲(chǔ)器位置中不能被所述計(jì)算機(jī)中除具有所述可降級(jí) 第一類(lèi)存儲(chǔ)器位置的本地計(jì)算機(jī)之外的任何計(jì)算機(jī)所引用的任何第一類(lèi) 存儲(chǔ)器位置從所述第 一類(lèi)降級(jí)到所述笫二類(lèi)。
10. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述可達(dá)性裝置包括可達(dá)性 表,該可達(dá)性表中維護(hù)有關(guān)所述存儲(chǔ)器位置分類(lèi)的數(shù)據(jù)。
11. 根據(jù)權(quán)利要求10所述的系統(tǒng),包括連接到所述通信網(wǎng)絡(luò)的服務(wù) 器計(jì)算機(jī),所述月艮務(wù)器計(jì)算機(jī)包括單個(gè)可達(dá)性表。
12. 根據(jù)權(quán)利要求10所述的系統(tǒng),其中,所述多個(gè)計(jì)算機(jī)中的每一 個(gè)計(jì)算機(jī)包括對(duì)應(yīng)的可達(dá)性表。
13. 根據(jù)權(quán)利要求9-12中任一個(gè)所述的系統(tǒng),其中,所述存儲(chǔ)器位 置包括資產(chǎn)、結(jié)構(gòu)或資源。
14. 一種用于與至少一個(gè)其它計(jì)算機(jī)合作,以便執(zhí)行根據(jù)權(quán)利要求l -6中任一個(gè)所述的方法或形成根據(jù)權(quán)利要求8-13中任一個(gè)所述的計(jì)算 機(jī)系統(tǒng)的單個(gè)計(jì)算機(jī)。
全文摘要
公開(kāi)在多計(jì)算機(jī)環(huán)境中僅對(duì)一些存儲(chǔ)器位置進(jìn)行的更新,其中在所述多計(jì)算機(jī)環(huán)境中,至少一個(gè)應(yīng)用程序(50)在每個(gè)均具有本地存儲(chǔ)器的多個(gè)計(jì)算機(jī)M1、M2......Mn上同時(shí)地執(zhí)行。在所述本地存儲(chǔ)器中的存儲(chǔ)器位置(A、B、D、E、X)被分成兩組。第一組存儲(chǔ)器位置(X1、X2、......Xn,A1、A2、......An)每個(gè)均可被其它計(jì)算機(jī)訪問(wèn)。第二組存儲(chǔ)器位置(B、E)每個(gè)均僅可被具有包含所述存儲(chǔ)器位置的本地存儲(chǔ)器的計(jì)算機(jī)訪問(wèn)。僅在第一組中的存儲(chǔ)器位置的內(nèi)容的變化被發(fā)送到所有其它計(jì)算機(jī)。公開(kāi)了一種降級(jí)機(jī)制,以在應(yīng)用程序執(zhí)行表示所述第一組中的存儲(chǔ)器位置不再被另一計(jì)算機(jī)中的另一存儲(chǔ)器位置所引用的情況下,將第一組中的存儲(chǔ)器位置降級(jí)到第二組中。
文檔編號(hào)G06F15/16GK101283344SQ200680037516
公開(kāi)日2008年10月8日 申請(qǐng)日期2006年10月5日 優(yōu)先權(quán)日2005年10月10日
發(fā)明者約翰·馬修·霍爾特 申請(qǐng)人:瓦拉泰克有限公司