專利名稱:模塊化計(jì)算機(jī)系統(tǒng)以及相關(guān)方法
本申請(qǐng)是申請(qǐng)?zhí)枮?1814112.9的,申請(qǐng)日為2001年6月14日的,發(fā)明名稱為“模塊化計(jì)算機(jī)系統(tǒng)以及相關(guān)方法”的中國專利申請(qǐng)的分案申請(qǐng)。
介紹本發(fā)明涉及通常方式上的軟件系統(tǒng),該系統(tǒng)允許用戶與計(jì)算機(jī)硬件相交互。
更具體的說,本發(fā)明涉及一種包括有操作系統(tǒng)的軟件系統(tǒng),該操作系統(tǒng)可提供靈活的性能和執(zhí)行速度,即使在特強(qiáng)大的當(dāng)今操作系統(tǒng)的情況下也難以想象該操作系統(tǒng)。
本發(fā)明還涉及與該系統(tǒng)有關(guān)的處理方法。
同樣,如上所述,本發(fā)明可有利的適用于(但不局域限于此)開發(fā)與板上計(jì)算機(jī)系統(tǒng)相關(guān)的應(yīng)用程序。
注意到操作系統(tǒng)是任何軟件系統(tǒng)的主要構(gòu)件,該操作系統(tǒng)是由與組成計(jì)算機(jī)系統(tǒng)的硬件直接交互的部件構(gòu)成。
人們已經(jīng)了解了許多操作系統(tǒng),這些操作系統(tǒng)允許開發(fā)隊(duì)伍創(chuàng)建一應(yīng)用程序并允許最終用戶實(shí)現(xiàn)這些應(yīng)用程序。
現(xiàn)有的操作系統(tǒng)被大略分解成兩個(gè)主要的類。
單片體系結(jié)構(gòu)第一類由單片體系結(jié)構(gòu)操作系統(tǒng)組成。這樣的系統(tǒng)由包括三個(gè)主要層的單一軟件組組成●通常所說的與系統(tǒng)內(nèi)核相對(duì)應(yīng)的底層。內(nèi)核被定義為被永久加載到系統(tǒng)存儲(chǔ)器并可被所有應(yīng)用程序包所使用的無源特權(quán)代碼集。
其根本任務(wù)是調(diào)節(jié)系統(tǒng)共享資源的使用。為了完成該任務(wù),內(nèi)核可滿足某一重要功能(functionalities)的需求,包括√存儲(chǔ)器的管理(在應(yīng)用程序間分配存儲(chǔ)資源以作為它們要求的功能等等),√處理過程的管理(調(diào)度、訪問處理器的管理、多任務(wù)管理等等),√外圍設(shè)備驅(qū)動(dòng)器的管理,√文件管理(名字、地址等等),√用戶管理(訪問、概況等等)。
●通常所說的專用于應(yīng)用程序的頂層,用戶與該頂層相交互以便將指令輸入到系統(tǒng)并輸入被傳送到內(nèi)核的請(qǐng)求。
●通常被稱為“信息庫”的中間級(jí),該中間級(jí)有時(shí)被認(rèn)為是一層并且在該中間級(jí)中周期性的函數(shù)(functionality)聚集在一起以允許將其快速實(shí)現(xiàn)。
附加在正文之后的圖1示意性的表示了這種單片體系結(jié)構(gòu),該圖1給出了層K(內(nèi)核)、L(信息庫)以及A(應(yīng)用程序)的集中式且分層的結(jié)構(gòu)。
“層”的定義可對(duì)操作系統(tǒng)的構(gòu)件間的通信進(jìn)行按級(jí)別的排列,最底層被定義為“特權(quán)”層,該層可被稱為高級(jí)層。
因此這些層是共享同一特權(quán)的軟件構(gòu)件類。同時(shí),特權(quán)被定義為使用計(jì)算機(jī)系統(tǒng)某一資源的能力(硬件資源或軟件資源)。
如所述的,根據(jù)該單片體系結(jié)構(gòu)的系統(tǒng)結(jié)構(gòu)由單個(gè)軟件組構(gòu)成,該單個(gè)軟件組是以“模塊方式”(blockwise)進(jìn)行編譯的。
該結(jié)構(gòu)的優(yōu)點(diǎn)在于該系統(tǒng)通常是穩(wěn)定且高速的。
然而,根據(jù)系統(tǒng)的靈活性和升級(jí)性該操作系統(tǒng)顯示出重要的局限性。
實(shí)際上,對(duì)內(nèi)核有系統(tǒng)的修改涉及對(duì)內(nèi)核進(jìn)行完全的重新編譯。對(duì)于每一個(gè)修改而言,因此必須負(fù)責(zé)處理再次全部接受系統(tǒng)。
同時(shí),因?yàn)橄到y(tǒng)的升級(jí)是麻煩且復(fù)雜的,因此不利于系統(tǒng)的不變性,且其維護(hù)是昂貴的。此外,由于連續(xù)“增加一方”而導(dǎo)致了系統(tǒng)成為不穩(wěn)定的。
另外,在單板計(jì)算機(jī)系統(tǒng)的情況下(也就是說至少一個(gè)部分被集成到諸如車輛、攜帶式電話之類的移動(dòng)硬件上),該不變性顯示出其自身是及其不利的,因?yàn)樗€使它必須先驗(yàn)的固定一個(gè)表示操作系統(tǒng)特征的特定號(hào)碼(例如速度的執(zhí)行或存儲(chǔ)器的大小等等是特權(quán)的事實(shí))。
實(shí)際上,單板應(yīng)用程序的多樣性經(jīng)常面臨相關(guān)計(jì)算機(jī)系統(tǒng)所需的不同程序員,并且它有利于可對(duì)系統(tǒng)的主要特征進(jìn)行自由定義和升級(jí)。
因此,由于在上文中所提到的缺點(diǎn)以及主要由于單片操作系統(tǒng)不變性的阻礙,因此該單片體系結(jié)構(gòu)主要是用于不需要對(duì)硬件和軟件進(jìn)行重大升級(jí)的應(yīng)用程序,并且它不適合于單板系統(tǒng)(on-board systems)。
微內(nèi)核體系結(jié)構(gòu)為了減小該局限性,已經(jīng)設(shè)計(jì)出第二類操作系統(tǒng)的體系結(jié)構(gòu)。存在諸如圖2所示的微內(nèi)核型系統(tǒng)。
該圖按照單片系統(tǒng)的方式給出了該微內(nèi)核系統(tǒng)是由圍繞一中心內(nèi)核的同心層組成,該中心內(nèi)核由操作系統(tǒng)的“核”構(gòu)成。
內(nèi)核構(gòu)件MK在這里被簡化為“微內(nèi)核”,其僅僅可完成系統(tǒng)操作所需的基本功能,即●存儲(chǔ)器的管理,●過程的管理,至少關(guān)于通常所說的低級(jí)過程—與任務(wù)的轉(zhuǎn)換有關(guān)。它指出某一微內(nèi)核系統(tǒng)借助于服務(wù)器來管理高級(jí)過程,同時(shí)其他的微內(nèi)核根據(jù)該微內(nèi)核本身來管理它們,●端口(郵箱)和傳送消息的管理,●各個(gè)驅(qū)動(dòng)器間的硬件資源的分配屬性(驅(qū)動(dòng)器被定義為用于控制卡或任意外圍設(shè)備操作的程序)。
傳統(tǒng)上由單片系統(tǒng)的內(nèi)核所完成的其他功能是由服務(wù)器S來完成的。這些服務(wù)器形成了應(yīng)用程序A的頂層和信息庫的L層之間的中間層,該L層直接環(huán)繞著微內(nèi)核MK。它們比應(yīng)用程序A優(yōu)選。
該微內(nèi)核體系結(jié)構(gòu)可對(duì)操作系統(tǒng)進(jìn)行升級(jí)而無需對(duì)整個(gè)系統(tǒng)進(jìn)行重新編譯;因此與單片系統(tǒng)相比,第二類操作系統(tǒng)具有一定的靈活性。
然而,該類體系結(jié)構(gòu)仍然被構(gòu)造成在中心內(nèi)核周圍的連續(xù)層,并且對(duì)于操作系統(tǒng)內(nèi)部的所有信息交換必須通過微內(nèi)核。
事實(shí)上,通過系統(tǒng)連續(xù)層的信息流通引起了額外的處理并使系統(tǒng)的所有操作慢下來,該信息流通比單片系統(tǒng)的情況還要多很多。
同時(shí),因此對(duì)系統(tǒng)進(jìn)行任意新的開發(fā)都必須使這些信息交換最佳化,因此使程序員的工作變得復(fù)雜。
因此與單片系統(tǒng)相比,雖然微內(nèi)核系統(tǒng)提供了額外的靈活性,但是很顯然微內(nèi)核與過長的處理操作有關(guān)并僅僅表示不夠好的解決方案。
對(duì)于現(xiàn)有體系結(jié)構(gòu)的附加說明此外,當(dāng)今的系統(tǒng)(單片的和微內(nèi)核的)都是以內(nèi)核構(gòu)件為中心,圍繞在該內(nèi)核周圍的連續(xù)層被按級(jí)別排列以作為預(yù)先規(guī)定的訪問特權(quán)的函數(shù)。
實(shí)際上在所有這些系統(tǒng)中,根據(jù)系統(tǒng)本身所固有的不變類型,每個(gè)程序有系統(tǒng)地與給定層相關(guān),因此該程序有系統(tǒng)地附帶一個(gè)超出程序員控制的特權(quán)層,因此形成了為現(xiàn)有系統(tǒng)所共有的第一個(gè)缺點(diǎn)。
因此,程序例如可以是●“內(nèi)核”或“管理程序”或“系統(tǒng)”(管理與硬件相交互的特權(quán)代碼),●無源函數(shù)的“信息庫”構(gòu)件(數(shù)學(xué)的、視頻解壓縮,等等),●應(yīng)用程序包代碼。
這些各種類型的代碼經(jīng)常與不同文件格式相對(duì)應(yīng),并且由操作系統(tǒng)的不同構(gòu)件來進(jìn)行不同的管理。
同時(shí),因此不可能利用單個(gè)工具來顯示所有安裝在系統(tǒng)中的程序;同樣的,它通常不可能在系統(tǒng)的操作期間替換“內(nèi)核”部分,該部分形成了不透明且不可分的塊。
它允許不同的工具被用于創(chuàng)建并調(diào)試這些不同類型的代碼,因此在所有的情況下開發(fā)操作都是很復(fù)雜;這形成了為現(xiàn)有系統(tǒng)所共有的第二個(gè)缺點(diǎn)。
同時(shí),應(yīng)該知道的是現(xiàn)有系統(tǒng)形成了系統(tǒng)的絕對(duì)中心。該內(nèi)核具有一個(gè)由其特權(quán)級(jí)別所作用的特定狀態(tài);這形成了為現(xiàn)有系統(tǒng)所共有的第三個(gè)缺點(diǎn)。
此外,為現(xiàn)有軟件系統(tǒng)所共有的另一個(gè)特征是利用下述來執(zhí)行它們的設(shè)計(jì)●函數(shù)分析階段,該階段根據(jù)所要實(shí)現(xiàn)的函數(shù)來描述系統(tǒng),因此形成了一個(gè)非常直觀且可立即理解的描述級(jí),●隨后的寫程序和編譯程序,在該階段期間可理解級(jí)別和可讀性級(jí)別被相反的改變,程序形成了不透明設(shè)置,不透明設(shè)置的操作方式是預(yù)先規(guī)定的。
這些系統(tǒng)的程序?qū)ψ鳛椤白詣?dòng)操作”的請(qǐng)求進(jìn)行操作,內(nèi)核僅僅引入反作用以作為應(yīng)用程序所明示的需要函數(shù)。
很顯然內(nèi)核經(jīng)常根據(jù)應(yīng)用程序所明示的需要來引入之后的反作用,盡管它對(duì)資源進(jìn)行了處理并且可利用最優(yōu)化的函數(shù)以改善系統(tǒng)的所有操作。這形成了現(xiàn)有系統(tǒng)的另外一個(gè)基本局限性。
如所述的,在本發(fā)明在另一方面的情況下,對(duì)系統(tǒng)所有組講的操作方式進(jìn)行集成并且將函數(shù)分析階段過程中所建立的函數(shù)鏈接保留在系統(tǒng)的體系結(jié)構(gòu)中。
這樣,諸如由Java語言(注冊(cè)商標(biāo))來表示有關(guān)的公知系統(tǒng),可在下面一文中得到對(duì)該系統(tǒng)的說明。該文章的題目為“利用Java3.0版本來編寫程序的入門,2000年夏”,作者為D.J.ECK——數(shù)學(xué)和計(jì)算機(jī)科學(xué)系,霍巴特和威廉史密斯大學(xué),日內(nèi)瓦,紐約,US24/05/2000,2001年3月7日訪問因特網(wǎng)地址http://math.hws.edu/cs124/downloads/javanotes3.pdf>。它有利于在建立實(shí)體間的關(guān)系過程中提供增加靈活性的真實(shí)度。
在已知語言(例如Java)的情況下可將術(shù)語“實(shí)體”理解為所采用的目標(biāo)和類別。
在Java語言的情況下,事實(shí)上,如果給定實(shí)體實(shí)際上調(diào)用另外的其操作所需的實(shí)體,那么程序員必須明確的指定哪一個(gè)實(shí)體將被加載到系統(tǒng)隨機(jī)存取存儲(chǔ)器中以允許所述給定實(shí)體調(diào)用適當(dāng)操作的實(shí)體。
因此很明顯的是這類公知語言不過迫使從設(shè)計(jì)中選擇正確的一個(gè),盡管它實(shí)際上提供了與目標(biāo)體系結(jié)構(gòu)相關(guān)的靈活性,因此極大的限制了系統(tǒng)的靈活性。
此外,這種公知系統(tǒng)不能在加載操作的過程中返回任何錯(cuò)誤消息,因此它可將有故障的實(shí)體或者不能完成其任務(wù)的一個(gè)實(shí)體加載到系統(tǒng)中。同時(shí),僅僅在系統(tǒng)的所有操作期間或在因此不得不被專門調(diào)度的測試操作期間記錄下所述有故障的實(shí)體。
發(fā)明目的本發(fā)明的主要目的就是提出一個(gè)可提供靈活性性能和執(zhí)行速度性能的操作系統(tǒng),即使對(duì)于當(dāng)今最強(qiáng)大的操作系統(tǒng)也難以想象上述這些性能。
本發(fā)明的另一個(gè)目的就是提出一個(gè)軟件系統(tǒng),該系統(tǒng)可進(jìn)一步克服上文中根據(jù)所有現(xiàn)有系統(tǒng)而提到的缺點(diǎn)。
本發(fā)明的又一個(gè)目的就是提出一種軟件解決方案,該方案可處理在設(shè)計(jì)單板系統(tǒng)的過程中所固有的限制條件。
為了實(shí)現(xiàn)這些目的,本發(fā)明提出一種用于開發(fā)將由計(jì)算機(jī)系統(tǒng)所實(shí)現(xiàn)的計(jì)算機(jī)項(xiàng)目的處理方法,該處理包括●用于列出將要實(shí)現(xiàn)的函數(shù)的函數(shù)分析階段(601);●創(chuàng)建項(xiàng)目組件(C1、C2)以實(shí)現(xiàn)所述函數(shù)的階段;●編輯階段;●對(duì)組件進(jìn)行說明使組件被計(jì)算機(jī)所考慮的階段;●將所述組件加載到系統(tǒng)存儲(chǔ)器區(qū)域以由計(jì)算機(jī)來實(shí)現(xiàn)其組件的階段,其特征在于●每個(gè)組件完全封裝在軟件目標(biāo)中,該軟件目標(biāo)通過接口程序與系統(tǒng)的剩余部分相隔離,該接口程序借助于語言描述了由該組件提供的函數(shù)以及在其執(zhí)行期間應(yīng)當(dāng)被提供的函數(shù);●當(dāng)載入每個(gè)組件時(shí)(C1-“調(diào)用組件”),將所述組件的二進(jìn)制格式的接口程序發(fā)送到被永久載入該系統(tǒng)中的組件(GD);●執(zhí)行自動(dòng)搜索,搜索用于提供運(yùn)行該調(diào)用組件(C1)所需的函數(shù)的組件,以便在所述調(diào)用組件(C1)與被調(diào)用組件(C2)之間為通過該調(diào)用組件所調(diào)用的每個(gè)函數(shù)建立通信信道。
下面是按照本發(fā)明處理方法的優(yōu)選但非限制的方面●通過永久載入該系統(tǒng)中的所述組件(GD)執(zhí)行所述自動(dòng)搜索;●一旦建立了通信信道,則組件之間彼此可直接通信;●為了在調(diào)用組件(C1)與被調(diào)用組件(C2)之間建立通信信道,所述永久載入該系統(tǒng)中的組件(GD)構(gòu)造“視圖”,該“視圖”包括所引入函數(shù)的屬性值以及指針;●所述自動(dòng)搜索在鏈接圖表中執(zhí)行,該鏈接圖表是載入該系統(tǒng)中的組件的列表;●當(dāng)搜索所述調(diào)用組件(C1)所需的函數(shù)時(shí),如果所述永久載入該系統(tǒng)中的組件(GD)確定通過鏈接圖表中的一個(gè)組件(C2)提供所述函數(shù),則在該鏈接圖表的所述組件(C2)與該調(diào)用組件(C1)之間建立通信信道;●在說明期間,在該系統(tǒng)的專用組件聲明每個(gè)組件,該系統(tǒng)的專用組件在單獨(dú)的列表中存儲(chǔ)所述組件,單獨(dú)的列表編組了已經(jīng)在該系統(tǒng)的所述專用組件中聲明的整個(gè)組件;●該系統(tǒng)的所述專用組件是載入程序,該載入程序在載入程序的單獨(dú)列表中存儲(chǔ)所述被聲明的組件,該載入程序的單獨(dú)列表編組了已經(jīng)在此所聲明的整個(gè)組件,以及通過該載入程序執(zhí)行調(diào)用組件(C1)的所述二進(jìn)制格式接口程序的發(fā)送;●該系統(tǒng)的每個(gè)載入程序與可以存儲(chǔ)組件的特定介質(zhì)相關(guān);●所述永久載入該系統(tǒng)中的組件(GD)在該鏈接圖表中輸入不同載入程序的組件,使得不同載入程序的組件相關(guān)聯(lián);●當(dāng)搜索所述調(diào)用組件(C1)所需的函數(shù)時(shí),如果所述永久載入該系統(tǒng)中的組件(GD)確定鏈接圖表中的沒有組件提供所述函數(shù),則其查詢系統(tǒng)的加載程序的列表,以便確定在這些加載程序聲明的一個(gè)組件是否提供該所需的函數(shù);●可以利用“加載時(shí)間”屬性或“運(yùn)行時(shí)間”屬性來定義該所需的函數(shù)(F1);●該處理方法特征在于-如果利用“加載時(shí)間”屬性定義該所需的函數(shù)(F1),則所述永久載入該系統(tǒng)中的組件(GD)在載入調(diào)用所述函數(shù)的組件(C1)之前,載入提供此函數(shù)的組件(C2);-如果利用“運(yùn)行時(shí)間”屬性定義該所需的函數(shù)(F1),則調(diào)用此函數(shù)的組件(C1)執(zhí)行明確的調(diào)用,調(diào)用由所述永久載入該系統(tǒng)中的組件(GD)所提供的“depmgr”函數(shù),以調(diào)用“運(yùn)行時(shí)間”函數(shù);●當(dāng)載入組件以便運(yùn)行時(shí),所述永久載入該系統(tǒng)中的組件(GD)分析用其接口程序所表示的其相關(guān)性,并且自動(dòng)設(shè)法對(duì)其中所表示的所有相關(guān)性進(jìn)行解析,為任何由此實(shí)現(xiàn)的組件提供它本身所需的函數(shù);●組件的接口程序的內(nèi)容是在其編譯之后容易通過系統(tǒng)運(yùn)行開發(fā)以便按照所需的函數(shù)將組件連接到一起的說明,并且所述說明的語言用于指定組件含有的代碼的類型;
●所述說明語言用于指定可訪問給定函數(shù)的代碼的類型,通過該說明語言可以選擇最優(yōu)化的通信裝置;●所述永久載入該系統(tǒng)中的組件(GD)載入組件所需的其屬性是“加載時(shí)間”屬性的組件,解析它們的相關(guān)性并在這些不同組件之間建立通信信道,使得這些組件彼此可以直接通信;●為了在兩個(gè)組件(C1、C2)之間建立通信信道,能夠使用四種預(yù)定的通信模式,或者使用根據(jù)兩個(gè)組件各自的接口程序中指定的特征而特別創(chuàng)建的專用模式;●所述四種預(yù)定的通信模式是-直接調(diào)用;-系統(tǒng)調(diào)用;-線程的轉(zhuǎn)換;-消息的傳送;●該“消息的傳送”模式專門用于未出現(xiàn)在三種其它模式之一中的調(diào)用;●該系統(tǒng)的組件可被創(chuàng)建、編譯、加載到系統(tǒng)的存儲(chǔ)器中,并且可彼此獨(dú)立地卸載,使得該系統(tǒng)可被動(dòng)態(tài)地更新而不需重新啟動(dòng);●當(dāng)自動(dòng)搜索時(shí),所述永久載入該系統(tǒng)中的組件(GD)考慮與該組件相關(guān)的標(biāo)準(zhǔn);●根據(jù)該組件的接口程序部分的屬性表示所述與組件相關(guān)的標(biāo)準(zhǔn);●使每個(gè)組件與給定的特權(quán)級(jí)別相關(guān),該特權(quán)級(jí)別按照其他組件的各個(gè)特權(quán)級(jí)別決定該組件訪問其他組件的可能性;●使用下面的特權(quán)級(jí)別-Inprocess;-Spawn;-IO;-Supervisor。
參考隨后的除去圖1和圖2的附圖,通過閱讀下述對(duì)本發(fā)明實(shí)施例的說明,根據(jù)本發(fā)明的系統(tǒng)的其他方面、目的以及優(yōu)點(diǎn)則變得顯而易見。在該附圖中已經(jīng)對(duì)圖1和圖2做了說明●圖3a至3c根據(jù)本發(fā)明給出了操作系統(tǒng)的三個(gè)示意圖;●圖4根據(jù)本發(fā)明給出了系統(tǒng)組件的示意圖;●圖5給出了用于創(chuàng)建該組件的步驟的示意圖;●圖6根據(jù)本發(fā)明給出了創(chuàng)建并采用操作系統(tǒng)組件的邏輯圖;●圖7根據(jù)本發(fā)明給出了分配并加載系統(tǒng)軟件組件的模式;●圖8根據(jù)本發(fā)明給出了在動(dòng)態(tài)的加載并卸載系統(tǒng)組件過程中減少存儲(chǔ)器使用量的示意圖;●圖9根據(jù)本發(fā)明給出了動(dòng)態(tài)替換系統(tǒng)組件的邏輯圖;●圖10a,10b和10c根據(jù)本發(fā)明給出了加載到系統(tǒng)中的組件的三種映射。圖10a與最小配置相對(duì)應(yīng),根據(jù)本發(fā)明在該配置中僅僅加載為系統(tǒng)初始化操作所絕對(duì)必需的組件。圖10b與基本配置相對(duì)應(yīng),在該配置中進(jìn)一步允許多線程管理。圖10c與根據(jù)本發(fā)明的系統(tǒng)的增強(qiáng)型版本相對(duì)應(yīng)。
對(duì)系統(tǒng)的總體介紹已經(jīng)闡述了無論是單片的還是微內(nèi)核的現(xiàn)有系統(tǒng)都是有系統(tǒng)的區(qū)分作為與其相關(guān)的系統(tǒng)層函數(shù)的程序。
根據(jù)本發(fā)明的系統(tǒng)不按照這種方式來區(qū)分程序。相反,在本發(fā)明的情況下,操作系統(tǒng)包括整個(gè)非分層的組件。因此,根據(jù)原始特征,根據(jù)本發(fā)明的系統(tǒng)沒有給出一個(gè)層式結(jié)構(gòu)。
同時(shí),盡管在本發(fā)明的情況下軟件系統(tǒng)的程序員仍保留特定特權(quán)級(jí)別與每個(gè)系統(tǒng)組件相關(guān)的可能性(該特權(quán)級(jí)別可能對(duì)應(yīng)于傳統(tǒng)的現(xiàn)有系統(tǒng)狀況下所使用的“內(nèi)核”、“信息庫”、“應(yīng)用程序包”、或者按照請(qǐng)求已經(jīng)創(chuàng)建了該特權(quán)級(jí)別),但是程序員可自由的影響每個(gè)組件或者相反關(guān)聯(lián)每個(gè)組件,并可為組件選擇任意希望的特權(quán)級(jí)別。
應(yīng)該指出的是術(shù)語“程序員”被定義為相關(guān)的一個(gè)人或一個(gè)研發(fā)組。應(yīng)該理解的是,根據(jù)本發(fā)明的系統(tǒng)的主要好處是允許研發(fā)組以可能的最有效方式工作,每個(gè)研發(fā)者可通過開發(fā)一個(gè)組件來負(fù)責(zé)處理一個(gè)應(yīng)用程序的一個(gè)函數(shù)。同時(shí),由根據(jù)本發(fā)明的系統(tǒng)所提供的對(duì)特權(quán)的詳盡管理展現(xiàn)出很大的可能性,例如●以“非特權(quán)”模式來創(chuàng)建、開發(fā)并完全測試一組件(應(yīng)用程序信息包),并且一旦開發(fā)結(jié)束且完全是有效的,那么以“特權(quán)”模式來利用目標(biāo)(系統(tǒng))。該方法允許通過以應(yīng)用程序的形式來設(shè)計(jì)一“驅(qū)動(dòng)器”來實(shí)現(xiàn)與微內(nèi)核系統(tǒng)一樣的精調(diào)靈活性,因此其后以“系統(tǒng)”模式來使用與單板內(nèi)核相同的執(zhí)行級(jí)別,●在一組相同類型的組件內(nèi)設(shè)計(jì)不同特權(quán)的可能性(例如“編碼器/譯碼器”、數(shù)據(jù)編碼器/譯碼器)對(duì)于速度而言,可按照系統(tǒng)組件的形式來利用簡單組件(例如,GIF“編碼器/譯碼器”);并且按照用戶組件的形式來利用復(fù)雜組件(例如,HTML“編碼器/譯碼器”或Macromedia Flash(注冊(cè)商標(biāo))),但是速度不夠快,然而可確保并提供完全的容錯(cuò)函數(shù)。
在基本情況下該選擇可允許程序員來構(gòu)造他的整個(gè)系統(tǒng)以作為他的目標(biāo)的函數(shù)。
圖3a至3c根據(jù)本發(fā)明給出了系統(tǒng)體系結(jié)構(gòu)示意圖,該結(jié)構(gòu)僅僅體現(xiàn)出是以組件為基礎(chǔ)的,并且不包括諸如內(nèi)核或微內(nèi)核之類的“中心”構(gòu)件。
如上所述,這些組件的每一個(gè)自身存在于系統(tǒng)中;它們可被創(chuàng)建、編譯、加載到系統(tǒng)的存儲(chǔ)器中,并且可獨(dú)立于另一個(gè)組件而卸載,因此可使●動(dòng)態(tài)的更新系統(tǒng)(新的版本、校正程序錯(cuò)誤,等等),而無需任何重新引導(dǎo),●在設(shè)計(jì)軟件系統(tǒng)的過程中通過提供改變硬件管理策略的可能性來阻止“姿態(tài)(stances)”的發(fā)生,該硬件管理策略是作為產(chǎn)品本身要求的函數(shù),該“姿態(tài)”在由軟件系統(tǒng)所抽象化的硬件系統(tǒng)中是相當(dāng)不便的。
根據(jù)本發(fā)明的系統(tǒng)的每個(gè)組件被專用于單個(gè)函數(shù),與傳統(tǒng)的操作系統(tǒng)相反,傳統(tǒng)操作系統(tǒng)中的內(nèi)核已經(jīng)實(shí)現(xiàn)了多個(gè)函數(shù)以及大多數(shù)程序。
同時(shí),為了實(shí)現(xiàn)與此有關(guān)的函數(shù),每個(gè)組件要求執(zhí)行一個(gè)或多個(gè)其他組件的一個(gè)或多個(gè)函數(shù)。
因此,為了操作,根據(jù)本發(fā)明的系統(tǒng)配置了每個(gè)已加載到其存儲(chǔ)器中的給定組件以與其他組件進(jìn)行通信,這些其他組件實(shí)現(xiàn)了給定組件本身操作所需的函數(shù)。
圖3a至3c因此包括用于表示通信信道的箭頭,這些通信信道是由系統(tǒng)在確定組件之間建立的,以允許它們將函數(shù)傳送到另一個(gè)組件。
這些圖還示出了系統(tǒng)體系結(jié)構(gòu)的動(dòng)態(tài)特性,如圖3c所示的組件31可由組件32來替換以實(shí)現(xiàn)相同的函數(shù),而無需要求改變?nèi)我饬硪粋€(gè)組件。在下文中將詳細(xì)描述這些方面。
組件一通常需要考慮的事項(xiàng)■一般的定義應(yīng)該理解的是,組件是根據(jù)本發(fā)明的系統(tǒng)的基本構(gòu)件,因此準(zhǔn)確的定義它是很重要的。
本發(fā)明意義上的組件是一隔離的、獨(dú)立的且自主的編碼構(gòu)件。如極其詳盡的描述,根據(jù)本發(fā)明的系統(tǒng)的每個(gè)組件具有下列性質(zhì)●它可實(shí)現(xiàn)唯一的函數(shù),它專用于該函數(shù),●它可完全實(shí)現(xiàn)該函數(shù)。在單個(gè)組件中執(zhí)行給定函數(shù)。在運(yùn)行一應(yīng)用程序或其他任何程序的過程中,如果一組件想要改變給定的函數(shù),這可使不必對(duì)一個(gè)以上的組件進(jìn)行修改或替換。
●正象目標(biāo)的基本原理一樣,由組件來實(shí)現(xiàn)給定函數(shù)的方式是不被使用該函數(shù)的其他組件所知,●獨(dú)立的編譯每個(gè)組件,因此可形成一個(gè)獨(dú)立的可執(zhí)行文件,將該文件比擬為一囊組件(也被稱為一“模塊”組件)。在編譯的過程中,不需對(duì)組件間的鏈接進(jìn)行編輯。這允許由此以來的未被發(fā)現(xiàn)的靈活性,特別是根據(jù)可實(shí)現(xiàn)系統(tǒng)的基本函數(shù)并位于傳統(tǒng)系統(tǒng)的內(nèi)核中的組件,●每個(gè)組件與可執(zhí)行代碼相關(guān),借助于同樣與各個(gè)組件相關(guān)的一接口程序可將該代碼封裝在其模塊中。在設(shè)計(jì)組件的過程中,設(shè)計(jì)者借助于為了該應(yīng)用程序所特定設(shè)計(jì)的描述語言來在由組件接口程序的源版本所形成的文本文件中描述該組件所提供的函數(shù)。該描述僅僅是對(duì)與該組件有關(guān)的系統(tǒng)有用的信息。該封裝可保證不存在邊緣效應(yīng)并且不存在系統(tǒng)組件間的不可控制的互相依存。
根據(jù)本發(fā)明的系統(tǒng)組件因此是一個(gè)完全已封裝(在模塊中)的且借助于接口而與系統(tǒng)的剩余部分相隔離的軟件目標(biāo),如所述的,該系統(tǒng)具有屬性●復(fù)用性和模塊性(在各種應(yīng)用程序或各種更通用的程序中可采用一個(gè)和相同的組件),●與環(huán)境無關(guān)(每個(gè)組件被獨(dú)立的產(chǎn)生并可在系統(tǒng)中被獨(dú)立的加載和卸載),●動(dòng)態(tài)鏈接(組件調(diào)停請(qǐng)求,且不是有系統(tǒng)的),●限定給定函數(shù)的范圍。
組件C包括兩個(gè)主要部分,如圖4所示●IMP部分,該部分可實(shí)現(xiàn)與組件有關(guān)的函數(shù),且按照慣例將其稱為組件的“執(zhí)行部分”。該部分與將被執(zhí)行以實(shí)現(xiàn)組件函數(shù)的代碼相對(duì)應(yīng),和/或與硬件構(gòu)件上所執(zhí)行的硬件相對(duì)應(yīng)。應(yīng)將術(shù)語“代碼”理解為一個(gè)或多個(gè)程序,該程序是由任一種本來就為人所知的語言寫成,所述程序可實(shí)現(xiàn)與組件相關(guān)的函數(shù)并為此執(zhí)行一個(gè)或多個(gè)函數(shù)。
●組件的“接口程序”部分INT,該部分是允許與系統(tǒng)的其他組件進(jìn)行通信的說明部分。
■組件的封裝每個(gè)組件被封裝成一“模塊”,鏈接目標(biāo)文件的可執(zhí)行文件與接口程序相對(duì)應(yīng)并與組件的代碼相對(duì)應(yīng)。如上所示,按照自治的方式為每個(gè)組件生成該文件,而與構(gòu)成根據(jù)本發(fā)明的系統(tǒng)的其他組件無關(guān)。
為了產(chǎn)生一組件,必須定義組件之外的函數(shù)并且在執(zhí)行的過程中必須使用其結(jié)果;這在傳統(tǒng)的函數(shù)分析方案的范圍內(nèi)。
另一方面,應(yīng)該理解的是,根據(jù)本發(fā)明的系統(tǒng)保存由于該函數(shù)分析階段而產(chǎn)生的語義信息直到組件的執(zhí)行范圍為止。
這非常有利于系統(tǒng)的升級(jí)并增加了其可讀性。
借助于應(yīng)用程序所創(chuàng)建的以及前面所提到的相關(guān)語言,在組件的接口程序源文件中描述了組件之外的函數(shù)。
更準(zhǔn)確的說,與組件C相關(guān)的每個(gè)接口程序源文件INT可完整的描述該組件。它描述了必須從其他部件引入的接口程序構(gòu)件以及那些輸出到其他部件的接口程序構(gòu)件。
如下文圖5示意性所示,該文件將被編譯(借助于編譯文件MF,并調(diào)用文件編寫)并與和執(zhí)行部分IMP的代碼(即組件執(zhí)行部分的每一個(gè)源文件)相對(duì)應(yīng)的目標(biāo)文件相鏈接以形成模塊M,該模塊構(gòu)成了組件的可執(zhí)行版本。后面的文章中將說明創(chuàng)建接口程序源文件所使用的相關(guān)語言。
如所述的,模塊M于是被加載到目標(biāo)50(該目標(biāo)被定義為計(jì)算機(jī)硬件,根據(jù)本發(fā)明的軟件系統(tǒng)在該硬件上進(jìn)行操作),并立即由存在在該目標(biāo)中的其他組件來識(shí)別。
■組件的執(zhí)行部分執(zhí)行部分IMP是組件的操作核心。該部分可有效的實(shí)現(xiàn)組件的函數(shù)。根據(jù)代碼所采用的函數(shù),可由該執(zhí)行部分按照各種方式來實(shí)現(xiàn)該函數(shù)。
因此,然而當(dāng)考慮到不同規(guī)范時(shí),各種組件可實(shí)現(xiàn)一個(gè)函數(shù)以及相同的函數(shù),該規(guī)范是在設(shè)計(jì)應(yīng)用程序或設(shè)計(jì)包含組件的程序的過程中預(yù)先規(guī)定的,或者是在應(yīng)用程序的實(shí)際執(zhí)行過程中動(dòng)態(tài)確定的。
以屬性的形式描述了這些規(guī)范(例如空的、字符等等),這些規(guī)范與組件的接口程序相關(guān)并且在下文中描述這些規(guī)范。
這規(guī)范被表示為這些屬性中的一個(gè)屬性的函數(shù),在輸出函數(shù)的組件接口程序中、在引入使比較操作符(如下文所述的<,>,=,等等)與該屬性相關(guān)聯(lián)的函數(shù)的組件接口程序中定義了該函數(shù)。
同時(shí),根據(jù)組件之外的規(guī)范的函數(shù)(例如硬件)或根據(jù)系統(tǒng)的當(dāng)前狀態(tài)以及執(zhí)行過程中的應(yīng)用程序來靜態(tài)的或動(dòng)態(tài)的處理系統(tǒng)或應(yīng)用程序。
每個(gè)組件的接口程序文件因此提供了一組信息元(meta-information),如所述的,該信息根據(jù)前面所提到的規(guī)范函數(shù)(該函數(shù)與組件的版本、該組件的位置、系統(tǒng)狀態(tài)的數(shù)據(jù)項(xiàng)等等)可允許系統(tǒng)的特定組件以相關(guān)的方式來管理組件間的關(guān)系。
還應(yīng)該指出的是如果由一代碼(函數(shù)的“軟件”執(zhí)行)可唯一的實(shí)現(xiàn)每個(gè)函數(shù),那么還可包括至少一個(gè)可實(shí)現(xiàn)函數(shù)的硬件構(gòu)件(函數(shù)的“硬件”執(zhí)行)。
■組件的接口程序部分接口程序部分可準(zhǔn)確的描述組件提供了哪一個(gè)函數(shù)并且在其執(zhí)行期間哪一個(gè)功能必須被提供。
按照由應(yīng)用程序所開發(fā)的相關(guān)語言,它定義了所需的將作為組件輸入的數(shù)據(jù)的格式以及由組件輸出的數(shù)據(jù)格式。該格式僅僅取決于所實(shí)現(xiàn)的函數(shù),并不取決于執(zhí)行部分實(shí)現(xiàn)函數(shù)的過程。
該接口程序部分可構(gòu)造由組件所實(shí)現(xiàn)的函數(shù)的說明,而與執(zhí)行部分實(shí)現(xiàn)該函數(shù)的方式無關(guān),無論代碼以哪一種模式來采用函數(shù),該函數(shù)保持不變。它可執(zhí)行相同的處理操作,請(qǐng)求輸入相同的信息并提供相同的輸出數(shù)據(jù)。
因此接口程序部分可對(duì)系統(tǒng)進(jìn)行充足的升級(jí)。因此由硬件執(zhí)行在后面實(shí)現(xiàn)了函數(shù)的軟件執(zhí)行(對(duì)應(yīng)于其執(zhí)行部分是由代碼所組成的組件)。
在這種情況下,對(duì)應(yīng)的組件包括一接口程序文件,但是其執(zhí)行部分由非常簡單的程序組成,該程序描述了與硬件構(gòu)件的鏈接。
相反,由函數(shù)的軟件執(zhí)行來替換硬件執(zhí)行,而對(duì)其他組件不會(huì)產(chǎn)生任何影響。
在對(duì)組件的模塊進(jìn)行說明的過程中利用關(guān)鍵字“接口程序”來定義接口程序。
下面的表格描述了函數(shù)的各種屬性;這些屬性與組件(方向=引入)或組件所提供(方向=輸出)的函數(shù)所請(qǐng)求的函數(shù)有關(guān);
借助于各種屬性在其文本文件中定義了接口程序。如下文所述的例子inprocess supervisor module{interface component{/*定義了被輸出的接口程序*/}foreign loadtime required interface codec{/*定義了被輸入的接口程序*/}};→接口程序的屬性接口程序的屬性可定義在該文本前面所提到的規(guī)范。與C語言一樣(已注冊(cè)的標(biāo)志),它們被分類。下面的表格描述了屬性的各種類型
下述擴(kuò)展名與這些屬性有關(guān)
在接口程序文件進(jìn)行相關(guān)說明的過程中,操作符可指定接口程序的屬性。因此只有在其他接口程序的屬性值與定義明確的規(guī)范相對(duì)應(yīng)時(shí),它們可允許引入另一個(gè)接口程序。
下述操作符與接口程序的屬性相關(guān)
關(guān)鍵字“undef”可用作屬性或函數(shù)的比較值。在下文的實(shí)施例中,所考慮的組件需要一個(gè)被命名為編碼器/譯碼器的接口程序,該接口程序包括一個(gè)被命名為maintype的32為整形參數(shù),它的值恰好是2。該接口程序必須保證得到可把一字符串作為參數(shù)并可返回一個(gè)32位帶符號(hào)整數(shù)的一函數(shù)Func{}。
Foreign loadtime required interface codec{/*對(duì)引入的接口程序進(jìn)行定義*/
int mainType==2;int Func(string name)!=underf;…}因此可通過對(duì)編程接口程序進(jìn)行描述而實(shí)現(xiàn)被提供或被請(qǐng)求的函數(shù)的提供和要求。組件例如可提供“調(diào)度表”編程接口程序(該調(diào)度表允許創(chuàng)建/分解/操作過程和線程并使其相同步),以及請(qǐng)求“存儲(chǔ)器”接口程序(存儲(chǔ)器管理)、“定時(shí)器”接口程序等等(時(shí)間定時(shí)器的管理,在給定時(shí)間之后調(diào)度表需要該定時(shí)器來中斷一過程)。
這些編程接口程序包括以下兩個(gè)方面●參數(shù)(版本、存儲(chǔ)器管理類型、序列的參數(shù)等等),●以及組件執(zhí)行時(shí)所調(diào)用的方法(函數(shù))。
在提供和請(qǐng)求給定接口程序的過程中都需要利用參數(shù),因此可明白這樣一個(gè)事實(shí),即與組件有關(guān)的存儲(chǔ)器接口程序是在其版本1.5.2中(在提供接口程序的過程中所專使的一參數(shù));或者這樣一個(gè)事實(shí),即存在其版本至少為1.0.0然而并非1.0.4的存儲(chǔ)器接口程序的請(qǐng)求,因?yàn)槲覀冎谰哂幸粋€(gè)不可避免的“錯(cuò)誤”(在接口程序請(qǐng)求過程中所專使的一參數(shù))。
同時(shí),接口程序的內(nèi)容包括由程序員借助于為此應(yīng)用程序所創(chuàng)建的語言而編寫的一說明。
由相關(guān)的編譯器按照二進(jìn)制格式在與組件代碼和有關(guān)數(shù)據(jù)相同的容量中來編譯該語言,該二進(jìn)制格式包括在由模塊所構(gòu)成的可執(zhí)行組件中。
在執(zhí)行時(shí)系統(tǒng)根據(jù)所要求的函數(shù)很容易的利用該二進(jìn)制格式,使得與組件鏈接。
該語言還被用于指定組件包括哪一種類型的代碼(“系統(tǒng)”或別的方式)以及哪一種類型的代碼可存取給定函數(shù)(例如可為“系統(tǒng)”調(diào)用程序限制系統(tǒng)的“危險(xiǎn)”函數(shù));這可選擇最優(yōu)化的通信設(shè)備。
組件—?jiǎng)?chuàng)建并加載到系統(tǒng)現(xiàn)在根據(jù)圖6,來詳細(xì)描述創(chuàng)建根據(jù)本發(fā)明的系統(tǒng)組件的步驟以及在根據(jù)本發(fā)明的系統(tǒng)中實(shí)現(xiàn)其步驟的過程。
圖6是一邏輯流程圖,該流程圖中的縱列表示在創(chuàng)建并開發(fā)根據(jù)本發(fā)明的系統(tǒng)組件過程中所使用的各個(gè)構(gòu)件。從左到右,該表格因此由以下組成●與其組件相對(duì)應(yīng)的兩列“COMP”,最左列“INT”與接口程序部分相對(duì)應(yīng),而緊挨著一列“IMP”與執(zhí)行部分相對(duì)應(yīng),●用作組件編譯文件的一文件編寫列“MF”,●與組件設(shè)計(jì)構(gòu)件相對(duì)應(yīng)的一“COMPIL DEP”列,該構(gòu)件與編譯器相關(guān),該構(gòu)件特定的由應(yīng)用程序來開發(fā)以對(duì)組件進(jìn)行編譯,●與已知文件類型的編譯器相對(duì)應(yīng)的一列“COMPIL CODE”,該文件由組件代碼組成,●與鏈接編輯器相對(duì)應(yīng)的一列“LINK”,●與根據(jù)本發(fā)明的系統(tǒng)的特定開發(fā)工具相對(duì)應(yīng)的一列“KBIM”,該開發(fā)工具在設(shè)計(jì)項(xiàng)目(在下文中定義了該概念)的過程中經(jīng)常被使用,●專用于表示根據(jù)本發(fā)明的系統(tǒng)的一特定組件,并被命名為管理程序(或GD)一列“GD”,如所示的,該管理程序由根據(jù)本發(fā)明的系統(tǒng)內(nèi)核組成,但是完全不同于現(xiàn)有技術(shù)的內(nèi)核和微內(nèi)核,●與根據(jù)本發(fā)明的特定組件相對(duì)應(yīng)的一列“LOAD”,加載程序可將系統(tǒng)組件加載到目標(biāo)的隨機(jī)存取存儲(chǔ)區(qū)域中,●最右的一列表示所描述的各種階段。
■組件的創(chuàng)建這里我們對(duì)“項(xiàng)目”作出一般性的定義,該項(xiàng)目表示在根據(jù)本發(fā)明的系統(tǒng)中具有共同目的的一組組件。項(xiàng)目因此與應(yīng)用程序相對(duì)應(yīng),但是更一般的說該項(xiàng)目與由計(jì)算機(jī)系統(tǒng)所執(zhí)行的并不同與該應(yīng)用程序(例如外圍設(shè)備管理程序)的任何類型的程序相對(duì)應(yīng)。
在創(chuàng)建將在根據(jù)本發(fā)明的系統(tǒng)中所執(zhí)行的項(xiàng)目以前,按照傳統(tǒng)的方式,在步驟601執(zhí)行函數(shù)分析(AF)階段。
該階段可定義所需的各種組件、它們各自的函數(shù)以及這些函數(shù)(該函數(shù)必要由其他組件來創(chuàng)建)的每一個(gè)相對(duì)應(yīng)的需求。如所示的,可使用已加載到系統(tǒng)中的組件來為項(xiàng)目提供某一函數(shù)。
一旦執(zhí)行了前面的分析,則可以知道與組件有關(guān)的需求,程序員為每個(gè)組件連續(xù)執(zhí)行步驟602至606●在602,創(chuàng)建組件的接口程序源文件,在該文件中利用應(yīng)用程序所開發(fā)的相關(guān)語言來描述組件的特征。在本文中稍后我們將回到該語言的特征和其主要的可能性,●在603,程序員于是以一種或多種已知類型的語言來創(chuàng)建代碼,即可滿足組件函數(shù)需求的源文件。在該步驟的過程中,僅僅根據(jù)標(biāo)準(zhǔn)型來定義由組件所輸出的函數(shù),并不編寫相應(yīng)的代碼。
當(dāng)啟動(dòng)一處理過程時(shí),應(yīng)具體說明的是函數(shù)與將進(jìn)行的一處理或一操作相對(duì)應(yīng)(用法語來表示函數(shù)的說明),例如存儲(chǔ)器的管理,因此管理它們對(duì)目標(biāo)處理器、圖形顯示器等等的存取。我們所稱的函數(shù)即為還要負(fù)責(zé)處理操作的一軟件代碼。函數(shù)是可轉(zhuǎn)換為函數(shù)的編程語言的軟件(因此得名)。
在所有的編程軟件中,按照與我們的系統(tǒng)完全相同的方法來負(fù)責(zé)處理函數(shù)。它包括√定義輸入和輸出參數(shù)(它們的名字和它們的類型)的一標(biāo)準(zhǔn)型。該標(biāo)準(zhǔn)型被鏈接到我們的組件(其作用是相同的)的接口程序部分,√一代碼部分。該部分對(duì)數(shù)據(jù)進(jìn)行處理并且因此可確定在輸出端所提供的結(jié)果。還應(yīng)當(dāng)具體說明的是函數(shù)的標(biāo)準(zhǔn)型定義了函數(shù)的名字、其輸入?yún)?shù)(它們的名字和它們的類型)以及由該函數(shù)所返回的結(jié)果信息,●在604,程序員創(chuàng)建一文件編寫,在該文件編寫中特別指出√在前面的步驟603期間所創(chuàng)建的源文件所使用的語言,√與部件執(zhí)行部件相對(duì)應(yīng)的源文件,√編譯選項(xiàng),●在605,程序員利用相關(guān)的編譯器以及與組件標(biāo)準(zhǔn)型所使用的語言相對(duì)應(yīng)的編譯器來創(chuàng)建,包括√由相關(guān)編譯器對(duì)在602所創(chuàng)建的組件接口程序源文件進(jìn)行編譯所產(chǎn)生的目標(biāo)接口程序。為了對(duì)該接口程序進(jìn)行編譯,相關(guān)編譯器分析接口程序的源文件文本,并核實(shí)其連貫性,并且將其轉(zhuǎn)換成可為GD所理解的二進(jìn)制數(shù)據(jù)。相關(guān)的編譯器自動(dòng)產(chǎn)生用于調(diào)用函數(shù)的文件,該函數(shù)被在接口程序中所引用并提供給組件。
這些文件是由相關(guān)編譯器所產(chǎn)生的“包括(include)”型文件。為每個(gè)代碼實(shí)現(xiàn)語言生成了一個(gè)“包括”文件。這些文件的作用是在計(jì)算機(jī)系統(tǒng)中在該組件區(qū)域之外定義一個(gè)名稱空間(即與其對(duì)應(yīng)的上下文環(huán)境是相關(guān)的)并且與它該組件的區(qū)域不同,該名稱空間使得所述組件可以訪問其接口程序中所需的函數(shù)。因此這些“包括”文件的每一個(gè)定義可被組件接口程序所調(diào)用的結(jié)構(gòu),按照這樣一種方式可將在接口程序中所生成的請(qǐng)求轉(zhuǎn)換成實(shí)現(xiàn)語言所使用的結(jié)構(gòu)和名字,該“包括”文件與該實(shí)現(xiàn)語言有關(guān),√在603所創(chuàng)建的每一個(gè)源文件的目標(biāo)文件;在此時(shí)每個(gè)目標(biāo)文件與其函數(shù)沒有被完全編寫的標(biāo)準(zhǔn)型源文件相對(duì)應(yīng),●在606,程序員于是對(duì)組件執(zhí)行部分的目標(biāo)接口程序與目標(biāo)文件之間的鏈接進(jìn)行編輯,按照這種方式可產(chǎn)生一個(gè)可執(zhí)行的組件標(biāo)準(zhǔn)型。
KBIM于是在607對(duì)標(biāo)準(zhǔn)型組件的全部組進(jìn)行完整的測試,因此開發(fā)了所設(shè)想的項(xiàng)目,核實(shí)所創(chuàng)建的項(xiàng)目是否連貫且是否已結(jié)束(也就是說該項(xiàng)目所需的所有函數(shù)都存在于該項(xiàng)目之內(nèi))。
在進(jìn)行完整的測試期間,KBIM備有所有組件接口程序的列表和說明。因此,KBIM在這些組件中搜索可實(shí)現(xiàn)該項(xiàng)目所需函數(shù)的組件。如果幾個(gè)組件都可實(shí)現(xiàn)所需函數(shù),那么KBIM促使程序員在這些部件中進(jìn)行選擇。于是將由KBIM所自動(dòng)查找的組件或由程序員所指定的組件添加到構(gòu)成該項(xiàng)目的組件中。該新的組件還需要KBIM企圖將其解析的其他函數(shù)。KBIM于是可自動(dòng)的解析一項(xiàng)目所需的大多數(shù)函數(shù)。
如果該項(xiàng)目沒有被正確的結(jié)束,KBIM向程序員發(fā)出一個(gè)表示非連貫性的錯(cuò)誤信息并且后者將返回到一系列步驟602至606,使得可修改應(yīng)用程序的某些組件和/或添加一些組件;如果項(xiàng)目是連貫的且已結(jié)束,那么在608程序員通過在該執(zhí)行部分的源文件中編寫函數(shù)的整個(gè)文本而實(shí)現(xiàn)組件執(zhí)行部分的代碼的函數(shù)標(biāo)準(zhǔn)型。
在609,按照與創(chuàng)建可執(zhí)行組件函數(shù)的目標(biāo)文件代碼相同的方式,程序員開發(fā)文件編寫以編譯每個(gè)獨(dú)立的部件。在該步驟的過程中,文件編寫產(chǎn)生了相關(guān)編譯器以及用于創(chuàng)建代碼的語言的編譯器。對(duì)于當(dāng)前正進(jìn)行開發(fā)的項(xiàng)目的每個(gè)組件而言都重復(fù)步驟608和609。
在610,程序員于是開發(fā)鏈接編輯器以為每個(gè)組件創(chuàng)建一個(gè)可執(zhí)行模塊,所述模塊與在編譯步驟605和609過程中所創(chuàng)建的一組目標(biāo)文件相關(guān)(在步驟605期間創(chuàng)建了目標(biāo)接口程序,然而在步驟609期間創(chuàng)建與代碼有關(guān)的目標(biāo)文件)。
在與封裝模塊中的組件相對(duì)應(yīng)的這種鏈接編輯過程中,編輯器核實(shí)由項(xiàng)目的各種接口程序所提供的各種函數(shù)事實(shí)上已完全在相關(guān)的源文件中有所描述并已被編輯。
■組件的說明因此一旦為項(xiàng)目的每個(gè)組件創(chuàng)建一個(gè)可執(zhí)行模塊,程序員必須聲明存在這些組件,使得該系統(tǒng)要考慮這些可執(zhí)行模塊。在611執(zhí)行該聲明,在程序員將每個(gè)組件聲明為一“載入程序”的步驟過程中,根據(jù)本發(fā)明的載入程序本身指定了系統(tǒng)的組件。
在步驟611的過程中,被聲明為組件的載入程序?qū)⒔M件存儲(chǔ)在載入程序的一個(gè)專用列表中,該載入程序匯集了在此所聲明的一組組件。
步驟611是這樣一個(gè)步驟,即按照一總的方式該步驟與當(dāng)前正進(jìn)行開發(fā)的項(xiàng)目有關(guān),開發(fā)與被聲明為至少是一個(gè)載入程序的項(xiàng)目相關(guān)的一組組件——每個(gè)載入程序與計(jì)算機(jī)的一介質(zhì)相對(duì)應(yīng)(磁盤、網(wǎng)絡(luò)等等),將與該載入程序有關(guān)的組件存儲(chǔ)在該介質(zhì)上。
■將組件加載到系統(tǒng)上述描述是用于創(chuàng)建并聲明一“項(xiàng)目”的步驟,該項(xiàng)目包括幾個(gè)組件。下面來說明開發(fā)圖6的下半部所示的這些組件。
在620,組件C1調(diào)用它所需的函數(shù)F1。
該調(diào)用引發(fā)了兩種可能性●或者,利用組件接口程序中的“加載時(shí)間”屬性來定義函數(shù)F1(上面已經(jīng)描述了該“加載時(shí)間”屬性)。在這種情況下,在加載組件C1之前,GD搜索可實(shí)現(xiàn)該函數(shù)F1的組件并將該組件加載到系統(tǒng)中。
√如果該組件本身需要“加載時(shí)間”函數(shù),那么再次在加載組件C1之前,GD還加載實(shí)現(xiàn)該函數(shù)的組件。GD因此遞歸的加載為實(shí)現(xiàn)各種“加載時(shí)間”函數(shù)所需的所有函數(shù),該GD將會(huì)遇到這些函數(shù)(下面將說明怎樣將組件加載到系統(tǒng)中),●或者,利用“運(yùn)行時(shí)間”屬性來定義函數(shù)F1(上面已經(jīng)描述了該“允許時(shí)間”屬性)。組件C1必須明確的調(diào)用另一個(gè)函數(shù)、由GD所提供的“depmgr”以調(diào)用“運(yùn)行時(shí)間”函數(shù)F1。為此,必須利用C1接口程序中的“加載時(shí)間”屬性來聲明絕對(duì)的“depmgr”函數(shù),因此可利用該接口程序,只要C1被加載并被初始化(參見如上的“加載時(shí)間”函數(shù)的處理)。
C1于是可引入正在使用它的時(shí)刻由步驟620所調(diào)用的“l(fā)oadtime”函數(shù)F1。于是由GD加載可實(shí)現(xiàn)函數(shù)F1的組件。如果在該組件被加載時(shí)它需要一個(gè)函數(shù)(在其接口程序由“l(fā)oadtime”所聲明的函數(shù)),那么實(shí)現(xiàn)該“l(fā)oadtime”函數(shù)的組件也將被加載。
因此GD遞歸的加載實(shí)現(xiàn)各種“l(fā)oadtime”函數(shù)所需的所有函數(shù),該GD將會(huì)遇到這些函數(shù)(下面將進(jìn)一步說明怎樣將組件加載到系統(tǒng)中)。只要已解析了在其解答過程中所遇到的所有“l(fā)oadtime”函數(shù),那么C1因此將獲得在620開始所需的函數(shù)F1。如果未解析在C1進(jìn)行加載過程中所要求的一個(gè)函數(shù)(該函數(shù)被聲明為“l(fā)oadtime”),那么不加載C1。C1實(shí)際上不能實(shí)現(xiàn)其函數(shù)的任務(wù),因?yàn)樗荒苁褂闷渌枰牧硪粋€(gè)函數(shù)。
如果該項(xiàng)目的一個(gè)部件沒有實(shí)現(xiàn)C1需要引入的函數(shù),C1屬于該該項(xiàng)目并且將其聲明為具有該項(xiàng)目的系統(tǒng)的一個(gè)下載程序,如所示的,該系統(tǒng)確定了可為C1提供該函數(shù)的另一個(gè)項(xiàng)目的組件。
為了這些被永久加載到系統(tǒng)隨機(jī)存取存儲(chǔ)器中的GD,通過其“鏈接圖表”來搜索鏈接圖表的一組件的接口程序目標(biāo)文件是否表示該部件提供了C1所需的函數(shù)。
為此,GD對(duì)接口程序文件的“二進(jìn)制”文本進(jìn)行說明,該“二進(jìn)制”文本存儲(chǔ)在可執(zhí)行組件中,并且在執(zhí)行的過程中由“加載程序”將它加載到/傳送到GD。
首先GD搜索與所需的(所引入的)一個(gè)接口程序具有相同名字的接口程序處理。當(dāng)它發(fā)現(xiàn)相同的接口程序時(shí),于是它在這些接口程序內(nèi)核實(shí)存在所需函數(shù)的所有屬性并且滿足任一個(gè)限制和條件(比0.6.2具有更高的版本)。
GD鏈接圖表是一列已被加載到系統(tǒng)中的組件,也就是說如上述步驟622所描述,不但未聲明這些組件,而且其目標(biāo)接口程序文件已被引入到對(duì)象隨機(jī)存取存儲(chǔ)器區(qū)域中,且這些組件與鏈接圖表的另一個(gè)組件相連以調(diào)換所提供的/或所需的函數(shù)。
存儲(chǔ)在對(duì)象隨機(jī)存取存儲(chǔ)器區(qū)域中的鏈接圖表因此是已加載組件的瞬時(shí)像,該鏈接圖表可被動(dòng)態(tài)修改。該鏈接圖表是唯一的并且與GD相關(guān),該GD可訪問該鏈接圖表的信息。
如果在步驟621的過程中GD可確定由鏈接圖表的一組件提供了由C1所調(diào)用的函數(shù)(將該鏈接圖表稱為C2“被調(diào)用的組件”,同時(shí)C1是“調(diào)用”部件),它可通過在627將組件C2的特征引入到組件C1中而建立組件C2與組件C1之間的通信信道。
更確切地說,GD為C1構(gòu)造了一個(gè)被稱為“視圖”的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)提供了與將要著手進(jìn)行的引入而有關(guān)的視圖。該“視圖”包括所引入函數(shù)的屬性值以及指針(或者該視圖可直接影響諸如系統(tǒng)調(diào)用、線程移動(dòng)等等的代碼)。該“視圖”直接起源于“include”文件中的相關(guān)編譯器所產(chǎn)生的要素。
如果GD在621中確定了由C1所調(diào)用的函數(shù)不是由鏈接圖表中的任一個(gè)組件提供的,那么它將一個(gè)接一個(gè)的查詢系統(tǒng)的加載程序列表,因此可確定被聲明為加載程序的一個(gè)組件是否提供了C1所需的函數(shù)。步驟622表示對(duì)載入程序的查詢。
在該查詢過程中,GD利用一“加載程序”函數(shù),該函數(shù)對(duì)每個(gè)“加載程序”所查看的一系列組件所需要的函數(shù)進(jìn)行處理。該“加載程序”函數(shù)允許GD將加載程序組件所輸出的函數(shù)與所要求的將被引入的函數(shù)進(jìn)行比較。它還允許GD加載和卸載單獨(dú)的組件,來自介質(zhì)的加載程序與對(duì)象隨機(jī)存取存儲(chǔ)器有關(guān)。
應(yīng)具體說明的是根據(jù)本發(fā)明的每個(gè)系統(tǒng)加載程序與可存儲(chǔ)組件的介質(zhì)相關(guān);對(duì)于每個(gè)加載程序而言它因此與存儲(chǔ)器磁盤有關(guān),或例如與CD-ROM型的任一個(gè)其他記錄支持體有關(guān)。尤其根據(jù)附圖7對(duì)多個(gè)加載程序進(jìn)行說明。
如果該組件位于系統(tǒng)的一系列加載程序的一個(gè)中(步驟623),那么在625中其列表包括該組件的第一加載程序?qū)⒁汛_定組件C2的目標(biāo)接口程序傳送到相關(guān)管理程序,并且在626中GD自身將該組件C2的“視圖”傳送到組件C1(步驟627)。
在加載組件C2時(shí),GD已將C2的“視圖”存儲(chǔ)在系統(tǒng)存儲(chǔ)器區(qū)域,該“視圖”是由GD動(dòng)態(tài)創(chuàng)建的,并且在卸載該組件的同時(shí)將破壞該“視圖”。該區(qū)域與可訪問該區(qū)域的組件同處于相同的地址空間。
如果在步驟623的過程中GD的搜索可確定位于一個(gè)加載程序的列表中的可提供所需函數(shù)的組件原來是無效的,那么系統(tǒng)在624而停止。
在任何情況下,將組件C1加載到系統(tǒng)的隨機(jī)存取存儲(chǔ)器中可引起GD自動(dòng)搜索可提供函數(shù)F1的組件C2,該函數(shù)F1是組件C1進(jìn)行操作所需要的。
同時(shí),如果組件C1調(diào)用不僅僅一個(gè)函數(shù)而是幾個(gè)函數(shù)時(shí),同樣的GD將執(zhí)行自動(dòng)搜索可提供這些所需函數(shù)的組件。
值得注意的是,與已知的系統(tǒng)相比,根據(jù)本發(fā)明的系統(tǒng)可提供附加靈活性的等級(jí)。
實(shí)際上,在利用實(shí)體所構(gòu)造的已知系統(tǒng)的情況下,程序員必須為每個(gè)給定調(diào)用實(shí)體指定系統(tǒng)的一系列其他實(shí)體,這些其他實(shí)體是所述調(diào)用實(shí)體的操作所需的,并且這些其他實(shí)體不得不被加載到系統(tǒng)中以為了該調(diào)用實(shí)體的適當(dāng)操作。
因此,在這些已知系統(tǒng)的情況下,通常不用函數(shù)來表示實(shí)體的需要,但是用特定實(shí)體來表示實(shí)體的需要(例如這是java語言的情況)。
同樣,在本發(fā)明的情況下,幾個(gè)不同組件中的每一個(gè)往往都與調(diào)用組件C1有關(guān),因?yàn)樗霾煌慕M件提供了相同的函數(shù)。
同樣,本發(fā)明的其他優(yōu)點(diǎn)是從與組件有關(guān)的規(guī)則中派生而來的,在GD自動(dòng)搜索可提供第一組件所需函數(shù)的組件的過程中GD要考慮這些規(guī)則。
實(shí)際上,在搜索組件的過程中GD不但搜索可提供所需函數(shù)的組件,而且還更準(zhǔn)確的搜索可提供與特定條件有關(guān)的所述函數(shù)的組件,該特定條件是根據(jù)本文前面所提及的規(guī)則來表示的。
在現(xiàn)有語言的情況下(例如Java語言類型—注冊(cè)商標(biāo)),實(shí)際上,程序員必須絕對(duì)在調(diào)用實(shí)體與被調(diào)用實(shí)體之間創(chuàng)建一個(gè)明確的鏈接。因此很顯然的是不能按照可提供與本發(fā)明相同靈活度的方式來開發(fā)這類已知系統(tǒng),本發(fā)明本身可提供更好的維護(hù)以及升級(jí)(例如可產(chǎn)生已增強(qiáng)的版本),在該發(fā)明中可按照不同的方式由可實(shí)現(xiàn)相同函數(shù)的其他組件來代替可提供所需函數(shù)的組件,或者增加了可實(shí)現(xiàn)所述函數(shù)的新組件以至可將所選擇的新的可能性提供給GD。
這樣,本發(fā)明極其的構(gòu)造了可改進(jìn)的系統(tǒng),在該系統(tǒng)中可隨意替換僅僅一個(gè)或多個(gè)所希望的組件。
每個(gè)已替換組件提供了一函數(shù),該函數(shù)已由被替換的舊組件來提供。
然而,可隨意的修改可實(shí)現(xiàn)該函數(shù)的特定裝置,該裝置可以是軟件和/或硬件。
在對(duì)應(yīng)用程序的體系結(jié)構(gòu)中,這種可能性尤其有利。該應(yīng)用程序是諸如對(duì)安裝在各個(gè)站點(diǎn)的系統(tǒng)網(wǎng)絡(luò)進(jìn)行維護(hù)或?qū)σ苿?dòng)類設(shè)備(例如移動(dòng)電話或個(gè)人管理器)進(jìn)行維護(hù),為了對(duì)這些應(yīng)用程序進(jìn)行升級(jí)因此不希望一個(gè)應(yīng)用程序物理的返回到中心站點(diǎn)。
因此,可通過簡單的將來自中心站點(diǎn)的一個(gè)或多個(gè)新組件下載到這些設(shè)備中而對(duì)安裝在上述類型設(shè)備中的應(yīng)用程序進(jìn)行升級(jí),而無需不必將其物理的移動(dòng)到分布在任一區(qū)域上的設(shè)備。
而且,替換這些組件不需要對(duì)使用它們的計(jì)算機(jī)系統(tǒng)進(jìn)行重新編譯。
在可提供C1所需函數(shù)的組件C2已被確定(或許規(guī)則滿足接口程序(1)所需的條件)且在627將C2的特征引入到C1中的情況下,根據(jù)組件C2已形成或未形成鏈接圖表的一部分(步驟628),相關(guān)管理器將進(jìn)行不同的操作。
如果C2輸入鏈接圖表,那么GD直接進(jìn)入步驟633以創(chuàng)建C1和C2之間的通信信道。為此,系統(tǒng)或者使用上述四個(gè)通信模式中的一個(gè),或者使用特定創(chuàng)建的一特定模式,例如在C1和/或C2的接口程序中所指定的特征函數(shù);=>直接調(diào)用這是一種快速方法。直接調(diào)用所需的函數(shù)或方法,并且直接返回其結(jié)果。這不存在中間編碼。當(dāng)兩個(gè)組件位于同一個(gè)設(shè)備上時(shí)的相同地址空間并處于相同特權(quán)級(jí)別上時(shí),相關(guān)管理器選擇該裝置。
將地址空間定義為邏輯存儲(chǔ)器區(qū)域,該區(qū)域中的代碼地址或數(shù)據(jù)地址意味著可使所有組件訪問該區(qū)域。指向代碼或數(shù)據(jù)的指針按照從一組組件到另一個(gè)組件的方式來傳遞,而無需修改其值,指針可訪問相同的數(shù)據(jù)。
在本發(fā)明中,術(shù)語“地址空間”還意指公共的特權(quán)、定義一“空間”的地址空間或具有相同特權(quán)級(jí)別的一類目標(biāo);可按照相同的方式由各種組件來訪問被指向的一個(gè)目標(biāo)以及相同地址空間。
同時(shí),例如因此可利用較低級(jí)別的特權(quán)來定義一“用戶”空間,并用較高級(jí)別的特權(quán)來定義一“管理程序”空間。
利用可同時(shí)訪問兩個(gè)空間的計(jì)算機(jī)系統(tǒng)的處理器來對(duì)每個(gè)過程的“用戶”空間與“管理程序”之間的一致性指針進(jìn)行編譯,但是“用戶”數(shù)據(jù)不能引用位于“管理程序”空間的數(shù)據(jù)。
特權(quán)是組件間進(jìn)行訪問的可能性;在源接口程序中可利用下述特權(quán)級(jí)別
為了將這些特權(quán)級(jí)別中的一個(gè)分配給組件,程序員在對(duì)組件的模塊進(jìn)行定義的過程中固定對(duì)應(yīng)參數(shù),將該定義限制在正文類型范圍內(nèi)inprocess supervisor module{/*對(duì)模塊進(jìn)行定義*/};因此,通常,給定的特權(quán)級(jí)別可與每個(gè)單獨(dú)組件相關(guān)、與以該組件訪問其他組件的可能性為條件的所述特權(quán)級(jí)別相關(guān),如所述其他組件的各個(gè)特權(quán)級(jí)別的函數(shù)。
另外如所述的,組件的特權(quán)級(jí)別的相關(guān)性給出了該組件由某一組件的接口程序所提供的“視圖”函數(shù)的可能性,如實(shí)際上與這些其他組件相關(guān)的特權(quán)級(jí)別的函數(shù)。
同時(shí),如以下所述,由與某一特定組件單獨(dú)相關(guān)的運(yùn)算符來短接組件間的由特權(quán)級(jí)別所建立的訪問次序,該特權(quán)級(jí)別與各個(gè)組件單獨(dú)相關(guān)。
下面是該調(diào)用的例子●管理程序組件調(diào)用管理程序組件,●用戶組件(來自較低特權(quán)級(jí)別的組件)調(diào)用位于相同地址空間的用戶組件(如利用了用于管理共用信息庫以及無源函數(shù)的組件的應(yīng)用程序)。
如果存儲(chǔ)器部件未提供保護(hù),那么該方法是所采用的僅僅一個(gè)方法,這可對(duì)為其產(chǎn)品而構(gòu)造系統(tǒng)的技術(shù)人員進(jìn)行選擇,因此在缺乏保護(hù)的情況下可提供極其快的系統(tǒng)。
當(dāng)該組件僅僅提供了一個(gè)地址空間時(shí),存儲(chǔ)器組件不能提供“系統(tǒng)”型的保護(hù)。這種類型的存儲(chǔ)器管理未提供保護(hù)(在同一空間內(nèi)的所有操作并可能損壞或修改屬于其他組件的代碼或數(shù)據(jù)),但是這僅僅是某一對(duì)象未處理任何“MMU(存儲(chǔ)器管理構(gòu)件)”的一種可能。
=>系統(tǒng)調(diào)用將請(qǐng)求轉(zhuǎn)向到一系統(tǒng)調(diào)用。后者將來自用戶堆棧的參數(shù)傳輸?shù)焦芾沓绦蚨褩#淖兲貦?quán)的級(jí)別,生成一調(diào)用,返回特級(jí)的較低級(jí)別并直接返回結(jié)果。
當(dāng)用戶組件(非特權(quán)的)調(diào)用管理程序組件的函數(shù)時(shí)選擇該方法,只要該函數(shù)授權(quán)非特權(quán)組件以可使用它。
在相關(guān)描述語言的標(biāo)準(zhǔn)下通過關(guān)鍵字“promote”來進(jìn)行該授權(quán)。同時(shí),一般說來,下述關(guān)鍵字與一組件有關(guān)(在由應(yīng)用程序所開發(fā)的語言的語法中,關(guān)鍵字被簡單的放在屬性或方法的前面,他們將改變其方法的操作方式)
因此,通過關(guān)鍵字“promote“所配置的上述已提及的授權(quán)可短接在別處所建立的特權(quán)級(jí)別,以便可單獨(dú)授權(quán)一組件可訪問另一組件,對(duì)于另一組件而言其自身的特權(quán)級(jí)別不能使它訪問。
=>線程的轉(zhuǎn)換根據(jù)本發(fā)明的系統(tǒng)將執(zhí)行線程的邏輯管理(標(biāo)識(shí)符、優(yōu)先權(quán)、系統(tǒng)堆棧等等)從其物理管理(處理器環(huán)境、用戶堆棧、包含線程的地址空間,等等)中分離出來。
當(dāng)組件調(diào)用位于另一地址空間的函數(shù)并且是同步(調(diào)用方是處于待定結(jié)果的程序塊)時(shí),調(diào)用方“轉(zhuǎn)移”成被調(diào)用方并且執(zhí)行處理。
為此,線程的邏輯部分“層疊”其當(dāng)前的物理部分,并將其自身加入到在被調(diào)用方的地址空間中所創(chuàng)建的新物理部分。
于是在被調(diào)用方的環(huán)境中執(zhí)行所需函數(shù)的代碼(也就是說在相同的地址空間和相同的包含過程中),但是在調(diào)用方的邏輯線程中。一旦該函數(shù)結(jié)束了,調(diào)用線程使其原始的物理部分“出?!辈⒃俅巍稗D(zhuǎn)換”為調(diào)用方。
線程轉(zhuǎn)換代碼還用于在對(duì)存儲(chǔ)器區(qū)域進(jìn)行拷貝或重映射這兩個(gè)方向上發(fā)送參數(shù)以及被提供作為參數(shù)的字符串等等。
該機(jī)制避免了代價(jià)更大的傳統(tǒng)方法,該方法包括組合一消息、將消息發(fā)送到位于被調(diào)用方的線程、中斷調(diào)用方的線程、分解被調(diào)用方的消息、執(zhí)行所需函數(shù)、根據(jù)其結(jié)果來再組合消息,根據(jù)其結(jié)果來再分解一消息,喚醒調(diào)用方、再次中止被調(diào)用方。
該機(jī)制還可以避免與同步傳送消息有關(guān)的許多問題,例如優(yōu)先權(quán)的逆轉(zhuǎn)(這里,利用調(diào)用方的優(yōu)先權(quán)來執(zhí)行被調(diào)用方的函數(shù))、資源的計(jì)算(在調(diào)用方對(duì)機(jī)器時(shí)間進(jìn)行遞減計(jì)數(shù))、以及所必須的維持被調(diào)用組件中的線程“存儲(chǔ)區(qū)”,該被調(diào)用組件處于睡眠狀態(tài),占用了不必要的存儲(chǔ)器資源直至接收到調(diào)用,以及如果發(fā)生大量調(diào)用,則存在不夠充足的資源量問題(這里,調(diào)用方轉(zhuǎn)換為被調(diào)用方,總是存在所需線程的精確數(shù)目)。
該方法可極大的優(yōu)化地址空間之外的調(diào)用這種最常見的情況在同一機(jī)器上進(jìn)行同步調(diào)用。
=>消息的傳送與基本的微內(nèi)核系統(tǒng)的情況相反,例如,在該系統(tǒng)中該方法是有組織的被采用,它僅僅用于未在上述類別范圍內(nèi)的調(diào)用,例如●異步本地調(diào)用(調(diào)用方未保持待定結(jié)果的程序塊),●對(duì)另一機(jī)器的遠(yuǎn)程調(diào)用。
消息的傳送包括對(duì)消息中所提供的參數(shù)進(jìn)行編碼、將消息路由到目的地組件、對(duì)其進(jìn)行解碼、執(zhí)行函數(shù)、將結(jié)果存儲(chǔ)在消息中,將其返回到調(diào)用方。如上所述,該方法尤其適于異步調(diào)用(稍后將發(fā)送結(jié)果信息),并適于遠(yuǎn)程調(diào)用,按照任何一種方式該方法都需要構(gòu)造網(wǎng)絡(luò)包。
返回至根據(jù)圖6所給定的說明,一通信信道的創(chuàng)建是與函數(shù)的調(diào)用有關(guān)以將調(diào)用組件C1記錄在被調(diào)用組件C2的執(zhí)行部分。
被命名為Register()的函數(shù)除了它們自己的特定函數(shù)之外還形成了“組件”函數(shù)的一部分,該函數(shù)是由系統(tǒng)的所有組件提供的。該“組件”函數(shù)包括四個(gè)函數(shù)●初始化,●去除初始化,●記錄,●去除記錄。
如果GD在628確定組件C2沒有形成鏈接圖表部分,那么在629它調(diào)用組件C2的加載程序,使得將C2列入到對(duì)象的隨機(jī)存取存儲(chǔ)器并在631更新該鏈接圖表。
因此圖7說明了鏈接圖表G,,GD將一組件或來自第一加載程序的存儲(chǔ)器區(qū)域72的組件集P2引入到該圖表中,因此允許C1已存在于該鏈接圖表中(C1先前已從另一加載程序的存儲(chǔ)器區(qū)域71中被引入,它形成了具有另一加載程序的項(xiàng)目P1的部分)以與被調(diào)用組件C2相連,在步驟623的過程中已由GD確定了該組件C2以在加載程序中搜索可提供C1所需函數(shù)的加載程序。
實(shí)際上再次調(diào)用在步驟607由KBIM所執(zhí)行的完整測試過程中(參見圖6),KBIM核實(shí)由一組件所調(diào)用的每個(gè)函數(shù)不是絕對(duì)的由一個(gè)和相同項(xiàng)目的一組件來提供的,但是一般來說是由加載到軟件系統(tǒng)的一組件來提供的。
再次返回到圖6,已描述過步驟631導(dǎo)至步驟633。
同時(shí),盡管已描述過對(duì)由組件C1所調(diào)用的組件C2進(jìn)行加載,但是應(yīng)當(dāng)理解的是組件C1本身已被另一個(gè)組件調(diào)用,并且應(yīng)當(dāng)理解的是當(dāng)引導(dǎo)系統(tǒng)時(shí)它必須對(duì)函數(shù)的調(diào)用進(jìn)行初始化。
為此,當(dāng)啟動(dòng)一應(yīng)用程序時(shí),GD需要一“交互”函數(shù)并搜索可提供該函數(shù)的組件。GD還可引入需要該函數(shù)的組件。在所有的情況下,該“交互”函數(shù)將調(diào)用另一組件,該另一組件依次調(diào)用至少一個(gè)其他組件。
相關(guān)管理器已說明了相關(guān)管理器是一個(gè)被永久加載到根據(jù)本發(fā)明的系統(tǒng)中的組件。它可構(gòu)造各種組件之間的鏈接,各種組件構(gòu)成了一應(yīng)用程序;由組件的接口程序建立了這些鏈接。
根據(jù)本發(fā)明的有利方面,僅僅那些在應(yīng)用程序和系統(tǒng)的操作方面所使用的組件將被加載,因此可優(yōu)化所需的資源。根據(jù)下述模式的一種可實(shí)現(xiàn)這種優(yōu)化■在執(zhí)行的過程中自動(dòng)加載組件當(dāng)組件被加載使得被執(zhí)行時(shí),相關(guān)管理器分析用其接口程序所表示的其相關(guān)性并且自動(dòng)設(shè)法對(duì)其中所表示的所有相關(guān)性進(jìn)行解析,也就是說為該組件提供它所需的所有函數(shù),并且還通過同樣也設(shè)法提供每一組件而“結(jié)束”相關(guān)系統(tǒng),因此可采用它所需的函數(shù)。
因此GD可自動(dòng)的將組件加載到鏈接圖表中,該組件用于解析所引入的其屬性為“l(fā)oadtime”的接口程序,并且GD還解析它們的相關(guān)性并創(chuàng)建這些各種組件間的通信信道,如它們各自位置的函數(shù)。
因此根據(jù)上述所定義的任一種通信模式來創(chuàng)建通信信道;它包括可調(diào)用與參數(shù)有關(guān)的函數(shù)的任意數(shù)據(jù)的傳輸路徑(特定的每一個(gè)通信模式),并覆蓋由函數(shù)所執(zhí)行的處理所產(chǎn)生的返回值。
只要通信信道被創(chuàng)建,組件可直接與另一個(gè)組件通信。
■動(dòng)態(tài)的加載并卸載組件當(dāng)所引入的接口程序具有“runtime”屬性時(shí),使用該接口程序的組件將請(qǐng)求加載可執(zhí)行該接口程序的組件,僅僅當(dāng)該組件需要與該接口程序有關(guān)的函數(shù)時(shí)。因此該“runtime”屬性是上述已描述的“l(fā)oadtime”屬性的備選項(xiàng)。
該管理可準(zhǔn)確的確定可執(zhí)行該接口程序的屬性,該接口程序必須被加載,如動(dòng)態(tài)參數(shù)的函數(shù),當(dāng)加載需要該函數(shù)的組件時(shí)這些參數(shù)是不為所知的。
例如,“文本”組件可引入編碼/譯碼接口程序,因此可對(duì)它所接收的文件進(jìn)行解壓縮,該“文本”組件可接收幾種類型的文件。
在接收文件的過程中,“文本”組件可搜索適于對(duì)該文件進(jìn)行解壓縮的編碼/譯碼接口程序,如其擴(kuò)展部分的函數(shù)。為此,它使用相關(guān)管理器的Query()函數(shù),將搜索參數(shù)傳送到它。
因此它借助于Open()函數(shù)命令相關(guān)管理器來加載組件。它因此可使用該組件的編碼/解碼接口程序以對(duì)文件進(jìn)行解壓縮。
當(dāng)解壓縮結(jié)束時(shí),“文本”組件要求對(duì)所使用的編碼/譯碼組件進(jìn)行卸載。
因此它可動(dòng)態(tài)的加載一組件。這可允許組件被加載,僅僅當(dāng)需要這些組件來執(zhí)行一處理時(shí)。因此當(dāng)該組件的處理結(jié)束時(shí)該組件被卸載。
根據(jù)另一實(shí)施例,在下載圖像的過程中應(yīng)用程序可顯示該圖像并且隨后不必對(duì)圖像的格式進(jìn)行處理或特別對(duì)它們進(jìn)行處理。
因此該應(yīng)用程序動(dòng)態(tài)的下載組件以對(duì)圖像格式進(jìn)行處理、請(qǐng)求它處理文件使得可顯示圖像,并且該應(yīng)用程序隨后將該組件卸載。只有當(dāng)絕對(duì)需要該組件時(shí),才將該組件加載到存儲(chǔ)器中,這可使在各種組件中公用存儲(chǔ)器資源,如在給定的瞬間進(jìn)行處理操作的函數(shù)。
因此該方法可對(duì)較大的減少所需的存儲(chǔ)器資源。
相關(guān)管理器還可自動(dòng)管理加載和卸載組件以作為它們使用的統(tǒng)計(jì)量和存儲(chǔ)器資源的函數(shù)。該管理于是對(duì)與應(yīng)用程序的程序員而言是完全透明的。
圖8的圖表給出了對(duì)擁有幾種存儲(chǔ)器資源的一系統(tǒng)的組件進(jìn)行動(dòng)態(tài)管理的益處。在該實(shí)施例中,應(yīng)用程序像顯示了兩種圖像,一GIF和一JPEF。順序處理每個(gè)圖像,因此可動(dòng)態(tài)的加載并卸載組件。
在該實(shí)施例中,對(duì)組件進(jìn)行動(dòng)態(tài)的加載和卸載可減少所需的最大存儲(chǔ)器資源。
另外,在大多數(shù)情況下,就性能而言該加載和卸載不是顯而易見的。
實(shí)際上,組件的模塊具有已減小的大小(大約從幾百字節(jié)到幾千字節(jié))。因此將它們加載到存儲(chǔ)器的操作是執(zhí)行速度非??斓囊粋€(gè)操作。另外,大多數(shù)應(yīng)用程序順序執(zhí)行處理操作并且通常是由用戶提供了輸入信息并且將輸出信息提供給用戶。
因此,在人類的尺度上,加載并且卸載組件所需的幾微妙實(shí)際上是不能被感覺到的;在圖8所示的實(shí)施例的情況下,根據(jù)下述順序來執(zhí)行操作●加載圖像(加載JPEG代碼),●在顯示屏上顯示該圖像,●用戶,●加載另一個(gè)圖像(卸載JPEG代碼并卸載GIF代碼),●顯示另一個(gè)圖像。
與其他的處理操作相比,加載和卸載時(shí)間是微不足道的。
■由相關(guān)管理器來優(yōu)化資源相關(guān)管理器管理每個(gè)組件的慣用計(jì)數(shù)器。該計(jì)算器對(duì)組件的“引入者”數(shù)目進(jìn)行計(jì)數(shù),也就是說從與計(jì)數(shù)器相關(guān)的組件中引入了一函數(shù)的組件。只要一組件的慣用計(jì)數(shù)器減小到0,則卸載該組件。
當(dāng)不再使用一組件時(shí),相關(guān)管理器可自動(dòng)的釋放由該組件所使用的資源。
值得注意的是本發(fā)明因此可尤其對(duì)系統(tǒng)所使用的資源進(jìn)行有效的優(yōu)化,而無需裝載系統(tǒng)操作的通用方式。
實(shí)際上,已知系統(tǒng)通常采用周期性的裝置以檢驗(yàn)組件的狀態(tài),定期“接管”的特定任務(wù)采用所述裝置,使得可確定必須被卸載的組件。
這些的定期檢驗(yàn)任務(wù)不完全適于實(shí)時(shí)的,因?yàn)樗荒芾煤玫姆醋饔眯詠硇薷膶⒈蛔粉櫟慕M件狀態(tài)。
此外,該類型的操作方式需要多任務(wù)的環(huán)境,因?yàn)榇嬖诤藢?shí)任務(wù)。
在Java語言中可得到對(duì)采用定期檢驗(yàn)這類操作方式的說明,檢驗(yàn)任務(wù)采用了“不用構(gòu)件收集程序”型的構(gòu)件。
■與硬件構(gòu)件所負(fù)責(zé)處理的函數(shù)有關(guān)的說明已經(jīng)陳述了組件的執(zhí)行部分與一代碼相對(duì)應(yīng)(該代碼包括一個(gè)或多個(gè)程序,因此可實(shí)現(xiàn)組件的函數(shù)),但是它還與一硬件執(zhí)行相對(duì)應(yīng),該硬件執(zhí)行是基于包括有電子電路的硬件構(gòu)件。
因此,可由組件C1來負(fù)責(zé)處理一函數(shù),該組件C1利用電子電路來執(zhí)行它(例如視頻解壓縮電路)。然而,該函數(shù)還可由只基于軟件而執(zhí)行它的組件C1負(fù)責(zé)。如果對(duì)一應(yīng)用程序而言實(shí)際上存在該電子電路并且正確的操作,那么系統(tǒng)將使用該組件C1。另一方面,如果不存在電子電路或者如果該電子電路不能被正確的操作,那么系統(tǒng)按照對(duì)另一組件透明的方式來使用組件C1′。在所有的情況下,函數(shù)都被負(fù)責(zé)處理。
同樣的,如果目前由軟件代碼來負(fù)責(zé)處理函數(shù),那么它稍后將由利用一電子電路可實(shí)現(xiàn)它的一組件按照對(duì)另一組件完全透明的方式來負(fù)責(zé)處理。
圖9的框圖說明了組件C1由另一組件C′1來代替,該C′1輸出了相同的函數(shù)。
如900所示,當(dāng)前C1正在執(zhí)行,擁有與C1進(jìn)行通信的信道并因此在鏈接圖表中與它相鏈接的組件C2在901請(qǐng)求用C′1來替換C1。
GD于是請(qǐng)求C1保存它的當(dāng)前狀態(tài)(步驟902),這是由C1在步驟903負(fù)責(zé)處理的。GD因此記載并初始化C′1(904和905)。
如果未正確的執(zhí)行C′1的加載和初始化(步驟906),那么GD將一個(gè)錯(cuò)誤返回到請(qǐng)求方C2。
如果正確的執(zhí)行C′1的加載和初始化,那么GD在908將C1的當(dāng)前狀態(tài)傳送到C′1,因此C′1配置了與其本身相同的狀態(tài)。
為了這些目的,C′1對(duì)所傳送的當(dāng)前狀態(tài)進(jìn)行說明并接受它或拒絕它(910)。
如果C′1拒絕了它,則GD卸載C′1(911)并去除初始化(912)。GD于是將一個(gè)錯(cuò)誤消息返回到請(qǐng)求方(913和914)。
如果現(xiàn)在C′1接受了C1的當(dāng)前狀態(tài),那么GD通過用C′1替換其中C1來更新其圖表(916)。它因此為C′1重建了通信信道;這些信道是C1所使用的那些信道。因此GD去除初始化并卸載C1(918和919)。
一旦替換操作已被正確的執(zhí)行,GD將通知其中的C2(920,921);后面將繼續(xù)它的操作。
如上所述的是根據(jù)本發(fā)明的系統(tǒng)以及其中的應(yīng)用程序的基本原理(根據(jù)圖6位于其他事物中)。
假設(shè)我們指定它還可使組件C1的接口程序參數(shù)化,因此當(dāng)GD搜索可輸出由C1所引入的函數(shù)的一組件時(shí),在與圖6的步驟627相等價(jià)的步驟中,它繼續(xù)在已被加載到系統(tǒng)中的一組組件中搜索并將鏈接圖表的可輸出該函數(shù)的每個(gè)組件的“視圖”傳送到C1。
作為參數(shù)化的選擇規(guī)則的函數(shù),C1將在由CD所確定的這些組件當(dāng)中為其選擇一個(gè)適當(dāng)?shù)慕M件。
假設(shè)我們還指定,在其當(dāng)前版本中,根據(jù)本發(fā)明的系統(tǒng)需要最少四個(gè)組件以操作,如圖10a所示(在該圖中箭頭表示在組件間傳送的函數(shù)—這類圖因此表示鏈接圖表)。
存在下述組件●“交互作用”,如已陳述的,為了對(duì)系統(tǒng)的操作進(jìn)行初始化則需要該“交互作用”,●“往復(fù)移動(dòng)”,這被“交互作用”所調(diào)用并且其本身也調(diào)用下述兩種組件●GD,●以及最終的“VMM”,同樣還調(diào)用GD的所謂存儲(chǔ)器組件或存儲(chǔ)器管理組件。
圖10b給出了類似的系統(tǒng)的最小配置,在該配置中增加了三種組件“CPU”、“TIMER3”、以及“SCHED”,因此可允許多線程管理。
最后,圖10c表示對(duì)根據(jù)本發(fā)明的系統(tǒng)進(jìn)行改進(jìn)的配置,該配置形成了一個(gè)小的應(yīng)用程序。
在該圖中,“交互作用”組件使用“COM”組件來進(jìn)行通信,因此可在網(wǎng)絡(luò)上交換數(shù)據(jù)并且使用“GUI”(圖形接口程序)組件以顯示圖形表示。
“MOUSE”組件可管理MOUSE外圍設(shè)備。它傳送與該外圍設(shè)備的狀態(tài)改變有關(guān)的信息(移動(dòng),點(diǎn)擊按鈕)?!癎UI”組件使用“WINDOW”以及“BUTTON”組件以執(zhí)行“INTERACTION”組件所需的顯示。
“WINDOW”和“BUTTON”組件使用GIF和JPEG編碼/譯碼組件以在它們各自的顯示區(qū)域來顯示圖像。
GUI、COM、WINDOW、BUTTON、GIF以及JPEG組件都使用系統(tǒng)基本組件的函數(shù)。然而,在圖10c中未表示與這些函數(shù)相對(duì)應(yīng)的鏈接,因此該圖沒有過載。
將組件分類成函數(shù)域,這些函數(shù)域不是域特權(quán)級(jí)別相對(duì)應(yīng)的類別,但是是一種使用類型。如下是各種與某一組件相關(guān)的函數(shù)域
值得注意的是由于根據(jù)本發(fā)明的系統(tǒng)的所有組件是根據(jù)相同的形式來實(shí)現(xiàn)的,因此系統(tǒng)按照相同的方式來管理所有的組件并且按照相同的方式將上述所提及的組件的有用參數(shù)應(yīng)用程序到組件,而不管它們的特權(quán)級(jí)別。
最后,顯而易見的是根據(jù)本發(fā)明的系統(tǒng)可使●對(duì)于程序員而言,具有對(duì)操作系統(tǒng)所有構(gòu)件的一個(gè)概觀,而不管它們的特權(quán)級(jí)別,●使用相同的工具可創(chuàng)建這些各種組件,●影響各部分之間的交互作用,而無任何限定。由系統(tǒng)組件的數(shù)目來表示系統(tǒng)的功率,但是在傳統(tǒng)的系統(tǒng)中(單片和微內(nèi)核)用可能互連的數(shù)目來表示,各部件間的通信裝置受限制的且是固定的。它需要通過任意的瓶頸而有系統(tǒng)的進(jìn)行(內(nèi)核數(shù)目的限制,無論這是單片內(nèi)核還是微內(nèi)核,等等)。通信裝置的相關(guān)管理以及動(dòng)態(tài)創(chuàng)建可克服上述限制,●為所有類型的代碼提供相同的屬性。在本發(fā)明的情況下,存在這樣一個(gè)事實(shí),即不再需要設(shè)計(jì)一個(gè)用于管理內(nèi)核模塊、信息庫、或甚至是應(yīng)用程序“插件”的系統(tǒng)。上述所有這些都被組件管理系統(tǒng)所代替。
●在將來可創(chuàng)建與需要實(shí)現(xiàn)的函數(shù)一樣多的組件。這可使對(duì)根據(jù)本發(fā)明的系統(tǒng)進(jìn)行完全升級(jí)。
另外,如這里所描述的,本發(fā)明通過在許多情況下返回錯(cuò)誤信息而為開發(fā)者提供了極大的可讀性和反應(yīng)性。
實(shí)際上,在加載組件的過程中,為該組件自動(dòng)執(zhí)行一函數(shù)(Init)。該函數(shù)(Init)檢驗(yàn)已加載組件的操作所需的一組組件實(shí)際上已加載到系統(tǒng)中。在這樣的一種情況下,即該檢驗(yàn)不能滿足(至少一個(gè)所需函數(shù)還未實(shí)現(xiàn),或者提供所需函數(shù)的組件與有缺陷的硬件構(gòu)件相關(guān),等等),那么將一個(gè)錯(cuò)誤消息返回到調(diào)用方。
另外,在被調(diào)用組件與有缺陷的構(gòu)件(硬件和/或軟件)相關(guān)的情況下,它被自動(dòng)的加載到系統(tǒng)的隨機(jī)存取存儲(chǔ)器中。
此外,根據(jù)附圖9可知,當(dāng)組件被調(diào)用時(shí)還返回錯(cuò)誤消息。
因此,如果不存在硬件或軟件構(gòu)件或者硬件或軟件構(gòu)件在操作調(diào)用組件時(shí)是有缺陷的,因此錯(cuò)誤消息繼續(xù)是一個(gè)已被通知的消息,而無需系統(tǒng)測試的整個(gè)操作。
權(quán)利要求
1.一種用于開發(fā)將由計(jì)算機(jī)系統(tǒng)所實(shí)現(xiàn)的計(jì)算機(jī)項(xiàng)目(P1、P2)的處理方法,該處理包括●用于列出將要實(shí)現(xiàn)的函數(shù)的函數(shù)分析階段(601);●創(chuàng)建項(xiàng)目組件(C1、C2)以實(shí)現(xiàn)所述函數(shù)的階段;●編輯階段;●對(duì)組件進(jìn)行說明使組件被計(jì)算機(jī)所考慮的階段;●將所述組件加載到系統(tǒng)存儲(chǔ)器區(qū)域以由計(jì)算機(jī)來實(shí)現(xiàn)其組件的階段,其特征在于●每個(gè)組件完全封裝在軟件目標(biāo)中,該軟件目標(biāo)通過接口程序與系統(tǒng)的剩余部分相隔離,該接口程序借助于語言描述了由該組件提供的函數(shù)以及在其執(zhí)行期間應(yīng)當(dāng)被提供的函數(shù);●當(dāng)載入每個(gè)組件時(shí)(C1-“調(diào)用組件”),將所述組件的二進(jìn)制格式的接口程序發(fā)送到被永久載入該系統(tǒng)中的組件(GD);●執(zhí)行自動(dòng)搜索,搜索用于提供運(yùn)行該調(diào)用組件(C1)所需的函數(shù)的組件,以便在所述調(diào)用組件(C1)與被調(diào)用組件(C2)之間為通過該調(diào)用組件所調(diào)用的每個(gè)函數(shù)建立通信信道。
2.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于通過永久載入該系統(tǒng)中的所述組件(GD)執(zhí)行所述自動(dòng)搜索。
3.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于一旦建立了通信信道,則組件之間彼此可直接通信。
4.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于為了在調(diào)用組件(C1)與被調(diào)用組件(C2)之間建立通信信道,所述永久載入該系統(tǒng)中的組件(GD)構(gòu)造“視圖”,該“視圖”包括所引入函數(shù)的屬性值以及指針。
5.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于所述自動(dòng)搜索在鏈接圖表中執(zhí)行,該鏈接圖表是載入該系統(tǒng)中的組件的列表。
6.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于當(dāng)搜索所述調(diào)用組件(C1)所需的函數(shù)時(shí),如果所述永久載入該系統(tǒng)中的組件(GD)確定通過鏈接圖表中的一個(gè)組件(C2)提供所述函數(shù),則在該鏈接圖表的所述組件(C2)與該調(diào)用組件(C1)之間建立通信信道。
7.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于在說明期間,在該系統(tǒng)的專用組件聲明每個(gè)組件,該系統(tǒng)的專用組件在單獨(dú)的列表中存儲(chǔ)所述組件,單獨(dú)的列表編組了已經(jīng)在該系統(tǒng)的所述專用組件中聲明的整個(gè)組件。
8.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于該系統(tǒng)的所述專用組件是載入程序,該載入程序在載入程序的單獨(dú)列表中存儲(chǔ)所述被聲明的組件,該載入程序的單獨(dú)列表編組了已經(jīng)在此所聲明的整個(gè)組件,以及其特征在于通過該載入程序執(zhí)行調(diào)用組件(C1)的所述二進(jìn)制格式接口程序的發(fā)送。
9.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于該系統(tǒng)的每個(gè)載入程序與可以存儲(chǔ)組件的特定介質(zhì)相關(guān)。
10.根據(jù)前述兩個(gè)權(quán)利要求之一所述的處理方法,其特征在于所述永久載入該系統(tǒng)中的組件(GD)在該鏈接圖表中輸入不同載入程序的組件,使得不同載入程序的組件相關(guān)聯(lián)。
11.根據(jù)前述三個(gè)權(quán)利要求之一所述的處理方法,其特征在于當(dāng)搜索所述調(diào)用組件(C1)所需的函數(shù)時(shí),如果所述永久載入該系統(tǒng)中的組件(GD)確定鏈接圖表中的沒有組件提供所述函數(shù),則其查詢系統(tǒng)的加載程序的列表,以便確定在這些加載程序聲明的一個(gè)組件是否提供該所需的函數(shù)。
12.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于利用“加載時(shí)間”屬性或“運(yùn)行時(shí)間”屬性來定義該所需的函數(shù)(F1)。
13.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于在●如果利用“加載時(shí)間”屬性定義該所需的函數(shù)(F1),則所述永久載入該系統(tǒng)中的組件(GD)在載入調(diào)用所述函數(shù)的組件(C1)之前,載入提供此函數(shù)的組件(C2);●如果利用“運(yùn)行時(shí)間”屬性定義該所需的函數(shù)(F1),則調(diào)用此函數(shù)的組件(C1)執(zhí)行明確的調(diào)用,調(diào)用由所述永久載入該系統(tǒng)中的組件(GD)所提供的“depmgr”函數(shù),以調(diào)用“運(yùn)行時(shí)間”函數(shù)。
14.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于當(dāng)載入組件以便運(yùn)行時(shí),所述永久載入該系統(tǒng)中的組件(GD)分析用其接口程序所表示的其相關(guān)性,并且自動(dòng)設(shè)法對(duì)其中所表示的所有相關(guān)性進(jìn)行解析,為任何由此實(shí)現(xiàn)的組件提供它本身所需的函數(shù)。
15.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于組件的接口程序的內(nèi)容是在其編譯之后容易通過系統(tǒng)運(yùn)行開發(fā)以便按照所需的函數(shù)將組件連接到一起的說明,并且所述說明的語言用于指定組件含有的代碼的類型。
16.根據(jù)前述三個(gè)權(quán)利要求之一所述的處理方法,其特征在于所述說明語言用于指定可訪問給定函數(shù)的代碼的類型,通過該說明語言可以選擇最優(yōu)化的通信裝置。
17.根據(jù)前述兩個(gè)權(quán)利要求之一所述的處理方法,其特征在于所述永久載入該系統(tǒng)中的組件(GD)載入組件所需的其屬性是“加載時(shí)間”屬性的組件,解析它們的相關(guān)性并在這些不同組件之間建立通信信道,使得這些組件彼此可以直接通信。
18.根據(jù)前述三個(gè)權(quán)利要求之一所述的處理方法,其特征在于為了在兩個(gè)組件(C1、C2)之間建立通信信道,能夠使用四種預(yù)定的通信模式,或者使用根據(jù)兩個(gè)組件各自的接口程序中指定的特征而特別創(chuàng)建的專用模式。
19.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于所述四種預(yù)定的通信模式是●直接調(diào)用;●系統(tǒng)調(diào)用;●線程的轉(zhuǎn)換;●消息的傳送。
20.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于“消息的傳送”模式專門用于未出現(xiàn)在三種其它模式之一中的調(diào)用。
21.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于該系統(tǒng)的組件可被創(chuàng)建、編譯、加載到系統(tǒng)的存儲(chǔ)器中,并且可彼此獨(dú)立地卸載,使得該系統(tǒng)可被動(dòng)態(tài)地更新而不需重新啟動(dòng)。
22.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于當(dāng)自動(dòng)搜索時(shí),所述永久載入該系統(tǒng)中的組件(GD)考慮與該組件相關(guān)的標(biāo)準(zhǔn)。
23.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于根據(jù)該組件的接口程序部分的屬性表示所述與組件相關(guān)的標(biāo)準(zhǔn)。
24.根據(jù)前述權(quán)利要求之一所述的處理方法,其特征在于使每個(gè)組件與給定的特權(quán)級(jí)別相關(guān),該特權(quán)級(jí)別按照其他組件的各個(gè)特權(quán)級(jí)別決定該組件訪問其他組件的可能性。
25.根據(jù)前述權(quán)利要求所述的處理方法,其特征在于使用下面的特權(quán)級(jí)別●Inprocess;●Spawn;●IO;●Supervisor。
全文摘要
本發(fā)明涉及用于開發(fā)將由計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)的計(jì)算機(jī)項(xiàng)目的處理方法,包括列出將要實(shí)現(xiàn)函數(shù)的函數(shù)分析階段;創(chuàng)建項(xiàng)目組件以實(shí)現(xiàn)所述函數(shù)的階段;編輯階段;對(duì)組件進(jìn)行說明使組件被計(jì)算機(jī)考慮的階段;將所述組件加載到系統(tǒng)存儲(chǔ)器區(qū)域以由計(jì)算機(jī)來實(shí)現(xiàn)其組件的階段。每個(gè)組件完全封裝在軟件目標(biāo)中,軟件目標(biāo)通過接口程序與系統(tǒng)的剩余部分相隔離,接口程序借助于語言描述由組件提供的函數(shù)以及在其執(zhí)行期間應(yīng)當(dāng)被提供的函數(shù);當(dāng)載入每個(gè)組件時(shí)(調(diào)用組件),將組件的二進(jìn)制格式的接口程序發(fā)送到被永久載入系統(tǒng)中的組件;自動(dòng)搜索用于提供運(yùn)行調(diào)用組件所需的函數(shù)的組件,以在調(diào)用組件與被調(diào)用組件之間為被調(diào)用組件所調(diào)用的每個(gè)函數(shù)建立通信信道。
文檔編號(hào)G06F9/45GK1936835SQ20061010182
公開日2007年3月28日 申請(qǐng)日期2001年6月14日 優(yōu)先權(quán)日2000年6月16日
發(fā)明者E·馬蒂 申請(qǐng)人:奈克斯維伍技術(shù)公司