欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

具有部分存儲(chǔ)器更新的改進(jìn)的機(jī)器體系結(jié)構(gòu)的制作方法

文檔序號:6569189閱讀:181來源:國知局
專利名稱:具有部分存儲(chǔ)器更新的改進(jìn)的機(jī)器體系結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算,尤其涉及經(jīng)由通信網(wǎng)絡(luò)互連的多個(gè)計(jì)算機(jī)的同時(shí)操作。
背景技術(shù)
以本申請人的名義公布的、公布號為WO2005/103926的國際專利申 請PCT/AU2005/000580 (代理所巻號為5027F-WO ) (乂>布號為 2005-0262313的美國專利申請11/111,946與其對應(yīng))公開了被編寫成^M^ 單計(jì)算機(jī)上執(zhí)行的應(yīng)用程序的不同部分如何能夠在多個(gè)計(jì)算機(jī)的對應(yīng)的 不同計(jì)算機(jī)上基本同時(shí)地操作。該同時(shí)操作到本申請的優(yōu)先權(quán)日為止尚未 在商業(yè)上使用。題目為"Computer Architecture Method of Operation for Multi-Computer Distributed Processing and Co-ordinated Memory and Asset Handling"的美國專利申請11/ 259885所對應(yīng)的國際專利申請 PCT/AU2005/001641 (代理所巻號為5027F-D1-WO ),以;ME本申請A^ 義下的、截至本申請的優(yōu)先權(quán)日未公布的國際專利申請 PCT/AU2006/000532 (代理所巻號為5027F-D2-WO)還揭示了更多的細(xì) 節(jié)。上述每一個(gè)在先申請的說明書內(nèi)容通過交叉引用全部結(jié)合在本說明書 中。簡要地說,上述專利說明書公開了被編寫成僅在單計(jì)算機(jī)上操作的至 少一個(gè)應(yīng)用程序能夠在每個(gè)均具有獨(dú)立的本地存儲(chǔ)器的若干計(jì)算機(jī)上被 同時(shí)操作。該程序的操作所需的存儲(chǔ)器位置在每個(gè)計(jì)算機(jī)的獨(dú)立的本地存 儲(chǔ)器中被復(fù)制。每次在應(yīng)用程序?qū)⑿聰?shù)據(jù)寫到任一復(fù)制的存儲(chǔ)器位置時(shí), 傳輸該新數(shù)據(jù),并且將其存儲(chǔ)在每個(gè)計(jì)算機(jī)的每個(gè)對應(yīng)的存儲(chǔ)器位置。因 此,不考慮可能的傳輸延遲,每個(gè)計(jì)算機(jī)的本地存儲(chǔ)器與每個(gè)其它計(jì)算機(jī)的本地存儲(chǔ)器的內(nèi)容基;M目同,并且被更新以保持如此。由于所有應(yīng)用程 序通常讀取數(shù)據(jù)比它們產(chǎn)生待寫的新數(shù)據(jù)要頻繁得多,所以上述方案使得 能夠在計(jì)算速度方面實(shí)現(xiàn)較大的優(yōu)勢。尤其是,該策略使得通過商用通信 網(wǎng)絡(luò)互連的兩個(gè)或更多商用計(jì)算機(jī)能夠同時(shí)操作,從而在被編寫成僅在單計(jì)算機(jī)上執(zhí)行的應(yīng)用程序下運(yùn)行。在許多情況下,上述方案能4^人滿意地工作。這尤其適用于程序員意 識到可能有更新延遲并因而可調(diào)整程序的流程以將其解決的情況。然而, 存在使用陳舊的內(nèi)容或值而不是最新的內(nèi)容而可能引起問題的情況。本發(fā)明的目的是期望通過減少需要更新的數(shù)據(jù)量來提高多計(jì)算機(jī)系 統(tǒng)的操作速度。發(fā)明內(nèi)容根據(jù)本發(fā)明的第一方面,公開一種選擇多計(jì)算機(jī)環(huán)境中要基本上同時(shí) 更新的獨(dú)立存儲(chǔ)器位置的方法,在該多計(jì)算機(jī)環(huán)境中,被編寫成僅在單計(jì) 算機(jī)上執(zhí)行的至少一個(gè)應(yīng)用程序的不同部分均在所述多個(gè)計(jì)算機(jī)中的對應(yīng)的不同計(jì)算機(jī)上基本同時(shí)地執(zhí)行,所述方法包括步驟(i) 選擇第一組存儲(chǔ)器位置,其中每個(gè)存儲(chǔ)器位置在每個(gè)計(jì)算機(jī)上被復(fù)制;(ii) 忽略第二組存儲(chǔ)器位置,其中每個(gè)存儲(chǔ)器位置僅出現(xiàn)在所述計(jì)算 機(jī)中的、每個(gè)第二組存儲(chǔ)器位置物理上所在的特定計(jì)算機(jī)中;(iii) 從所述第二組中升級所述第 一組中的存儲(chǔ)器位置開始引用(refer to)的任何存儲(chǔ)器位置;(iv) 在所述計(jì)算機(jī)中除了當(dāng)在所述第二組中時(shí)所述升級的第二組位 置物理上所在的計(jì)算機(jī)之外的所有其他計(jì)算機(jī)中,復(fù)制所述升級的第二組 位置;(v) 將所述復(fù)制、升級的第二組位置分配給所述第一組,以及(vi) 利用對所述計(jì)算機(jī)中的任何計(jì)算機(jī)的第一組位置所做的任何變 化,基本同時(shí)地更新所述計(jì)算機(jī)中的其它計(jì)算機(jī)的所述第一組位置。根據(jù)本發(fā)明的第二方面,公開一種多計(jì)算機(jī)系統(tǒng),其中被編寫成僅在 單個(gè)計(jì)算機(jī)上執(zhí)行的至少 一個(gè)應(yīng)用程序的不同部分均在多個(gè)計(jì)算機(jī)中的 對應(yīng)的計(jì)算機(jī)上基本同時(shí)地執(zhí)行,所述多個(gè)計(jì)算機(jī)中的每個(gè)計(jì)算機(jī)具有獨(dú) 立的本地存儲(chǔ)器,并且所有計(jì)算機(jī)通過通信網(wǎng)絡(luò)互連,其中,存在于所述 本地存儲(chǔ)器中的存儲(chǔ)器位置被分成兩組第一組存儲(chǔ)器位置,其中每個(gè)被 復(fù)制在每個(gè)所述計(jì)算機(jī)上;以及笫二組存儲(chǔ)器位置,其中每個(gè)僅出現(xiàn)在所 述計(jì)算機(jī)中的、每個(gè)所述第二組存儲(chǔ)器位置物理上所在的特定計(jì)算機(jī)中,所述系統(tǒng)包括經(jīng)由所述通信網(wǎng)^fc對一個(gè)計(jì)算機(jī)中的所述第一組的存儲(chǔ)器位置所做的任何變化更新到所述其它計(jì)算機(jī)的所有其它的對應(yīng)存儲(chǔ)器位置的存儲(chǔ)器更新裝置;以及升級裝置,將所述第二組中由于所述應(yīng)用程 序的執(zhí)行而現(xiàn)在由所述第一組的存儲(chǔ)器位置引用的任何存儲(chǔ)器位置從所 述第二組升級到所述第一組。根據(jù)本發(fā)明的第三方面,公開一種適于與至少 一個(gè)其它計(jì)算機(jī)*以 執(zhí)行上述方法或構(gòu)成上述計(jì)算機(jī)系統(tǒng)的單計(jì)算機(jī)。根據(jù)本發(fā)明的第四方面,公開一種計(jì)算M序產(chǎn)品,其包括存儲(chǔ)在存 儲(chǔ)介質(zhì)中并且用于使多個(gè)計(jì)算機(jī)執(zhí)行以上定義的方法的一組程序指令。根據(jù)本發(fā)明的第五方面, 〃>開經(jīng)由通信網(wǎng)互連并且用于保證執(zhí)行上述 方法的多個(gè)計(jì)算機(jī)。


現(xiàn)在將參考附圖描述本發(fā)明的優(yōu)選實(shí)施例,在附圖中圖1A示意性示出了被布置成運(yùn)行JAVA代碼從而構(gòu)成單JAVA虛擬 機(jī)的現(xiàn)有技術(shù)計(jì)算機(jī);圖1B是類似于圖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ǔ)器位置的示意圖,示出了包含類和對象 的存儲(chǔ)器位置;圖4是示出圖3的各存儲(chǔ)器位置及其被訪問的能力的表;圖5是類似于圖3的圖,且示出了指向存儲(chǔ)器位置A的存儲(chǔ)器位置X的結(jié)果;圖6是對應(yīng)于圖5的可達(dá)性表;圖7是類似于圖3的圖,且示出了指向新存儲(chǔ)器位置K的存儲(chǔ)器位 置A;圖8是對應(yīng)于圖7的可達(dá)性表;圖9是類似于圖7的圖,但是示出了指向存儲(chǔ)器位置A的存儲(chǔ)器位 置X的結(jié)果;圖10是對應(yīng)于圖9的可達(dá)性表;圖11-14圖解了分別對應(yīng)于圖4、 6、 8和10的單獨(dú)可達(dá)性表的多個(gè) 可達(dá)性表;圖15圖解了又一個(gè)存儲(chǔ)器變化;圖16和17分別圖解了對應(yīng)于圖15的存儲(chǔ)器變化的單個(gè)可達(dá)性表和 多個(gè)可達(dá)性表;圖18圖解了另一個(gè)存儲(chǔ)器變化;圖19和20分別圖解了對應(yīng)于圖19的存儲(chǔ)器變化的單個(gè)可達(dá)性表和 多個(gè)可達(dá)性表;圖21圖解了另一個(gè)存儲(chǔ)器變化;圖22和23分別圖解了對應(yīng)于圖22的存儲(chǔ)器變化的單個(gè)可達(dá)性表和 多個(gè)可達(dá)性表;圖24圖解了又一個(gè)存儲(chǔ)器變化,以及圖25和26分別圖解了對應(yīng)于圖24的存儲(chǔ)器變化的單個(gè)可達(dá)性表和 多個(gè)可達(dá)性表。
具體實(shí)施方式
各實(shí)施例將參照J(rèn)AVA語言進(jìn)行描述,然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理 解,本發(fā)明不局限于該語言,特別地,可用于其它語言(包含過程性語言、 聲明性語言和面向?qū)ο笳Z言),包含MICROSOFT.NET平臺和體系結(jié)構(gòu) (Visual Basic、 Visual C和Visual C++,以及Visual C#)、 FORTRAN, C、 C++、 COBOL、 BASIC等等?,F(xiàn)有技術(shù)中已知的是提供通過建立圖1A中所示的虛擬機(jī)來利用特定 語言的應(yīng)用程序的單計(jì)算機(jī)或機(jī)器(由各制造商中的任何一個(gè)所生產(chǎn),并 且具有以各種不同語言中的任何一種語言操作的操作系統(tǒng)(或者等同控制 軟件或其它機(jī)制))。圖1A的代碼和數(shù)據(jù)以及虛擬機(jī)配置或方案采取用JAVA語言編寫并 且在JAVA虛擬機(jī)61內(nèi)執(zhí)行的應(yīng)用代碼50的形式。因而在應(yīng)用的期望語言為JAVA語言的情況下,使用JAVA虛擬機(jī),其中JAVA虛擬機(jī)能夠運(yùn) 行JAVA形式的代碼,而不論機(jī)器制造商和計(jì)算機(jī)或機(jī)器的內(nèi)部細(xì)節(jié)如 何。有關(guān)更多細(xì)節(jié),參見由美國Sun Microsystems公司的T. Lindholm和 F,Yellin所著的"The JAVA Virtual Machine Specification"第二版,其通 過引用結(jié)合于此。根據(jù)本發(fā)明的實(shí)施例,通過提供如圖1B所示被方便地稱為"分布式 運(yùn)行時(shí)"或"分布式運(yùn)行時(shí)系統(tǒng)"DRT 71的附加設(shè)備,改進(jìn)圖1A的常 規(guī)4支術(shù)方案。圖IB和1C中,通過由箭頭75或75A或75B所示的加載過程,應(yīng) 用代碼50被加載到與分布式運(yùn)行時(shí)系統(tǒng)71合作的JAVA虛擬機(jī)Ml、M2........ Mn上。如此處所使用的,術(shù)語"分布式運(yùn)行時(shí)"和"分布式運(yùn)行時(shí)系統(tǒng)"實(shí)質(zhì)上是同義的,并且通過闡述而不是限制,通常被理解成 包含支持在特定平臺上運(yùn)行的、用特定語言編寫的軟件的庫代碼和進(jìn)程。 此外,分布式運(yùn)行時(shí)系統(tǒng)還可以包含支持在特定分布式計(jì)算環(huán)境內(nèi)運(yùn)行 的、用特定語言編寫的軟件的庫代碼和進(jìn)程。運(yùn)行時(shí)系統(tǒng)(無論是否是分 布式運(yùn)行時(shí)系統(tǒng))通常處理程序與IMt系統(tǒng)之間的接口的細(xì)節(jié),例如系統(tǒng) 調(diào)用、程序啟動(dòng)和終止、以及存儲(chǔ)器管理。為說明背景,常規(guī)的分布式計(jì) 算環(huán)境(DCE)(其不提供本發(fā)明優(yōu)選實(shí)施例中所使用的本發(fā)明的分布式 運(yùn)行時(shí)或分布式運(yùn)行時(shí)系統(tǒng)71的能力)可以從開放軟件基金會(huì)得到。該 分布式計(jì)算環(huán)境(DCE )執(zhí)行一種針對在機(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紐上的加載過程期間開始運(yùn)行。根據(jù)此處所提供的描述應(yīng)當(dāng)理解,雖然許多示例和描述被提供成與JAVA語言和JAVA虛擬機(jī) 相關(guān),以使得讀者能了解具體例子的益處,但是本發(fā)明不局限于JAVA語 言或JAVA虛擬機(jī),或者任何其他語言、虛擬機(jī)、機(jī)器或者操作環(huán)境。圖1C以改進(jìn)形式示出了每個(gè)如圖IB所示的JAVA虛擬機(jī)的方案。 顯然,相同的應(yīng)用代碼50被加載到每個(gè)機(jī)器Ml、 M2…Mn上。然而, 各機(jī)器Ml、 M2...Mn之間的通信由箭頭83表示,并且雖然通過機(jī)器硬 件物理上傳送,但是有利地被每個(gè)機(jī)器內(nèi)的各自DRT 71/1...71/n所控制。 因而,實(shí)際上這可以v^Mft念上理解成經(jīng)由網(wǎng)絡(luò)或其它通信銜咯53而相互通信的DRT 71/1, ...71/n,而不是自身或彼此直接通信的機(jī)器Ml、 M2...Mn。所i更想和包含的是機(jī)器Ml、 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被 編寫為在單機(jī)器或計(jì)算機(jī)上執(zhí)行(或者在模擬單計(jì)算機(jī)操作的上述專利申 請的多計(jì)算機(jī)系統(tǒng)上操作)。實(shí)質(zhì)上,改進(jìn)的結(jié)構(gòu)是在每個(gè)單獨(dú)機(jī)器上復(fù) 制相同的存儲(chǔ)器結(jié)構(gòu)和內(nèi)容。術(shù)語"公共應(yīng)用程序"應(yīng)被理解為是指被編寫成在單機(jī)器上操作的, 且在多個(gè)計(jì)算機(jī)或機(jī)器M1、 M2…Mn中的每一個(gè)上、或者可選地在所述 多個(gè)計(jì)算機(jī)或機(jī)器Ml、 M2...Mn的某個(gè)子集的每一個(gè)上全部或部分Ak^ 載和/或執(zhí)行的應(yīng)用程序或應(yīng)用程序代碼。換句話說,具有以應(yīng)用程序代 碼50表示的公共應(yīng)用程序。其為單個(gè)拷貝,或每個(gè)均被單獨(dú)修改以生成 應(yīng)用程序或程序代碼的修改拷貝或版本的多個(gè)相同拷貝。于是每個(gè)拷貝或 實(shí)例被準(zhǔn)備以在對應(yīng)的機(jī)器上執(zhí)行。在它們被修改之后,從它們執(zhí)行類似 的IMt并且彼此一致且連貫^^行的意義上來說,它們是乂〉共的。應(yīng)當(dāng)理 解,實(shí)現(xiàn)本發(fā)明的實(shí)施例的多個(gè)計(jì)算機(jī)、機(jī)器、信息i殳備等可以任選地連 接到或耦合到未實(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ù)本)使其在 該特定機(jī)器上的本地操作與其它機(jī)器上的相應(yīng)實(shí)例(拷貝或復(fù)本)的操作 協(xié)調(diào),使得它們以一致、連貫和協(xié)調(diào)的方式一起工作,并且看起來〗象應(yīng)用 的一個(gè)全局實(shí)例(即"元應(yīng)用")。相同或基4^目同的應(yīng)用代碼的各拷貝或復(fù)本,每個(gè)被加載到互操作且 相連接的機(jī)器或計(jì)算機(jī)中對應(yīng)的一個(gè)上。由于每個(gè)機(jī)器或計(jì)算機(jī)的特性可 能不同,所以應(yīng)用代碼50可在加載之前被修改、在加載過程期間被修改、 或者在加載過程之后被修改(雖然有一些缺點(diǎn)),以在每個(gè)機(jī)器上提供應(yīng)用 代碼的定制或修改。不同機(jī)器上的程序或應(yīng)用代碼之間的一些不同點(diǎn)可以 是允許的,只要能夠保持本文所述的其它對互操作性、 一致性和連貫性的 要求。在下文將會(huì)明白,機(jī)器M1、 M2."Mn中的每個(gè)機(jī)器,因而全部機(jī) 器M1、 M2…Mn具有相同或基^目同的應(yīng)用代碼50,其通常具有可以是特定于機(jī)器的修改。在每個(gè)機(jī)器M1、 1\12...]\111上的應(yīng)用代碼50 (或其相關(guān)部分)的加栽 之前、加栽期間、或執(zhí)行前的任何時(shí)候,每個(gè)應(yīng)用代碼50由對應(yīng)的修改 器(modifier) 51根據(jù)相同的規(guī)則(或基4^f目同的規(guī)則,因?yàn)樵诿總€(gè)修改 器51/1、 51/2...51/n內(nèi)允許小的優(yōu)化改變)來修改。機(jī)器M1、 M2...Mn中的每個(gè)機(jī)器與相同的(或基^目同或類似的) 修改器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...]\111都具有針對 所需每個(gè)修改的相同的(或基^目同或類似的)修改器51。例如,對于 存儲(chǔ)器管理和復(fù)制、初始化、結(jié)束、和/或同步可能需要不同的修改(盡 管可能不是所有實(shí)施例都需要所有這些修改類型)。存在修改器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ī)程序代碼來實(shí)現(xiàn)或編寫。在這種情況下,修改 器功能和結(jié)構(gòu)實(shí)際上被包含到DRT中。與其實(shí)現(xiàn)無關(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í)施例中,通 信功能通過每個(gè)機(jī)器上的DRT的計(jì)算機(jī)程序代碼內(nèi)的中間協(xié)議層來實(shí) 現(xiàn)。例如,DRT可以用JAVA語言來實(shí)現(xiàn)通信棧,并使用傳輸控制協(xié)i" 網(wǎng)際協(xié)議(TCP/IP)來提供機(jī)器之間的通信或?qū)υ?。這些功能或操作可 以用各種方法來實(shí)現(xiàn),并且根據(jù)本文提供的描述應(yīng)當(dāng)理解,這些功能或操 作如何確切地被實(shí)現(xiàn),或者在結(jié)構(gòu)和/或過程性元素之間或在計(jì)算機(jī)程序 代碼或數(shù)據(jù)結(jié)構(gòu)之間如何被確切劃分對本發(fā)明來說并不是重要或至關(guān)重 要的。然而,在圖1C所示的方案中,提供了多個(gè)單獨(dú)計(jì)算機(jī)或機(jī)器M1、 M2."Mn,其中每個(gè)都經(jīng)由通信網(wǎng)絡(luò)53或其它通信鏈路互連。每個(gè)單獨(dú) 計(jì)算機(jī)或機(jī)器都設(shè)置有對應(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的任何常見組網(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ī))。由于上述方案,如果機(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... Mn的每個(gè)機(jī)器上的類似等同存儲(chǔ)器),或相反被用 于執(zhí)行公共應(yīng)用代碼時(shí),任何一個(gè)機(jī)器的最小存儲(chǔ)器的大小可用作各機(jī)器 的最大存儲(chǔ)器容量。然而,盡管對待每個(gè)機(jī)器的內(nèi)部存儲(chǔ)器的方式可能最初看起來是性能 的可能約束,但是,在下文中將會(huì)理解這如何導(dǎo)致操作和性能的提高。當(dāng) 然,每個(gè)機(jī)器M1、 1\12...]\111都有專用的(即非公共的)內(nèi)部存儲(chǔ)器容量。 各機(jī)器Ml, M2, ...Mn的專用內(nèi)部存儲(chǔ)器容量通常近似相等,但是也不 一定如此。例如,當(dāng)多計(jì)算機(jī)系統(tǒng)是利用由不同實(shí)體所擁有或操作的現(xiàn)有 計(jì)算機(jī)、機(jī)器或信息設(shè)備來實(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無關(guān)的其它計(jì)算任務(wù)所占 用。原型多計(jì)算機(jī)系統(tǒng)的非商業(yè)操作表明,并不是該系統(tǒng)中每個(gè)機(jī)器或計(jì) 算機(jī)都使用或需要引用(例如,具有每個(gè)可能的存儲(chǔ)器位置的本地復(fù)本) 每個(gè)可能的存儲(chǔ)器位置。結(jié)果,只要每個(gè)機(jī)器的本地存儲(chǔ)器對于該機(jī)器的 操作U夠的,則無需每個(gè)機(jī)器的本地存儲(chǔ)器與每個(gè)其它機(jī)器相同,就可 以操作多計(jì)算機(jī)系統(tǒng)。也就是說,假如特定機(jī)器不需要引用(例如具有一 些特定存儲(chǔ)器位置的本地復(fù)本) 一些特定存儲(chǔ)器位置,則那些特定存儲(chǔ)器位置在該特定機(jī)器中未被復(fù)制是無關(guān)緊要的。選擇每個(gè)機(jī)器中內(nèi)部存儲(chǔ)器的量以在每個(gè)機(jī)器中以及所連接或耦合的多個(gè)機(jī)器、計(jì)算機(jī)或信息設(shè)備M1、 M2........ Mn的星座或網(wǎng)絡(luò)上達(dá)到期望性能等級也是有利的。在描述了這些內(nèi)部和公共存儲(chǔ)器考慮因素 后,根據(jù)本文提供的描述應(yīng)當(dāng)理解,機(jī)器之間可以是公共的存儲(chǔ)器的量并 不是限制。在一些實(shí)施例中,多個(gè)單獨(dú)計(jì)算機(jī)或機(jī)器的一些或全部可以被包含在 單個(gè)外殼或機(jī)架(例如由Hewlett-Packard Development公司,Intel公司, IBM公司等制造的所謂"刀片服務(wù)器")、由Intel、 AMD或其它公司制 造的多處理器(例如對稱式多處理器SMP)或多核處理器(例如雙核處 理器以及芯片多線程處理器)內(nèi),或者被實(shí)現(xiàn)在單個(gè)印刷電路板上或甚至 在單個(gè)芯片或芯片組內(nèi)。類似地,還包含具有多核,多CPU的或其它處 理邏輯的計(jì)算機(jī)或機(jī)器。當(dāng)用非JAVA語言或應(yīng)用代碼環(huán)境來實(shí)現(xiàn)時(shí),通用平臺和/或虛擬機(jī) 和/或機(jī)器和/或運(yùn)行時(shí)系統(tǒng)能夠操作該平臺和/或虛擬機(jī)和/或機(jī)器和/或運(yùn) 行時(shí)系統(tǒng)環(huán)境的語言(例如,可能包含但不局限于源代碼語言、中間代碼 語言、目標(biāo)代碼語言、機(jī)器代碼語言以及任何其它代碼語言中的任何一個(gè) 或多個(gè))的應(yīng)用代碼50,并且不論機(jī)器或處理器制造商以及機(jī)器的內(nèi)部 細(xì)節(jié)如何,利用該平臺和/或虛擬機(jī)和/或機(jī)器和/或運(yùn)行時(shí)系統(tǒng)和/或語言體 系結(jié)構(gòu)。還應(yīng)當(dāng)理解,平臺和/或運(yùn)行時(shí)系統(tǒng)可包含虛擬機(jī)和非虛擬機(jī)軟 件和/或固件體系結(jié)構(gòu),以及硬件和直接硬件編碼的應(yīng)用和實(shí)現(xiàn)。對于更一般的虛擬機(jī)或抽象機(jī)環(huán)境,以及對于可不使用或要求使用類 和/或?qū)ο蟮哪壳昂蛯淼挠?jì)算機(jī)和/或計(jì)算機(jī)器和/或信息設(shè)備或處理系 統(tǒng),本發(fā)明結(jié)構(gòu)、方法和計(jì)算M序以及計(jì)算M序產(chǎn)品仍然適用。不使 用類和/或?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)品。對于不使用類或?qū)ο蟮母拍畹倪@些類型的計(jì)算機(jī)、計(jì)算機(jī)器、信息設(shè) 備以及在其上實(shí)現(xiàn)的虛擬機(jī)或虛擬計(jì)算環(huán)境,可概括為例如包含基4^t據(jù) 類型(例如整型數(shù)據(jù)類型,浮點(diǎn)數(shù)據(jù)類型,長整型數(shù)據(jù)類型,xMt度數(shù)據(jù) 類型,串?dāng)?shù)據(jù)類型,字符數(shù)據(jù)類型和布爾數(shù)據(jù)類型),結(jié)構(gòu)化數(shù)據(jù)類型(例 如數(shù)組和記錄),派生的類型,或者過程性語言或其它語言或環(huán)境的其它代碼或數(shù)據(jù)結(jié)構(gòu),如函數(shù)、指針、組件、模塊、結(jié)構(gòu)、引用和聯(lián)合。當(dāng)這 些結(jié)構(gòu)和過程按需要組合應(yīng)用時(shí),它們維護(hù)計(jì)算環(huán)境,其中在該計(jì)算環(huán)境 下,計(jì)算機(jī)或計(jì)算環(huán)境的存儲(chǔ)器位置、地址范圍、對象、類、資產(chǎn)、資源或任何其它過程或結(jié)構(gòu)方面,在多個(gè)單獨(dú)機(jī)器M1、 ]\12...]\111上以協(xié)調(diào)的、 連貫的和一致的方式按需要被產(chǎn)生、維護(hù)、^Mt和去活或刪除。應(yīng)用代碼50的這種分析或細(xì)查可發(fā)生在加栽應(yīng)用代碼50之前,或者在應(yīng)用代碼50加載過程期間,或者甚至在應(yīng)用代碼50加栽過程之后(或者這些情況的某種組合)。這可被比作改寫(instrumentation )、程序轉(zhuǎn)換、翻譯、或者編譯過程,因?yàn)閼?yīng)用代碼可用附加的指令編寫,和/或由保留含義的程序操縱來修改,和/或可選地從輸入代碼語言翻譯成不同的代碼語言(例如,從源代碼語言或中間代碼語言轉(zhuǎn)換到目標(biāo)代碼語言或機(jī)器代碼語言)。關(guān)于這一點(diǎn),應(yīng)當(dāng)理解,術(shù)語"編譯"通?;虬闯R?guī)涉及代碼或語言上的改變,例如從源代碼到目標(biāo)代碼,或者從一種語言到另一種語言。然而,在這種情況下,術(shù)語"編譯"(及其語法上的等同內(nèi)容)未被如此限制,并且也可以包含或包括相同代碼或語言內(nèi)的修改。例如,將編 譯及其等同內(nèi)容理解成包括普通編譯(例如,但不限于從源代碼到目標(biāo)代碼)和從源代碼到源代碼的編譯,以及從目標(biāo)代碼到目標(biāo)代碼的編譯,以 及其中的任何變更組合。還包含所謂的"中間代碼語言",其為一種"偽 目標(biāo)代碼"。舉例而言,但非限制性地,在一個(gè)實(shí)施例中,對應(yīng)用代碼50的分析 或細(xì)查發(fā)生在應(yīng)用程序代碼的加載期間,應(yīng)用程序代碼的加載是例如由操 作系統(tǒng)從硬盤或其它存儲(chǔ)設(shè)備、介質(zhì)或源中讀取應(yīng)用代碼50,并且將其 拷貝到存儲(chǔ)器中,以及準(zhǔn)備開始執(zhí)行該應(yīng)用程序代碼而實(shí)現(xiàn)的。在另一個(gè) 實(shí)施例中,在JAVA虛擬機(jī)中,分析或細(xì)查可發(fā)生在 java.lang.ClassLoader.loadClass 方法(例如"java.lang.ClassLoader.loadClass()") 的類加載過程期間??商孢x地,或者此外,對應(yīng)用代碼50 (或應(yīng)用代碼的一部分)的分 析或細(xì)查甚至可發(fā)生在應(yīng)用程序代碼加載過程之后,例如在操作系統(tǒng)已將 應(yīng)用代碼加載到存儲(chǔ)器中之后,或者任選地,甚至在應(yīng)用程序代碼的相關(guān) 對應(yīng)部分的執(zhí)行已經(jīng)開始之后,例如在JAVA虛擬機(jī)已經(jīng)通過 "java.lang.Classloader.loadClass()"方法將應(yīng)用代碼加栽到虛擬機(jī)中并且 任選地開始執(zhí)行之后。計(jì)算領(lǐng)域的普通技術(shù)人員會(huì)知道,各種可能的技術(shù)可以用于修改計(jì)算機(jī)代碼,這些技術(shù)包括但不限于改寫、程序轉(zhuǎn)換、翻譯或編譯裝置和/或 方法。一種這樣的技術(shù)是,在無需在先或之后改變應(yīng)用代碼的語言的情況下,對應(yīng)用代碼進(jìn)行修改。另一種這樣的技術(shù)是將原始代碼(例如,JAVA 語言源代碼)轉(zhuǎn)換成中間表示(或中間代碼語言,或偽碼),例如JAVA 字節(jié)代碼。 一旦該轉(zhuǎn)換發(fā)生,就對字節(jié)代碼進(jìn)行修改,然后轉(zhuǎn)換可被逆轉(zhuǎn)。 這提供了被修改JAVA代碼的所期望的結(jié)果。另 一個(gè)可能的技術(shù)是直接從源代碼或者通過上述中間語言或通過一 些其它中間手段,將應(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)和過程按需要組合應(yīng)用時(shí),它們維護(hù)計(jì)算環(huán)境,其中在該 計(jì)算環(huán)境下,計(jì)算機(jī)或計(jì)算環(huán)境的存儲(chǔ)器位置、地址范圍、對象、類、資 產(chǎn)、資源或任啊其它過程或結(jié)構(gòu)方面,在多個(gè)單獨(dú)機(jī)器M1、 ]\12...]\111上 以協(xié)調(diào)的、連貫的和一致的方式按需要被產(chǎn)生、維護(hù)、操作和去活或刪除。因此,術(shù)語"一個(gè)"、"單"和"公共"應(yīng)用代碼或程序包含以下情形, 在該情形中,所有機(jī)器M1、 ]\12...]\111操作或執(zhí)行相同的程序或代碼而不 是不同的(和無關(guān)的)程序,換言之,相同或基;M目同的應(yīng)用代碼的拷貝 或復(fù)4*加載到互操作且相連接的機(jī)器或計(jì)算機(jī)中的每一個(gè)上。在使用分布式軟件的常規(guī)方案中,從一個(gè)機(jī)器的軟件到物理上位于另 一個(gè)機(jī)器上的存儲(chǔ)器的存儲(chǔ)器訪問通常通過互連各機(jī)器的網(wǎng)絡(luò)進(jìn)行。因 而,每個(gè)機(jī)器的本地存儲(chǔ)器都能夠被任何其它機(jī)器所訪問,因此不能說是 獨(dú)立的。然而,因?yàn)閷ξ锢砩衔挥诹硪粋€(gè)計(jì)算機(jī)上的存儲(chǔ)器的讀和/或?qū)?存儲(chǔ)器訪問需要利用互連各計(jì)算機(jī)的慢速網(wǎng)絡(luò),所以在這些配置中,這樣的存儲(chǔ)器訪問可導(dǎo)致存儲(chǔ)器讀/寫處理操作中的實(shí)質(zhì)性延遲,可能大約為106-107個(gè)機(jī)器中央處理單元的周期(假定為同時(shí)期的處理器速度)。最終,該延遲取決于多個(gè)因素,例如通信網(wǎng)絡(luò)的速度、帶寬和/或時(shí)延。這很大 程度上說明了現(xiàn)有技術(shù)方案中多個(gè)互連機(jī)器的低性能。然而,在本方案中,因?yàn)樗写鎯?chǔ)器位置(或所有存儲(chǔ)器位置的某個(gè) 子集)的當(dāng)前值被存儲(chǔ)在產(chǎn)生讀存儲(chǔ)器需求的處理所執(zhí)行的機(jī)器上,所以 對存儲(chǔ)器位置或數(shù)據(jù)的所有讀取都在本地得到滿足。類似地,因?yàn)樗写鎯?chǔ)器位置(或所有存儲(chǔ)器位置的某個(gè)子集)的當(dāng) 前值被存儲(chǔ)在生成寫存儲(chǔ)器需求的處理所執(zhí)行的機(jī)器上,所以存儲(chǔ)器位置 或數(shù)據(jù)的所有寫入都在本地得到滿足。這樣的本地存儲(chǔ)器讀和寫處理操作通常在102-103個(gè)中央處理單元周期內(nèi)滿足。因而實(shí)際上,涉及和/或?qū)懙拇鎯?chǔ)器訪問的等待基本上較少。 此夕卜,每個(gè)機(jī)器的本*儲(chǔ)器不能被任何其它機(jī)器訪問,因此可被稱作是 獨(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,其被提 供來寸吏各種內(nèi)務(wù)處理功能(housekeeping functions)能被執(zhí)行,例如充當(dāng) 鎖服務(wù)器。特別地,所述另一個(gè)機(jī)器X可以是低價(jià)機(jī)器,并且比可能具 有令人滿意的屬性如處理fel度的其它機(jī)器便宜很多。此外, 一個(gè)附加的 低價(jià)機(jī)器(X+l)優(yōu)選地可用于在機(jī)器X出現(xiàn)故障時(shí)提供冗余。當(dāng)提供兩 個(gè)這樣的服務(wù)器機(jī)器X和X+1時(shí),為了簡單,它們優(yōu)選地作為集群結(jié)構(gòu) 的雙機(jī)器來操作。根據(jù)本發(fā)明,必要時(shí),機(jī)器X和X+1能夠作為多計(jì)算 機(jī)系統(tǒng)來操作。然而,這一般會(huì)導(dǎo)致不期望的復(fù)雜度。如果未提供機(jī)器X, 則其功能(例如內(nèi)務(wù)處理功能)由其它機(jī)器中的 一個(gè)、 一些或全部機(jī)器來提 供。上述通過引用并入的說明書公開了 一種系統(tǒng),其中對應(yīng)的存儲(chǔ)器位置可被更新以保證除了傳輸延遲之外,每個(gè)本M儲(chǔ)器的內(nèi)容基^目同。然 而,由于機(jī)器數(shù)量的增加,且應(yīng)用程序的復(fù)雜度也增加,所以在通信網(wǎng)絡(luò)53上需要傳送的數(shù)據(jù)量也增加。為了克服該問題,根據(jù)本發(fā)明的一個(gè)實(shí)施例,可能需要更新的存儲(chǔ)器 位置被分成至少兩個(gè)類別。第一類別由可被多個(gè)機(jī)器中的任意兩個(gè)或更多 機(jī)器訪問,因而應(yīng)當(dāng)被不斷更新的存儲(chǔ)器位置構(gòu)成。第二類別由僅可被存 儲(chǔ)器位置物理上所在的本地機(jī)器訪問的存儲(chǔ)器位置構(gòu)成。對于這些存儲(chǔ)器 位置,首先不期望將該存儲(chǔ)器位置的內(nèi)容復(fù)制到所有其它機(jī)器上,其次不 期望每當(dāng)原來的本地存儲(chǔ)器內(nèi)容發(fā)生改變,就繼續(xù)更新所復(fù)制存儲(chǔ)器位置 的內(nèi)容。屬于這兩個(gè)類別的存儲(chǔ)器位置能夠容易地通過是否存在指向涉及 的存儲(chǔ)器位置的指針來區(qū)分。存在若干機(jī)制或模式,使得能夠進(jìn)行該分類 和數(shù)據(jù)傳送?,F(xiàn)在參照圖3,多個(gè)機(jī)器Ml、 M2.......Mn中的每個(gè)機(jī)器(如果存在任何服務(wù)器機(jī)器X,則不同于任何服務(wù)器機(jī)器X)都具有被示意性示出 的其存儲(chǔ)器位置。對于機(jī)器M1,存在類X1和對象B。對于機(jī)器M2,存 在與機(jī)器Ml的相同的類X2,以及對象D。對于機(jī)器Mn,存在相同的 類Xn,以及兩個(gè)對象A和E。存儲(chǔ)器位置X的內(nèi)容對每個(gè)機(jī)器來說都是 是一樣的,并且每個(gè)機(jī)器均能夠從存儲(chǔ)器位置X中讀取,以及向存儲(chǔ)器 位置X寫入。為此,存儲(chǔ)器位置X的邊界用雙線表示。優(yōu)選地,方便的是由圖2的服務(wù)器機(jī)器X維護(hù)表,該表列出每個(gè)存 儲(chǔ)器位置以及能夠訪問該表中的每個(gè)存儲(chǔ)器位置的機(jī)器。這樣的表被稱作 可達(dá)性表,且在圖4中示出。圖4的表中的第一行涉及存儲(chǔ)器位置A,其 僅能夠被機(jī)器Mn訪問。圖4的表中的第二行涉及存儲(chǔ)器位置B,其僅能 夠被機(jī)器M1訪問。類似地,對象D僅能夠被機(jī)器M2訪問,而對象E 僅能夠被機(jī)器Mn訪問。然而,類X能夠被所有機(jī)器M1、 M2和Mn訪 問。在上述的多機(jī)器環(huán)境中,如果類X的內(nèi)容由于被各機(jī)器中的一個(gè)機(jī) 器寫入而改變,則有必要通過網(wǎng)絡(luò)53將該內(nèi)容變化發(fā)送給所有其它機(jī)器。 然而,因?yàn)閷ο驛、 B、 D和E每個(gè)僅能夠被單個(gè)機(jī)器訪問,所以,由于 這些存儲(chǔ)器位置僅能夠被其本地機(jī)器訪問,在建立或更新這些存儲(chǔ)器位置 的內(nèi)容方面的考慮較少?,F(xiàn)在,如果在由特定機(jī)器(假定機(jī)器Mn)執(zhí)行的處理期間,類Xn 需要引用對象A,則類Xn被稱為指向?qū)ο驛。 i!4圖5中由從類Xn指向?qū)ο驛的箭頭表示。對象A狀態(tài)的變化意味著現(xiàn)在它能夠被所有其它 機(jī)器訪問或引用。因此,在圖5中,它被稱為對象An,由雙線作為邊界, 并且每個(gè)其它機(jī)器中被再生為對象A1、 A2等。此外,箭頭>^每個(gè)對應(yīng)的 類X1、 X2等指向?qū)?yīng)的被引用對象A1、 A2等。由于對象A的狀態(tài)的這 種改變,圖4的可達(dá)性表的第一^L修改為如圖6所示,以指示對象A 現(xiàn)在能夠被機(jī)器Ml、 M2和Mn訪問。圖2的服務(wù)器機(jī)器X使用圖6的 經(jīng)修改的可達(dá)性表,以保證如^t象A的內(nèi)^L一個(gè)機(jī)器修改,則對象A 的內(nèi)容經(jīng)由網(wǎng)絡(luò)3被傳送給所有其它機(jī)器。圖7和8圖解了進(jìn)一步的修改。這里,機(jī)器Mn中的對象A由于機(jī) 器Mn所執(zhí)行的處理的原因而現(xiàn)在指向新對象K。結(jié)果,現(xiàn)在需要將一個(gè) 附加fr^插入圖8中所示的可達(dá)性表中。該新的行示出對象K僅能夠被 機(jī)器Mn訪問。在這些情況下,如果進(jìn)行了先前在上文中關(guān)于圖5描述的修改,則出 現(xiàn)圖9中圖解的情形。因?yàn)轭怷n現(xiàn)在指向?qū)ο驛n,所以4象前面那樣, 在每個(gè)其它機(jī)器中復(fù)制對象A。然而,因?yàn)閷ο驛n本身指向?qū)ο驥,所以有必要在每個(gè)其它機(jī)器中復(fù)制每個(gè)對象K。這產(chǎn)生了對象K1、 K2.......Kn。此外,這些對象中的每個(gè)對象可被所有機(jī)器訪問,因此這些對象在 圖9中的由雙線指示??蛇_(dá)性表的對應(yīng)的變化在圖10中指出,其中指示 現(xiàn)在對象K可被所有機(jī)器訪問。上述詳細(xì)描述涉及存儲(chǔ)器位置,然而,其同樣適用于結(jié)構(gòu)、資產(chǎn)或資 源(其在JAVA中被稱為類或?qū)ο?。這些將已被分配了能夠被所有機(jī)器 全局使用的(全局)名字或標(biāo)記(因?yàn)閼?yīng)當(dāng)理解,不同機(jī)器的本地存儲(chǔ)器 結(jié)構(gòu)可能是不同的)。因而,分配給一個(gè)機(jī)器中具體存儲(chǔ)器位置的本地或 實(shí)際名字可能不同于分配給另 一個(gè)機(jī)器中對應(yīng)的存儲(chǔ)器位置的M名字。 當(dāng)類或?qū)ο蟊蛔畛醭跏蓟瘯r(shí),該全局名字分配優(yōu)選地發(fā)生在加栽時(shí)的編譯 過程期間。這通過由服務(wù)器機(jī)器X維護(hù)的表,可以非常方便地實(shí)現(xiàn)。該 表也可以包含可達(dá)性數(shù)據(jù)。計(jì)算領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可達(dá)性數(shù)據(jù)使結(jié)構(gòu)、資產(chǎn)或資源 (即存儲(chǔ)器位置)能被分成兩個(gè)類別或類。第一類別由能夠被所有機(jī)器訪 問的位置構(gòu)成。關(guān)于這樣的存儲(chǔ)器位置所執(zhí)行的寫動(dòng)作有必要被分布到所 有的機(jī)器,使得所有對應(yīng)的存儲(chǔ)器位置具有相同的內(nèi)容(由于傳輸更新數(shù) 據(jù)造成的延遲除外)。然而,關(guān)于第二類別,因?yàn)檫@些存儲(chǔ)器位置僅可被 本地計(jì)算機(jī)訪問,所以對這些存儲(chǔ)器位置的寫動(dòng)作不需要分布到所有其它機(jī)器,也不需要在其它機(jī)器上存在對應(yīng)的存儲(chǔ)器位置。作為該分類的結(jié)果,相當(dāng)量的數(shù)據(jù)不要求從一個(gè)機(jī)器傳輸?shù)狡渌鼨C(jī)器,因此網(wǎng)絡(luò)53上的流量 大大減少。在前面的描述中,提供了位于服務(wù)器機(jī)器X中并且由其維護(hù)的單個(gè) 可達(dá)性表。然而,也可能無需服務(wù)器機(jī)器X而操作計(jì)算機(jī)系統(tǒng),在這種 情況下,期望每個(gè)機(jī)器操作其自身的可達(dá)性表。圖11-14分別圖解了在對 應(yīng)于圖4、 6、 8和10的情況下針對各機(jī)器的各可達(dá)性表。這樣,在圖11中,機(jī)器M1的表具有類X的行和對象B的行。類似 地,機(jī)器M2的表具有類X的行和對象D的行。然而,機(jī)器Mn的表具 有三行,類X—行,并且對象A和對象E每個(gè)一行。當(dāng)發(fā)生通過比較圖 3和圖5而示出的變化時(shí),因?yàn)轭怷n現(xiàn)在引用對象An,并且因而所有其 它類X1、 X2等現(xiàn)在必須引用對應(yīng)的對象A1、 A2等,所以所有機(jī)器現(xiàn)在 必須在其可達(dá)性表中包含對象A的行。這就是圖12中所圖解的情形。其 它機(jī)器被稱為繼承對象A的表項(xiàng)。機(jī)器Mn通過查詢機(jī)器Mn上類X的表項(xiàng)能夠確定對象A需要在其 它機(jī)器上復(fù)制。在所圖解的情形下,機(jī)器Mn通過比較對象A和類X的 表項(xiàng),關(guān)于復(fù)制做出肯定的確定。如果對象A的表項(xiàng)包含類X的表項(xiàng)中 的所有機(jī)器,則機(jī)器Mn可正確確定出對象A不需要進(jìn)一步在任何其它 機(jī)器上被復(fù)制。此外,沒有表項(xiàng)需要被添加到其它機(jī)器,或者在其它機(jī)器 上被更新??商孢x地,如果對象A的表項(xiàng)不包含類X的表項(xiàng)中的全組機(jī) 器,則機(jī)器Mn更新對象A的表項(xiàng),以包含在類X的表項(xiàng)中列出的機(jī)器 組,并且還指示在對象A的新表項(xiàng)中列出的所有機(jī)器利用機(jī)器Mn上對 象A的新表項(xiàng)中列出的機(jī)器組來針對對象A更新它們的本地表。最后, 對于在繼泉機(jī)器Mn上類X的機(jī)器組之前還沒有出現(xiàn)在機(jī)器Mn上對象A 的表項(xiàng)中的機(jī)器組,機(jī)器Mn指示那些機(jī)器(即機(jī)器Ml和M2)增加對 象A的本地表項(xiàng),并且在存儲(chǔ)器中創(chuàng)建對象A的本地復(fù)本和到類X的相 關(guān)引用。類似地,參考圖7,當(dāng)機(jī)器Mn創(chuàng)建附加的對象K時(shí),由于機(jī)器Ml 和M2沒有對象K的本地復(fù)本,并且如圖7中所示,它們也沒有對象A 和K的表項(xiàng),所以如圖13所示,在機(jī)器Mn的可達(dá)性表中創(chuàng)建對象K的 附加行。如圖9中所示,將對象A的引用分配到類X需要對象A繼承類 X的表項(xiàng)。然而,此外,由于對象A引用對象K,對象K也必須通過繼 承對象A的新更新的表項(xiàng)而間接繼承類X的表項(xiàng)(現(xiàn)在包含類X的表項(xiàng)的繼承的值)。根據(jù)機(jī)器Mn上對象A和K的表項(xiàng)的更新,機(jī)器Mn指示 在對象A和K的表項(xiàng)中列出的所有機(jī)器更新它們的^表,并且還指示 分別在對象A和K的表項(xiàng)中原來未出現(xiàn)的所有機(jī)器創(chuàng)建對象A和K的本 地復(fù)本。所得到的各機(jī)器的表如圖14所示。圖15圖解了另一個(gè)例子。這里,被指定為Al和A2的對象在機(jī)器 M1和M2上被共享,但是未出現(xiàn)在機(jī)器Mn上。在圖16和17中對象A 的表項(xiàng)中指示出這種情況,圖16和17分別示出由服務(wù)器機(jī)器X使用的 單個(gè)可達(dá)性表,或者由各個(gè)機(jī)器使用的多個(gè)可達(dá)性表。如圖18所示,機(jī) 器M2在應(yīng)用程序的處理期間將對象D的引用分配到對象A。結(jié)果,DRT 71/2檢查機(jī)器M2上對象D和A的表項(xiàng)。這個(gè)對表的查詢確定對象D的 表項(xiàng)不包含在對象A的表項(xiàng)中列出的機(jī)器組中的所有機(jī)器。因此,更新 機(jī)器M2上的對象D的表項(xiàng),以包含還未在對象D的表項(xiàng)中出現(xiàn)的對象 A的表項(xiàng)的機(jī)器,其在這種情況下是附加的機(jī)器M1。根據(jù)該操作,機(jī)器 M2指示機(jī)器Ml創(chuàng)建由現(xiàn)在已更新的機(jī)器M2上對象D的表項(xiàng)上列出的 機(jī)器構(gòu)成的、對象D的表項(xiàng),并且創(chuàng)建對象D的本地復(fù)本。所得到的單 個(gè)可達(dá)性表的改變以及多個(gè)可達(dá)性表的改變分別在圖19和20中示出。圖21中圖解了另一個(gè)例子,其中由機(jī)器M1添加分配給類X的、到 對象A的引用。結(jié)果,查詢類X和對象A的表以確定對象A是否在改變 其可達(dá)性狀態(tài)。如果對象A的表項(xiàng)包含類X的表項(xiàng)中的所有機(jī)器,則不 釆取附加動(dòng)作。然而,如果如圖21中的情況那樣,類X在其表項(xiàng)中包含 未包括在對象A的表項(xiàng)中的機(jī)器,則發(fā)生可達(dá)性變化。根據(jù)該變化,機(jī) 器M1更新類X的項(xiàng)。此外,機(jī)器Ml指示所有其它機(jī)器增加和/或更新 它們的對象A的表項(xiàng),以與機(jī)器Ml上的對象A的現(xiàn)在已更新的表項(xiàng)相 同。根據(jù)該操作,還未出現(xiàn)在對象A的表項(xiàng)中的任何機(jī)器被指示添加對 象A的該表項(xiàng),并且在本地存儲(chǔ)器中創(chuàng)建對象A的復(fù)本(在這種情況下 僅在機(jī)器Mn中需要如此)。然而,機(jī)器M1也知道對象A引用對象D, 因此對象D必須繼承對象A的可達(dá)性變化。因此,更新對象D的表項(xiàng), 以包含在對象A的現(xiàn)在已更新的表項(xiàng)中列出的所有機(jī)器。除了以上所述,機(jī)器Ml也指示先前未包含在對象D的表項(xiàng)中的所 有機(jī)器(在這種情況下僅為機(jī)器Mn)用與機(jī)器M1上的現(xiàn)在已更新的表 項(xiàng)值相等的值添加對象D的表項(xiàng),并且在W存儲(chǔ)器中創(chuàng)建對象D的復(fù) 本。此外,機(jī)器M1指示所有其它機(jī)器(在這種情況下僅為機(jī)器M2)用 機(jī)器Ml上所更新的新表項(xiàng)值更新對象D的表項(xiàng)。反映這些變化的單個(gè)可達(dá)性表和多個(gè)可達(dá)性表分別在圖22和23中示出。現(xiàn)在參照圖24,在圖18中圖解的情形由于機(jī)器M1的類X被分配了 到對象D的引用而被修改。與該情^4目關(guān)聯(lián)地,DRT 71/1針對可達(dá)性改 變已發(fā)生的可能性,檢查對象D和類X的可達(dá)性表。因此,比較對象D 和類X的表項(xiàng),并且如果對象D的表項(xiàng)包含類X的表項(xiàng)中列出的所有機(jī) 器,則不需要采取附加動(dòng)作??商孢x地,如^t象D的表項(xiàng)不包含類X 的表項(xiàng)中列出的所有機(jī)器,則已經(jīng)發(fā)生可達(dá)性變化,并且需要相應(yīng)的動(dòng)作。如圖24中所示,機(jī)器M1確定對象D已經(jīng)發(fā)生可達(dá)性變化。因此, 機(jī)器Ml首先更新其對象D的表項(xiàng)以包含類X的表項(xiàng)中的所有機(jī)器。對 于先前不在對象D的表項(xiàng)的機(jī)器組中的每個(gè)新機(jī)器,機(jī)器Ml指示每個(gè) 這樣的機(jī)器添加與機(jī)器M1上對象D的現(xiàn)在已更新的機(jī)器項(xiàng)相等的對象D 的本地表項(xiàng),并且在W存儲(chǔ)器中創(chuàng)建對象D的復(fù)本。對于每個(gè)其它機(jī) 器,機(jī)器M1還指示其它機(jī)器更新其對象D的表項(xiàng)以與機(jī)器M1中的對象 D的表項(xiàng)相等。反映這些變化的單個(gè)可達(dá)性表和多個(gè)可達(dá)性表分別在圖 25和26中示出。前面僅描述了本發(fā)明的一些實(shí)施例,本領(lǐng)域的技術(shù)人員知道,在不偏 離本發(fā)明的范圍的情況下,可以對其進(jìn)行l(wèi)務(wù)改。例如,圖4、 6、 8和10 的表全都示出對應(yīng)于每個(gè)存儲(chǔ)器位置的行。實(shí)際上,對于僅被其本地機(jī)器 訪問的存儲(chǔ)器位置如D和E,在表中根本不必具有行。相反,如果該存 儲(chǔ)器位置變?yōu)榭杀灰粋€(gè)或多個(gè)其它機(jī)器訪問,才創(chuàng)建這樣的行。類似地, 提及JAVA,包含JAVA語言以及JAVA平臺和體系結(jié)構(gòu)。在所有描述的修改實(shí)例中,其中應(yīng)用代碼50在加載之前、在加栽期間、或者甚至在加載之后^a4未修改的應(yīng)用代碼的執(zhí)行開始之前被修改,應(yīng)當(dāng)理解,被修改的應(yīng)用代碼在進(jìn)行的修改之后取代未修改的應(yīng)用代碼而 #>載,以及取代未修改的應(yīng)用代碼而被執(zhí)行??商孢x地,在修^iL生在加栽之后以及在未修改的應(yīng)用代碼的執(zhí)行開 始之后的情況下,應(yīng)當(dāng)理解,未修改的應(yīng)用代碼可以^應(yīng)于進(jìn)行的修改、 所修改的應(yīng)用代碼所M替換;或者,可替選地,隨著對正在執(zhí)行的未修 改應(yīng)用代碼遞增地進(jìn)行修改,未<務(wù)改的應(yīng)用代碼可以被部分或者遞增地替 換。無論使用這樣的修改途徑中的哪種,被進(jìn)行之后的修改都取代未修改 的應(yīng)用代碼而執(zhí)行。針對多個(gè)機(jī)器M1、 M2…Mn中的每一個(gè)機(jī)器上的所有類似等同本地對象(類,資產(chǎn)或資源等)使用全局標(biāo)識符作為"元名字"或"元標(biāo)識" 的形式是有利的。例如,不必跟蹤每個(gè)機(jī)器上多個(gè)類似等同對象的每個(gè)類 似等同本地對象的每個(gè)唯一本地名字或標(biāo)識,取而代之,可以定義或使用對應(yīng)于每個(gè)機(jī)器上的多個(gè)類似等同對象的全局名字(例如"globalname7787"),在此情況下每個(gè)機(jī)器將全局名字與特定的本地名字 或?qū)ο舐?lián)系起來(例如"globalname7787"對應(yīng)于機(jī)器Ml上的對象 "1ocalobject456,, , "globalname7787"對應(yīng)于機(jī)器M2上的對象 "localobject885",以及"globalname7787"對應(yīng)于機(jī)器M3上的對象 "localobjectlll"等等)。根據(jù)本文所提供的詳細(xì)描述,本領(lǐng)域的技術(shù)人員還會(huì)明白,在由每個(gè) DRT 71當(dāng)最初記錄或創(chuàng)建所有對象中的全部或某子集的列表時(shí)創(chuàng)建的 表、列表或其它數(shù)據(jù)結(jié)構(gòu)(例如存儲(chǔ)器位置或字段)中,對于各個(gè)機(jī)器 Ml、 M2...Mn上的每個(gè)這樣的記錄的對象,存在在機(jī)器M1、 M2...Mn中 的每個(gè)機(jī)器上公共或類似的名字或標(biāo)識。然而,在各個(gè)機(jī)器中,因?yàn)槊總€(gè)機(jī)器可能,并且通常會(huì)根據(jù)其自身的內(nèi)部處理來存儲(chǔ)不同存儲(chǔ)器位置處的 存儲(chǔ)器值或內(nèi)容,所以對應(yīng)于指定的名字或標(biāo)識的本i^t象將會(huì)或者可能 會(huì)隨時(shí)間而變化。因而,每個(gè)DRT中的表、列表、或其它數(shù)據(jù)結(jié)構(gòu)一般 會(huì)具有對應(yīng)于單個(gè)存儲(chǔ)器名字或標(biāo)識的不同4^k^儲(chǔ)器位置,但是每個(gè)全 局的"存儲(chǔ)器名字"或標(biāo)識會(huì)具有存儲(chǔ)在不同本地存儲(chǔ)器位置中的相同的 "存儲(chǔ)器值或內(nèi)容"。所以,對于每個(gè)全局名字,會(huì)存在一族對應(yīng)獨(dú)立本 M儲(chǔ)器位置,其中在每個(gè)計(jì)算機(jī)中有一個(gè)族成員。雖然本地存儲(chǔ)器名字 可能不同,但是資產(chǎn)、對象、位置等基本上具有相同內(nèi)容或值。所以族是 連貫的。本文所使用的術(shù)語"表"或"表格"意圖包括任何列表或有組織的、 無論為何種格式、并且在其內(nèi)可以以有序的方式存儲(chǔ)和讀出數(shù)據(jù)的數(shù)據(jù)結(jié) 構(gòu)。根據(jù)本文提供的說明,本領(lǐng)域的普通技術(shù)人員也應(yīng)該明白,應(yīng)用程序 代碼50在加載期間的上述修改可以用多種方法或由各種裝置來實(shí)現(xiàn)。這 些方法或裝置包含但不局限于至少下列五種方法以及這五種的變型或組 合,包含(i) 加載時(shí)的再編譯;(ii) 加載之前的預(yù)編譯過程;(iii) 加載之前的編譯;(iv) "即時(shí)(just-in-time)"編譯,或(v) 加載后的再編譯(但是,例如當(dāng)在分布式環(huán)境中執(zhí)行相關(guān)或?qū)?yīng) 的應(yīng)用代碼之前)。通常,術(shù)語"編譯"意味著代碼或語言方面的改變,例如從源代碼到 目標(biāo)代碼,或從一種語言到另一種語言。顯然,在本說明書中,術(shù)語"編 譯,,(及其語法上的等同內(nèi)容)的使用未被如此限制,并且也可以包含或 包括相同代碼或語言內(nèi)的修改。計(jì)算機(jī)和/或編程技術(shù)領(lǐng)域的技術(shù)人員應(yīng)該知道,當(dāng)附加的代碼或指 令被插入到已有代碼或指令集中以將其修改時(shí),已有代碼或指令集很可能 需要進(jìn)一步修改(例如通過對連續(xù)指令的再編號),使得偏移,分支、屬 性、標(biāo)記(markup)等被正確處理或滿足。類似地,在JAVA語言中,存儲(chǔ)器位置包含例如字段和數(shù)組兩種類型。 以上所述涉及字段,并且數(shù)組類型所需的改變基本上是相同的必要變更。 并且,本發(fā)明同樣適用于與JAVA類似的編程語言(包含過程性的、聲明 性的和面向?qū)ο蟮恼Z言),包括Microsoft.NET平臺和體系結(jié)構(gòu)(Visual Basic、 Visual C/C++,以及C弁),F(xiàn)ORTRAN, C/C++ , COBOL、 BASIC 等。本文所使用的術(shù)語"對象"和"類"源自JAVA環(huán)境,并且意圖包括 源自不同環(huán)境如動(dòng)態(tài)鏈接庫(DLL),目標(biāo)代碼包,功能單元或存儲(chǔ)器位 置的類似術(shù)語。關(guān)于本發(fā)明的實(shí)施例描述了各種裝置,例如包含但不限于鎖裝置、分 布式運(yùn)行時(shí)裝置、修改器或4務(wù)改裝置等。在本發(fā)明的至少一個(gè)實(shí)施例中, 這些各種裝置中的任何一個(gè)或每個(gè)可通過在計(jì)算機(jī)邏輯電路、處理器、 ASIC、邏輯或電子電路硬件、微處理器、微控制器或其它邏輯內(nèi)執(zhí)行的 計(jì)算M序代碼語句或指令(可能包括通過多個(gè)計(jì)算M序代碼語句或指 令)來實(shí)現(xiàn),以修改這樣的邏輯或電路的操作來實(shí)現(xiàn)所述的操作或功能。 在另一個(gè)實(shí)施例中,這些各種裝置中的任何一個(gè)或每個(gè)可以用固件實(shí)現(xiàn), 而在其它實(shí)施例中,其可以用硬件實(shí)現(xiàn)。此外,在本發(fā)明的至少一個(gè)實(shí)施 例中,這些各種裝置中的任何一個(gè)或每個(gè)可由計(jì)算M序軟件、固件和/ 或硬件的組合來實(shí)現(xiàn)。上述方法、過程和/或例程中的任何一個(gè)和每個(gè)可有利地被實(shí)現(xiàn)為存儲(chǔ)在任何有形介質(zhì)上或以電子、信號或數(shù)字形式存在的計(jì)算機(jī)程序和/或 計(jì)算積4呈序產(chǎn)品。這樣的計(jì)算^序或計(jì)算機(jī)程序產(chǎn)品分別包括指令,和 /或被組織成模塊、程序、子程序,或者以任何其它方式組織,以便在處理邏輯如計(jì)算機(jī)、計(jì)算機(jī)器或信息設(shè)備的處理器或微處理器中執(zhí)行;計(jì)算 ;^f呈序或計(jì)算;l^呈序產(chǎn)品修改其在上面執(zhí)行的計(jì)算機(jī)的操作,或者修改與 該計(jì)算M序或計(jì)算機(jī)程序產(chǎn)品所在的或在上面執(zhí)行的計(jì)算機(jī)相耦合、連 接或者以信號通信的計(jì)算機(jī)上的操作。這樣的計(jì)算^序或計(jì)算M序產(chǎn) 品修改計(jì)算機(jī)、計(jì)算機(jī)器和/或信息設(shè)備的操作和體系結(jié)構(gòu)性的結(jié)構(gòu),以 改變計(jì)算機(jī)的技術(shù)操作,并實(shí)現(xiàn)本文所述的技術(shù)效果。因此,本發(fā)明可包含一種計(jì)算M序產(chǎn)品,其包括一組程序指令,其 中該組程序指令存儲(chǔ)在存儲(chǔ)介質(zhì)中,或者以任何形式電子地存在,并且可 用于使多個(gè)計(jì)算機(jī)執(zhí)行如本文(包括任一權(quán)利要求中)所述的方法、過程、 例程等中的任何一個(gè)。此外,本發(fā)明包含(但不局限于)多個(gè)計(jì)算機(jī),或者與經(jīng)由通信網(wǎng)絡(luò) 或其它通信M或路徑互連、并且每個(gè)可用于基本同時(shí)或并行地執(zhí)行被編 寫成僅在單個(gè)計(jì)算機(jī)上或者在各計(jì)算機(jī)中對應(yīng)的不同的計(jì)算機(jī)上操作的 應(yīng)用代碼的相同或不同部分的單個(gè)計(jì)算機(jī)。所述計(jì)算機(jī)被編程成在被加載 計(jì)算M序產(chǎn)品時(shí)或者根據(jù)后續(xù)指令,執(zhí)行說明書中描述的、或任一權(quán)利 要求書中提出的任何方法、過程或例程。類似地,本發(fā)明在其范圍內(nèi)還包 含被布置成與類似的、或基本類似的計(jì)算機(jī)合作以形成多計(jì)算機(jī)系統(tǒng)的單 個(gè)計(jì)算機(jī)。概括地說,提供一種選擇多計(jì)算機(jī)環(huán)境中要基本上同時(shí)更新的獨(dú)立存 儲(chǔ)器位置的方法,在該多計(jì)算機(jī)環(huán)境中,被編寫成僅在單個(gè)計(jì)算機(jī)上執(zhí)行 的至少一個(gè)應(yīng)用程序的不同部分均在所述多個(gè)計(jì)算機(jī)的對應(yīng)的不同計(jì)算 機(jī)上基本上同時(shí)執(zhí)行,所述方法包括步驟(i) 選擇第一組存儲(chǔ)器位置,其中每個(gè)存儲(chǔ)器位置在每個(gè)計(jì)算機(jī)上被 復(fù)制;(ii) 忽略第二組存儲(chǔ)器位置,其中每個(gè)存儲(chǔ)器位置僅出現(xiàn)在所述計(jì)算 機(jī)中的、每個(gè)第二組存儲(chǔ)器位置物理上所在的特定計(jì)算機(jī)中;(iii) 從第二組升級第一組中的存儲(chǔ)器位置開始引用的任何存儲(chǔ)器位置;(iv) 在所述計(jì)算機(jī)中除了當(dāng)在第二組中時(shí)所述升級的第二組位置物理上所在的計(jì)算機(jī)之外的所有其它計(jì)算機(jī)中,復(fù)制所述升級的第二組位置;(V)將復(fù)制的、升級的第二組位置分配給第一組,以及(vi) 利用對各計(jì)算機(jī)中的任何計(jì)算機(jī)的第一組位置所做的任何變化, 基本同時(shí)地更新各計(jì)算機(jī)中的其它計(jì)算機(jī)的第 一組位置。優(yōu)選地,所述方法還包括步驟(vii) 從第二組存儲(chǔ)器位置中將所升級的第二組存儲(chǔ)器位置自身引用 的任何一個(gè)或多個(gè)存儲(chǔ)器位置升級,從而由升級的存儲(chǔ)器位置所引用的存 儲(chǔ)器位置繼承其引用存儲(chǔ)器位置的升級。優(yōu)選地,所述方法還包括步驟(viii) 維護(hù)列出第一組存儲(chǔ)器位置的表。 優(yōu)選地,所述方法還包括步驟(ix) 在另 一個(gè)服務(wù)器計(jì)算機(jī)上針對所有多個(gè)計(jì)算機(jī)維護(hù)一個(gè)所&。 可替選地,所述方法還包括步驟(x) 維護(hù)多個(gè)所述表,所述多個(gè)計(jì)算機(jī)的每個(gè)計(jì)算機(jī)中一個(gè)表。 優(yōu)選地,存儲(chǔ)器位置包含資產(chǎn)、結(jié)構(gòu)或資源。一種多計(jì)算機(jī)系統(tǒng),其中,被編寫成僅在單個(gè)計(jì)算機(jī)上執(zhí)行的至少一 個(gè)應(yīng)用程序的不同部分均基本同時(shí)地在多個(gè)計(jì)算機(jī)中對應(yīng)的不同計(jì)算機(jī) 上執(zhí)行,所述多個(gè)計(jì)算機(jī)中每個(gè)具有獨(dú)立本地存儲(chǔ)器,并且其中所有計(jì)算 ^Lif過通信網(wǎng)絡(luò)互連,其中,存在于本地存儲(chǔ)器中的存儲(chǔ)器位置被分成兩 組第一組存儲(chǔ)器位置,其中每個(gè)被復(fù)制在每個(gè)所述計(jì)算機(jī)上;以及第二 組存儲(chǔ)器位置,其中每個(gè)僅出現(xiàn)在所述計(jì)算機(jī)中的、每個(gè)所述第二組存儲(chǔ) 器位置物理上所在的特定計(jì)算機(jī)中,所述系統(tǒng)包括經(jīng)由所述通信網(wǎng)^fe 對一個(gè)計(jì)算機(jī)中的所述第一組的存儲(chǔ)器位置所做的任何變化更新到所述 其它計(jì)算機(jī)的所有其它的對應(yīng)存儲(chǔ)器位置的存儲(chǔ)器更新裝置;以及升^* 置,將所述第二組中由于所述應(yīng)用程序的執(zhí)行而現(xiàn)在由所述第 一組的存儲(chǔ) 器位置引用的任何存儲(chǔ)器位置從所述第二組升級到所述第一組。優(yōu)選地,所述升級裝置包含可用于將所升級的第二組存儲(chǔ)器位置自身 引用的任一存儲(chǔ)器位置或若干存儲(chǔ)器位置從第二組存儲(chǔ)器位置升級的繼 承裝置。優(yōu)選地,所述升級裝置包含列出第一組存儲(chǔ)器位置的表。優(yōu)選地,所述系統(tǒng)具有存在于又一個(gè)服務(wù)器計(jì)算機(jī)上的、用于所有所 述多個(gè)執(zhí)行應(yīng)用程序的計(jì)算機(jī)的一個(gè)表。可替選地,所述系統(tǒng)具有多個(gè)表,多個(gè)執(zhí)行應(yīng)用程序的計(jì)算機(jī)中的每 個(gè)計(jì)算機(jī)一個(gè)表。優(yōu)選地,存儲(chǔ)器位置包含資產(chǎn)、結(jié)構(gòu)或資源。此外,提供一種計(jì)算機(jī)程序產(chǎn)品,其包括存儲(chǔ)在存儲(chǔ)介質(zhì)中并且可用 于使許多個(gè)計(jì)算機(jī)執(zhí)行上述方法中的任何一種方法的一組程序指令。類似地,提供經(jīng)由通信網(wǎng)互連并且可用于保證執(zhí)行上述方法中的任何 一種方法的多個(gè)計(jì)算機(jī)。此外,還提供單個(gè)計(jì)算機(jī),用于與至少一個(gè)其它計(jì)算機(jī)合作以執(zhí)行上 述方法中的任何一種方法或者構(gòu)成上述計(jì)算機(jī)系統(tǒng)。本文所使用的術(shù)語"包括"(及其語法變型)用于表示"具有"或"包 含"的包括性含義,而不是用于表示"僅由......組成"的排它性含義。
權(quán)利要求
1.一種選擇多計(jì)算機(jī)環(huán)境中要基本上同時(shí)更新的獨(dú)立存儲(chǔ)器位置的方法,在該多計(jì)算機(jī)環(huán)境中,被編寫成僅在單個(gè)計(jì)算機(jī)上執(zhí)行的至少一個(gè)應(yīng)用程序的不同部分均在所述多個(gè)計(jì)算機(jī)的對應(yīng)的不同計(jì)算機(jī)上基本上同時(shí)執(zhí)行,所述方法包括步驟(i)選擇第一組存儲(chǔ)器位置,其中每個(gè)存儲(chǔ)器位置在每個(gè)所述計(jì)算機(jī)上被復(fù)制;(ii)忽略第二組存儲(chǔ)器位置,其中每個(gè)存儲(chǔ)器位置僅出現(xiàn)在所述計(jì)算機(jī)中的、每個(gè)所述第二組存儲(chǔ)器位置物理上所在的特定計(jì)算機(jī)中;(iii)從所述第二組升級所述第一組中的存儲(chǔ)器位置開始引用的任何存儲(chǔ)器位置;(iv)在所述計(jì)算機(jī)中除了當(dāng)在所述第二組中時(shí)所述升級的第二組位置物理上所在的計(jì)算機(jī)之外的所有其它計(jì)算機(jī)中,復(fù)制所述升級的第二組位置;(v)將所述復(fù)制、升級的第二組位置分配給所述第一組,以及(vi)利用對所述計(jì)算機(jī)中的任何計(jì)算機(jī)的第一組位置所做的任何變化,基本同時(shí)地更新所述計(jì)算機(jī)中的其它計(jì)算機(jī)的所述第一組位置。
2. 如權(quán)利要求l所述的方法,還包括步驟(vii) 從所述第二組存儲(chǔ)器位置中將所升級的第二組存儲(chǔ)器位置自身 引用的任何一個(gè)或多個(gè)存儲(chǔ)器位置升級,從而由升級的存儲(chǔ)器位置所引用 的存儲(chǔ)器位置繼承其引用存儲(chǔ)器位置的升級。
3. 如權(quán)利要求1或2所述的方法,還包括步驟(viii) 維護(hù)列出所述第一組存儲(chǔ)器位置的表。
4. 如權(quán)利要求3所述的方法,還包括步驟(ix) 在另 一個(gè)服務(wù)器計(jì)算機(jī)上針對所有所述多個(gè)計(jì)算機(jī)維護(hù)一個(gè)所 汰
5. 如權(quán)利要求3所述的方法,還包括步驟(x) 維護(hù)多個(gè)所a,所述多個(gè)計(jì)算機(jī)的每個(gè)計(jì)算機(jī)中一個(gè)表。
6. 如權(quán)利要求1-5中的任何一個(gè)所述的方法,其中所述存儲(chǔ)器位置包含資產(chǎn)、結(jié)構(gòu)或資源。
7. —種多計(jì)算機(jī)系統(tǒng),其中,被編寫成僅在單個(gè)計(jì)算機(jī)上執(zhí)行的至 少一個(gè)應(yīng)用程序的不同部分均基本同時(shí)地在多個(gè)計(jì)算機(jī)中對應(yīng)的不同計(jì) 算機(jī)上執(zhí)行,所述多個(gè)計(jì)算機(jī)中每個(gè)具有獨(dú)立本地存儲(chǔ)器,并且其中所有 計(jì)算機(jī)通過通信網(wǎng)絡(luò)互連,其中,存在于所述本地存儲(chǔ)器中的存儲(chǔ)器位置 被分成兩組第一組存儲(chǔ)器位置,其中每個(gè)被復(fù)制在每個(gè)所述計(jì)算機(jī)上; 以及第二組存儲(chǔ)器位置,其中每個(gè)僅出現(xiàn)在所述計(jì)算機(jī)中的、每個(gè)所述第 二組存儲(chǔ)器位置物理上所在的特定計(jì)算機(jī)中,所述系統(tǒng)包括經(jīng)由所述通 信網(wǎng)^&對一個(gè)計(jì)算機(jī)中的所述第一組的存儲(chǔ)器位置所做的任何變化更 新到所述其它計(jì)算機(jī)的所有其它的對應(yīng)存儲(chǔ)器位置的存儲(chǔ)器更新裝置;以 及升級裝置,將所述第二組中由于所述應(yīng)用程序的執(zhí)行而現(xiàn)在由所述第一 組的存儲(chǔ)器位置引用的任何存儲(chǔ)器位置從所述第二組升級到所述第一組。
8. 如權(quán)利要求7所述的系統(tǒng),其中所述升級裝置包含可用于將所升 級的第二組存儲(chǔ)器位置自身引用的任一存儲(chǔ)器位置或若干存儲(chǔ)器位置從 第二組存儲(chǔ)器位置升級的繼承裝置。
9. 如權(quán)利要求7或8所述的系統(tǒng),其中所述升級裝置包含第一組存 儲(chǔ)器位置的表。
10. 如權(quán)利要求9所述的系統(tǒng),具有存在于又一個(gè)服務(wù)器計(jì)算機(jī)上的、 用于所有所述多個(gè)執(zhí)行應(yīng)用程序的計(jì)算機(jī)的一個(gè)表。
11. 如權(quán)利要求9所述的系統(tǒng),具有多個(gè)表,多個(gè)執(zhí)行應(yīng)用程序的計(jì) 算機(jī)中的每個(gè)計(jì)算機(jī)一個(gè)表。
12. 如權(quán)利要求7 - 11中的任何一個(gè)所述的系統(tǒng),其中所述存儲(chǔ)器位 置包含資產(chǎn)、結(jié)構(gòu)或資源。
13. —種計(jì)算M序產(chǎn)品,其包括存儲(chǔ)在存儲(chǔ)介質(zhì)中并且可用于使許 多個(gè)計(jì)算機(jī)執(zhí)行如權(quán)利要求1-6中的任何一個(gè)所述的方法的一組程序指 令。
14. 經(jīng)由通信網(wǎng)互連并且可用于保證執(zhí)行如權(quán)利要求1-6中的任何一 個(gè)所述的方法的多個(gè)計(jì)算機(jī)。
15. —種單個(gè)計(jì)算機(jī),用于與至少一個(gè)其它計(jì)算機(jī)合作,以便執(zhí)行如 權(quán)利要求1-6中的任何一個(gè)所述的方法,或者構(gòu)成如權(quán)利要求7-12和權(quán) 利要求14中的任何一個(gè)所述的計(jì)算機(jī)系統(tǒng)。
全文摘要
公開一種在多計(jì)算機(jī)環(huán)境中僅更新一些存儲(chǔ)器位置的方法,其中在所述多計(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ī)訪問。第二組存儲(chǔ)器位置(B、E)每個(gè)均僅可被具有包含所述存儲(chǔ)器位置的本地存儲(chǔ)器的計(jì)算機(jī)訪問。僅在第一組中的存儲(chǔ)器位置的值的變化被發(fā)送到所有其它計(jì)算機(jī)。公開一種在應(yīng)用程序執(zhí)行表示所述第二組中的存儲(chǔ)器位置被第一組中的存儲(chǔ)器位置引用(即第一組位置現(xiàn)在指向第二組位置)的情況下,將第二組中的存儲(chǔ)器位置升級到第一組中的升級機(jī)制。
文檔編號G06F9/52GK101283343SQ200680037477
公開日2008年10月8日 申請日期2006年10月5日 優(yōu)先權(quán)日2005年10月10日
發(fā)明者約翰·馬修·霍爾特 申請人:瓦拉泰克有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
五指山市| 丁青县| 郧西县| 昌图县| 当雄县| 丰都县| 泽州县| 遵化市| 体育| 晴隆县| 平塘县| 南丹县| 定边县| 静宁县| 汾阳市| 鹤峰县| 措美县| 莱阳市| 德兴市| 米林县| 长宁县| 棋牌| 武义县| 卢龙县| 靖州| 茂名市| 冕宁县| 瓦房店市| 枣庄市| 汝州市| 驻马店市| 石河子市| 两当县| 永清县| 都昌县| 海林市| 富蕴县| 荥经县| 额济纳旗| 沙坪坝区| 武义县|