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

分布式處理的制作方法

文檔序號(hào):6412906閱讀:232來(lái)源:國(guó)知局
專利名稱:分布式處理的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及分布式處理,具體地但并不僅限于控制通信網(wǎng)的分布式處理。更具體地,本發(fā)明涉及開(kāi)發(fā)與更新實(shí)現(xiàn)在分布式處理器上的控制系統(tǒng),它們最好是(但不一定是)以面向?qū)ο蟮姆绞綄?shí)現(xiàn)的進(jìn)程。
與日俱增地需要電信網(wǎng)來(lái)支持高帶寬低延遲的信息流。所要求的帶寬迅速地從每秒千位劇增到每秒兆位,對(duì)于某些應(yīng)用甚至到每秒千兆位(特別是諸如對(duì)點(diǎn)播電視、活動(dòng)共享的模擬(animated sharedsimulations)及分布式計(jì)算)。
為了提供諸如將呼叫改發(fā)到特定號(hào)碼等“智能網(wǎng)”設(shè)施,計(jì)算機(jī)程序在若干與交換中心連接的主計(jì)算機(jī)(例如多達(dá)100)上運(yùn)行。將服務(wù)提供給特定用戶的方式(例如,將對(duì)用戶的呼叫的路由確定到特定的號(hào)碼上)取決于存儲(chǔ)在主計(jì)算機(jī)上的與該用戶相關(guān)的數(shù)據(jù)。從而,在數(shù)十或數(shù)百臺(tái)主計(jì)算機(jī)上可能有數(shù)百萬(wàn)用戶記錄。在“20-20觀察-21世紀(jì)智能軟件體系結(jié)構(gòu)”(P.A.Martin,BT技術(shù)雜志卷13第二號(hào),1995年4月)中,本發(fā)明人建議采用面向?qū)ο蟮募夹g(shù)來(lái)實(shí)現(xiàn)要求的分布式處理。
面向?qū)ο蟮募夹g(shù)描述了可在諸如E.L.Cusack與E.S.Cordingley編輯的BT技術(shù)雜志卷11第三號(hào),1993年7月,“面向?qū)ο蟮募夹g(shù)”中找到。雖然這一名詞并不總是精確地使用,面向?qū)ο蟮挠?jì)算這里指其中數(shù)據(jù)是以“封裝”的形式存儲(chǔ)的,其中數(shù)據(jù)不是可由調(diào)用程序或例程直接訪問(wèn)的而是只能由能讀、寫(xiě)與編輯數(shù)據(jù)的程序的有限部分訪問(wèn)的計(jì)算技術(shù)而言。將數(shù)據(jù)記錄及其關(guān)聯(lián)的計(jì)算機(jī)代碼稱作“對(duì)象”。與對(duì)象的通信通常是用“報(bào)文傳遞”的;即,對(duì)對(duì)象的調(diào)用傳遞數(shù)據(jù)值并調(diào)用包含在該對(duì)象內(nèi)的程序之一的操作,然后返回?cái)?shù)據(jù)值。
想要采用面向?qū)ο蟮姆椒ǖ某绦騿T有多種語(yǔ)言可供使用。其中,當(dāng)前最普通的是C++。
分布式處理在若干方面與單處理器操作不同。首先,取決于其它程序或數(shù)據(jù)是位于與調(diào)用程序同一主計(jì)算機(jī)上還是不同的主計(jì)算機(jī)上而可能需要不同的訪問(wèn)技術(shù)。程序或數(shù)據(jù)的位置也會(huì)影響從另一程序到達(dá)它的速度。并且,一臺(tái)或多臺(tái)計(jì)算機(jī)有可能故障而留下其它的進(jìn)行操作。
分布式計(jì)算傳統(tǒng)上采用“客戶-服務(wù)器”配置執(zhí)行,其中一臺(tái)計(jì)算機(jī)上的“客戶”程序詢問(wèn)另一臺(tái)計(jì)算機(jī)上的“服務(wù)器”程序,然后后者執(zhí)行客戶程序所要求的功能或返回?cái)?shù)據(jù)。
面向?qū)ο蟮募夹g(shù)尚未廣泛用于分布式處理。這一方面的當(dāng)前技術(shù)狀態(tài)的概述可在“面向?qū)ο蟮某绦蛟O(shè)計(jì)系統(tǒng);Blair G.,Pitman出版社,倫敦,1991(ISBN0-273-03132-6)尤其是在223-243頁(yè)的第9章中;“分布式系統(tǒng)與對(duì)象”;David Hutchison與JonathanWalpole,中找到。早先的嘗度通常是在現(xiàn)有的計(jì)算機(jī)語(yǔ)言上增加新的語(yǔ)法或建立新的計(jì)算機(jī)語(yǔ)言來(lái)擴(kuò)展傳統(tǒng)的面向?qū)ο蟮木幊虂?lái)處理分布式處理。
H.Sivaraman等人的論文“將順序程序并行化到工作站群集”,1995年ICPP并行處理挑戰(zhàn)專題研究組會(huì)報(bào),38-41頁(yè),公開(kāi)了將順序程序轉(zhuǎn)換成在使用緊耦合的分布式控制系統(tǒng)的多臺(tái)計(jì)算機(jī)上并行執(zhí)行,換言之,使用共享存儲(chǔ)器技術(shù)的控制系統(tǒng)。
一方面,本發(fā)明提供了分布式計(jì)算系統(tǒng),其中將多個(gè)對(duì)象(即可用其本身的代碼讀與寫(xiě)的數(shù)據(jù)記錄)分布在分布式計(jì)算系統(tǒng)的不同主計(jì)算機(jī)上,其中各主計(jì)算機(jī)設(shè)置有指定這些系統(tǒng)的全體數(shù)據(jù)記錄所在的計(jì)算機(jī)的位置表。
從而不需要中央控制點(diǎn),否則它會(huì)構(gòu)成處理的瓶頸。此外,由于在所有主計(jì)算機(jī)上位置表可以是一樣的,便能通過(guò)簡(jiǎn)單地從現(xiàn)有的主計(jì)算機(jī)上拷貝位置表面相對(duì)容易地增加新的主計(jì)算機(jī)。
最好將主計(jì)算機(jī)配置成可將數(shù)據(jù)記錄從第一主計(jì)算機(jī)移動(dòng)到第二主計(jì)算機(jī)。
最好將主計(jì)算機(jī)配置成在這一移動(dòng)時(shí),將在其上重新定位記錄的主計(jì)算機(jī)的位置發(fā)信號(hào)通知各其它主計(jì)算機(jī)。
可將主計(jì)算機(jī)配置成使各位置表中還存儲(chǔ)在其上建立數(shù)據(jù)記錄的主計(jì)算機(jī)的位置。
最好,為了存取數(shù)據(jù)記錄,將各主計(jì)算機(jī)配置成讀取它所存儲(chǔ)的位置表,然后在必要時(shí)訪問(wèn)在其上建立該數(shù)據(jù)記錄的主計(jì)算機(jī)的位置表。
最好,數(shù)據(jù)記錄包括各只能通過(guò)關(guān)聯(lián)的代碼訪問(wèn)的對(duì)象,并且更好,這種對(duì)象包括同一類的多個(gè)對(duì)象,以及這多個(gè)對(duì)象共用所述關(guān)聯(lián)的代碼。
第二方面,本發(fā)明提供了供與包含多臺(tái)互連的計(jì)算機(jī)的分布式控制系統(tǒng)一起使用的編譯程序(或預(yù)編譯程序),所述編譯程序裝置配置成接受適合于在單一計(jì)算機(jī)上編譯的源語(yǔ)言的原始源程序,其特征在于分布式控制系統(tǒng)是松耦合的;及在于將所述編譯程序裝置配置成接受所述原始源代碼程序及在所述原始源程序中定位可從所述源程序內(nèi)其它點(diǎn)上調(diào)用的功能,并適應(yīng)所述原始源程序來(lái)允許從其它計(jì)算機(jī)遠(yuǎn)程調(diào)用所述功能。
第三方面,本發(fā)明提供了供在包含多臺(tái)互連的計(jì)算機(jī)的分布式控制系統(tǒng)中使用的編譯程序(或預(yù)編譯程序),所述編譯程序裝置配置成接受適合于在單一計(jì)算機(jī)上編譯的源語(yǔ)言的原始源程序,其特征在于該分布式控制系統(tǒng)是松耦合的;及在于該編譯程序裝置包括編譯程序并配置成在所述原始源程序中定位將由所述編譯程序作為對(duì)單一計(jì)算機(jī)存儲(chǔ)空間中的區(qū)域的指針編譯的參照,以及修正所述原始源程序以便能參照其它所述計(jì)算機(jī)的存儲(chǔ)空間。
第四方面,本發(fā)明提供了供在包括多臺(tái)互連的計(jì)算機(jī)的分布式控制系統(tǒng)中使用的編譯程序(或預(yù)編譯程序),所述編譯程序裝置配置成接受適合于在單一計(jì)算機(jī)上編譯的源語(yǔ)言的原始源程序,其特征在于該分布式控制系統(tǒng)是松耦合的;及在于所述編譯程序裝置配置成讀取所述原始源程序及在其上加上描述包括在所述原始源程序中的數(shù)據(jù)與程序結(jié)構(gòu)的一組數(shù)據(jù)記錄。
在本發(fā)明的上下文中松耦合一詞的指采用報(bào)文技術(shù)而非共享存儲(chǔ)器技術(shù)的控制系統(tǒng)而言。
本發(fā)明的所有方面都涉及供在多臺(tái)計(jì)算機(jī)上順序執(zhí)行的順序程序的轉(zhuǎn)換,而非上述Sivaraman等人完全涉及并行執(zhí)行的論文。
方便地,本發(fā)明的這些方面包括一個(gè)預(yù)編譯程序,后者能與更傳統(tǒng)的編譯程序一起使用,但應(yīng)理解可將本發(fā)明的功能性直接加入到重新編寫(xiě)的編譯程序中。
從而,在這些方面中,本發(fā)明隱藏了程序員使程序適應(yīng)在許多不同處理器上操作的復(fù)雜性,減少了生成可執(zhí)行程序所需的時(shí)間。
本發(fā)明還提供了包括上述第二、第三與第四方面中任何兩種或兩種以上的特征的組合的編譯程序裝置。
第五方面,本發(fā)明提供了包括由多臺(tái)互連的計(jì)算機(jī)構(gòu)成的分布式控制系統(tǒng)及用于為所述計(jì)算機(jī)編譯程序的編譯裝置的電信系統(tǒng),該裝置包括配置成編譯供在單一主計(jì)算機(jī)上執(zhí)行的源程序的編譯程序,及配置成接受適合于單一計(jì)算機(jī)執(zhí)行的原始源程序及修正所述原始源程序以增加附加的源碼,借此生成修正的源程序,后者在經(jīng)過(guò)所述編譯程序編譯后,將在所述分布式控制系統(tǒng)上執(zhí)行。
本發(fā)明的這一方面所生成的單一可執(zhí)行程序可以以相同的拷貝分布到該分布式計(jì)算系統(tǒng)的所有處理器(主計(jì)算機(jī))上。這使得容易在分布式計(jì)算系統(tǒng)上增加新的主處理器。
在本實(shí)施例中,源程序是面向?qū)ο蟮恼Z(yǔ)言,并最好是C++或其變體的。C++在為分布式環(huán)境編譯時(shí)提出額外的問(wèn)題,由于它是旨在用于單處理器編譯及不同的進(jìn)程通過(guò)共享的存儲(chǔ)器指針通信的,它不能在多處理器環(huán)境中操作。
本發(fā)明的其它方面與實(shí)施例如此后描述及要求的。
下面以示例方式參照


本發(fā)明的實(shí)施例,其中圖1為展示體現(xiàn)本發(fā)明的電信系統(tǒng)的部件的方框圖;圖2為展示圖1的系統(tǒng)的其它實(shí)施例的方框圖;圖3為展示構(gòu)成圖1與2的系統(tǒng)的一部分的主計(jì)算機(jī)的部件的方框圖;圖4為展示構(gòu)成圖1與2的系統(tǒng)的一部分的編譯程序裝置的元素的方框圖;圖5為展示圖4的編譯程序裝置的操作的流程圖;圖6為指示圖5中所執(zhí)行的處理的階段性產(chǎn)品的示意圖;圖7a為表示保持在構(gòu)成圖1的一部分的智能域中的數(shù)據(jù)結(jié)構(gòu)的圖;圖7b為表示保持在構(gòu)成圖1的一部分的傳送域中的數(shù)據(jù)結(jié)構(gòu)的圖;圖8示出圖7a的一個(gè)部件的存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu);圖9示出圖4的裝置的預(yù)編譯程序在擴(kuò)展保持在圖4的源碼存儲(chǔ)器中的原始源碼來(lái)生成擴(kuò)展的源碼時(shí)的操作;圖10為展示預(yù)編譯程序的總操作序列的流程圖;圖11(包括圖11a及11b)為更詳細(xì)地示出圖10的進(jìn)程中用于構(gòu)成類型模型的部分的流程圖;圖12示出該進(jìn)程所生成的附加源碼;圖13示意性示出這樣生成的類型模型的結(jié)構(gòu);圖14為展示圖10的進(jìn)程在提供對(duì)象的遠(yuǎn)程調(diào)用時(shí)的另一部分的步驟的流程圖;圖15對(duì)應(yīng)指示所生成的附加源碼;圖16為展示圖10的進(jìn)程替換局部指針的又另一階段的步驟的流程圖;圖17示出所生成的對(duì)應(yīng)附加源碼;圖18a為通過(guò)局部指針調(diào)用功能的示意圖;圖18b為在執(zhí)行圖16的進(jìn)程之后通過(guò)參照調(diào)用功能的對(duì)應(yīng)示意圖;圖19示出作為圖3的主計(jì)算機(jī)的對(duì)象管理程序的一部分保持在存儲(chǔ)器中的對(duì)象位置表的結(jié)構(gòu);圖20示出作為其對(duì)象管理程序的一部分存儲(chǔ)在圖3的主計(jì)算機(jī)的存儲(chǔ)器中的主狀態(tài)表的結(jié)構(gòu);圖21(包括圖21a及21b)為展示主狀態(tài)表的更新的流程圖;圖22(包括圖22a及22b)為展示構(gòu)成新對(duì)象的進(jìn)程的流程圖;圖23為展示將對(duì)象從一臺(tái)主計(jì)算機(jī)移動(dòng)到另一臺(tái)的進(jìn)程的流程圖;以及圖24(包括圖24a、24b及24c)為展示將報(bào)文傳輸?shù)竭h(yuǎn)程主計(jì)算機(jī)上的對(duì)象的進(jìn)程的流程圖;參見(jiàn)圖1,按照本發(fā)明生成的電信系統(tǒng)包括用構(gòu)成傳送域6的通信信道4(如微波鏈路、光纖纜、同軸銅電纜或上文中任何一種上所攜帶的虛擬電路)互連的多個(gè)交換中心或交換機(jī)2a、2b。連接在傳送域6上的有智能域8,后者包括通過(guò)信號(hào)鏈路12a、12b、12c(它們也互連主計(jì)算機(jī)10a、10b)與交換中心2a、2b信號(hào)通信的多臺(tái)主計(jì)算機(jī)10a、10b。例如,這兩個(gè)域可用諸如信號(hào)系統(tǒng)7(SS7)等協(xié)議互連。
主計(jì)算機(jī)10a、10b一起構(gòu)成松耦合的分布式控制系統(tǒng),在于它們只能利用報(bào)文技術(shù)通信,而不用共享存儲(chǔ)器技術(shù)通信。
諸如電話14a、14b等最終用戶終端裝置(也稱作終端設(shè)備)以及諸如電視播放機(jī)16等寬帶通信裝置一起構(gòu)成通過(guò)本地環(huán)路連接線20a、20b、20c(例如光纖、蜂窩式無(wú)線電或雙絞銅線電纜鏈路)連接在傳送域6上的最終用戶域18。
進(jìn)一步提供通過(guò)諸如ISDN信道或其它高帶寬鏈路等局部環(huán)路連接線28a、28b、28c與傳送域8連接的包含諸如電視播放機(jī)24及計(jì)算機(jī)終端26等提供服務(wù)(例如電視服務(wù))的設(shè)備的服務(wù)提供者域22。
以已知的方式,利用最終用戶終端裝置14或16通過(guò)傳送域6將請(qǐng)求傳遞給服務(wù)提供者域22。結(jié)果,通過(guò)傳送域6建立了信道,而服務(wù)提供者域22通過(guò)該信道將服務(wù)傳輸給最終用戶域18(例如通過(guò)傳輸實(shí)時(shí)電影或電子格式的數(shù)據(jù)文件)。
在傳統(tǒng)的普通老式電話服務(wù)(POTS)中,傳送域6是簡(jiǎn)單地受最終用戶域中生成的撥號(hào)控制來(lái)建立傳送路徑的。然而,當(dāng)前智能域提供傳送域的“智能網(wǎng)”控制。智能域8從傳送域6接收被撥號(hào)與/或主撥號(hào),并根據(jù)被撥或主撥號(hào)之一或兩者執(zhí)行某種呼叫處理。智能域通常提供號(hào)碼轉(zhuǎn)發(fā)服務(wù),其中轉(zhuǎn)發(fā)被撥電話號(hào)碼以提供對(duì)另一號(hào)碼的呼叫轉(zhuǎn)發(fā)服務(wù)。在這一情況中,被撥號(hào)碼對(duì)應(yīng)于主計(jì)算機(jī)10之一上存儲(chǔ)的記錄,響應(yīng)鏈路12之一上的信號(hào)訪問(wèn)該記錄以生成對(duì)應(yīng)的重定向號(hào)碼。
通常,響應(yīng)傳送域6中發(fā)生的事件(諸如從最終用戶域18啟動(dòng)的呼叫),智能域提供控制信息來(lái)控制傳送域6。
其它數(shù)據(jù)也存儲(chǔ)在智能域中。在本實(shí)施例中,各呼叫的記帳數(shù)據(jù)存儲(chǔ)在智能域中,以便定期向各客戶發(fā)帳單。
參見(jiàn)圖2,智能域8還包括編譯程序裝置30,該裝置包括通過(guò)網(wǎng)絡(luò)服務(wù)器11a-11c及在編譯程序裝置30、主機(jī)10與服務(wù)器11之間運(yùn)行的廣域網(wǎng)(WAN)連接在主計(jì)算機(jī)10上的編程的工作站。
這些服務(wù)器還連接到包括在因特網(wǎng)32內(nèi)的一個(gè)或多個(gè)環(huán)球信息網(wǎng)(WWW)服務(wù)器計(jì)算機(jī)上,并從而連接到因特網(wǎng)上的編輯終端15a-15d上(諸如通過(guò)本地包交換節(jié)點(diǎn))。
參見(jiàn)圖3,各主計(jì)算機(jī)10包括大型主機(jī)或服務(wù)器,后者包括通過(guò)WAN連接在服務(wù)器11上的通信硬件;處理器102;以及存儲(chǔ)器104,包含隨機(jī)存取存儲(chǔ)器形式的快速存取存儲(chǔ)器及磁或光盤(pán)驅(qū)動(dòng)器形式的脫機(jī)存儲(chǔ)器兩者。
存儲(chǔ)在存儲(chǔ)裝置104中的有操作系統(tǒng)106(如UNIX(TM));對(duì)象管理程序108;以及包含類代碼110與對(duì)象數(shù)據(jù)的對(duì)象模型,所有這些都將在下面更詳細(xì)地討論。
各編輯終端15包括個(gè)人計(jì)算機(jī),并可通過(guò)調(diào)制解調(diào)器連接到在用戶的房屋中的帶有對(duì)應(yīng)的電話機(jī)14的普通電話插座上。
因此各編輯終端15包括處理器、屏幕輸出裝置、包含圖形用戶環(huán)境(諸如Windows(TM))的輸入裝置(諸如鍵盤(pán)(或諸如鼠標(biāo)器等光標(biāo)控制裝置)及存儲(chǔ)裝置ROM、RAM以及硬盤(pán))、通信程序以及對(duì)象瀏覽器程序。
參見(jiàn)圖4,編譯程序裝置包括連接在WAN服務(wù)器11上的通信接口電路板300;處理器302;以及包含快速存取存儲(chǔ)器(RAM)與大容量存儲(chǔ)器(如硬盤(pán)驅(qū)動(dòng)器)并存儲(chǔ)有操作系統(tǒng)(如UNIX(TM))、本地的C++編譯程序312(諸如可從Sun Microsystems購(gòu)得的SunPRO)的存儲(chǔ)裝置304(未分開(kāi)指出);下面要詳細(xì)描述的預(yù)編譯程序316;以及存儲(chǔ)要加入到新程序中的標(biāo)準(zhǔn)功能與定義(指定子程序或子例程)的庫(kù)314。
和傳統(tǒng)上一樣,C++編譯程序包括編譯成可重定位二進(jìn)制代碼的編譯程序及連接二進(jìn)制代碼與存儲(chǔ)在庫(kù)314中的二進(jìn)制代碼例程并將連接的代碼定位在存儲(chǔ)器空間中供執(zhí)行的連接程序312b。這種編譯程序通常還包含預(yù)處理程序,它解釋編譯程序命令,諸如讀入附加代碼的“include”(包含)語(yǔ)句或在編譯期間執(zhí)行其它操作。
還提供有用于存儲(chǔ)輸入的定義C++程序的源碼(諸如通過(guò)輸入裝置320輸入的、或通過(guò)通信線路300下載的、或通過(guò)包含在存儲(chǔ)裝置304內(nèi)的盤(pán)驅(qū)動(dòng)器加載的)的存儲(chǔ)區(qū)308;以及用于存儲(chǔ)C++計(jì)算機(jī)312(即在編譯程序控制下工作的處理器302)生成的可執(zhí)行代碼的存儲(chǔ)區(qū)310。還包括存儲(chǔ)區(qū)318,它存儲(chǔ)下述系統(tǒng)數(shù)據(jù)分布式處理器10的數(shù)目;各處理器10上可利用的存儲(chǔ)器容量;處理器10的操作速度,等。
將處理器302配置成有選擇地或者在源存儲(chǔ)器308中的源碼上運(yùn)行C++編譯程序312,或者在源存儲(chǔ)器308中的源碼上運(yùn)行預(yù)編譯程序316隨后運(yùn)行C++編譯程序312,以便在可執(zhí)行代碼存儲(chǔ)器310中生成可執(zhí)行代碼。
在前一情況中,將在任何適當(dāng)?shù)膯我惶幚砥魃蠄?zhí)行所生成的代碼。在本實(shí)施例中,處理器302本身配置成能直接執(zhí)行C++編譯程序以這一方式生成的代碼,使用戶能立即測(cè)試程序是否如預(yù)期的那樣操作。
在后一情況中,預(yù)編譯程序316首先處理源存儲(chǔ)器308中的源碼(計(jì)入關(guān)于包括要在其上執(zhí)行該代碼的主機(jī)10的分布式系統(tǒng)的任何系統(tǒng)數(shù)據(jù)),并在源存儲(chǔ)器308中生成修正后的源碼,然后由編譯程序312編譯以在可執(zhí)行代碼存儲(chǔ)器310中生成可執(zhí)行代碼。然而,這一可執(zhí)行代碼不一定能在編譯程序裝置30上執(zhí)行,因?yàn)樗怯糜谠诙嗯_(tái)分布式主機(jī)10上執(zhí)行的。
參見(jiàn)圖5,在監(jiān)控程序307控制下的編輯程序30的一般操作如下。
在步驟202中,將源碼輸入到源碼存儲(chǔ)器308中(諸如通過(guò)輸入裝置320)。在步驟204中,人類操作員可決定在源存儲(chǔ)器308中編輯源碼,其中將編輯的文本輸入到源碼存儲(chǔ)器308中(諸如采用傳統(tǒng)的文本處理程序)。
一旦完成了任何這種編輯,在步驟206中,用戶可選擇是否要就地測(cè)試源碼。在他要這樣做時(shí),在步驟208中,處理器在源碼存儲(chǔ)器308中的源碼上執(zhí)行C++編譯程序312,以在可執(zhí)行代碼存儲(chǔ)器310中生成可執(zhí)行代碼,并在步驟210中,處理器302執(zhí)行可執(zhí)行代碼??商峁┠M程序來(lái)截止無(wú)意義的操作并代之以諸如在輸出屏幕322上顯示等操作,使用戶知道發(fā)生了什么。
在執(zhí)行中出現(xiàn)錯(cuò)誤的事件中,在步驟212中用戶可決定返回到步驟204中去編譯源碼存儲(chǔ)器308中的源碼。如果源碼呈現(xiàn)為滿意的,則在步驟214中,將預(yù)編譯程序316作用在源碼存儲(chǔ)器308中的源碼上以生成修正的代碼,然后在步驟216中用C++編譯程序編譯它以在可執(zhí)行代碼存儲(chǔ)器310中生成可執(zhí)行代碼。然后在步驟218中通過(guò)WAN服務(wù)器11將其傳輸?shù)椒植际街饔?jì)算機(jī)10。圖6中用圖形示出這些。
下面簡(jiǎn)要地描述智能域中所采用的數(shù)據(jù)模型。下文中,各“對(duì)象”為包括若干數(shù)據(jù)字段的數(shù)據(jù)記錄,它只能由對(duì)應(yīng)于該對(duì)象的代碼訪問(wèn)(以一對(duì)多的關(guān)聯(lián),在與一類對(duì)象相關(guān)的相同代碼實(shí)際上訪問(wèn)該類中所有對(duì)象的意義上)。
和傳統(tǒng)上一樣,將對(duì)象組合成類,同一類的對(duì)象包含不同的數(shù)據(jù)但格式相同。各對(duì)象還與一個(gè)或多個(gè)子例程(一般性地稱作“方法”或“功能”)關(guān)聯(lián),它們?cè)跀?shù)據(jù)上操作,并且通常構(gòu)成這樣做的唯一手段。
與同一類中不同對(duì)象關(guān)聯(lián)的子例程以相同的格式接收及返回對(duì)應(yīng)的數(shù)據(jù)(即同一類的所有對(duì)象具有公共的界面)。事實(shí)上在C++中,這些子例程只為同一類中的所有對(duì)象表示一次(即子例程的代碼只存儲(chǔ)一次)。因此該代碼是與該類對(duì)象而不是與各對(duì)象關(guān)聯(lián)的。
各類對(duì)象可以是更通用的類的子部分,如在傳統(tǒng)的面向?qū)ο蟮木幊讨械?。在這情況中,可相對(duì)于更通用的類(“超類”)存儲(chǔ)代碼。對(duì)象管理程序108包含構(gòu)成各對(duì)象的數(shù)據(jù)的位置的表,并在每一次調(diào)用對(duì)象時(shí),對(duì)象管理程序訪問(wèn)類代碼存儲(chǔ)區(qū)110中的子例程代碼并將對(duì)象存儲(chǔ)區(qū)112中的相關(guān)對(duì)象的數(shù)據(jù)的地址提供給該代碼。
參見(jiàn)圖7,在本實(shí)施例中,在智能域的主機(jī)10中提供的對(duì)象包括多個(gè)用戶對(duì)象500(保持關(guān)于數(shù)千萬(wàn)用戶中各個(gè)的數(shù)據(jù)的對(duì)象),它們是在增加新用戶時(shí)建立的并在用戶自愿離開(kāi)或從網(wǎng)絡(luò)上被截止時(shí)消毀;并在用戶的需求改變時(shí)編輯;多個(gè)呼叫對(duì)象600a-600c,它們中各個(gè)是在對(duì)應(yīng)的呼叫開(kāi)始時(shí)建立并在呼叫結(jié)束之后消毀;以及多個(gè)通信裝置對(duì)象700a-700c,它們各與一項(xiàng)用戶終端設(shè)備相關(guān),并在第一次將該用戶終端設(shè)備連接到網(wǎng)絡(luò)上時(shí)建立。
參見(jiàn)圖7b,在本實(shí)施例中,傳送域6的交換中心2a、2b…還包括在其上存儲(chǔ)有分別表示交換中心內(nèi)的交換機(jī)與交換機(jī)端口的對(duì)象800a-800b、900a-900f的主計(jì)算機(jī)。從而各交換機(jī)對(duì)象800包含任何時(shí)刻上對(duì)應(yīng)的交換機(jī)的狀態(tài)的記錄;這些對(duì)象永久存在在存儲(chǔ)器中并與存在在交換中心2中的物理裝置具有一對(duì)一的映射,從而寫(xiě)入端口或交換機(jī)對(duì)象改變對(duì)應(yīng)的端口或交換機(jī)的狀態(tài),而讀取端口或交換機(jī)對(duì)象給出對(duì)應(yīng)的物理裝置的實(shí)際狀態(tài)的精確反映。
作為示例,圖8中示出用戶對(duì)象中的數(shù)據(jù)結(jié)構(gòu)。
對(duì)象500所維護(hù)的屬性數(shù)據(jù)包括用戶類型字段502(它可指示用戶為雇員或一些其它不平常的身份,或者是正常的用戶);用戶ID字段504;主機(jī)字段506,指示在其上建立對(duì)象500的主機(jī)10(方便地以http/TCP/IP格式)。
還存儲(chǔ)有提供給該用戶的服務(wù)器的相關(guān)數(shù)據(jù);例如,用戶的正常電話號(hào)碼(字段508);在每天的特定時(shí)間上將該用戶的呼叫轉(zhuǎn)接到其上的電話號(hào)碼(字段510);以及要轉(zhuǎn)接呼叫的一天中的時(shí)間(字段512)。
最后,以存儲(chǔ)各次呼叫的被叫(與/或主叫)電話號(hào)碼、呼叫的日期與時(shí)間的呼叫登記字段514及呼叫的費(fèi)用(字段514)的形式存儲(chǔ)用戶的記帳信息。
不同的個(gè)人需要訪問(wèn)這一信息的不同部分。例如,定義要提供給用戶的服務(wù)的字段508-512可由用戶服務(wù)人員或由用戶本人通過(guò)最終用戶終端15編輯,而記帳數(shù)據(jù)(字段514)只能由經(jīng)營(yíng)網(wǎng)絡(luò)的記帳與會(huì)計(jì)人員寫(xiě)入。當(dāng)然,任何用戶都不能從最終用戶終端15改寫(xiě)其記帳記錄。
操作中,傳送域中發(fā)生的事件(諸如監(jiān)視最終用戶域中的“摘機(jī)”條件)調(diào)用與智能域中的一個(gè)對(duì)象關(guān)聯(lián)的代碼的操作。例如,在最終用戶域中電話摘機(jī)時(shí),便調(diào)用代碼來(lái)建立新的“呼叫”對(duì)象600。當(dāng)檢測(cè)到被叫號(hào)碼時(shí),便通過(guò)信號(hào)鏈路12將其傳輸給智能域8;激活主叫方的用戶對(duì)象500來(lái)修正其記帳記錄字段;以及訪問(wèn)被叫方的用戶對(duì)象500來(lái)確定應(yīng)轉(zhuǎn)接該呼叫的號(hào)碼,然后將這一信息傳輸給傳送域中的交換機(jī)對(duì)象800來(lái)建立將在其上攜帶該呼叫的路徑。
在呼叫的通話期間,智能域的作用通常是有限的。在檢測(cè)到掛機(jī)而清除呼叫時(shí),與用戶對(duì)象500關(guān)聯(lián)的記帳功能代碼更新記帳數(shù)據(jù)字段,并由對(duì)象管理程序108刪除呼叫對(duì)象。
參見(jiàn)圖9,本實(shí)施例中的預(yù)編譯程序316包括分析程序316a,它檢驗(yàn)源碼存儲(chǔ)器308中的接連的C++語(yǔ)句并參照C++語(yǔ)法圖316a來(lái)確定各語(yǔ)句中哪些元素為函數(shù)、變量等;在分析程序316a檢測(cè)到預(yù)定的語(yǔ)法條件時(shí),代碼編寫(xiě)程序316c便建立對(duì)應(yīng)的附加源碼,并將其增加到源碼存儲(chǔ)器308中的源碼中。
參見(jiàn)圖10,預(yù)編譯程序的一般操作如下。在步驟1002中,預(yù)編譯程序316建立包括新類的附加數(shù)據(jù)結(jié)構(gòu)(“類型模型”),新類中包含分別表示出現(xiàn)在源碼存儲(chǔ)器308的源碼中的對(duì)象的所有類的一組對(duì)象。
對(duì)于遇到的各類,便建立一個(gè)新對(duì)象,它包含記錄保持在該類中的數(shù)據(jù)及由該類執(zhí)行的功能的數(shù)據(jù)項(xiàng)。將這一信息與代碼一起編譯,從而在運(yùn)行時(shí),各主處理器10便有了決定在哪一處理器上打開(kāi)任何給定類的新對(duì)象所必需的信息,這一點(diǎn)下面要更詳細(xì)地討論。
從而,步驟1002之后,將描述這一類型模型309a的源碼寫(xiě)入源碼存儲(chǔ)器308中。
在步驟1004中,預(yù)編譯程序316讀取源碼存儲(chǔ)器308中的源碼,并加上從其它主機(jī)10接收?qǐng)?bào)文的調(diào)用程序功能,并在收到時(shí)調(diào)用對(duì)應(yīng)的本機(jī)功能。
從而,在每一次檢測(cè)到源碼存儲(chǔ)器308中的源碼中的功能(“目標(biāo)功能”)時(shí),預(yù)編譯程序316便在調(diào)用程序功能中插入一條語(yǔ)句,該語(yǔ)句在收到來(lái)自另一處理器的旨在調(diào)用該目標(biāo)功能的報(bào)文時(shí)便調(diào)用該目標(biāo)功能。還加上作為報(bào)文對(duì)應(yīng)地將來(lái)自目標(biāo)功能的值返回的代碼。
從而,執(zhí)行了步驟1004之后,源碼存儲(chǔ)器308中的源碼中包含用于將從另一處理器接收的報(bào)文轉(zhuǎn)換成本機(jī)過(guò)程調(diào)用的調(diào)用程序代碼309b。
當(dāng)受到預(yù)編譯程序316編譯時(shí),源碼存儲(chǔ)器308中的源碼中所使用的任何指針定位單一的普通存儲(chǔ)空間內(nèi)的地址,因?yàn)榫幾g程序312預(yù)期單一處理器而不是分布式計(jì)算環(huán)境。然而,在分布式計(jì)算環(huán)境中,可將許多對(duì)象物理地定位在不同處理器上并從而不能通過(guò)單一存儲(chǔ)器空間中的指針訪問(wèn)。
從而,在步驟1006中,預(yù)編譯程序316掃描存儲(chǔ)器308中的源碼并用參照來(lái)替換指針的各檢測(cè)到的出現(xiàn),即使在不同的處理器上,該參照也能用來(lái)訪問(wèn)所涉及的對(duì)象的實(shí)際位置。從而,在執(zhí)行步驟1006的操作之后,源碼存儲(chǔ)器308中的源碼中還包含參照代碼309c。
各情況中增加的代碼中一方面包含特定的代碼語(yǔ)句,而另一方面“#include”語(yǔ)句,這種語(yǔ)句導(dǎo)致編譯程序316將存儲(chǔ)在庫(kù)314中的庫(kù)例程包含進(jìn)去。
類型模型建立參見(jiàn)圖11至13,下面更詳細(xì)地描述預(yù)編譯程序316在步驟1002中執(zhí)行的進(jìn)程。
預(yù)編譯程序316掃描存儲(chǔ)在源碼存儲(chǔ)器308中的代碼。在檢測(cè)到類說(shuō)明語(yǔ)句時(shí)(步驟1010),預(yù)編譯程序316編寫(xiě)代碼來(lái)建立(“說(shuō)明”)新類的新對(duì)象,如圖12中所示。圖12中,語(yǔ)句“#include”“SysType Model.h””包含說(shuō)明其它事物與新類Sysclass的附加代碼,并且語(yǔ)句”SysClass class 1(“X”)”說(shuō)明該類的新對(duì)象Class1,并存儲(chǔ)該對(duì)象所表示的類的名字(“X”)。從而,在步驟1012中,將這后一語(yǔ)句寫(xiě)入源碼存儲(chǔ)器308中。
當(dāng)在步驟1014中預(yù)編譯程序316在類說(shuō)明中遇到說(shuō)明數(shù)據(jù)類型說(shuō)明(如圖12中的語(yǔ)句“int X1”)的語(yǔ)句時(shí),它便寫(xiě)入(步驟1016)作為串?dāng)?shù)據(jù)存儲(chǔ)變量的名與類型的靜態(tài)數(shù)據(jù)說(shuō)明。
當(dāng)已掃描了該類中的所有數(shù)據(jù)說(shuō)明時(shí)(步驟1018),預(yù)編譯程序316在源碼存儲(chǔ)器308中的源碼中掃描構(gòu)造程序功能的出現(xiàn)(即在運(yùn)行時(shí)導(dǎo)致建立所涉及的類的新對(duì)象的功能)。
在檢測(cè)到構(gòu)造程序功能的說(shuō)明時(shí)(步驟1020),預(yù)編譯程序318便將該構(gòu)造程序功能的靜態(tài)說(shuō)明寫(xiě)入源碼存儲(chǔ)器308中(步驟1022)。
在掃描了類說(shuō)明中的該或所有構(gòu)造程序功能之后(步驟1024),預(yù)編譯程序316檢測(cè)(步驟1026)源碼存儲(chǔ)器308中的類說(shuō)明中出現(xiàn)的功能說(shuō)明(即子例程、程序或方法)并在每次檢測(cè)到功能時(shí)寫(xiě)入(步驟1028)包含作為串?dāng)?shù)據(jù)的該功能的類型與正文的變量的靜態(tài)說(shuō)明。
一旦檢測(cè)了該類中的所有功能(步驟1030),預(yù)編譯程序316以相同的方式進(jìn)行對(duì)源碼存儲(chǔ)器308中的源碼中說(shuō)明下一類(步驟1032)直到以這一方式掃描了整個(gè)源程序?yàn)橹?。此時(shí)如圖13中所示,便在修正的源碼中說(shuō)明了在原始源碼中各說(shuō)明的類的新類SysClass中的對(duì)象(CL1、CL2、CL3、CL4…)。
調(diào)用程序建立參見(jiàn)圖14與15,下面更詳細(xì)地描述了預(yù)編譯程序316在執(zhí)行圖10的步驟1004中的操作。
首先在步驟1040中,預(yù)編譯程序316插入“#include”語(yǔ)句來(lái)導(dǎo)致編譯程序312包含存儲(chǔ)在庫(kù)314中的執(zhí)行報(bào)文接收與發(fā)送任務(wù)的代碼。如下面更詳細(xì)地討論的,本上下文中的“報(bào)文”是從主處理器10的操作系統(tǒng)傳遞給其對(duì)象管理程序的,并可從其它主處理器10之一或在同主計(jì)算機(jī)10上的執(zhí)行另一進(jìn)程始發(fā)。
除了包含對(duì)包含形成報(bào)文轉(zhuǎn)發(fā)的代碼的庫(kù)文件的參照外,預(yù)編譯程序316還寫(xiě)入調(diào)用程序功能的說(shuō)明,該功能包含用于旨在導(dǎo)致其執(zhí)行的報(bào)文到達(dá)時(shí)執(zhí)行對(duì)功能的調(diào)用及通過(guò)返回報(bào)文返回任何功能的返回值的若干特定過(guò)程。
在步驟1042中,在再一次掃描源碼存儲(chǔ)器308中的源碼時(shí),預(yù)編譯程序316檢測(cè)構(gòu)造程序功能(“XX()”)的出現(xiàn),并在調(diào)用程序功能的定義中插入(步驟1044)代碼行,這些代碼行將接收的報(bào)文與對(duì)應(yīng)于調(diào)用程序功能的調(diào)用的正文比較,并在報(bào)文匹配(即構(gòu)成試圖執(zhí)行對(duì)構(gòu)造程序功能的調(diào)用)時(shí),調(diào)用該構(gòu)造程序功能。
同樣,在步驟1046中檢測(cè)到任何其它種類的功能時(shí)(例如圖15的功能“getX1()”),在步驟1048中,預(yù)編譯程序316便在調(diào)用程序功能中插入代碼行,這些代碼行將接收的報(bào)文與對(duì)應(yīng)于對(duì)功能名的調(diào)用的正文比較,在報(bào)文匹配時(shí)便調(diào)用指名的功能,并(步驟1050)生成包含這樣調(diào)用的功能的返回值的返回報(bào)文。
從而,如圖15中所示,圖14的進(jìn)程的操作之后,擴(kuò)展的源碼中包含對(duì)配置成接收?qǐng)?bào)文及在應(yīng)答中傳輸報(bào)文的調(diào)用程序功能的參照;以及包含在該功能中的一系列子測(cè)試,它們檢測(cè)對(duì)指名的本機(jī)功能的調(diào)用及執(zhí)行這些調(diào)用,并(在適當(dāng)時(shí))返回一個(gè)值。
指針替換參見(jiàn)圖16和17,下面更詳細(xì)地描述預(yù)編譯程序316在執(zhí)行圖10的步驟1006中的操作。
在步驟1052中,預(yù)編譯程序316掃描源碼存儲(chǔ)器308中的原始源碼以檢測(cè)對(duì)其它指名的對(duì)象的指針說(shuō)明的出現(xiàn)(如參見(jiàn)圖17,“X*otherX”)。
在檢測(cè)到對(duì)另一對(duì)象的這一指針時(shí),預(yù)編譯程序316插入(步驟1054)代碼來(lái)導(dǎo)致建立新對(duì)象(在與包括該指針的對(duì)象的同一地址空間中,即“本機(jī)”對(duì)象)。參見(jiàn)圖17,在本例中,該新對(duì)象名為“XRef”。
與新對(duì)象的構(gòu)造程序一起,建立調(diào)用該對(duì)象時(shí)執(zhí)行的代碼。參見(jiàn)圖17,代碼中包含發(fā)送包含該指針及相關(guān)操作符的報(bào)文及返回在應(yīng)答中接收的值的語(yǔ)句。
然后在步驟1056中,將原始源碼中的原始指針說(shuō)明“X*otherX”修正成“XRef otherX”,從而它能參照遠(yuǎn)程對(duì)象來(lái)替代本機(jī)對(duì)象。
參見(jiàn)圖18,圖18a示出通過(guò)編譯圖17的原始源碼所產(chǎn)生的效果。主處理器10的存儲(chǔ)器內(nèi)的對(duì)象X1執(zhí)行對(duì)該主處理器10的存儲(chǔ)器內(nèi)任何地方的對(duì)象X2的調(diào)用,后者返回一個(gè)應(yīng)答值。
參見(jiàn)圖18b,圖16的進(jìn)程的操作之后,將調(diào)用對(duì)象X1保存在第一處理器10a的存儲(chǔ)器中并將對(duì)象X2保存在第二處理器10b的存儲(chǔ)器中。從而在編譯期間,在調(diào)用對(duì)象X1的同一存儲(chǔ)器空間中建立第三對(duì)象X3,而否則會(huì)參照X2的指針參照現(xiàn)在參照X3。這種參照是由本機(jī)“代理”對(duì)象X3傳遞給包括第一處理器10a的對(duì)象管理程序108、操作系統(tǒng)106、處理器102及通信裝置100的低級(jí)進(jìn)程的,它是以供傳輸給第二處理器10b的報(bào)文的格式傳遞的,如下面將更詳細(xì)地描述的。
第二主處理器10b的通信裝置100、處理器102、操作系統(tǒng)106及對(duì)象管理程序108接收該報(bào)文,在其中(按照上面圖14插入的代碼)將該報(bào)文轉(zhuǎn)換成對(duì)對(duì)象X2的本機(jī)功能調(diào)用,并將對(duì)象X2返回的值作為報(bào)文傳輸回主處理器10a。將這一返回報(bào)文傳遞回本機(jī)代理對(duì)象X3,從而到原始調(diào)用對(duì)象X1。
從而,在檢測(cè)了源碼存儲(chǔ)器308中的原始源碼中的全部本機(jī)指針之后(步驟1058),可理解已將所有本機(jī)指針(否則是由編譯程序312生成的)轉(zhuǎn)換成對(duì)本機(jī)代理對(duì)象的參照,而后者又生成及接收原來(lái)參照的遠(yuǎn)程對(duì)象的報(bào)文。
如圖18b中所示,原來(lái)的參照對(duì)象可以物理地位于不同的主處理器上,或者可以位于原來(lái)的主處理器10上;采用報(bào)文傳遞通信而不用本機(jī)指針(如C++代碼通常會(huì)生成的)保證不論其位置都能到達(dá)對(duì)象。
運(yùn)行時(shí)期操作在上文中描述了預(yù)編譯期間本發(fā)明的操作。下面描述在運(yùn)行時(shí)期本實(shí)施例的操作。
在各主處理器10中,對(duì)象管理程序108(“daemon”),如將要更詳細(xì)地描述的,包括用于建立新對(duì)象的進(jìn)程;用于確定存儲(chǔ)給定的對(duì)象的位置(即主計(jì)算機(jī)10)的進(jìn)程;用于發(fā)送報(bào)文遠(yuǎn)程主計(jì)算機(jī)的進(jìn)程;以及用于從遠(yuǎn)程主計(jì)算機(jī)接收?qǐng)?bào)文的進(jìn)程。
參見(jiàn)圖19,各主計(jì)算機(jī)10的對(duì)象管理程序108包括用名字存儲(chǔ)當(dāng)前存在的對(duì)象的清單1510的對(duì)象位置表1500,與各對(duì)象的記錄1510a-1510z關(guān)聯(lián)的有項(xiàng)目1520a-1520z,其中存儲(chǔ)該對(duì)象當(dāng)前存儲(chǔ)在其上的主計(jì)算機(jī)10;及項(xiàng)目1530a-1530z,其中存儲(chǔ)初始建立該對(duì)象的主計(jì)算機(jī)的標(biāo)識(shí)。
參見(jiàn)圖20,存儲(chǔ)在對(duì)象管理程序108中的還有包括各主計(jì)算機(jī)的狀態(tài)數(shù)據(jù)的主機(jī)表1600,從中導(dǎo)出最適合于在上面建立新對(duì)象的主計(jì)算機(jī),因此,這一表中包括第一組項(xiàng)目1610a-1610z,存儲(chǔ)各主計(jì)算機(jī)的標(biāo)識(shí);相關(guān)聯(lián)的第二組項(xiàng)目1620a-1620z,存儲(chǔ)在該主計(jì)算機(jī)上可獲得的自由存儲(chǔ)容量;第三相關(guān)組項(xiàng)目1630a-1630z,存儲(chǔ)各主計(jì)算機(jī)10的可連接性數(shù)據(jù)(例如它所連接的其它計(jì)算機(jī)的數(shù)目),以及可選用的諸如關(guān)于處理速度等其它項(xiàng)目。
參見(jiàn)圖21a,各主計(jì)算機(jī)10的對(duì)象管理程序108定期查詢其操作系統(tǒng)106以判定是否已在為該處理器存儲(chǔ)在表1600中的任何數(shù)據(jù)中已有任何改變(如現(xiàn)在可獲得的存儲(chǔ)器比以前少)(步驟2002),并且在檢測(cè)到任何信息項(xiàng)的重大改變時(shí),在步驟2004中對(duì)象管理程序108通過(guò)通信裝置100將廣播報(bào)文傳輸給列出在表600中的所有其它主計(jì)算機(jī)10,發(fā)信號(hào)通知有關(guān)的新信息。
參見(jiàn)圖21b,當(dāng)任何主計(jì)算機(jī)10在步驟2006中接收這一報(bào)文時(shí),其對(duì)象管理程序108更新圖20的狀態(tài)表1600來(lái)反映這一新信息(步驟2008)。
從而,在任何時(shí)間上,各主計(jì)算機(jī)10的對(duì)象管理程序108在圖20的表16中維護(hù)所有其它主計(jì)算機(jī)以及其本身的最新?tīng)顟B(tài)信息。
參見(jiàn)圖22,下面描述承擔(dān)構(gòu)造新對(duì)象的進(jìn)程。在步驟2010中,當(dāng)在源碼中遇到調(diào)用對(duì)象構(gòu)造程序功能的指令(步驟2010)而不是在發(fā)出建立對(duì)象的調(diào)用的主處理器的地址空間中建立該對(duì)象時(shí),本實(shí)施例的對(duì)象管理程序108便在步驟2012中讀取主處理器狀態(tài)表1600及存儲(chǔ)在對(duì)象中的數(shù)據(jù)(上面關(guān)于圖11至13中所描述的進(jìn)程所建立的),這一數(shù)據(jù)描述要建立的對(duì)象將成為其成員的類。
從而,對(duì)象管理程序108知道了現(xiàn)在要建立的對(duì)象的要求(即它需要大量或小量的存儲(chǔ)器及它是否需要對(duì)或從許多通信點(diǎn)訪問(wèn))并具有關(guān)于各主計(jì)算機(jī)的可獲得的能力的數(shù)據(jù)。
在步驟2014中,對(duì)象管理程序108選擇要在其上建立對(duì)象的主計(jì)算機(jī)10。這一決定可以只根據(jù)哪一主計(jì)算機(jī)具有最多可利用的剩余存儲(chǔ)器,或根據(jù)哪一主計(jì)算機(jī)具有對(duì)調(diào)用該新對(duì)象的訪問(wèn)點(diǎn)最佳的連接性,但最好是考慮進(jìn)去以下各點(diǎn)的加權(quán)函數(shù)各處理器上可獲得的存儲(chǔ)器;各處理器的連接性;以及當(dāng)前處理器(即發(fā)現(xiàn)建立對(duì)象的調(diào)用的處理器)的優(yōu)先權(quán)。
在步驟2016中,對(duì)象管理程序108傳輸報(bào)文給選中的主計(jì)算機(jī)10,報(bào)文中包括該主計(jì)算機(jī)的地址以及調(diào)用要建立的對(duì)象所屬的類的構(gòu)造程序功能的命令、連同要建立的對(duì)象的名字。
在目標(biāo)主計(jì)算機(jī)10上,在步驟2018中接收?qǐng)?bào)文并在步驟2020中將其傳遞給調(diào)用程序功能(上面參照?qǐng)D14與15描述的在編譯時(shí)期建立的)。然后調(diào)用程序功能導(dǎo)致在目標(biāo)主計(jì)算機(jī)上建立該新對(duì)象。同時(shí),建立新對(duì)象的目標(biāo)主計(jì)算機(jī)10更新其對(duì)象表1500包含進(jìn)去該新對(duì)象。
最后,在步驟2022中,目標(biāo)主計(jì)算機(jī)向所有其它主計(jì)算機(jī)10廣播新對(duì)象的標(biāo)識(shí)及其位置,在步驟2024中在始發(fā)主計(jì)算機(jī)(以及其它計(jì)算機(jī))上收到該報(bào)文并用它來(lái)更新其對(duì)象表1500。從而,按照本實(shí)施例,對(duì)象是在運(yùn)行時(shí)期在選擇的計(jì)算機(jī)10上建立的,以便將對(duì)象的分布平衡到最合適的主計(jì)算機(jī)上,這是在周期性地更新各主計(jì)算機(jī)的狀態(tài)信息的基礎(chǔ)上做到的。
參見(jiàn)圖23,對(duì)象必須永久地駐留在給定的主機(jī)上,但可以從一臺(tái)主機(jī)移動(dòng)到另一臺(tái)主機(jī)(即從一臺(tái)主機(jī)的存儲(chǔ)器中刪除及包含到另一臺(tái)的存儲(chǔ)器中)。
在步驟2030中,各主計(jì)算機(jī)10的對(duì)象管理程序108觀察其狀態(tài)表1500。在步驟2032中,對(duì)象管理程序108確定是否要將一個(gè)對(duì)象從該對(duì)象管理程序108所在的主計(jì)算機(jī)10上的移走;例如,如果該主計(jì)算機(jī)10用完了可利用的存儲(chǔ)器。如果是,便選擇要移走的適當(dāng)對(duì)象(例如,很少訪問(wèn)的對(duì)象)。
在步驟2034中,觀察對(duì)象表1500,從對(duì)象的對(duì)應(yīng)字段1530中的項(xiàng)目中確定對(duì)象當(dāng)前是否位于建立它的主機(jī)上。如果是(即如果對(duì)象從建立起未移動(dòng)過(guò)),則在步驟2036中選擇一臺(tái)新主機(jī)(與上面對(duì)于建立新對(duì)象所描述的完全相同的方式)并在步驟2038中移動(dòng)該對(duì)象。
步驟2038包括兩部分首先傳輸報(bào)文給新主機(jī)指令在該主機(jī)上建立對(duì)象及指定存儲(chǔ)在對(duì)象中的數(shù)據(jù)的值;第二,從當(dāng)前主計(jì)算機(jī)10上儲(chǔ)器中刪除該對(duì)象。
如果在步驟2034中確定該對(duì)象當(dāng)前不在建立時(shí)所在的主計(jì)算機(jī)10上(即對(duì)象從建立時(shí)起已移動(dòng)過(guò)),則在步驟2040中對(duì)象管理程序?qū)в羞@一新主機(jī)位置的報(bào)文發(fā)送給原先在其上建立該對(duì)象的原媽主計(jì)算機(jī)10(從該對(duì)象的項(xiàng)目1530及表1500中確定的),并在接收到來(lái)自該原始主計(jì)算機(jī)的確認(rèn)(步驟2042)之后,如上面所描述的進(jìn)行(步驟2036)。
參見(jiàn)圖24,下面更詳細(xì)地描述對(duì)象位置表1500的使用。
當(dāng)要將報(bào)言語(yǔ)發(fā)送給對(duì)象時(shí),對(duì)象管理程序108首先在對(duì)象位置表1500中確定記錄為該對(duì)象所在的當(dāng)前主處理器10,并在步驟2050中發(fā)送調(diào)用該對(duì)象的給該當(dāng)前主機(jī)。
在大多數(shù)情況中,報(bào)文會(huì)到達(dá)正確的主機(jī),但由于通信中的干擾或某些其它原因而有可能對(duì)象表1500不是完全最新的,從而被調(diào)用的對(duì)象不在(或不再在)指示的主計(jì)算機(jī)上。
參見(jiàn)圖24b,當(dāng)報(bào)文尋址的主計(jì)算機(jī)10在步驟2052中收到文時(shí),它便在2054中判定該對(duì)象是否記錄為存在在其自己的對(duì)象位置表1500中,如果存在,便在步驟2056中調(diào)用該對(duì)象,而在步驟2058中傳輸回任何返回文,如上所述。
如果否,則在步驟2060中,主計(jì)算機(jī)發(fā)信號(hào)回去通知調(diào)用對(duì)象失敗。
始發(fā)主計(jì)算機(jī)在步驟2062中收到這一報(bào)文時(shí),便在步驟2066中發(fā)送查詢報(bào)文給在表1500中記錄為在其上原始構(gòu)造出問(wèn)題的對(duì)象的原始主計(jì)算機(jī)10。由于圖23的獨(dú)立位置信號(hào)步驟2040、2042,在其上構(gòu)造該對(duì)象的原始主機(jī)上的對(duì)象位置表1500對(duì)于該對(duì)象而言應(yīng)當(dāng)是完全最新的。
參見(jiàn)圖24c,當(dāng)原始主計(jì)算機(jī)在步驟2068中接收位置查詢信號(hào)時(shí),其對(duì)象管理程序108在步驟2070中參看包含在其中的對(duì)象位置表,并在步驟2072中發(fā)信號(hào)通知所關(guān)心的對(duì)象的確定的位置。第一主計(jì)算機(jī)接收來(lái)自原始主機(jī)的位置信號(hào),并在圖24a的步驟2074中確定主計(jì)算機(jī)這樣指示的對(duì)象位置是否與在步驟2050已向其發(fā)送報(bào)文的對(duì)象的位置不同。如果是,對(duì)象管理程序108在步驟2076中更新位置表1500,并返回到步驟2050去將報(bào)文重復(fù)傳輸給為該對(duì)象指定的新主計(jì)算機(jī)10的位置。
如果接收的地址與前面發(fā)送報(bào)文的地址相同,在步驟2078中對(duì)象管理程序108返回指示不能到達(dá)該對(duì)象的報(bào)文給從其始發(fā)試圖調(diào)用該對(duì)象的對(duì)象、進(jìn)程或用戶。
從而可以看出在本實(shí)施例中,各主計(jì)算機(jī)10都帶有在其中記錄了系統(tǒng)中所有對(duì)象的位置的對(duì)象位置表,因此各主機(jī)能自主地操作來(lái)調(diào)用不同主計(jì)算機(jī)上的其它對(duì)象,無(wú)須參照中心數(shù)據(jù)庫(kù)。然而,通過(guò)提供各主計(jì)算機(jī)10附加跟蹤原始建立在該主計(jì)算機(jī)上的所有對(duì)象的位置,即使這些對(duì)象的位置隨后移動(dòng)到了不同的主計(jì)算機(jī),也能增加高級(jí)的完整性。
此外,顯而易見(jiàn),各主計(jì)算機(jī)10維護(hù)位于其本身的存儲(chǔ)區(qū)內(nèi)的對(duì)象的精確記錄。
其它實(shí)施例與改型當(dāng)然,有可能為各主計(jì)算機(jī)本機(jī)內(nèi)存儲(chǔ)的對(duì)象及為原始建立在該主計(jì)算機(jī)上的對(duì)象,以及存儲(chǔ)在其它主計(jì)算機(jī)上的對(duì)象,提供獨(dú)立的表。然而,提供存儲(chǔ)所有對(duì)象位置的單一的表能保證更大的靈活性,因?yàn)樗兄魈幚砥?0的所有對(duì)象位置表1500基本上是相同的,便有可能在擴(kuò)展分布式計(jì)算系統(tǒng)以包含新的主處理器系統(tǒng)時(shí),將對(duì)象位置表從任何一臺(tái)主處理拷貝到新主處理器上即可。
從上文中顯而易見(jiàn),許多改型與替換都是可能的。例如,為了以上理由,將本發(fā)明作為與傳統(tǒng)的C++編譯程序協(xié)作的預(yù)編譯程序提供是方便的,但一樣可能將本發(fā)明集成進(jìn)非傳統(tǒng)的編譯程序中(實(shí)際上可以認(rèn)為預(yù)編譯程序分編譯程序的組合正好包含這樣做)。
自然,本發(fā)明不僅可用于C++并且也可用于要在分布式環(huán)境中提供的諸如Smalltalk(TM)等其它面向?qū)ο蟮恼Z(yǔ)言。更廣義地,有可能將等效的技術(shù)用在非面向?qū)ο蟮恼Z(yǔ)言及非分布式系統(tǒng)上。雖然已將本發(fā)明描述為將編譯程序裝置包含在電信系統(tǒng)中,應(yīng)理解在實(shí)踐中該編譯程序裝置可以在不同的司法管轄區(qū)內(nèi)并通過(guò)國(guó)際電信網(wǎng)連接到主計(jì)算機(jī)上,從而,對(duì)于與它一起使用的電信網(wǎng)組合的及分離的編譯程序裝置兩者都要求保護(hù)。
自然,電信網(wǎng)以外的應(yīng)用也是可能的,諸如共亨的分布式計(jì)算。
對(duì)于熟悉本技術(shù)的人員,許多其它的替換與改型都是顯而易見(jiàn)的。從而,本發(fā)明旨在包羅這里所公開(kāi)的任何與所有主題,不論所附的權(quán)利要求是否覆蓋。
與本發(fā)明名稱相同的同一日期提交的我們的另一英國(guó)專利申請(qǐng)9600854.5可用于本發(fā)明,并通過(guò)引用完整地將其結(jié)合在此。具體地,從其中導(dǎo)出的功能信息可以存儲(chǔ)在這里描述的類型模型中。
權(quán)利要求
1.一種分布式計(jì)算系統(tǒng),包括多臺(tái)主計(jì)算機(jī)(10),各主計(jì)算機(jī)包括存儲(chǔ)預(yù)定的數(shù)據(jù)記錄(112)及用于訪問(wèn)所述數(shù)據(jù)記錄(112)的程序(110)的存儲(chǔ)空間(104),其特征在于在各主計(jì)算機(jī)(10)上提供有在所有主計(jì)算機(jī)(10)上的所有數(shù)據(jù)記錄(112)的位置的表(1500)。
2.按照權(quán)利要求1的系統(tǒng),其中可將數(shù)據(jù)記錄(112)從第一主計(jì)算機(jī)(10a)移動(dòng)到第二主計(jì)算機(jī)(10b)。
3.根據(jù)權(quán)利要求2的系統(tǒng),其中,在這一移動(dòng)上,將記錄在其上的重新定位的主計(jì)算機(jī)的位置發(fā)信號(hào)通知各其它主計(jì)算機(jī)(10)。
4.按照權(quán)利要求2的系統(tǒng),其中各所述位置表(1500)還存儲(chǔ)在其上建立數(shù)據(jù)記錄的主計(jì)算機(jī)(10)的位置。
5.按照權(quán)利要求4的系統(tǒng),其中,為了訪問(wèn)數(shù)據(jù)記錄,將各所述計(jì)算機(jī)配置成讀取它所存儲(chǔ)的位置表(1500),然后在必要時(shí)訪問(wèn)在其上建立數(shù)據(jù)記錄(112)的主計(jì)算機(jī)(10)的位置表(1500)。
6.按照權(quán)利要求1至5中任何一項(xiàng)的系統(tǒng),其中所述數(shù)據(jù)記錄(112)包括各只能通過(guò)相關(guān)代碼(110)訪問(wèn)的對(duì)象。
7.按照權(quán)利要求6的系統(tǒng),其中所述對(duì)象包括同一類的多個(gè)對(duì)象(112),以及其中所述類的多個(gè)對(duì)象共用所述相關(guān)代碼(110)。
8.一種電信系統(tǒng),包括由多臺(tái)互連的計(jì)算機(jī)(10)及用于為所述計(jì)算機(jī)(10)編譯程序的編譯裝置(30)構(gòu)成的分布式控制系統(tǒng),裝置(30)包括配置成編譯供在單一主計(jì)算機(jī)(10)上執(zhí)行的源程序的編譯程序(312);以及配置成接收適合于單一計(jì)算機(jī)執(zhí)行的原始源程序及修正所述原始源程序以增加中的源碼(309)借此生成修正的源程序的預(yù)編譯程序(316);該修正的源程序在經(jīng)所述編譯程序(312)編譯后,將在所述分布式控制系統(tǒng)中執(zhí)行。
9.按照權(quán)利要求8的系統(tǒng),其中所述編譯裝置(30)配置成生成所述編譯后的程序的多份拷貝,各拷貝在所述互連的計(jì)算機(jī)(10)之一上執(zhí)行。
10.一種供與分布式控制系統(tǒng)一起使用的編譯程序裝置(30),該分布式控制系統(tǒng)包括多個(gè)互連的計(jì)算機(jī)(10),所述編譯程序裝置配置成接受適合于在單一計(jì)算機(jī)(10)上編譯的、源語(yǔ)言的原始源程序,其特征在于分布式控制系統(tǒng)是松耦合的;及在于所述編譯程序裝置配置成接受所述原始源代碼程序并在所述原始源程序中定位可從所述源程序中其它點(diǎn)上調(diào)用的功能,并使所述原始源程序適應(yīng)于允許從其它計(jì)算機(jī)(10)遠(yuǎn)程調(diào)用所述功能。
11.一種供與包含多臺(tái)互連的計(jì)算機(jī)(10)的分布式控制系統(tǒng)一起使用的編譯程序裝置(30),所述編譯程序裝置配置成接受適合于在單一計(jì)算機(jī)(10)上編譯的、源語(yǔ)言的原始源程序,其特征在于,分布式控制系統(tǒng)是松耦合的;及在于該編譯程序裝置(30)包括編譯程序(312)及配置成在所述原始源程序中定位指針,這些指針將由所述編譯程序(312)作為對(duì)單一計(jì)算機(jī)存儲(chǔ)空間中的區(qū)域的指針編譯,以及修正所述原始源程序以便能參照其它所述計(jì)算機(jī)(10)的存儲(chǔ)器空間中的對(duì)象。
12.一種供與包含多臺(tái)互連的計(jì)算機(jī)(10)的分布式控制系統(tǒng)一起使用的編譯程序裝置(30),所述編譯程序裝置配置成接受適合于在單一計(jì)算機(jī)(10)上編譯的源語(yǔ)言的原始源程序,其特征在于該分布式控制系統(tǒng)是松耦合的;及在于所述編譯程序裝置(30)配置成讀取所述始源程序并在其上加上一組描述包括在所述原始源程序中的數(shù)據(jù)與程序結(jié)構(gòu)的數(shù)據(jù)記錄。
13.按照權(quán)利要求8至12中任何一項(xiàng)的裝置或系統(tǒng),其中所述原始源程序是面向?qū)ο蟮恼Z(yǔ)言的。
14.按照權(quán)利要求13的裝置或系統(tǒng),其中所述語(yǔ)言為C++或其變型。
全文摘要
一種用于與傳統(tǒng)的面向?qū)ο蟮木幾g程序(312)一起操作的預(yù)編譯程序(316),修改原始源碼以增加使源碼適應(yīng)于松耦合的多處理器操作的新語(yǔ)句。
文檔編號(hào)G06F15/16GK1208482SQ9719172
公開(kāi)日1999年2月17日 申請(qǐng)日期1997年1月15日 優(yōu)先權(quán)日1996年1月16日
發(fā)明者保羅·安冬尼·馬丁 申請(qǐng)人:英國(guó)電訊有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
始兴县| 福海县| 图木舒克市| 遵化市| 长阳| 罗源县| 深泽县| 辉县市| 道孚县| 九龙县| 吉安县| 大余县| 牟定县| 巴东县| 华安县| 新龙县| 商南县| 烟台市| 古田县| 西华县| 汾西县| 中方县| 如东县| 阿尔山市| 昌江| 南漳县| 海丰县| 化隆| 茶陵县| 滦南县| 荥经县| 江门市| 巴马| 通许县| 大同市| 永新县| 松阳县| 濉溪县| 囊谦县| 米易县| 兴国县|