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

開銷減少的多機器體系結(jié)構(gòu)的制作方法

文檔序號:6569241閱讀:193來源:國知局
專利名稱:開銷減少的多機器體系結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算,尤其涉及經(jīng)由通信網(wǎng)絡(luò)互連的多個計算機的同時操作。
背景技術(shù)
以本申請人的名義公布的、公布號為WO 2005/103926的國際專利申 請PCT/AU2005/000580 (代理所巻號為5027F-WO )(公布號為 2005-0262313的美國專利申請11/111,946與其對應(yīng))公開了被編寫成僅在 單計算機上執(zhí)行的應(yīng)用程序的不同部分如何能夠在多個計算機的對應(yīng)的 不同計算機上基本同時地操作。該同時操作到本申請的優(yōu)先權(quán)日為止尚未 在商業(yè)上4吏用。題目為"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 ),以;5L^本申請" 義下的、截至本申請的優(yōu)先權(quán)日未公布的國際專利申請 PCT/AU2006/000532 (代理所巻號為5027F-D2-WO)還揭示了更多的細 節(jié)。上述每一個在先申請的說明書內(nèi)容通過交叉引用全部結(jié)合在本說明書 中。
筒要地說,上述專利說明書公開了被編寫成僅在單計算機上操作的至 少一個應(yīng)用程序能夠在每個均具有獨立的本地存儲器的若干計算機上被 同時操作。該程序的操作所需的存儲器位置在每個計算機的獨立的本* 儲器中被復制。每次在應(yīng)用程序?qū)⑿聰?shù)據(jù)寫到任一復制的存儲器位置時, 傳輸該新數(shù)據(jù),并且將其存儲在每個計算機的每個對應(yīng)的存儲器位置。因 此,不考慮可能的傳輸延遲,每個計算機的本地存儲器與每個其它計算機 的本地存儲器的內(nèi)容基4^目同,并且被更新以保持如此。由于所有應(yīng)用程 序通常讀取數(shù)據(jù)比它們產(chǎn)生待寫的新數(shù)據(jù)要頻繁得多,所以上述方案使得 能夠在計算速度方面實現(xiàn)較大的優(yōu)勢。尤其是,該策略使得通過商用通信 網(wǎng)絡(luò)互連的兩個或更多商用計算機能夠同時操作,從而在被編寫成僅在單計算機上執(zhí)行的應(yīng)用程序下運行。
在許多情況下,上述方案能4^人滿意地工作。這尤其適用于程序員意 識到可能有更新延遲并因而可調(diào)整程序的流程以將其解決的情況。然而, 存在使用陳舊的內(nèi)容或值而不是最新的內(nèi)容而可能引起問題的情況。
當對任一存儲器位置做出任何改變時更新每個本地存儲器的需要產(chǎn) 生針對使多個計算機互連的通信網(wǎng)絡(luò)的較大開銷負擔。意圖在于減少本發(fā) 明所針對的上述開銷。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,公開了多計算機環(huán)境中的進一步改進,在該 多計算機環(huán)境中,被編寫成僅在單個計算機上執(zhí)行的應(yīng)用程序的不同部分 在多個計算機中對應(yīng)的計算機上基本上同時地執(zhí)行,所述多個計算機每個 均具有獨立的本地存儲器,并且每個均經(jīng)由通信網(wǎng)絡(luò)互連,并且在該多計 算機環(huán)境中, 一些存儲器位置能夠被第一批多個所述計算機引用,并且在 該多計算機環(huán)境中,其它的存儲器位置能夠被第二批不同的多個所述計算 機引用,并且在每次所述存儲器位置中的任何一個的內(nèi)^#:用新內(nèi)容寫入 或覆寫,或者以其它方式操縱之后,所述計算機中任何對應(yīng)的存儲器位置 經(jīng)由所述通信網(wǎng)絡(luò)在適當時候被更新或操縱,進一步改進包括步驟
(i) 維護有關(guān)哪些存儲器位置存在于哪些計算機上的記錄,以及
(ii) 僅在適當時候更新或操縱在所述維護的記錄中與最初更新或操縱 的存儲器位置對應(yīng)的那些存儲器位置,從而減少通過所述通信網(wǎng)絡(luò)傳送的 更新或操縱指令的量。
根據(jù)本發(fā)明的第二方面,公開一種計算M序產(chǎn)品,其包括存儲在存 儲介質(zhì)中并且用于使多個計算機執(zhí)行以上定義的方法的程序指令集。
根據(jù)本發(fā)明的第三方面,公開了經(jīng)由通信網(wǎng)絡(luò)互連并且用于保證上述 方法的執(zhí)行的多個計算機。
根據(jù)本發(fā)明的第四方面,公開了一種計算機系統(tǒng),包括每個均具有獨 立的本地存儲器并且每個均經(jīng)由通信網(wǎng)絡(luò)互連的多個計算機,其中,被編 寫成僅在單個計算機上執(zhí)行的應(yīng)用程序的不同部分在所述多個計算機中 對應(yīng)的計算機上基本上同時地執(zhí)行, 一些存儲器位置能被第一批多個所述 計算機引用,而其它存儲器位置能被第二批且不同的多個所述計算機引用,所述系統(tǒng)還包括與每個所述計算機關(guān)聯(lián)的更新裝置,以在每次每個所 述存儲器位置的內(nèi)M用新內(nèi)容寫入或覆寫,或者以其它方式操縱之后, 經(jīng)由所述通信網(wǎng)絡(luò)在適當時候更新每個所述存儲器位置,其中所述更新裝 置包含有關(guān)哪些存儲器位置出現(xiàn)在哪些計算機上的記錄裝置,并且所述更 新裝置僅在適當時候更新或操縱所述記錄裝置中與初始更新或操縱的存 儲器位置對應(yīng)的那些存儲器位置,從而減少經(jīng)過所述通信網(wǎng)絡(luò)的更新或操 縱指令的量。
根據(jù)本發(fā)明的第五方面,公開一種適于與至少一個其它計算機*以 執(zhí)行上述方法或構(gòu)成上述計算機系統(tǒng)的單計算機。


圖1A示意性示出了被布置成運行JAVA代碼從而構(gòu)成單JAVA虛擬 機的現(xiàn)有技術(shù)計算機;
圖1B是類似于圖1A的圖,但是圖解了代碼的初始加栽;
圖1C圖解了每個均為JAVA虛擬機的多個計算機形成多計算機系統(tǒng) 的互連;
圖2示意性圖解了 "n"個運行應(yīng)用的計算機,至少一個附加的服務(wù) 器機器X作為服務(wù)器與這些計算M接;
圖3是四個計算機的存儲器位置的示意圖,以及
圖4、圖5和圖6每個均為有關(guān)哪些存儲器對象出現(xiàn)在哪些計算機中 的不同形式的表或列表。
具體實施例方式
各實施例將參照JAVA語言進行描述,然而,本領(lǐng)域技術(shù)人員應(yīng)當理 解,本發(fā)明不局限于該語言,特別地,可用于其它語言(包含過程性語言、 聲明性語言和面向?qū)ο笳Z言),包含MICROSOFT.NET平臺和體系結(jié)構(gòu) (Visual Basic、 Visual C和Visual C++,以及Visual C#)、 FORTRAN、 C、 C++、 COBOL BASIC等等。
現(xiàn)有技術(shù)中已知的是提供通過建立圖1A中所示的虛擬機來利用特定 語言的應(yīng)用程序的單計算機或機器(由各制造商中的任何一個所生產(chǎn),并且具有以各種不同語言中的任何一種語言操作的操作系統(tǒng)(或者等同控制 軟件或其它機制))。
圖1A的代碼和數(shù)據(jù)以及虛擬機配置或方案采取用JAVA語言編寫并 且在JAVA虛擬機61內(nèi)執(zhí)行的應(yīng)用代碼50的形式。因而在應(yīng)用的期望語 言為JAVA語言的情況下,使用JAVA虛擬機,其中JAVA虛擬機能夠運 行JAVA形式的代碼,而不論機器制造商和計算機或機器的內(nèi)部細節(jié)如 何。有關(guān)更多細節(jié),參見由美國Sun Microsystems公司的T. Lindholm和 F.Yellin所著的"The JAVA Virtual Machine Specification"第二版,其通 過引用結(jié)合于此。
根據(jù)本發(fā)明的實施例,通過提供如圖1B所示被方便地稱為"分布式 運行時"或"分布式運行時系統(tǒng)"DRT 71的附加設(shè)備,改進圖IA的常 規(guī)技術(shù)方案。
圖IB和1C中,通過由箭頭75或75A或75B所示的加栽過程,應(yīng) 用代碼50被加載到與分布式運行時系統(tǒng)71合作的JAVA虛擬機Ml、
M2........ Mn上。如此處所使用的,術(shù)語"分布式運行時"和"分布式
運行時系統(tǒng)"實質(zhì)上是同義的,并且通過闡述而不是限制,通常被理解成 包含支持在特定平臺上運行的、用特定語言編寫的軟件的庫代碼和進程。 此外,分布式運行時系統(tǒng)還可以包含支持在特定分布式計算環(huán)境內(nèi)運行 的、用特定語言編寫的軟件的庫代碼和進程。運行時系統(tǒng)(無論是否是分 布式運行時系統(tǒng))通常處理程序與操作系統(tǒng)之間的接口的細節(jié),例如系統(tǒng) 調(diào)用、程序啟動和終止、以及存儲器管理。為說明背景,常規(guī)的分布式計 算環(huán)境(DCE)(其不提供本發(fā)明優(yōu)選實施例中所使用的本發(fā)明的分布式 運行時或分布式運行時系統(tǒng)71的能力)可以從開放軟件基金會得到。該 分布式計算環(huán)境(DCE )執(zhí)行一種針對在機器上運行的軟件的計算機到計 算機的通信形式,但是除其許多限制之外,其不能實現(xiàn)所期望的修改或通
信操作。除其功能與操作之夕卜,優(yōu)選的DRT 71協(xié)調(diào)多個機器Ml 、 M2........
Mn之間的特定通信。此外,優(yōu)選的分布式運行時71在JAVA應(yīng)用50的 由箭頭75A或75B所示的在圖1C的每個JAVA虛擬機72或機器JVM#1 、
JVM#2........ JVM紐上的加載過程期間開始運行。根據(jù)此處所提供的描
述應(yīng)當理解,雖然許多示例和描述被提供成與JAVA語言和JAVA虛擬機 相關(guān),以使得讀者能了解具體例子的益處,但是本發(fā)明不局限于JAVA語 言或JAVA虛擬機,或者任何其他語言、虛擬機、機器或者操作環(huán)境。
圖1C以改進形式示出了每個如圖IB所示的JAVA虛擬機的方案。顯然,相同的應(yīng)用代碼50被加載到每個機器Ml、 M2...Mn上。然而, 各機器M1、 M2…Mn之間的通信由箭頭83表示,并且雖然通過機器硬 件物理上傳送,但是有利地被每個機器內(nèi)的各自011171/1...71/11所控制。 因而,實際上這可以>^念上理解成經(jīng)由網(wǎng)絡(luò)或其它通信銜各53而相互 通信的DRT 71/1, ...71/n,而不是自身或彼此直接通信的機器Ml、 M2...Mn。所設(shè)想和包含的是機器M1、 M2…Mn或DRT 71/1、 71/2...71/n 之間的這種直接通信,或者這樣的通信的組合。優(yōu)選的DRT71提供獨立 于傳送、協(xié)議和鏈接的通信。
一個公共應(yīng)用程序或應(yīng)用代碼50,及其可執(zhí)行版本(可能具有1務(wù)改) 在多個計算機或機器Ml、 M2...Mn上同時或并發(fā)執(zhí)行。應(yīng)用程序50被 編寫為在單機器或計算機上執(zhí)行(或者在模擬單計算^作的上述專利申
請的多計算機系統(tǒng)上操作)。實質(zhì)上,改進的結(jié)構(gòu)是在每個單獨機器上復 制相同的存儲器結(jié)構(gòu)和內(nèi)容。
術(shù)語"公共應(yīng)用程序"應(yīng)被理解為是指被編寫成在單機器上操作的, 且在多個計算機或機器M1、 M2…Mn中的每一個上、或者可選地在所述 多個計算機或機器Ml、 M2…Mn的某個子集的每一個上全部或部分地加 載和/或執(zhí)行的應(yīng)用程序或應(yīng)用程序代碼。換句話說,具有以應(yīng)用程序代 碼50表示的公共應(yīng)用程序。其為單個拷貝,或每個均被單獨修改以生成 應(yīng)用程序或程序代碼的修改拷貝或版本的多個相同拷貝。于是每個拷貝或 實例被準備以在對應(yīng)的機器上執(zhí)行。在它們被修改之后,從它們執(zhí)行類似 的^作并且彼此一致且連貫J^行的意義上來i兌,它們是爿〉共的。應(yīng)當理 解,實現(xiàn)本發(fā)明的實施例的多個計算機、機器、信息設(shè)備等可以任選地連 接到或耦合到未實現(xiàn)本發(fā)明的實施例的其它計算機、機器、信息設(shè)備等。
在每個機器上運行相同的應(yīng)用程序50 (例如并行合并排序、計算流 體動力學應(yīng)用或數(shù)據(jù)挖掘應(yīng)用),但是該應(yīng)用程序的可執(zhí)行代碼根據(jù)需要 在每個機器修改,使得每個機器上的每個執(zhí)行實例(拷貝或復本)使其在
該特定機器上的本地操作與其它機器上的相應(yīng)實例(拷貝或復本)的操作 協(xié)調(diào),使得它們以一致、連貫和協(xié)調(diào)的方式一起工作,并且看起來^(象應(yīng)用 的一個全局實例(即"元應(yīng)用")。
相同或基;M目同的應(yīng)用代碼的各拷貝或復本,每個被加載到互操作且 相連接的機器或計算機中對應(yīng)的一個上。由于每個機器或計算機的特性可 能不同,所以應(yīng)用代碼50可在加載之前被修改、在加載過程期間被^修改、 或者在加載過程之后被修改(雖然有一些缺點),以在每個機器上提供應(yīng)用代碼的定制或修改。不同機器上的程序或應(yīng)用代碼之間的一些不同點可以 是允許的,只要能夠保持本文所述的其它對互操作性、 一致性和連貫性的
要求。在下文將會明白,機器M1、 M2...Mn中的每個機器,因而全部機 器M1、 ]\12...]\111具有相同或基^目同的應(yīng)用代碼50,其通常具有可以是 特定于機器的修改。
在每個機器M1、 M2…Mn上的應(yīng)用代碼50 (或其相關(guān)部分)的加載 之前、加載期間、或執(zhí)行前的任何時候,每個應(yīng)用代碼50由對應(yīng)的修改 器(modifier) 51根據(jù)相同的規(guī)則(或基;M目同的規(guī)則,因為在每個修改 器51/1、 51/2...51/n內(nèi)允許小的優(yōu)化改變)來修改。
機器M1、 M2...Mn中的每個機器與相同的(或基4^目同或類似的) 修改器51 (在某些實施例中被實現(xiàn)為分布式運行時或DRT71,而在其它 實施例中被實現(xiàn)為應(yīng)用代碼和數(shù)據(jù)50的附件,并且也能夠在JAVA虛擬 機自身內(nèi)實現(xiàn))一起操作。因而,所有的機器M1、 1\12...]\111都具有針對 所需每個修改的相同的(或基4^目同或類似的)修改器51。例如,對于 存儲器管理和復制、初始化、結(jié)束、和/或同步可能需要不同的修改(盡 管可能不是所有實施例都需要所有這些修改類型)。
存在修改器51和分布式運行時71的可替選實現(xiàn)。例如,如圖1C中 虛線所示,修改器51可以被實現(xiàn)為分布式運行時71的部件,或分布式運 行時71內(nèi)部的部件,因此DRT71可實現(xiàn)修改器51的功能和操作??商?選地,修改器51的功能和操作可以在用于實現(xiàn)DRT 71的結(jié)構(gòu)、軟件、 固件或其它裝置之外實現(xiàn),例如在代碼和數(shù)據(jù)50內(nèi),或者在JAVA虛擬 機自身內(nèi)。在一個實施例中,修改器51和DRT71兩者都以提供DRT和 修改器的功能的單段計算機程序代碼來實現(xiàn)或編寫。在這種情況下,修改 器功能和結(jié)構(gòu)實際上被包含到DRT中。與其實現(xiàn)無關(guān)地,修改器功能和 結(jié)構(gòu)負責修改應(yīng)用代碼程序的可執(zhí)行代碼,而分布式運行時功能和結(jié)構(gòu)負 責實現(xiàn)各計算機或機器兩者和兩者以上之間的通信。在一個實施例中,通 信功能通過每個機器上的DRT的計算機程序代碼內(nèi)的中間協(xié)議層來實 現(xiàn)。例如,DRT可以用JAVA語言來實現(xiàn)通信棧,并4吏用傳輸控制協(xié)i5C/ 網(wǎng)際協(xié)議(TCP/IP)來提供機器之間的通信或?qū)υ?。這些功能或操作可 以用各種方法來實現(xiàn),并JMH據(jù)本文提供的描述應(yīng)當理解,這些功能或操 作如何確切地被實現(xiàn),或者在結(jié)構(gòu)和/或過程性元素之間或在計算機程序 代碼或數(shù)據(jù)結(jié)構(gòu)之間如何被確切劃分對本發(fā)明來說并不是重要或至關(guān)重 要的。然而,在圖1C所示的方案中,提供了多個單獨計算機或機器M1、 M2…Mn,其中每個都經(jīng)由通信網(wǎng)絡(luò)53或其它通信鏈路互連。每個單獨 計算機或機器都設(shè)置有對應(yīng)的修改器51。每個單獨計算to設(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)及其擴展和改進上的網(wǎng)絡(luò)連接。優(yōu)選地,計算機設(shè)置有與通信網(wǎng)絡(luò)53 連接的一個或多個,iH^通信端口 (例如CISCO Power Connect 5224交換 機)。
由于上述方案,如果機器Ml、 M2........ Mn中的每個機器都具有
例如10MB的內(nèi)部或本地存儲器容量,則應(yīng)用代碼50整體上可用的總存 儲器空間并不是如所期望的那樣為10MB乘以機器數(shù)量。也不是所有n 個機器的內(nèi)部存儲器容量的加性組合。相反,其為IOMB,或者大于10MB 但是小于nxlOMB的某個數(shù)。在各機器的內(nèi)部存儲器容量不同(這是允
許)的情況下,于是在一個機器中的內(nèi)部存儲器小于至少一個其它機器的 內(nèi)部存儲器容量的情況下,當這樣的存儲器(或其一部分)被作為"公共"
存儲器(即機器Ml... Mn的每個機器上的類似等同存儲器),或相反被用 于執(zhí)行4^共應(yīng)用代碼時,任何一個機器的最小存儲器的大小可用作各機器 的最大存儲器容量。
然而,盡管對待每個機器的內(nèi)部存儲器的方式可能最初看起來是性能 的可能約束,但是,在下文中將會理解這如何導致操作和性能的提高。當 然,每個機器M1、 M2…Mn都有專用的(即非公共的)內(nèi)部存儲器容量。 各機器M1, M2, ...Mn的專用內(nèi)部存儲器容量通常近似相等,但是也不 一定如此。例如,當多計算機系統(tǒng)是利用由不同實體所擁有或^Mt的現(xiàn)有 計算機、機器或信息設(shè)備來實現(xiàn)或組成時,內(nèi)部存儲器容量可能是相當不 同的。另一方面,如果正在實現(xiàn)一個新的多計算機系統(tǒng),則每個機器或計 算機優(yōu)選為選擇具有相同的內(nèi)部存儲器容量,但不一定如此。
應(yīng)當理解,每個機器的獨立本地存儲器僅僅代表該機器總存儲器中被 分配給應(yīng)用程序的在該機器上運行的部分的那部分存儲器。因而,其它存 儲器將被該機器的操作系統(tǒng)以及與應(yīng)用程序50無關(guān)的其它計算任務(wù)所占 用。
原型多計算機系統(tǒng)的非商業(yè)操作表明,并不是該系統(tǒng)中每個機器或計 算^fp使用或需要引用(例如,具有每個可能的存儲器位置的本地復本)每個可能的存儲器位置。結(jié)果,只J^個機器的^存儲器對于該機器的 操作是足夠的,則無需每個機器的本地存儲器與每個其它機器相同,就可 以操作多計算機系統(tǒng)。也就是說,假如特定機器不需要引用(例如具有一 些特定存儲器位置的本地復本) 一些特定存儲器位置,則那些特定存儲器 位置在該特定機器中未被復制是無關(guān)緊要的。
選擇每個機器中內(nèi)部存儲器的量以在每個機器中以及所連接或耦合
的多個機器、計算機或信息設(shè)備M1、 M2........ Mn的星座或網(wǎng)絡(luò)上達
到期望性能等級也是有利的。在描述了這些內(nèi)部和公共存儲器考慮因素 后,根據(jù)本文提供的描述應(yīng)當理解,機器之間可以是公共的存儲器的量并 不是限制。
在一些實施例中,多個單獨計算機或機器的一些或全部可以被包含在 單個外殼或機架(例如由Hewlett-Packard Development公司,Intel公司, IBM公司等制造的所謂"刀片服務(wù)器")、由Intel、 AMD或其它公司制 造的多處理器(例如對稱式多處理器SMP)或多核處理器(例如雙核處 理器以及芯片多線程處理器)內(nèi),或者被實現(xiàn)在單個印刷電路板上或甚至 在單個芯片或芯片組內(nèi)。類似地,還包含具有多核,多CPU的或其它處 理邏輯的計算機或機器。
當用非JAVA語言或應(yīng)用代碼環(huán)境來實現(xiàn)時,通用平臺和/或虛擬機 和/或機器和/或運行時系統(tǒng)能夠操作該平臺和/或虛擬機和/或機器和/或運 行時系統(tǒng)環(huán)境的語言(例如,可能包含但不局限于源代碼語言、中間代碼 語言、目標代碼語言、機器代碼語言以及任何其它代碼語言中的任何一個 或多個)的應(yīng)用代碼50,并且不論機器或處理器制造商以及機器的內(nèi)部 細節(jié)如何,利用該平臺和/或虛擬機和/或機器和/或運行時系統(tǒng)和/或語言體 系結(jié)構(gòu)。還應(yīng)當理解,平臺和/或運行時系統(tǒng)可包含虛擬機和非虛擬機軟 件和/或固件體系結(jié)構(gòu),以及硬件和直接硬件編碼的應(yīng)用和實現(xiàn)。
對于更一般的虛擬機或抽,環(huán)境,以及對于可不使用或要求使用類 和/或?qū)ο蟮哪壳昂蛯淼挠嬎銠C和/或計算機器和/或信息設(shè)備或處理系 統(tǒng),本發(fā)明結(jié)構(gòu)、方法和計算積4呈序以及計算;l^呈序產(chǎn)品仍然適用。不使 用類和/或?qū)ο蟮挠嬎銠C和/或計算機器的例子例如包含由Intel 7>司等制 造的x86計算機體系結(jié)構(gòu),由Sun Microsystems公司等制造的SPARC計 算機體系結(jié)構(gòu),由IBM公司等制造的Power PC計算機體系結(jié)構(gòu),以及 由Apple Computer公司等制造的個人計算機產(chǎn)品。
對于不使用類或?qū)ο蟮母拍畹倪@些類型的計算機、計算機器、信息設(shè)備以及在其上實現(xiàn)的虛擬機或虛擬計算環(huán)境,可概括為例如包含基^據(jù) 類型(例如整型數(shù)據(jù)類型,浮點數(shù)據(jù)類型,長整型數(shù)據(jù)類型, 一度數(shù)據(jù) 類型,串數(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)合。當這 些結(jié)構(gòu)和過程按需要組合應(yīng)用時,它們維護計算環(huán)境,其中在該計算環(huán)境 下,計算機或計算環(huán)境的存儲器位置、地址范圍、對象、類、資產(chǎn)、資源
或任何其它過程或結(jié)構(gòu)方面,在多個單獨機器M1、 ]\12...]^11上以協(xié)調(diào)的、 連貫的和一致的方式按需要被產(chǎn)生、維護、操作和去活或刪除。
應(yīng)用代碼50的這種分析或細查可發(fā)生在加栽應(yīng)用代碼50之前,或者 在應(yīng)用代碼50加載過程期間,或者甚至在應(yīng)用代碼50加載過程之后(或 者這些情況的某種組合)。這可被比作改寫(instrumentation )、程序轉(zhuǎn)換、 翻譯、或者編譯過程,因為應(yīng)用代碼可用附加的指令編寫,和/或由保留 含義的程序操縱來修改,和/或可選地從輸入代碼語言翻譯成不同的代碼 語言(例如,從源代碼語言或中間代碼語言轉(zhuǎn)換到目標代碼語言或機器代 碼語言)。關(guān)于這一點,應(yīng)當理解,術(shù)語"編譯"通?;虬闯R?guī)涉及代碼 或語言上的改變,例如從源代碼到目標代碼,或者從一種語言到另一種語 言。然而,在這種情況下,術(shù)語"編譯"(及其語法上的等同內(nèi)容)未被 如此限制,并且也可以包含或包括相同代碼或語言內(nèi)的修改。例如,將編 譯及其等同內(nèi)容理解成包括普通編譯(例如,但不限于從源代碼到目標代
碼)和從源代碼到源代碼的編譯,以及從目標代碼到目標代碼的編譯,以 及其中的任何變更組合。還包含所謂的"中間代碼語言",其為一種"偽 目標代碼,,.
舉例而言,但非限制性地,在一個實施例中,對應(yīng)用代碼50的分析 或細查發(fā)生在應(yīng)用程序代碼的加載期間,應(yīng)用程序代碼的加載是例如由操 作系統(tǒng)從硬盤或其它存儲設(shè)備、介質(zhì)或源中讀取應(yīng)用代碼50,并且將其 拷貝到存儲器中,以及準備開始執(zhí)行該應(yīng)用程序代碼而實現(xiàn)的。在另一個 實施例中,在JAVA虛擬機中,分析或細查可發(fā)生在 java.lang.ClassLoader.loadClass方法(例如"java.lang.ClassLoader.loadClass()") 的類加載過程期間。
可替選地,或者此外,對應(yīng)用代碼50 (或應(yīng)用代碼的一部分)的分
析或細查甚至可發(fā)生在應(yīng)用程序代碼加載過程之后,例如在^Mt系統(tǒng)已將
應(yīng)用代碼加載到存儲器中之后,或者任選地,甚至在應(yīng)用程序代碼的相關(guān)對應(yīng)部分的執(zhí)行已經(jīng)開始之后,例如在JAVA虛擬機已經(jīng)通過 "java.lang.Classloader.loadClass()"方法將應(yīng)用代碼加栽到虛擬機中并且 任選地開始執(zhí)行之后。
計算領(lǐng)域的普通技術(shù)人員會知道,各種可能的技術(shù)可以用于修改計算 機代碼,這些技術(shù)包括但不限于改寫、程序轉(zhuǎn)換、翻譯或編譯裝置和/或 方法。
一種這樣的技術(shù)是,在無需在先或之后改變應(yīng)用代碼的語言的情況 下,對應(yīng)用代碼進行修改。另一種這樣的技術(shù)是將原始代碼(例如,JAVA 語言源代碼)轉(zhuǎn)換成中間表示(或中間代碼語言,或偽碼),例如JAVA 字節(jié)代碼。 一旦該轉(zhuǎn)狄生,就對字節(jié)代碼進行修改,然后轉(zhuǎn)換可被逆轉(zhuǎn)。 這提供了被修改JAVA代碼的所期望的結(jié)果。
另一個可能的技術(shù)是直接從源代碼或者通過上述中間語言或通過一 些其它中間手段,將應(yīng)用程序轉(zhuǎn)換到機器代碼。然后,在加載和執(zhí)行機器 代碼之前修改機器代碼。另一個這樣的技術(shù)是將原始代碼轉(zhuǎn)換成中間表 示,該中間表示從而被修改并且l^被轉(zhuǎn)換成機器代碼。
本發(fā)明包括所有這樣的修改途徑,以及兩個、三個甚至更多這樣的途 徑的組合。
DRT 71或其它代碼修改裝置負責在單獨機器Ml、 M2…Mn中每個 機器上建立或復制使得多個機器能互操作的存儲器結(jié)構(gòu)和內(nèi)容。在一些實 施例中,此復制的存儲器結(jié)構(gòu)相同。而在其它實施例中,此存儲器結(jié)構(gòu)會 有部分相同,而其它部分不同。在另外的其它實施例中,存儲器結(jié)構(gòu)僅在 格式或存儲約定(如大端字節(jié)序(Big Endian)或小端字節(jié)序(Little Endian) 格式或約定)方面不同。
當這些結(jié)構(gòu)和過程按需要組合應(yīng)用時,它們維護計算環(huán)境,其中在該 計算環(huán)境下,計算機或計算環(huán)境的存儲器位置、地址范圍、對象、類、資 產(chǎn)、資源或任何其它過程或結(jié)構(gòu)方面,在多個單獨機器M1、 M2…Mn上 以協(xié)調(diào)的、連貫的和一致的方式按需要被產(chǎn)生、維護、^作和去活或刪除。
因此,術(shù)語"一個"、"單,,和"公共"應(yīng)用代碼或程序包含以下情形, 在該情形中,所有機器M1、 1\12...]\111操作或執(zhí)行相同的程序或代碼而不 是不同的(和無關(guān)的)程序,換言之,相同或基; M目同的應(yīng)用代碼的拷貝 或復4^L加載到互操作且相連接的機器或計算機中的每一個上。
在使用分布式軟件的常規(guī)方案中,從一個機器的軟件到物理上位于另一個機器上的存儲器的存儲器訪問通常通過互連各機器的網(wǎng)絡(luò)進行。因
而,每個機器的本J4^儲器都能夠被任何其它機器所訪問,因此不能說是 獨立的。然而,因為對物理上位于另一個計算機上的存儲器的讀和/或?qū)?存儲器訪問需要利用互連各計算機的慢速網(wǎng)絡(luò),所以在這些配置中,這樣 的存儲器訪問可導致存儲器讀/寫處理操作中的實質(zhì)性延遲,可能大約為
106-107個機器中央處理單元的周期(假定為同時期的處理器速度)。最終,
該延遲取決于多個因素,例如通信網(wǎng)絡(luò)的速度、帶寬和/或時延。這很大 程度上說明了現(xiàn)有技術(shù)方案中多個互連機器的低性能。
然而,在本方案中,因為所有存儲器位置(或所有存儲器位置的某個 子集)的當前值被存儲在產(chǎn)生讀存儲器需求的處理所執(zhí)行的機器上,所以 對存儲器位置或數(shù)據(jù)的所有讀取都在本地得到滿足。
類似地,因為所有存儲器位置(或所有存儲器位置的某個子集)的當 前值被存儲在生成寫存儲器需求的處理所執(zhí)行的機器上,所以存儲器位置 或數(shù)據(jù)的所有寫入都在本地得到滿足。
這樣的本地存儲器讀和寫處理操作通常在102-103個中央處理單元周
期內(nèi)滿足。因而實際上,涉及和/或?qū)懙拇鎯ζ髟L問的等待基本上較少。 此外,每個機器的本地存儲器不能被任何其它機器訪問,因此可被稱作是 獨立的。
本發(fā)明獨立于傳送、網(wǎng)絡(luò)和通信路徑,并且不依賴于各機器或各DRT 之間的通信如何進行。在一個實施例中,甚至機器或DRT之間的電子郵 件(email)交互也可以滿足通信的需要。
結(jié)合以上所述,從圖2中可以看出,有若干機器M1、 M2、…Mn, "n"為大于或等于2的整數(shù),圖1的應(yīng)用程序50在機器Ml、 M2、…Mn
上基本上同時運行。這些機器按層次順序被分配以數(shù)字1、 2、 3.......等
等。該順序通常是循環(huán)的或閉合的,使得當機器2和機器3在層次上相鄰 時,機器"n"和機器l也是如此。優(yōu)選地,存在另一個機器X,其被提 供來4吏各種內(nèi)務(wù)處理功能(housekeeping functions )能被執(zhí)行,例如充當 鎖服務(wù)器。特別地,所述另一個機器X可以是低價機器,并且比可能具 有令人滿意的屬性如處理M度的其它機器便宜很多。此外, 一個附加的 低價機器(X+l)優(yōu)選地可用于在機器X出現(xiàn)故障時提供冗余。當提供兩 個這樣的服務(wù)器機器X和X+1時,為了簡單,它們優(yōu)選地作為集群結(jié)構(gòu) 的雙機器來操作。根據(jù)本發(fā)明,必要時,機器X和X+1能夠作為多計算 機系統(tǒng)來操作。然而,這一般會導致不期望的復雜度。如果未提供機器X,則其功能(例如內(nèi)務(wù)處理功能)由其它機器中的一個、 一些或4^P機器來提供。
現(xiàn)在參照圖3,示出了形成多計算機系統(tǒng)的四個機器Ml-M4的存儲 器位置的示意圖。在該特定示例中,機器M1具有存儲器位置A、 B和C, 而機器M2具有相同的存儲器位置和附加的存儲器位置D。 然而,機器 M3僅具有存儲器位置C和E,而機器M4具有存儲器位置B和D。由此 可見,如果存儲器位置B必須更新,則僅需要通知機器M1、 M2和M4, 而不必通知機器M3。因此,由于在這種情況下不必與機器M3通信,所 以通信網(wǎng)絡(luò)3上的流量可以減少。
圖4、圖5和圖6示出了足以使通信開銷的這種減少能被實現(xiàn)的數(shù)據(jù) 制表或存儲的三種不同方式。
在圖4中,針對每個對象或存儲器位置,維護具有該對象或位置的本 地拷貝并因而在該對象或該位置的內(nèi)容要被改變或以某種方式(例如通過 結(jié)束或同步)操縱的情況下應(yīng)當?shù)玫酵ㄖ臋C器的列表。
相反地,在圖5中,對于每個機器,維護存在于該機器中的對象或存 儲器位置的列表。因此,如果特定機器例如對特定存儲器位置做出修改, 則服務(wù)器機器X可檢查機器列表,以確定每個機器是否引用被修改的存 儲器位置(例如其本地拷貝)并因而需要被更新。
在圖6中,提供了^I艮務(wù)器機器X能確定需要什么通知的又一種形 式的表。這樣的表采取陣列的形式,其中在一側(cè)列出對象,而在另一側(cè)列 出機器,并且在對應(yīng)于每個可能計算機中的可能對象的每個單元中提供相 關(guān)的"是"或"否"。
一旦掌握了上述構(gòu)思,就以一種直接的方式改進在上述并入的專利說 明書中詳細描述的方案,以保證多計算機系統(tǒng)的機器Ml、 M2等中的每 個機器僅向各機器的具有對應(yīng)存儲器位置的子集發(fā)送更新特定存儲器位 置的消息。實現(xiàn)這個的一種方式是在裝配更新消息被廣播到或更新消息被 發(fā)送到的地址的過程中查詢圖4-6中的任何一個圖的表。
前面僅描述了本發(fā)明的一些實施例,本領(lǐng)域技術(shù)人員知道,在不偏離 本發(fā)明的范圍的情況下,可以對其進行修改。例如,提及JAVA,包含JAVA 語言以及JAVA平臺和體系結(jié)構(gòu)。
在所有描述的修改實例中,其中應(yīng)用代碼50在加載之前、在加載期 間、或者甚至在加載之后M未修改的應(yīng)用代碼的執(zhí)行開始之前被修改,應(yīng)當理解,被修改的應(yīng)用代碼在進行的修改之后取代未修改的應(yīng)用代碼而 #>載,以及取代未修改的應(yīng)用代碼而被執(zhí)行。
可替選地,在修^iL生在加載之后以及在未修改的應(yīng)用代碼的執(zhí)行開 始之后的情況下,應(yīng)當理解,未修改的應(yīng)用代碼可以被對應(yīng)于進行的修改、 所修改的應(yīng)用代碼所整體替換;或者,可替選地,隨著對正在執(zhí)行的未修 改應(yīng)用代碼遞增地進行l(wèi)務(wù)改,未修改的應(yīng)用代碼可以被部分或者遞增地替 換。無論使用這樣的修改途徑中的哪種,被進行之后的修改都取代未修改 的應(yīng)用代碼而執(zhí)行。
針對多個機器M1、 M2...Mn中的每一個機器上的所有類似等同本地 對象(類,資產(chǎn)或資源等)使用全局標識符作為"元名字"或"元標識" 的形式^:有利的。例如,不必跟蹤每個機器上多個類似等同對象的每個類 似等同本地對象的每個唯一本地名字或標識,取而代之,可以定義或使用 對應(yīng)于每個機器上的多個類似等同對象的全局名字(例如
"globalname7787"),在此情況下每個機器將全局名字與特定的本地名字 或?qū)ο舐?lián)系起來(例如"globalname7787"對應(yīng)于機器Ml上的對象
"1ocalobject456" , "globalname7787"對應(yīng)于機器M2上的對象
"localobject885",以及"globalname7787"對應(yīng)于機器M3上的對象
"Iocalobjectlll"等等)。
根據(jù)本文所提供的詳細描述,本領(lǐng)域的技術(shù)人員還會明白,在由每個 DRT 71當最初記錄或創(chuàng)建所有對象中的全部或某子集的列表時創(chuàng)建的 表、列表或其它數(shù)據(jù)結(jié)構(gòu)(例如存儲器位置或字段)中,對于各個機器 Ml、 M2...Mn上的每個這樣的記錄的對象,存在在機器M1、 M2.,.Mn中 的每個機器上公共或類似的名字或標識。然而,在各個機器中,因為每個
機器可能,并且通常會根據(jù)其自身的內(nèi)部處理來存儲不同存儲器位置處的 存儲器值或內(nèi)容,所以對應(yīng)于指定的名字或標識的本M象將會或者可能 會隨時間而變化。因而,每個DRT中的表、列表、或其它數(shù)據(jù)結(jié)構(gòu)一般 會具有對應(yīng)于單個存儲器名字或標識的不同本M儲器位置,但是每個全 局的"存儲器名字"或標識會具有存儲在不同本地存儲器位置中的相同的 "存儲器值或內(nèi)容"。所以,對于每個全局名字,會存在一族對應(yīng)獨立本 地存儲器位置,其中在每個計算機中有一個族成員。雖然本地存儲器名字 可能不同,但是資產(chǎn)、對象、位置等基本上具有相同內(nèi)容或值。所以族是 連貫的。
本文所使用的術(shù)語"表"或"表格"意圖包括任何列表或有組織的、無論為何種格式、并且在其內(nèi)可以以有序的方式存儲和讀出數(shù)據(jù)的數(shù)據(jù)結(jié)
構(gòu)o
根據(jù)本文提供的說明,本領(lǐng)域的普通技術(shù)人員也應(yīng)該明白,應(yīng)用程序
代碼50在加載期間的上述修改可以用多種方法或由各種裝置來實現(xiàn)。這 些方法或裝置包含但不局限于至少下列五種方法以及這五種的變型或組 合,包含
(i) 加載時的再編譯;
(ii) 加載之前的預(yù)編譯過程;
(iii) 加載之前的編譯;
(iv) "即時(just-in-time)"編譯,或
(v) 加栽后的再編譯(但是,例如當在分布式環(huán)境中執(zhí)行相關(guān)或?qū)?yīng)的 應(yīng)用代碼之前)。
通常,術(shù)語"編譯"意味著代碼或語言方面的改變,例如從源代碼到 目標代碼,或從一種語言到另一種語言。顯然,在本說明書中,術(shù)語"編 譯"(及其語法上的等同內(nèi)容)的使用未被如此限制,并且也可以包含或 包括相同代碼或語言內(nèi)的修改。
計算機和/或編程技術(shù)領(lǐng)域的技術(shù)人員應(yīng)該知道,當附加的代碼或指 令被插入到已有代碼或指令集中以將其修改時,已有代碼或指令集4艮可能 需要進一步修改(例如通過對連續(xù)指令的再編號),使得偏移,分支、屬 性、標記(markup)等被正確處理或滿足。
類似地,在JAVA語言中,存儲器位置包含例如字段和數(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)境如動態(tài)鏈接庫(DLL ),目標代碼包,功能單元或存儲器位 置的類似術(shù)語。
關(guān)于本發(fā)明的實施例描述了各種裝置,例如包含但不限于鎖裝置、分 布式運行時裝置、修改器或修改裝置等。在本發(fā)明的至少一個實施例中,這些各種裝置中的任何一個或每個可通過在計算機邏輯電路、處理器、
ASIC、邏輯或電子電路硬件、微處理器、^t控制器或其它邏輯內(nèi)執(zhí)行的 計算;^序代碼語句或指令(可能包括通過多個計算;^序代碼語句或指 令)來實現(xiàn),以修改這樣的邏輯或電路的操作來實現(xiàn)所述的操作或功能。 在另一個實施例中,這些各種裝置中的任何一個或每個可以用固件實現(xiàn), 而在其它實施例中,其可以用硬件實現(xiàn)。此外,在本發(fā)明的至少一個實施 例中,這些各種裝置中的任何一個或每個可由計算機程序軟件、固件和/ 或硬件的組合來實現(xiàn)。
上述方法、過程和/或例程中的任何一個和每個可有利地被實現(xiàn)為存 儲在任何有形介質(zhì)上或以電子、信號或數(shù)字形式存在的計算機程序和/或 計算;^E序產(chǎn)品。這樣的計算積4呈序或計算M序產(chǎn)品分別包括指令,和 /或被組織成模塊、程序、子程序,或者以任何其它方式組織,以便在處 理邏輯如計算機、計算機器或信息設(shè)備的處理器或微處理器中執(zhí)行;計算 ^4呈序或計算^4呈序產(chǎn)品修改其在上面執(zhí)行的計算機的操作,或者修改與 該計算;I^序或計算;^序產(chǎn)品所在的或在上面執(zhí)行的計算;M目耦合、連 接或者以信號通信的計算機上的操作。這樣的計算^序或計算^序產(chǎn) 品修改計算機、計算機器和/或信息設(shè)備的操作和體系結(jié)構(gòu)性的結(jié)構(gòu),以 改變計算機的技術(shù)操作,并實現(xiàn)本文所述的技術(shù)效果。
因此,本發(fā)明可包含一種計算機程序產(chǎn)品,其包括一組程序指令,其 中該組程序指令存儲在存儲介質(zhì)中,或者以任何形式電子地存在,并且可 用于使多個計算機執(zhí)行如本文(包括任一權(quán)利要求中)所述的方法、過程、 例程等中的任何一個。
此外,本發(fā)明包含(但不局限于)多個計算機,或者與經(jīng)由通信網(wǎng)絡(luò) 或其它通信鏈路或路徑互連、并且每個可用于基本同時或并行地執(zhí)e^L編 寫成僅在單個計算機上或者在各計算機中對應(yīng)的不同的計算機上^Mt的 應(yīng)用代碼的相同或不同部分的單個計算機。所述計算機被編程成在被加栽 計算M序產(chǎn)品時或者才艮據(jù)后續(xù)指令,執(zhí)行說明書中描述的、或任一權(quán)利 要求書中提出的任何方法、過程或例程。類似地,本發(fā)明在其范圍內(nèi)還包 含被布置成與類似的、或基本類似的計算機合作以形成多計算機系統(tǒng)的單 個計算機。
本文所使用的術(shù)語"包括"(及其語法變型)用于表示"具有"或"包 含"的包括性含義,而不是用于表示"僅由......組成"的排它性含義。
概括地說,公開了多計算機環(huán)境中的進一步改進,在該多計算機環(huán)境中,被編寫成僅在單個計算機上執(zhí)行的應(yīng)用程序的不同部分在多個計算機 中對應(yīng)的計算機上基本上同時地執(zhí)行,所述多個計算機每個均具有獨立的 本地存儲器,并且每個均經(jīng)由通信網(wǎng)絡(luò)互連,并且在該多計算機環(huán)境中, 一些存儲器位置能夠被第一批多個所述計算機引用,并且在該多計算機環(huán) 境中,其它的存儲器位置能夠被第二批且不同的多個所述計算機引用,并 且在每次所述存儲器位置中的任何一個的內(nèi)#用新內(nèi)容寫入或覆寫,或 者以其它方式操縱之后,所述計算機中任何對應(yīng)的存儲器位置經(jīng)由通信網(wǎng)
絡(luò)在適當時候被更新或操縱,進一步改進包括步驟
(i)維護有關(guān)哪些存儲器位置存在于哪些計算機上的記錄,以及
(ii )僅在適當時候更新或操縱在所述維護的記錄中與最初更新或操縱 的存儲器位置對應(yīng)的那些存儲器位置,從而減少通過通信網(wǎng)絡(luò)傳送的更新 或操縱指令的量。
優(yōu)選地,所述方法包括步驟
(iii) 將記錄維護為對應(yīng)于每個存儲器位置的計算機的列表。 可替選地,所述方法包括步驟
(iv) 將記錄維護為存在于每個計算機中的存儲器位置的列表。 可替選地,所述方法包括步驟;
(v) 將記錄維護為所有計算機和所有存儲器位置的表。
優(yōu)選地, 一些存儲器位置和其它存儲器位置包含公共存儲器位置。
優(yōu)選地,第一批多個計算機和第二批多個計算機包含公共計算機。
此外,還公開了一種計算機系統(tǒng),包括每個均具有獨立的本地存儲器 并且每個均經(jīng)由通信網(wǎng)絡(luò)互連的多個計算機,其中,被編寫成僅在單個計 算機上執(zhí)行的應(yīng)用程序的不同部分在所述多個計算機中對應(yīng)的計算機上 基本上同時地執(zhí)行, 一些存儲器位置能被第一批多個所述計算機引用,而 其它存儲器位置能被第二批且不同的多個所述計算機引用,所述系統(tǒng)還包 括與每個所述計算機關(guān)聯(lián)的更新裝置,以在每次每個所述存儲器位置的內(nèi) g用新內(nèi)容寫入或覆寫,或者以其它方式操縱之后,經(jīng)由通信網(wǎng)絡(luò)在適 當時候更新每個所述存儲器位置,其中所述更新裝置包含有關(guān)哪些存儲器 位置出現(xiàn)在哪些計算機上的記錄裝置,并且所述更新裝置M適當時候更 新或操縱所述記錄裝置中與初始更新或操縱的存儲器位置對應(yīng)的那些存 儲器位置,從而減少通過通信網(wǎng)絡(luò)傳送的更新或操縱指令的量。優(yōu)選地,記錄裝置是對應(yīng)于每個存儲器位置的計算機的列表??商孢x地,記錄裝置是存在于每個計算機中的存儲器位置的列表??商孢x地,記錄裝置是所有計算機和所有存儲器位置的表。優(yōu)選地, 一些存儲器位置和其它存儲器位置包含公共存儲器位置。優(yōu)選地,第一批多個計算機和第二批多個計算機包含>^共計算機。還公開了經(jīng)由通信網(wǎng)絡(luò)互連并且用于保證上述方法的執(zhí)行的多個計 算機。此外,還公開了一種計算M序產(chǎn)品,其包括存儲在存儲介質(zhì)中并且 用于使多個計算機執(zhí)行上述方法的程序指令集。此外,還公開了單個計算機,用于與至少一個其它計算機合作以執(zhí)行 上述方法或形成上述計算機系統(tǒng)。
權(quán)利要求
1. 多計算機環(huán)境中的進一步改進,在該多計算機環(huán)境中,被編寫成僅在單個計算機上執(zhí)行的應(yīng)用程序的不同部分在多個計算機中對應(yīng)的計算機上基本上同時地執(zhí)行,所述多個計算機每個均具有獨立的本地存儲器,并且每個均經(jīng)由通信網(wǎng)絡(luò)互連,并且在該多計算機環(huán)境中,一些存儲器位置能夠被第一批多個所述計算機引用,并且在該多計算機環(huán)境中,其它的存儲器位置能夠被第二批且不同的多個所述計算機引用,并且在每次所述存儲器位置中的任何一個的內(nèi)容被用新內(nèi)容寫入或覆寫,或者以其它方式操縱之后,所述計算機中任何對應(yīng)的存儲器位置經(jīng)由所述通信網(wǎng)絡(luò)在適當時候被更新或操縱,所述進一步改進包括步驟(i)維護有關(guān)哪些存儲器位置存在于哪些計算機上的記錄,以及(ii)僅在適當時候更新或操縱在所述維護的記錄中與最初更新或操縱的存儲器位置對應(yīng)的那些存儲器位置,從而減少通過所述通信網(wǎng)絡(luò)傳送的更新或操縱指令的量。
2. 如權(quán)利要求l所述的改進方法,包括步驟(iii) 將所述記錄維護為對應(yīng)于每個所述存儲器位置的計算機的列表。
3. 如權(quán)利要求l所述的改進方法,包括步驟(iv) 將所述記錄維護為存在于每個所述計算機中的存儲器位置的列表。
4. 如權(quán)利要求l所述的改進方法,包括步驟(v) 將所述記錄維護為所有計算機和所有存儲器位置的表。
5. 如權(quán)利要求1-4中的任何一個所述的改進方法,其中,所述一些 所述存儲器位置以及所述其它存儲器位置包含公共存儲器位置。
6. 如權(quán)利要求1-5中的任何一個所述的改進方法,其中所述第一批 多個計算機和所述第二批多個計算機包含公共計算機。
7. —種計算機系統(tǒng),包括每個均具有獨立的本地存儲器并且每個均 經(jīng)由通信網(wǎng)絡(luò)互連的多個計算機,其中,被編寫成僅在單個計算機上執(zhí)行 的應(yīng)用程序的不同部分在所述多個計算機中對應(yīng)的計算機上基本上同時 地執(zhí)行, 一些存儲器位置能被第一批多個所述計算機引用,而其它存儲器位置能被第二批且不同的多個所述計算機引用,所述系統(tǒng)還包括與每個所 述計算機關(guān)聯(lián)的更新裝置,以在每次每個所述存儲器位置的內(nèi)M用新內(nèi) 容寫入或覆寫,或者以其它方式操縱之后,經(jīng)由所述通信網(wǎng)絡(luò)在適當時候 更新每個所述存儲器位置,其中所述更新裝置包含有關(guān)哪些存儲器位置出 現(xiàn)在哪些計算機上的記錄裝置,并且所述更新裝置僅在適當時候更新或操 縱所述記錄裝置中與初始更新或操縱的存儲器位置對應(yīng)的那些存儲器位 置,從而減少通過所述通信網(wǎng)絡(luò)傳送的更新或操縱指令的量。
8. 如權(quán)利要求7所述的系統(tǒng),其中,所述記錄裝置是對應(yīng)于每個所 述存儲器位置的計算機的列表。
9. 如權(quán)利要求7所述的計算機系統(tǒng),其中,所述記錄裝置是存在于 每個所述計算機中的存儲器位置的列表。
10. 如權(quán)利要求7所述的計算機系統(tǒng),其中,所述記錄裝置是所有計 算機和所有存儲器位置的表。
11. 如權(quán)利要求7-10中的任何一個所述的計算機系統(tǒng),其中,所述 一些所述存儲器位置和所述其它存儲器位置包含公共存儲器位置。
12. 如權(quán)利要求7-11中的任何一個所述的計算機系統(tǒng),其中,所述 第一批多個計算機和所述第二批多個計算機包含公共計算機。
13. 多個計算機,經(jīng)由通信網(wǎng)絡(luò)互連并且用于保證如權(quán)利要求l-6中 的任何一個權(quán)利要求所述的方法的執(zhí)行。
14. 一種計算^序產(chǎn)品,包括存儲在存儲介質(zhì)中并且用于使多個計 算機執(zhí)行如權(quán)利要求1-6中的任何一個權(quán)利要求所述的方法的程序指令 集。
15. —種單個計算機,用于與至少一個其它計算機合作,以便執(zhí)行如 權(quán)利要求l-6中的任何一個權(quán)利要求所述的方法,或構(gòu)成如權(quán)利要求7-13 中的任何一個權(quán)利要求所述的計算機系統(tǒng)。
全文摘要
公開一種多計算機環(huán)境,在該多計算機環(huán)境中,應(yīng)用程序在通過通信網(wǎng)絡(luò)(53)互連的多個計算機(M1、M2、…Mn)上同時執(zhí)行,并且每個計算機的本地存儲器通過在適當時候更新而被維護得基本相同。提供一種地址表機制,以允許為了例如更新,訪問資產(chǎn)、對象或結(jié)構(gòu)(即存儲器位置)。由于不是所有計算機都具有相同的存儲器,所以不必更新所有計算機,因此通信網(wǎng)絡(luò)(53)上的流量減少。
文檔編號G06F15/16GK101288062SQ200680038414
公開日2008年10月15日 申請日期2006年10月5日 優(yōu)先權(quán)日2005年10月17日
發(fā)明者約翰·馬修·霍爾特 申請人:瓦拉泰克有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乌鲁木齐市| 通化市| 从江县| 宜兰县| 龙口市| 东乡县| 凌云县| 三台县| 新安县| 太谷县| 岳池县| 尖扎县| 莆田市| 吕梁市| 岳阳市| 喀喇沁旗| 辛集市| 张家港市| 文安县| 临泉县| 天镇县| 宝山区| 全南县| 天门市| 伊宁县| 普格县| 海晏县| 文山县| 汉源县| 河池市| 肇东市| 滦南县| 克什克腾旗| 大田县| 武威市| 海口市| 天全县| 房产| 鄂尔多斯市| 弥勒县| 蒙山县|