專利名稱::數(shù)據(jù)結(jié)構(gòu)的識(shí)別方法和記錄介質(zhì)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種在面向?qū)ο蟛僮飨到y(tǒng)中使用的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法。本發(fā)明還涉及一種記錄介質(zhì),執(zhí)行上述數(shù)據(jù)結(jié)構(gòu)識(shí)別方法的程序記錄在該介質(zhì)中。本發(fā)明的某些特征的詳情已在標(biāo)題為“數(shù)據(jù)處理方法和器件”(Dataprocessingmethodanddevice)的、由同一受讓人于1996年7月12日申請(qǐng)的、就1997年7月14日申請(qǐng)的JP178625/95要求承認(rèn)巴黎公約規(guī)定的優(yōu)先權(quán)的、歐洲專利申請(qǐng)0753811A1中得到了描述,在此引入其完整的公開作為參考。為了控制各種類型的裝置并在各裝置之間進(jìn)行數(shù)據(jù)通信,軟件是很關(guān)鍵的,而且軟件的作用越來(lái)越重要。在所有軟件程序中,具體地說(shuō),在大多數(shù)執(zhí)行一個(gè)復(fù)雜系統(tǒng)的軟件程序中,將對(duì)許多數(shù)據(jù)項(xiàng)進(jìn)行處理的處理過(guò)程簡(jiǎn)單地描述為一個(gè)單元。這樣的數(shù)據(jù)項(xiàng)單元通常稱為“一個(gè)對(duì)象”或者“一個(gè)數(shù)據(jù)結(jié)構(gòu)”。在軟件程序中,都給一個(gè)對(duì)象或一個(gè)數(shù)據(jù)結(jié)構(gòu)提供了一個(gè)名字,并根據(jù)其名字進(jìn)行識(shí)別。在編程語(yǔ)言中,例如C和C++,提供給一個(gè)對(duì)象或一個(gè)數(shù)據(jù)結(jié)構(gòu)的名字表示一種函數(shù)、一種類型、一個(gè)類別或一個(gè)變量。然而,由編程語(yǔ)言所定義的名字只用在程序文本區(qū)中,它稱為“域”(scope),在較大規(guī)模的軟件程序中,并不足以代表一個(gè)對(duì)象或一個(gè)數(shù)據(jù)結(jié)構(gòu)。因此,大多數(shù)軟件程序都不能由單一程序文本實(shí)施,而需要多個(gè)程序文本。有越來(lái)越多的軟件程序由多個(gè)工程師分別開發(fā),并通過(guò)將這些程序通信和運(yùn)作而成為一個(gè)系統(tǒng)。通常,將提供某些服務(wù)的軟件模塊稱為“一個(gè)服務(wù)器”,而將使用這種服務(wù)的軟件模塊稱為“一個(gè)客戶”。在此情況下,可以將客戶看作是一個(gè)識(shí)別器用戶,而可以認(rèn)為服務(wù)器包括一個(gè)識(shí)別器管理器。數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)識(shí)別器的定義如下。在下面描述中所指定的數(shù)據(jù)結(jié)構(gòu)不能被客戶直接訪問(wèn)。在操作系統(tǒng)(OS)與應(yīng)用程序之間的關(guān)系中,例如,由OS管理計(jì)算資源的數(shù)據(jù)結(jié)構(gòu)不能直接由應(yīng)用程序訪問(wèn)。這是因?yàn)槿绻试S應(yīng)用程序訪問(wèn)OS中的數(shù)據(jù)結(jié)構(gòu),就有破壞OS的可能性。類似地,關(guān)于應(yīng)用程序,在客戶和服務(wù)器之間的關(guān)系中,禁止客戶直接訪問(wèn)服務(wù)器中的數(shù)據(jù)結(jié)構(gòu),特別是當(dāng)將面向?qū)ο蠹夹g(shù)使用到該應(yīng)用程序時(shí)。原因如下根據(jù)面向?qū)ο蠹夹g(shù),由對(duì)象管理的數(shù)據(jù)只能由處理數(shù)據(jù)的方法或應(yīng)用程序界面(API)訪問(wèn),因而提供了一些優(yōu)點(diǎn),如易于編程和確保可維護(hù)性和安全性。在上述條件下,由OS支持基本功能,例如軟件程序之間的通信和共同操作。在一個(gè)在OS中運(yùn)行的應(yīng)用程序中,不用由編程語(yǔ)言所提供的名字,而普遍使用識(shí)別器(ID)來(lái)識(shí)別對(duì)象或數(shù)據(jù)結(jié)構(gòu)。在程序中,通常把識(shí)別器作為整數(shù)型值或由識(shí)別器所定義的特別類型的值來(lái)處理。識(shí)別器的值由OS判斷。需要用識(shí)別器在對(duì)象或數(shù)據(jù)結(jié)構(gòu)之間進(jìn)行判別,這樣,正如從整個(gè)系統(tǒng)中所看到的,每個(gè)識(shí)別器都有一個(gè)唯一的值。因此,位的數(shù)量和表示識(shí)別器的內(nèi)容(稱為“格式”)就決定了系統(tǒng)的運(yùn)轉(zhuǎn)或所需的存儲(chǔ)器大小。圖25A表示使用存儲(chǔ)器地址的識(shí)別器格式的一個(gè)實(shí)例。例如,在存儲(chǔ)器中,如傳輸監(jiān)視緩沖區(qū)(TransferLookasideBuffer)(TLB),為了在沒有裝備存儲(chǔ)器管理裝置的微處理器中使用,系統(tǒng)中所有可能的地址值都是唯一的。因此,當(dāng)如圖26A所示產(chǎn)生數(shù)據(jù)結(jié)構(gòu)時(shí),就如圖26B所示設(shè)置數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)器地址,作為一個(gè)與數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng)的識(shí)別器。上述識(shí)別器的格式需要足夠多的位,這些位是為了表示與數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng)的地址所必須的。在這種格式中,數(shù)據(jù)結(jié)構(gòu)的地址可以由識(shí)別器的值容易地加以識(shí)別。這對(duì)于需要立即認(rèn)識(shí)數(shù)據(jù)結(jié)構(gòu)內(nèi)容的系統(tǒng)來(lái)說(shuō)是非常有效的。然而,如果有動(dòng)態(tài)地產(chǎn)生或破壞數(shù)據(jù)結(jié)構(gòu)的可能性,識(shí)別器的值就有可能變化,且不是一直固定的。因此,如果在系統(tǒng)正在操作時(shí)有可能動(dòng)態(tài)地產(chǎn)生或破壞數(shù)據(jù)結(jié)構(gòu),而且同樣的地址被再使用,該地址值就不能用作識(shí)別器。圖25B表示了使用時(shí)間標(biāo)記的識(shí)別器格式的另一個(gè)實(shí)例。這種格式所需要的位數(shù)由產(chǎn)生或破壞數(shù)據(jù)結(jié)構(gòu)所需的時(shí)間以及識(shí)別器有效的時(shí)間來(lái)決定。例如,如果假設(shè)產(chǎn)生某種結(jié)構(gòu)所需的時(shí)間為10微秒和系統(tǒng)應(yīng)連續(xù)運(yùn)轉(zhuǎn)近20年,就需要46位。換句話說(shuō),由于246=7.04×1015,系統(tǒng)就能操作195465.73小時(shí),或者22.31年。根據(jù)上述類型的格式,只有通過(guò)在足夠小的單位中提供時(shí)間標(biāo)記,識(shí)別器的值在時(shí)間軸上才是唯一的,從而就有可能通過(guò)識(shí)別器在數(shù)據(jù)結(jié)構(gòu)之間進(jìn)行區(qū)分。然而,為了檢測(cè)數(shù)據(jù)結(jié)構(gòu),應(yīng)該尋找地址值,這就需要附加的處理,例如散列表(Hashtable)的使用,因而不能顯示該類格式的運(yùn)轉(zhuǎn)。此外,如果不使用足夠多的位,就不能表示對(duì)所需年數(shù)的時(shí)間標(biāo)記。作為在時(shí)間軸上提供唯一值的識(shí)別器格式的另一個(gè)實(shí)例,可以使用計(jì)數(shù)器。在該方法中,由識(shí)別器所定義的數(shù)據(jù)結(jié)構(gòu)每產(chǎn)生或破壞一次,計(jì)數(shù)器值就可能增加。然而,在該方法以及前面的方法中,為了從識(shí)別器的值中檢測(cè)數(shù)據(jù)結(jié)構(gòu),就需要進(jìn)行附加的處理來(lái)尋找地址值。根據(jù)識(shí)別器的上述已知格式,即,地址值與時(shí)間標(biāo)記或計(jì)數(shù)器結(jié)合的格式,需要大量的位。例如,在32位尋址處理器中,這是目前使用的標(biāo)準(zhǔn)處理器,地址值需要32位,時(shí)間標(biāo)記需要32位(或64位),這樣總共需要64位(或者96位)。對(duì)于應(yīng)用到各種裝置中的軟件程序來(lái)說(shuō),并不總是能保證有足夠多的存儲(chǔ)區(qū)。這樣,就希望上述類型的軟件程序使用盡可能少的存儲(chǔ)器,而且采用只需要較少位的識(shí)別器的格式。具有較少量的位,就可能降低在識(shí)別器中進(jìn)行比較操作或拷貝識(shí)別器的值所需的成本,從而改進(jìn)整個(gè)系統(tǒng)的運(yùn)轉(zhuǎn)。然而,只靠減少位的數(shù)量是不可能提高系統(tǒng)的運(yùn)轉(zhuǎn)效率的。如上所述,例如,只使用時(shí)間標(biāo)記或計(jì)數(shù)器的識(shí)別器的格式需要另外的處理,如使用散列表,因此,其運(yùn)轉(zhuǎn)效率可能低于使用地址值的識(shí)別器的格式。而且,考慮到處理器尋址方法,較少量的位有時(shí)并沒有意義。例如,在32位的尋址處理器中,由于大多數(shù)計(jì)算都是在32位的單元中進(jìn)行的,這就適合設(shè)置32位為識(shí)別器的格式所需的位數(shù)。今天,系統(tǒng)正變得越來(lái)越復(fù)雜,例如,系統(tǒng)連接到一個(gè)網(wǎng)絡(luò)以實(shí)現(xiàn)單個(gè)裝置之間的通信,而且系統(tǒng)配置動(dòng)態(tài)地變化。在這樣一種系統(tǒng)中,對(duì)識(shí)別器的格式的需要因裝置而變化。因此,就需要一種使用可擴(kuò)充的識(shí)別器的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,該可擴(kuò)充的識(shí)別器適合用在具有不同需求的各種裝置中,并適合用于在這樣的裝置間的通信。因此,為了解決上述問(wèn)題,本發(fā)明的一個(gè)目的是要提供一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,在該方法中,只需要少量的位,而且能夠保證系統(tǒng)高水平的運(yùn)轉(zhuǎn)。本發(fā)明的另一個(gè)目的是要提供一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,該方法使用一種適合用在一個(gè)可擴(kuò)充的系統(tǒng)中的識(shí)別器。本發(fā)明的再一個(gè)目的是要提供一種記錄介質(zhì),其中將執(zhí)行上述數(shù)據(jù)結(jié)構(gòu)識(shí)別方法的程序記錄在該介質(zhì)上。為了達(dá)到上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中通過(guò)一個(gè)識(shí)別器區(qū)別對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)。該識(shí)別器包括一個(gè)與用于檢測(cè)對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引。根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中通過(guò)一個(gè)識(shí)別器來(lái)區(qū)別對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)。該識(shí)別器包括一個(gè)與用于檢測(cè)對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引。該識(shí)別器有一個(gè)用于判斷識(shí)別器格式的格式判斷部分。根據(jù)上述設(shè)置,有可能提供一種使用一種可用于可擴(kuò)充系統(tǒng)的識(shí)別器的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中可以減少所需的位數(shù),并能保證系統(tǒng)高水平運(yùn)轉(zhuǎn)。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種記錄介質(zhì),其中將用于通過(guò)使用識(shí)別器區(qū)分對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)之間的區(qū)別的程序記錄在該介質(zhì)上。該識(shí)別器包括一個(gè)與用于檢測(cè)對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引。根據(jù)本發(fā)明的再一個(gè)方面,提供了一種記錄介質(zhì),其中將用于通過(guò)使用識(shí)別器區(qū)分對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)之間的區(qū)別的程序記錄在該介質(zhì)上。該識(shí)別器包括一個(gè)與用于檢測(cè)對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引和一個(gè)用于判斷識(shí)別器的格式的格式判斷部分。根據(jù)上述設(shè)置,有可能提供一種記錄介質(zhì),其中將執(zhí)行使用一種能用于可擴(kuò)充系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法的程序記錄在該介質(zhì)上。在這種方法中,可以減少所需的位數(shù),并能保持系統(tǒng)高水平運(yùn)轉(zhuǎn)。圖1表示一個(gè)32位對(duì)象識(shí)別器(OID)的格式;圖2表示一個(gè)64位對(duì)象識(shí)別器(OID)的格式;圖3是表示用于產(chǎn)生/破壞識(shí)別器的基本步驟的流程圖;圖4表示“StructEntryTable”表的一個(gè)實(shí)例;圖5表示設(shè)置在存儲(chǔ)器中的“Struct”數(shù)據(jù)結(jié)構(gòu)與“StructEntryTable”表格的地址之間的關(guān)系;圖6表示“freeStructIDlist”表的結(jié)構(gòu);圖7是表示用于使識(shí)別器管理器初始化的基本步驟的流程圖;圖8是表示用于通過(guò)識(shí)別器管理器產(chǎn)生一個(gè)識(shí)別器的基本步驟的流程圖;圖9是表示用于用識(shí)別器管理器檢測(cè)一個(gè)識(shí)別器的基本步驟的流程圖;圖10是表示用于通過(guò)識(shí)別器管理器破壞一個(gè)識(shí)別器和一個(gè)數(shù)據(jù)結(jié)構(gòu)的基本步驟的流程圖;圖11是表示通過(guò)一個(gè)內(nèi)部主地址與一個(gè)網(wǎng)地址的結(jié)合而形成的一個(gè)簡(jiǎn)單的對(duì)象識(shí)別器“OID”格式的實(shí)例;圖12表示通過(guò)一個(gè)設(shè)置有數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)器地址與一個(gè)時(shí)間標(biāo)記的結(jié)合而產(chǎn)生的識(shí)別器格式的一個(gè)實(shí)例;圖13包括圖13A和圖13B,表示一種用在根據(jù)本發(fā)明的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法中的識(shí)別器格式;圖14是表示產(chǎn)生一個(gè)數(shù)據(jù)格式的基本步驟的流程圖;圖15是表示破壞一個(gè)數(shù)據(jù)格式和對(duì)應(yīng)的識(shí)別器的基本步驟的流程圖;圖16表示通過(guò)使用“SendWithRBox”、“receive”和“Reply”方法的“mCOOPMessagePassing”的基本類型;圖17表示一個(gè)RBox識(shí)別器“RID”格式的一個(gè)實(shí)例;圖18表示“RboxEntryTable”表格的一個(gè)實(shí)例;圖19表示設(shè)置在存儲(chǔ)器中的RBox識(shí)別器“RBox”與“RBoxEntryTable”表格的地址之間的關(guān)系;圖20示意性地表示了“FreeRIDlist”;圖21表示一種包括格式判斷部分的識(shí)別器格式;圖22是表示包含在本發(fā)明中的圖形驅(qū)動(dòng)硬件的主要部分配置的方框圖;圖23表示包括圖22中所示的圖形驅(qū)動(dòng)硬件的軟件結(jié)構(gòu);圖24是表示包含在本發(fā)明中的器件配置的方塊圖;圖25包括圖25A和圖25B,表示一種已知識(shí)別器格式的一個(gè)實(shí)例;和圖26包括圖26A和圖26B,表示一種公知的用作設(shè)置數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)器地址和用作識(shí)別器的識(shí)別器格式?,F(xiàn)在參考附圖描述本發(fā)明的優(yōu)選實(shí)施例。在下面的描述中,假設(shè)本發(fā)明應(yīng)用于一個(gè)面向?qū)ο蟮牟僮飨到y(tǒng)“OS”中。[1]在對(duì)本發(fā)明優(yōu)選實(shí)施例的具體描述之前,下面解釋應(yīng)用于本發(fā)明的面向?qū)ο驩S。(1)面向?qū)ο驩S根據(jù)一種面向?qū)ο蠹夹g(shù),已經(jīng)通過(guò)在模塊中形成許多功能而開發(fā)了構(gòu)成本發(fā)明的面向?qū)ο驩S。更具體地,可以使用稱為“Aperios”(商標(biāo))的OS。上述面向?qū)ο驩S的特征在于基/亞(base/meta)分離技術(shù)和nano-kernel技術(shù)、以及可以同時(shí)提供多個(gè)虛擬操作系統(tǒng)。在應(yīng)用程序中根據(jù)需要提供虛擬OS的環(huán)境,而且在上述面向?qū)ο驩S中具體地將虛擬OS的環(huán)境稱為“亞空間”(metaSpace)。在由本發(fā)明同一個(gè)受讓人以前已提出的日本專利申請(qǐng)9-92446的具體描述和附圖中,也將亞空間表述為術(shù)語(yǔ)“環(huán)境”。在上述申請(qǐng)的具體描述和附圖中,描述了用于支撐并行面向?qū)ο缶幊痰膩喛臻g,該亞空間稱作“并行面向?qū)ο缶幊痰膩喛臻g(mCOOP)”。在mCOOP中,按對(duì)象的單元在模塊中形成由一個(gè)應(yīng)用程序所具有的功能。一個(gè)應(yīng)用程序由一個(gè)或多個(gè)對(duì)象形成,它們通過(guò)信息通路相互通信。(2)通過(guò)識(shí)別器管理器判斷識(shí)別器的格式現(xiàn)在具體描述本發(fā)明的優(yōu)選實(shí)施例,該實(shí)施例用在包括一個(gè)識(shí)別器管理器的面向?qū)ο驩S中。圖1和2分別表示一個(gè)32位對(duì)象識(shí)別器(OID)和一個(gè)64位對(duì)象識(shí)別器(OID)的格式。圖1所示識(shí)別器的位31和圖2所示識(shí)別器的位63都是用于判斷OID格式的位。圖1所示識(shí)別器的位30和圖2所示識(shí)別器的位62作為保留位,用于識(shí)別加到OID格式中的網(wǎng)地址是否存在。此外,即使網(wǎng)地址沒有加到OID格式中,該預(yù)留位可以用來(lái)作附加判斷。(2-1)產(chǎn)生或破壞數(shù)據(jù)結(jié)構(gòu)和識(shí)別器下面將更具體地描述數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的識(shí)別器的產(chǎn)生或破壞。盡管可以考慮用各種方法來(lái)產(chǎn)生或破壞數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的識(shí)別器,然而取在面向?qū)ο驩S中所使用的方法作為一個(gè)實(shí)例來(lái)進(jìn)行描述。圖3是表示用于產(chǎn)生和破壞識(shí)別器的基本步驟的流程圖。在步驟ST21中,首先執(zhí)行用于初始化一個(gè)服務(wù)器的API。此時(shí),也初始化了后面將描述的數(shù)據(jù)結(jié)構(gòu)識(shí)別器管理器。在步驟ST22中,執(zhí)行用于產(chǎn)生數(shù)據(jù)結(jié)構(gòu)的API,而在步驟ST23,再執(zhí)行用于破壞數(shù)據(jù)結(jié)構(gòu)的API。在完成上述初始化之后,根據(jù)一個(gè)應(yīng)用程序的請(qǐng)求而產(chǎn)生或破壞數(shù)據(jù)結(jié)構(gòu)及對(duì)應(yīng)的識(shí)別器。識(shí)別器的產(chǎn)生或破壞由識(shí)別器管理器管理,它是OS的一個(gè)對(duì)象。下面要詳細(xì)描述識(shí)別器管理器和單元的初始化。在下面的描述中,為了方便,將數(shù)據(jù)結(jié)構(gòu)及其對(duì)應(yīng)的識(shí)別器分別稱為“struct”(大意為結(jié)構(gòu))和“structID”(大意為結(jié)構(gòu)ID)。(2-2)識(shí)別器管理器識(shí)別器管理器有一份用于管理“structID”的值的“StructEntryTable”(大意為結(jié)構(gòu)輸入表),還有一份用于順序存儲(chǔ)未占用的“structID”的索引的“FreeStructIDlist”(大意為自由結(jié)構(gòu)ID列表)。圖4表示“StructEntryTable”表的一個(gè)實(shí)例?!癝tructEntryTabIe”是一個(gè)由設(shè)置在存儲(chǔ)器中“struct”的地址與計(jì)數(shù)器結(jié)合的矩陣。矩陣的大小等于系統(tǒng)要處理的“struct”的最大數(shù)。圖5表示設(shè)置在存儲(chǔ)器中的“struct”與地址之間的關(guān)系,是“StructEntryTable”中的一個(gè)元素。圖6表示“FreeStructIDlist”的結(jié)構(gòu)。如上所述,該表用于管理未占用的“structID”的索引。(2-3)使識(shí)別器管理器初始化下面描述前面提到的識(shí)別器管理器的初始化。圖7是表示用于使識(shí)別器管理器初始化的基本步驟的流程圖。在步驟ST31中,在存儲(chǔ)器中保留需要的“struct”數(shù)。圖5表示了存儲(chǔ)器的狀態(tài)。在步驟ST32中,再將與“struct”數(shù)相同數(shù)量包含在“FreeStructIDlist”中的節(jié)點(diǎn)保留在存儲(chǔ)器中,這些節(jié)點(diǎn)。接著,在步驟ST33中,以矩陣方式將用于管理“struct”和“structID”的“StructEntryTable”保留在存儲(chǔ)器中。在這種情況下,“StructEntryTable”輸入的數(shù)量等于通過(guò)將“struct”的數(shù)量加1所得到的數(shù)量。然后,在步驟ST34中,將“StructEntryTable”中的索引“0”登記為“structID”的無(wú)效值。換句話說(shuō),在索引“0”中,將“StructEntryTable”中的地址值設(shè)置為“0×00000000”(無(wú)效),計(jì)數(shù)器值設(shè)置為“0”。在步驟ST35中,再設(shè)置和登記對(duì)應(yīng)于有效識(shí)別器“structID”的“StructEntryTable”的“struct”和輸入,有效識(shí)別器“structID”是除上面設(shè)置的“structID”的無(wú)效值之外的值。更具體地,在步驟ST35中,首先在除與“StructEntryTable”的索引“0”對(duì)應(yīng)的輸入之外的一個(gè)輸入中設(shè)置初始值。在步驟ST35a中,再將前面產(chǎn)生的“struct”的地址值登記為“StructEntryTable”的地址,將有效計(jì)數(shù)值的最大值登記在計(jì)數(shù)器中。接著,在步驟ST35b中,通過(guò)將索引值與計(jì)數(shù)器值結(jié)合起來(lái)產(chǎn)生“structID”的值,并將其設(shè)置在“FreeStructIDlist”中。使步驟ST35重復(fù)“struct”的數(shù)量那么多次,并完成初始化操作。(2-4)通過(guò)識(shí)別器管理器產(chǎn)生識(shí)別器現(xiàn)在描述通過(guò)作為服務(wù)器提供的識(shí)別器管理器來(lái)產(chǎn)生數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的識(shí)別器的情況。下面描述實(shí)際產(chǎn)生一個(gè)識(shí)別器的實(shí)例。圖8是表示通過(guò)上述識(shí)別器管理器產(chǎn)生一個(gè)識(shí)別器的基本步驟的流程圖。首先,在步驟ST41中,檢測(cè)“FreeStructIDlist”中是否有任何節(jié)點(diǎn)。如果有一個(gè)可利用的節(jié)點(diǎn),就把這樣的節(jié)點(diǎn)的“structID”保留作要用的ID,并將其從表中去掉。如果表中沒有節(jié)點(diǎn),裝有識(shí)別器管理器的服務(wù)器就通知客戶沒有自由節(jié)點(diǎn)。在步驟ST42中,得到一個(gè)索引值,它是上述“structID”的元素之一。接著,在步驟ST43中,從“StructEntryTable”中得到與該索引值相對(duì)應(yīng)的計(jì)數(shù)器值。在上述“structID”中設(shè)置計(jì)數(shù)器值,進(jìn)而使“structID”的值有效。換句話說(shuō),使計(jì)數(shù)器值與索引值結(jié)合,用作“structID”。然而,在步驟ST44中,從“StructEntryTable”中得到在與上述“structID”的索引值對(duì)應(yīng)的輸入中登記的地址值,該地址值代表與上述“structID”對(duì)應(yīng)的“struct”的地址,從而使得直接訪問(wèn)(看見)存儲(chǔ)器中的“struct”成為可能。這樣就判斷了設(shè)置在“struct”中的特征。最后,在步驟ST45中,將由上述步驟所得到的有效“structID”傳送給客戶。應(yīng)該注意的是步驟ST43和ST44的次序可以顛倒使用。(2-5)用識(shí)別器管理器檢測(cè)識(shí)別器現(xiàn)在討論用為服務(wù)器提供的識(shí)別器管理器檢測(cè)識(shí)別器的情況。當(dāng)客戶訪問(wèn)由服務(wù)器提供的服務(wù)時(shí),在下面的情況下就有必要對(duì)識(shí)別器進(jìn)行檢測(cè)。為了明晰地或者隱含地訪問(wèn)數(shù)據(jù)結(jié)構(gòu),可以將識(shí)別器用作一個(gè)使用服務(wù)的變?cè)?。另一種檢測(cè)識(shí)別器的情況是判斷要破壞的識(shí)別器和相關(guān)的數(shù)據(jù)結(jié)構(gòu)是否有效。圖9是表示通過(guò)識(shí)別器管理器檢測(cè)一個(gè)識(shí)別器的基本步驟的流程圖。在步驟ST51中首先檢測(cè)所指定的“structID”是有效的,然后得到“structID”的索引值和計(jì)數(shù)器值。在步驟ST52中,從“StructEntryTable”中得到與上述索引值相對(duì)應(yīng)的計(jì)數(shù)器值。接著,在步驟ST53中,將從上述“structID”中直接得到的計(jì)數(shù)器值(它形成“structID”)與通過(guò)使用“StructEntryTable”中的索引值所得到的計(jì)數(shù)器值進(jìn)行比較。如果這兩個(gè)計(jì)數(shù)器值相等,在步驟ST54中就判定由客戶指定的“structID”的值是可由系統(tǒng)使用的值。這樣,就可以確保能讓客戶進(jìn)入訪問(wèn)服務(wù)器提供的服務(wù)。反之,如果兩個(gè)計(jì)數(shù)器值相互不一致,“structID”的值就不能由系統(tǒng)(未示出)使用。在此情況下,識(shí)別器管理器就通過(guò)服務(wù)器通知客戶“structID”不能使用或者“structID”已被使用而且不再有效。(2-6)破壞識(shí)別器和數(shù)據(jù)結(jié)構(gòu)現(xiàn)在描述通過(guò)為服務(wù)器提供的識(shí)別器管理器來(lái)破壞識(shí)別器和數(shù)據(jù)結(jié)構(gòu)的情況。圖10是表示通過(guò)識(shí)別器管理器來(lái)破壞一個(gè)識(shí)別器和數(shù)據(jù)結(jié)構(gòu)的基本步驟的流程圖。在步驟ST61中,首先檢測(cè)“structID”是否有效。為了在該步驟中進(jìn)行這種處理,可以使用圖9所示的處理過(guò)程。在步驟ST62中,減少“StructEntryTable”中與要破壞的“structID”的索引值相對(duì)應(yīng)的計(jì)數(shù)器值。因此,即使已破壞的或無(wú)效的“structID”錯(cuò)誤地再被使用,由于“structID”的計(jì)數(shù)器值與“StructEntryTable”中的值不同,就可以判定該“structID”不能被系統(tǒng)使用。然后,在步驟ST63中,根據(jù)需要從存儲(chǔ)器中釋放數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)可以由與“structID”的索引值相對(duì)應(yīng)的地址值進(jìn)行訪問(wèn)。然而,在前面提到的面向?qū)ο驩S并入的裝置中,數(shù)據(jù)結(jié)構(gòu)常常被再次使用,而且實(shí)際上,在上述“mcoopmessagepassing”或圖形驅(qū)動(dòng)器(將在以后討論)中,數(shù)據(jù)結(jié)構(gòu)在沒有從存儲(chǔ)器中釋放的情況下就被再次使用了。在步驟ST64中,將“structID”加到“FreeStructIDlist”中,然后破壞識(shí)別器和數(shù)據(jù)結(jié)構(gòu)的過(guò)程就完成了。圖11表示通過(guò)一個(gè)內(nèi)部主地址與一個(gè)網(wǎng)地址的結(jié)合而形成的一個(gè)簡(jiǎn)單的對(duì)象識(shí)別器(“OID”)格式的實(shí)例。與圖1所示的“OID”格式不同,圖11所示的格式?jīng)]有使用索引與計(jì)數(shù)器的結(jié)合,而是配有一個(gè)用于判斷識(shí)別器格式的位。識(shí)別器的位32用作判斷網(wǎng)地址是否存在的位。這是因?yàn)閺南旅娴氖聦?shí)中能看到好處。當(dāng)將64位“OID”的上32位指定為一個(gè)內(nèi)部主地址時(shí),在大多數(shù)處理器編址方法中,上32位的最下兩個(gè)位就是“0”。(3)“mCOOP”中的數(shù)據(jù)結(jié)構(gòu)識(shí)別器在上述“mCOOP”中,用在本發(fā)明中的數(shù)據(jù)結(jié)構(gòu)識(shí)別器包括·對(duì)象識(shí)別器(OID)·結(jié)果(R)框識(shí)別器(RID)·事件識(shí)別器(EventID)“OID”用作當(dāng)從一個(gè)應(yīng)用程序中所使用的對(duì)象中傳送信息時(shí)確定一個(gè)編址的對(duì)象。通過(guò)使用“OID”傳遞信息,OS確認(rèn)目的對(duì)象的位置?!癛Box”或一個(gè)事件是有助于信息通過(guò)的數(shù)據(jù)結(jié)構(gòu)。[2]現(xiàn)在描述根據(jù)本發(fā)明的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法的第一個(gè)實(shí)施例。在下面的描述中,假設(shè)使用前面描述的面向?qū)ο驩S,并首先詳細(xì)討論Rbox識(shí)別器“RID”。然后,詳細(xì)描述數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,在該方法中,只需要少量的位,并可維持高水平的系統(tǒng)表演。(1)本發(fā)明的基本概念在具體描述本發(fā)明的第一個(gè)實(shí)施例之前,下面討論由地址和時(shí)間標(biāo)記結(jié)合而形成的識(shí)別器的格式。圖12表示通過(guò)將一個(gè)設(shè)置有數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)器地址與一個(gè)時(shí)間標(biāo)記的結(jié)合而產(chǎn)生的識(shí)別器格式的一個(gè)實(shí)例。在這種格式中,通過(guò)地址值可以容易地檢測(cè)出與識(shí)別器對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。時(shí)間軸(時(shí)間標(biāo)記)上的唯一值也包含在這種格式中。這樣,就可以解決由只使用地址值的已知格式所遇到的問(wèn)題。根據(jù)下面描述的本發(fā)明的第一個(gè)實(shí)施例的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,在用于管理識(shí)別器的一個(gè)部分中,例如,在OS中產(chǎn)生一份表,該表用于管理設(shè)置有數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)器地址。更具體地,如圖13A所示,不用地址值,而將包含在上述表中的索引用作形成識(shí)別器的一個(gè)元素,盡而減少為描述地址值所需的位數(shù)。圖13B表示表的實(shí)例,該表表示上述索引與地址的關(guān)系。為了確保識(shí)別器在時(shí)間軸上能夠是唯一的,使用地址和圖25B所示的時(shí)間標(biāo)記或計(jì)數(shù)值的結(jié)合??蛻?識(shí)別器使用者)需要利用識(shí)別器來(lái)接收由服務(wù)器提供的服務(wù)。換句話說(shuō),有時(shí)需要產(chǎn)生數(shù)據(jù)結(jié)構(gòu)來(lái)接收服務(wù),在這種情況下,需要用識(shí)別器來(lái)識(shí)別數(shù)據(jù)結(jié)構(gòu)。圖14是表示產(chǎn)生一個(gè)數(shù)據(jù)格式和對(duì)應(yīng)的識(shí)別器的基本步驟的流程圖。在步驟ST1中,客戶要求服務(wù)器產(chǎn)生一個(gè)數(shù)據(jù)結(jié)構(gòu)。在步驟ST2中,服務(wù)器產(chǎn)生與所要求的內(nèi)容相一致的數(shù)據(jù)結(jié)構(gòu),并在步驟ST3中產(chǎn)生它的識(shí)別器。在產(chǎn)生識(shí)別器過(guò)程中,如上所述,利用了設(shè)置有數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)地址,這將在后面詳細(xì)描述。在步驟ST4中,服務(wù)器為客戶提供數(shù)據(jù)結(jié)構(gòu)的識(shí)別器。然后完成處理過(guò)程。如果客戶不再需要數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的識(shí)別器,就將它們破壞掉。圖15是表示破壞一個(gè)數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的識(shí)別器的基本步驟的流程圖。在步驟ST11中,客戶要求服務(wù)器破壞數(shù)據(jù)結(jié)構(gòu)。在這種情況下,由服務(wù)器提供的服務(wù)(API)并不必意味著要破壞數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的識(shí)別器。然后,服務(wù)器在步驟ST12中破壞數(shù)據(jù)結(jié)構(gòu),并在步驟ST13中破壞它的識(shí)別器。值得注意的是步驟ST12和ST13(破壞數(shù)據(jù)結(jié)構(gòu)和它的識(shí)別器)的次序可以顛倒。在步驟ST14中,服務(wù)器根據(jù)需要通知客戶,數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的識(shí)別器已被破壞。然后完成處理過(guò)程。在進(jìn)行圖14或圖15所示的產(chǎn)生或破壞識(shí)別器的處理之前,在服務(wù)器中作為一個(gè)對(duì)象的識(shí)別器管理器要初始化。(2)關(guān)于“mcoopmessagepassing”和“RID”的說(shuō)明前面提到的“RBox”是“mCOOP”信息通路的基本類型(標(biāo)準(zhǔn)方法)所需要的數(shù)據(jù)結(jié)構(gòu)?!癿COOP”信息通路的基本類型是一種使用“未來(lái)(Future)”的類型。作為使用“未來(lái)”的信息通路的另一個(gè)例子,“mLocal信息通路”和用于實(shí)現(xiàn)這樣的信息通路的方法,在由本發(fā)明的同一受讓人以前申請(qǐng)的日本專利申請(qǐng)9-92446的說(shuō)明和附圖中作了詳細(xì)的描述。(3)關(guān)于“mcoopmessagepassing”的API在“mCOOP”中,下面的三種方法都可以用作關(guān)于“mcoopmessagepassing”的API。.sErrorSendWithRBox(inOIDdestination,inSelectormethod,inanymsg,insize_tsizeOfMsg,outRIDrBoxID)。.sErrorReceive(inRIDrBoxID,inanyresultMsg,insize_tsizeOfResultMsg).sErrorReply(inresultMsg,insize_tsizeOfResultMsg)下面的API,它用于搜索一個(gè)對(duì)象,進(jìn)一步用來(lái)幫助信息通路。.sErrorFind(inStringname,outOIDobjectID)(3-1)上述API相同的因素下面討論上述API相同的因素。用接口定義語(yǔ)言(IDL)描述前面提到的API,加在變?cè)懊娴摹癷n”和“out”分別表示“輸入變?cè)焙汀拜敵鲎冊(cè)薄@?,在API“find”中的第一個(gè)變?cè)皀ame”表示“string”型的變?cè)皀ame”是輸入,而第二個(gè)變?cè)癘bjectID”表示“OID”型的變?cè)癘bjectID”是輸出。(3-2)關(guān)于單個(gè)API的說(shuō)明下面討論關(guān)于上述單個(gè)API的說(shuō)明。在“SendWithRBox”方法中,傳遞給由變?cè)癲estination”所指定的對(duì)象的是一種信息“msg”,該信息“msg”用于使由上述對(duì)象的變?cè)癿ethod”所表示的方法開始,盡而得到變?cè)皌BoxID”。在發(fā)射信息后,發(fā)射器[已經(jīng)發(fā)出方法“SendWithRBox”的對(duì)象]可以重新開始執(zhí)行?!皊izeofMsg”表示用于以所傳送的信息的字節(jié)指定大小的變?cè)??!皉eceive”是用于接收結(jié)果信息(響應(yīng))的方法。已經(jīng)發(fā)出方法“receive”的對(duì)象通過(guò)使用變?cè)皉BoxID”來(lái)進(jìn)行說(shuō)明,所傳送的信息用來(lái)接收結(jié)果?!皉esultMsg”用來(lái)說(shuō)明結(jié)果信息寫入的區(qū)域?!皊izeofResultMsg”代表用于以接收的結(jié)果信息字節(jié)指定大小的變?cè)??!癛eply”是一種用于將信息“resultMsg”的結(jié)果從已經(jīng)接收信息的對(duì)象中傳送給發(fā)射器的方法。(4)“mcoopmessagepassing”的基本類型現(xiàn)在通過(guò)結(jié)合上面描述的API來(lái)描述“mcoopmessagepassing”的基本類型。圖16表示了使用上述方法“SendWithRBox”、“receive”和“Reply”的“mcoopmessagepassing”的基本類型。在圖16中,A和B表示對(duì)象,A1和B1表示各個(gè)對(duì)象的方法。對(duì)象“A”首先提供了對(duì)象“B”、方法“B1”、信息”和作為變?cè)摹癕essage”的大小,盡而得到了方法“SendWithRBox”。然后將信息傳送給對(duì)象“B”,這就能使方法B1開始。同時(shí),在OS中產(chǎn)生“RBox”,以響應(yīng)信息通路,對(duì)象A得到用于識(shí)別“RBox”的識(shí)別器“RID”的值。有必要使信息包括為了通過(guò)方法B1來(lái)進(jìn)行某些計(jì)算所需的內(nèi)容。再由對(duì)象B1進(jìn)行計(jì)算以得到結(jié)果。因此,對(duì)象B1通過(guò)提供信息“結(jié)果”和它作為變?cè)拇笮《l(fā)出了方法“Reply”,最后將結(jié)果信息傳送給對(duì)象A。對(duì)象A在發(fā)出方法“SendWithRBox”之后,可以重新開始計(jì)算。當(dāng)對(duì)象A需要響應(yīng)傳送到對(duì)象B的信息的結(jié)果時(shí),它就發(fā)出方法“receive”。在此情況下,對(duì)象A通過(guò)使用RBox識(shí)別器“RID”來(lái)進(jìn)行說(shuō)明,所傳送的信息用來(lái)接收結(jié)果。由于對(duì)象A和對(duì)象B可以并行地進(jìn)行處理,因此在由對(duì)象B發(fā)出方法“Reply”之前或者之后,對(duì)象A可以發(fā)出方法“receive”。如果在發(fā)出方法“Reply”之前發(fā)出了方法“receive”,對(duì)象A就進(jìn)入等待位置,直到發(fā)出方法“Reply”(一旦發(fā)出“Reply”,對(duì)象A就能馬上接收結(jié)果)。反之,如果在方法“receive”之前發(fā)出了方法“Reply”,就將“結(jié)果”存儲(chǔ)在RBox中,而且當(dāng)發(fā)出方法“receive”時(shí),對(duì)象A能夠獲得存儲(chǔ)在“RBox”中的結(jié)果。(5)“RID”的需要和格式以及它的實(shí)現(xiàn)方法每使用一次“mcooPmessagepassing”的基本類型就使“RBox”產(chǎn)生或破壞。“RBox”是具有特征的數(shù)據(jù)結(jié)果,如一個(gè)旗標(biāo)表示存儲(chǔ)結(jié)果信息的區(qū)域,一個(gè)旗標(biāo)表示結(jié)果信息是否已傳遞,和一個(gè)旗標(biāo)表示在等待位置中是否有任何對(duì)象在等待“RBox”中的結(jié)果信息的到達(dá)。在mCOOP中,由于實(shí)現(xiàn)對(duì)象交互總是要依賴于信息通路,因此“RID”使用很頻繁。這樣,考慮到產(chǎn)生或破壞數(shù)據(jù)結(jié)構(gòu)非常頻繁,只由地址值來(lái)生成“RID”格式就不很理想。按照上述觀點(diǎn),“RID”格式需要包括一種確?!癛ID”在時(shí)間軸上是唯一的這樣一種元素。目前可利用的處理器的運(yùn)轉(zhuǎn)表明可以在幾微秒的最小單位內(nèi)產(chǎn)生或破壞“RBox”,而將來(lái)甚至可以在更小的時(shí)間單元內(nèi)完成。在這種情況下,為了保證“RID”在時(shí)間軸上能夠是唯一的,時(shí)間標(biāo)記作為元素就不是優(yōu)先考慮的。如果“RBox”在非常短的時(shí)間內(nèi)產(chǎn)生或破壞,對(duì)于上述情況的理由之一就是要增加所需要的位數(shù)。另一種理由是長(zhǎng)時(shí)間不產(chǎn)生或破壞“RBox”,在這種情況下,就要為不必要的時(shí)間標(biāo)記而浪費(fèi)大量的位。為了克服上述缺點(diǎn),在產(chǎn)生或破壞“RBox”時(shí)使用一種用于計(jì)算時(shí)間(邏輯時(shí)間)的計(jì)數(shù)器。如上所述,“RID”是一種用于識(shí)別由應(yīng)用對(duì)象使用的“RBox”的識(shí)別器(ID)。由于應(yīng)用對(duì)象不需要檢測(cè)OS中的數(shù)據(jù),因此,從應(yīng)用對(duì)象的觀點(diǎn)出發(fā)“RID”就沒有必要包括設(shè)置“RBox”的存儲(chǔ)器地址。另一方面,“RID”也可以通過(guò)OS使用,這就需要快速地從“RID”中檢測(cè)“RBox”。接著,如上所述,將索引作為“RID”的一個(gè)元素,并在OS中設(shè)置表格,以便OS可以從索引中檢測(cè)“RBox”的地址值。這就減少了進(jìn)行表格搜索的必要性,否則將增加成本。圖17表示在面向?qū)ο驩S中“RID”格式的一個(gè)實(shí)例。整個(gè)格式由32位構(gòu)成,其中18位設(shè)置為用于存儲(chǔ)計(jì)數(shù)器值的計(jì)數(shù)器部分,14位指定為索引部分。在這種格式中,如果將一個(gè)索引指定為一個(gè)“RBox”,那么,最多可以管理214=16384個(gè)“RBox”,并可以將218=262144個(gè)計(jì)數(shù)器值指定為一個(gè)“RBox”或一個(gè)索引。下面詳細(xì)地描述一個(gè)具體的例子。索引值的范圍可以根據(jù)系統(tǒng)的需要而變化,該索引值是用來(lái)判斷共存的“RBox”的最大數(shù)和時(shí)間軸上識(shí)別器的唯一值的。在本例中,設(shè)置為計(jì)數(shù)器部分的位與設(shè)置為索引部分的位的比率沒有規(guī)定,將在以后描述?!癛ID”的值應(yīng)該由OS發(fā)出(決定),這需要使用合適的API。如果在沒有使用這樣的API的情況下將“RID”設(shè)置在一個(gè)存儲(chǔ)器中,它就被判斷為是無(wú)效的。這樣的無(wú)效值在面向?qū)ο驩S中定義為“0”。換句話說(shuō),計(jì)數(shù)器值和索引值兩者都為“0”。當(dāng)判斷無(wú)效值為“0”時(shí),比較計(jì)算就可能比其他值定義為無(wú)效的格式進(jìn)行得更快。在充分考慮處理器的運(yùn)轉(zhuǎn)的同時(shí),“RID”的無(wú)效值也可以設(shè)置為除“0”以外的數(shù)。值得注意的是“RID”在一個(gè)點(diǎn)上對(duì)系統(tǒng)是不能用的與“RID”是無(wú)效的之間是有區(qū)別的。一旦使用對(duì)應(yīng)的“RBox”,值“RID”就不再能被系統(tǒng)使用。計(jì)數(shù)器值,作為形成“RID”的一個(gè)要素,用來(lái)檢測(cè)上述“RID”在時(shí)間軸上的有效性。因此,即使“RID”是有效的,它也可能不能被系統(tǒng)使用。(6)產(chǎn)生或破壞“DIR”現(xiàn)在結(jié)合“RID”的產(chǎn)生和破壞來(lái)詳細(xì)描述實(shí)現(xiàn)前所述“mcoopmessagepassing”的方法?!癿coopmessagepassing”功能要通過(guò)多個(gè)對(duì)象的結(jié)合來(lái)實(shí)現(xiàn)。主要的對(duì)象是對(duì)象“mCOOPMailer”,它包括用于實(shí)現(xiàn)關(guān)于“mcoopmessagepassing”的API的方法和用于實(shí)現(xiàn)初始化的方法。為了實(shí)施上述方法,“mCOOPMailer”傳遞信息,控制對(duì)象的執(zhí)行狀態(tài),并管理“RBox”和對(duì)應(yīng)的“RID”。如上所述,用于實(shí)現(xiàn)關(guān)于“mcoopmessagepassing”的API的方法包括“SendWithRBox”、“receive”和“Reply”。一旦發(fā)出“SendWithRBox”、“receive”和“Reply”方法,在亞空間“mCOOP”上運(yùn)行的應(yīng)用對(duì)象就開始執(zhí)行相應(yīng)的方法。當(dāng)系統(tǒng)開始時(shí),對(duì)象“mCOOPMailer”執(zhí)行初始化處理,同時(shí),它為“RBox”保留了數(shù)據(jù)區(qū)。(7)涉及“RBox”和“RID”的數(shù)據(jù)結(jié)構(gòu)現(xiàn)在描述涉及“RBox”和對(duì)應(yīng)的由對(duì)象“mCOOPMailer”所有的“RID”的數(shù)據(jù)結(jié)構(gòu)。對(duì)象“mCOOPMailer”具有“RBoxEntryTable”表格,該表格代表了索引值(它是生成“RID”的一個(gè)要素)與“RBox”的地址和計(jì)數(shù)器值的關(guān)系。圖18表示表格“RBoxEntryTable”的一個(gè)實(shí)例。在該表中,計(jì)數(shù)器值表示與“RID”的索引值有關(guān)的有效計(jì)數(shù)器值。在本例中,當(dāng)索引值與地址值兩者都為“0”時(shí),計(jì)數(shù)器值設(shè)置為無(wú)效,如上所述,即為“0×00000000”。將存儲(chǔ)器中設(shè)置“RBox”的地址設(shè)置為“RBoxEntryTable”的地址部分。如圖19所示,這就能夠快速檢測(cè)與“RID”的索引值相對(duì)應(yīng)的“RBox”。除了“RBoxEntryTable”外,對(duì)象“mCOOPMailer”具有用于順序地存儲(chǔ)可用的“RID”索引值的“自由RID表”和用于順序地存儲(chǔ)正在使用的索引值的“unarailableRIDlist”。圖20示意性地表示了上述“自由RID表”的一個(gè)實(shí)例。當(dāng)發(fā)出“RID”時(shí),只要能夠快速地獲得可用的索引值和禁止索引值使用兩次,就可以使用“自由RID表”的任何實(shí)施方法。(8)對(duì)“RBox”和“RID”進(jìn)行處理現(xiàn)在討論一旦在面向?qū)ο驩S中進(jìn)行初始化并發(fā)出方法“SendWithRBox”、“receive”“Reply”時(shí),執(zhí)行“RBox”和對(duì)應(yīng)的“RID”的處理過(guò)程。(8-1)使“mCOOPMailer”初始化當(dāng)使對(duì)象“mCOOPMailer”初始化時(shí),首先將所需的“RBox”數(shù)量保留在存儲(chǔ)器中。然后,將與“RBox”的數(shù)量一樣多的關(guān)于“自由RID表”和“unarailableRIDlist”所需的數(shù)據(jù)結(jié)構(gòu)“RIDListNode”的數(shù)量預(yù)留在存儲(chǔ)器中。接著,將用于管理“RBox”和對(duì)應(yīng)的RID”的“RBoxEntryTable”保留在存儲(chǔ)器中。在這種情況下,“RBoxEntryTable”中輸入的數(shù)量等于通過(guò)將“RBox”的數(shù)量加1所得到的數(shù)量。然后,登記“RBoxEntryTable”的索引“0”為“RID”的無(wú)效值。“RBoxEntryTable”的地址值也設(shè)置為“0×00000000”(無(wú)效),計(jì)數(shù)器設(shè)置為“0”。再將所有與有效的“RID”(除上面設(shè)置的“RID”的無(wú)效值之外)對(duì)應(yīng)的“RBox”的輸入設(shè)置到“RBoxEntryTable”中。更具體地,將初始值設(shè)置在除與“RBoxEntryTable”的索引“0”相對(duì)應(yīng)的輸入之外的一個(gè)輸入中。然后,將以前產(chǎn)生的“RBox”的地址值登記為“RBoxEntryTable”的地址,并將有效計(jì)數(shù)器值的最大值(例如,218-1)登記為計(jì)數(shù)器。接著,如圖17中的格式所示,通過(guò)將索引值與計(jì)數(shù)器值結(jié)合而產(chǎn)生“RID”的值,并將其設(shè)置在數(shù)據(jù)結(jié)構(gòu)“RIDListNode”中。然后將數(shù)據(jù)結(jié)構(gòu)“RIDListNode”輸入到“自由RID表”中。使上述步驟重復(fù)“RBox”的數(shù)量那么多次,進(jìn)而完成初始化操作。(8-2)基于發(fā)出“SendWithRBox”的處理現(xiàn)在描述基于由應(yīng)用對(duì)象發(fā)出方法“SendWithRBox”的處理。一旦由應(yīng)用程序?qū)ο蟀l(fā)出方法“SendWithRBox”,處理過(guò)程就轉(zhuǎn)移到對(duì)象“mCOOPMailer”的方法“SendWithRBox”。然后,對(duì)象“mCOOPMailer”檢測(cè)基本因素,例如判斷由目的的識(shí)別所確定的“OID”是否有效,和判斷與“OID”對(duì)應(yīng)的對(duì)象是否存在。然后確定“RBox”和對(duì)應(yīng)的“RID”,而且為了將“RID”傳送給已經(jīng)發(fā)出方法“SendWithRBox”的對(duì)象而進(jìn)行進(jìn)一步的處理。接著進(jìn)行傳送信息的操作。(8-3)進(jìn)行“SendWithRBox”操作時(shí)進(jìn)行的處理現(xiàn)在描述進(jìn)行“SendWithRBox”操作時(shí)根據(jù)“RBox”和相應(yīng)的“RID”所進(jìn)行的處理。首先檢測(cè)“自由RID表”中是否存在任何數(shù)據(jù)結(jié)構(gòu)“RIDListNode”。如果存在可用的結(jié)構(gòu),將這樣結(jié)構(gòu)的“RID”保留作為要發(fā)出的“RID”,并從“自由RID表”中將其擦除,將其輸入“unarailableRIDlist”中。如果“自由RID表”沒有數(shù)據(jù)結(jié)構(gòu)“RIDListNode”,就將類型“sError”的值“sRBOXCANNOTBECREATED”返回給應(yīng)用對(duì)象。這樣就完成了對(duì)方法“SendWithRBox”的操作。然后,從表“RBoxEntryTable”中得到登記在與“RID”的索引值相對(duì)應(yīng)的輸入中的地址值。該地址值代表與上述“RID”相對(duì)應(yīng)的“RBox”的地址,從而使得能夠直接訪問(wèn)“RBox”。這樣就確定了設(shè)置在“RBox”中的特征。這種特征可以包括擁有“RBox”的對(duì)象(即,已經(jīng)發(fā)出“SendWithRBox”的對(duì)象)的“OID”,和設(shè)置關(guān)于表示等候狀態(tài)的旗標(biāo)的變量。最后,進(jìn)行將在上述處理中所得到的有效“RID”傳送給已發(fā)出方法“SendWithRBox”的應(yīng)用對(duì)象的操作。這種操作在存儲(chǔ)器區(qū)域中進(jìn)行,在該區(qū)域中,將在用于由應(yīng)用對(duì)象發(fā)出的方法“SendWithRBox”中的變?cè)獋魉徒o對(duì)象“mCOOPMailer”。(8-4)進(jìn)行基于發(fā)出“receive”的處理現(xiàn)在討論基于由應(yīng)用對(duì)象發(fā)出方法“receive”的處理。一旦應(yīng)用對(duì)象發(fā)出方法“receive”,處理過(guò)程就轉(zhuǎn)移到對(duì)象“mCOOPMailer”的方法“receive”。然后,對(duì)象“mCOOPMailer”檢測(cè)基本因素,例如判斷“RID”的登記值是否有效。如果“RID”是一個(gè)無(wú)效值,值“sINVALIDRID”就返回給應(yīng)用對(duì)象,這樣就完成了對(duì)方法“receive”的處理。然后,根據(jù)由“RID”的值所得到的“RBox”的狀態(tài)進(jìn)行處理。如果還沒有將結(jié)果信息送給“RBox”,那么已經(jīng)發(fā)出方法“receive”的應(yīng)用對(duì)象就進(jìn)入等候位置,直到另一個(gè)對(duì)象發(fā)出方法“Reply”,以便將結(jié)果信息送給“RBox”。如果已將結(jié)果信息送給“RBox”,那么就已經(jīng)發(fā)出方法“RepIy”。這樣,就將結(jié)果信息送給已發(fā)出方法“receive”的對(duì)象,然后處理過(guò)程復(fù)原。在這種情況下,由于不再需要“RBox”和對(duì)應(yīng)的“RID”,就釋放了“RBox”,無(wú)效了“RID”。(8-5)當(dāng)進(jìn)行“receive”操作時(shí)所進(jìn)行的處理現(xiàn)在描述當(dāng)進(jìn)行方法“receive”操作時(shí)關(guān)于“RBox”和對(duì)應(yīng)的“RID”所進(jìn)行的處理。在檢測(cè)給定的“RID”是有效的之后,就得到“RID”的索引值。也得到了“RID”的計(jì)數(shù)器值。然后,從表“RBoxEntryTable”中得到登記在與“RID”的索引值相對(duì)應(yīng)的輸入中的計(jì)數(shù)器值。再將從“RID”中直接獲得的計(jì)數(shù)器值(它構(gòu)成“RID”)與通過(guò)使用“RBoxEntryTable”的索引值而得到的計(jì)數(shù)器值進(jìn)行比較。當(dāng)兩個(gè)計(jì)數(shù)器值相等時(shí),就證明由方法“receive”所給定的“RID”的值可以由系統(tǒng)使用,而且關(guān)于“receive”的操作繼續(xù)到完成。另一方面,如果兩個(gè)計(jì)數(shù)器值相互不相同,就判斷“RID”的值不能由系統(tǒng)使用。在此情況下,對(duì)象“mCOOPMailer”將類型“sError”的值“sRIDNOTFOUND”返回給已發(fā)出方法“receive”的應(yīng)用對(duì)象,然后關(guān)于方法“receive”的處理結(jié)束。如果發(fā)現(xiàn)“RID”可以由系統(tǒng)使用,就得到了登記在與“RBoxEntryTable”中的索引值相對(duì)應(yīng)的輸入中的地址值,以便檢測(cè)與“RID”相對(duì)應(yīng)的“RBox”。如上所述,通過(guò)檢測(cè)“RBox”的特征,就能判斷結(jié)果信息是否已送給“RBox”。如果結(jié)果信息已送給“RBox”,在進(jìn)行傳遞信息的操作之后,就進(jìn)行無(wú)效已使用的“RID”的操作。在無(wú)效操作中,已使用的“RID”的索引值相對(duì)應(yīng)的“RBoxEntryTable”的計(jì)數(shù)器值減少。因此,即使已使用了的“RID”再被錯(cuò)誤地使用,由于“RID”的計(jì)數(shù)器值不同于登記在“RBoxEntryTable”中的計(jì)數(shù)器值,就能判斷“RID”不能被系統(tǒng)使用。然后將“RID”從“unavailableRIDlist”中取出,并將其輸入到“自由RID表”中。當(dāng)將與索引值相對(duì)應(yīng)的“RBox.”再使用許多次,而計(jì)數(shù)器值減少到“0”時(shí),由系統(tǒng)或應(yīng)用程序的需要判斷“RID”是否可以再使用。例如,如果為計(jì)數(shù)器值保留了足夠量的位,并且如果當(dāng)計(jì)數(shù)器值在從最大值到“0”的范圍內(nèi)變化時(shí)能保證已使用的“RID”不再在程序中使用,那么已經(jīng)達(dá)到“0”的計(jì)數(shù)器值可以重置到最大值。相反,可以判斷絕對(duì)禁止“RID”的相同值在程序中再使用。在這種情況下,當(dāng)計(jì)數(shù)器值達(dá)到“0”時(shí),與索引值相對(duì)應(yīng)的“RID”是不可用的,此時(shí),不能將在“unavailableRIDlist”中所包含的“RID”輸入到“自由RID表”中。如果還沒有將結(jié)果信息送給“RBox”,就可以為表示“RBox”處于等待位置的旗標(biāo)設(shè)置一個(gè)變量,盡而使已經(jīng)發(fā)出方法“receive”的應(yīng)用對(duì)象進(jìn)入等待位置。然后結(jié)束處理過(guò)程。(8-6)基于發(fā)出“Reply”進(jìn)行的處理現(xiàn)在描述基于由一個(gè)應(yīng)用對(duì)象發(fā)出方法“Reply”所進(jìn)行的處理,更具體地,這種處理涉及“RBox”和相應(yīng)的“RID”。一旦應(yīng)用對(duì)象發(fā)出方法“Reply”,處理就轉(zhuǎn)移到對(duì)象“mCOOPMailer”的方法“Reply”。然后,“mCOOPMailer”首先獲得送給已發(fā)出“Reply”的應(yīng)用對(duì)象的“RID”?!癛ID”已登記在數(shù)據(jù)結(jié)構(gòu)“mCOOPMailerDescriptor”中,在“mCOOPMailerDescriptor”中,將為通過(guò)對(duì)象“mCOOPMailer”進(jìn)行信息傳遞所需的信息存儲(chǔ)在對(duì)象的單元中。如果還沒有將結(jié)果信息送給與“RID”相對(duì)應(yīng)的“RBox”,就將由方法“Reply”給定的結(jié)果信息送給“RBox”。反之,如果已將結(jié)果信息送給“RBox”,發(fā)出方法“Reply”和為此所進(jìn)行的處理就沒有意義了,這樣,類型“sError”的“sINVALIDREPLY”返回。然后結(jié)束關(guān)于“Reply”的處理。(8-7)繼續(xù)進(jìn)行關(guān)于“Reply”的處理如果繼續(xù)進(jìn)行關(guān)于“Reply”的處理,就要檢測(cè)上面得到的“RID”是否可以由系統(tǒng)使用。檢測(cè)是按照一種與方法“receive”中所指出的操作相似的方式,在含在“RID”中的計(jì)數(shù)器值與登記在“RBoxEntryTable”中的計(jì)數(shù)器值之間進(jìn)行比較而進(jìn)行的。如果發(fā)現(xiàn)“RID”可以由系統(tǒng)使用,就通過(guò)使用表“RBoxEntryTable”中的“RID”的索引值而得到相應(yīng)的“RBox”。然后,檢測(cè)“RBox”的特征來(lái)判斷“RBox”是否正在等待結(jié)果信息。如果“RBox”不是在等待位置,就已經(jīng)將結(jié)果信息送給了“RBox”,然后,結(jié)束方法“Reply”的處理。反之,如果“RBox”是處在等待位置,通過(guò)給定上述“RID”已經(jīng)發(fā)出了方法“receive”,就立即進(jìn)行將結(jié)果信息傳送給已發(fā)出了方法“receive”的對(duì)象的處理。同時(shí),根據(jù)與在方法“receive”中所使用的相似的操作,無(wú)效與已使用過(guò)的“RBox”相對(duì)應(yīng)的“RID”。在上述面向?qū)ο驩S中,按計(jì)數(shù)器部分有18位和索引部分有14位的方式確定“RID”格式,以便最多能管理214=16384個(gè)“RBox”。然而,表“RBoxEntryTable”中輸入的數(shù)量沒有必要達(dá)到上述最大量。系統(tǒng)沒有必要總是處理“RBox”的最大量(16384),而是常常只要少量的“RBox”就足夠了。例如,如果系統(tǒng)只充足地處理124個(gè)“RBox”,根據(jù)前面的實(shí)施例,在上述“RBoxEntryTable”中輸入的數(shù)量可能是125。在前面的描述中,為了簡(jiǎn)便起見,將可能由系統(tǒng)處理的“RBox”和相對(duì)應(yīng)的“RID”的可能最大量初始化。然而,當(dāng)系統(tǒng)正在操作時(shí),為了優(yōu)化存儲(chǔ)器的使用,首先只對(duì)所需的最小量的“RBox”和相對(duì)應(yīng)的“RID”初始化,然后,在系統(tǒng)運(yùn)轉(zhuǎn)時(shí)可以增加和設(shè)置更多的“RBox”和相對(duì)應(yīng)的“RID”。在前面的描述中,索引值的最大范圍可以從0到16383。然而,如果只管理124個(gè)“RBox”,變化范圍從0到124的索引值就夠用了。在這種情況下,將125個(gè)或者更多個(gè)索引值節(jié)省起來(lái)作為索引的資源,并可以在所有與變化范圍從1到124的索引值相對(duì)應(yīng)的計(jì)數(shù)器值使用之后利用起來(lái)。在前面的描述中,計(jì)數(shù)器值的最大范圍從0到262144。然而,如果只管理124個(gè)“RBox”,對(duì)于索引部分來(lái)說(shuō),7位可能就夠了(27=128)。在這種情況下,可以指定25位作為計(jì)數(shù)器部分,它的值可以在從0到33554431的范圍之內(nèi),從而為計(jì)數(shù)值保證更多的資源。根據(jù)用于管理“自由RID表”中可用索引值的技術(shù),在某些情況下只有具體索引的計(jì)數(shù)器值可以頻繁地使用。例如,這樣的情況如下?,F(xiàn)在假設(shè),對(duì)“RBox”的最大量(124)進(jìn)行管理,占用了幾乎所有的“RBox”,只剩下了一個(gè)“RBox”。如果繼續(xù)占用著123個(gè)“RBox”,只有一個(gè)“RBox”不得不頻繁地使用,就只有使與“RBox”的“RID”相對(duì)應(yīng)的計(jì)數(shù)器值不斷地減少。換句話說(shuō),如果具體地和本地地利用索引值,就只有這樣的索引值的邏輯時(shí)間增加,即計(jì)數(shù)繼續(xù)減少,盡而容易使計(jì)數(shù)器值資源耗盡。一個(gè)克服上述缺點(diǎn)的方法如下。確定取248個(gè)索引值,這是“RBox”的最大量(124)的兩倍。在這種情況下,即使在只有一個(gè)剩余的“RBox”,即,只有一個(gè)具體的“RID”被本地利用的情況下,對(duì)于剩余的“RID”來(lái)說(shuō),有125個(gè)索引值相對(duì)應(yīng)的計(jì)數(shù)器值。這就解決了前面提到的只有剩余索引的邏輯時(shí)間增加的問(wèn)題。在這種技術(shù)中,與每個(gè)索引值相關(guān)的計(jì)數(shù)器值的資源比由前面的技術(shù)得到的資源少1位。然而,在有可能只有本地利用具體的索引的情況下,這種技術(shù)更具優(yōu)勢(shì)。如前面實(shí)施例中所討論的,在識(shí)別器格式中索引部分與計(jì)數(shù)器部分(或時(shí)間標(biāo)記部分)的比率和實(shí)施方法可以根據(jù)系統(tǒng)的特征或需要而變化。然而,本發(fā)明的基本概念可以適應(yīng)于作任何修改。[3]下面根據(jù)本發(fā)明的第二個(gè)實(shí)施例描述使用在上述面向?qū)ο驩S中的對(duì)象識(shí)別器“OID”。首先討論一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,該數(shù)據(jù)結(jié)構(gòu)識(shí)別方法用于一種適應(yīng)于用在可擴(kuò)展系統(tǒng)中的識(shí)別器。根據(jù)第二個(gè)實(shí)施例的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,該識(shí)別器包括一個(gè)用于區(qū)別識(shí)別器格式(識(shí)別器格式判斷部分)、盡而判斷識(shí)別器的長(zhǎng)度和網(wǎng)地址部分是否存在的位。圖21表示了這樣一種識(shí)別器格式的例子,即該識(shí)別器格式包括格式判斷部分。也就是說(shuō),識(shí)別器由格式判斷部分、時(shí)間標(biāo)記部分和索引部分構(gòu)成。如上所述,對(duì)象用作由一個(gè)應(yīng)用程序所具有的功能模塊的單元,也用作執(zhí)行這樣功能的單元。因此,如果一個(gè)應(yīng)用程序需要某些功能,它就產(chǎn)生一個(gè)實(shí)施該功能的對(duì)象,并通過(guò)信息通路使用該功能。如果對(duì)象不再需要了,就破壞它。在這種方式中,由于對(duì)象是動(dòng)態(tài)產(chǎn)生或破壞的,在時(shí)間軸上“OID”必定是唯一的。在描述“RID”的第一個(gè)實(shí)施例中,計(jì)數(shù)器用來(lái)確?!癛ID”在時(shí)間軸上能夠是唯一的。只有當(dāng)使信息通路傳導(dǎo),即,當(dāng)系統(tǒng)運(yùn)轉(zhuǎn)時(shí),“RID”才會(huì)產(chǎn)生或破壞。因此,如果臨時(shí)切斷裝置的供電,就可以使計(jì)數(shù)器值重置到起始值?!癘ID”,它在時(shí)間軸上是唯一的,也可以恢復(fù)到起始值。另一方面,在某些情況下,例如,當(dāng)對(duì)象存儲(chǔ)在象盤或閃速存儲(chǔ)器之類的介質(zhì)中時(shí),“OID”不應(yīng)該重置到起始值。即使臨時(shí)切斷裝置的供電,也需要用相同的“OID”來(lái)識(shí)別這樣的對(duì)象(通常它指的是“永久對(duì)象”)。使用計(jì)數(shù)器是不能滿足這種需要的,這樣,要利用時(shí)間標(biāo)記。如上所述,時(shí)間標(biāo)記所需要的位比計(jì)數(shù)器多。更具體地,如果假設(shè)產(chǎn)生一個(gè)對(duì)象所需的時(shí)間為10微秒,而且系統(tǒng)應(yīng)該連續(xù)運(yùn)轉(zhuǎn)近20年,就需要46位。換句話說(shuō),由于246=7.04×1013,系統(tǒng)能夠運(yùn)轉(zhuǎn)195465.73小時(shí)或22.31年。類似地,如果系統(tǒng)需要運(yùn)轉(zhuǎn)近40年,就需要47位。換句話說(shuō),由于247=1.14×1014,系統(tǒng)能夠運(yùn)轉(zhuǎn)390937.47小時(shí)或44.63年。如果系統(tǒng)需要運(yùn)轉(zhuǎn)近90年,就需要48位。換句話說(shuō),由于248=2.811414×1014,系統(tǒng)就能夠運(yùn)轉(zhuǎn)781864.47小時(shí)或89.26年。接著,使用計(jì)數(shù)器的“OID”有32位或者更多,而使用時(shí)間標(biāo)記的“OID”有64位或者更多。在上述面向?qū)ο驩S中,使用計(jì)數(shù)器的“OID”用32位完成,而使用時(shí)間標(biāo)記的“OID”要用64位完成。有可能在一個(gè)系統(tǒng)中可以使用兩種“OID”格式中的一種,而在另一個(gè)系統(tǒng)中兩種“OID”格式都可以使用。因此,如果兩種“OID”格式混合在一個(gè)系統(tǒng)中,這兩種“OID”就需要加以區(qū)分。根據(jù)包括圖21所示的格式判斷部分的“OID”格式,32位“OID”和64位“OID”可以在OS中加以區(qū)分。可以將一位指定為“OID”的格式判斷部分。(1)當(dāng)通過(guò)網(wǎng)絡(luò)將裝置連接時(shí)所使用的“OID”進(jìn)一步討論當(dāng)網(wǎng)絡(luò)將裝置連接時(shí)的“OID”。在這種情況下,可以將一個(gè)應(yīng)用程序連接在網(wǎng)絡(luò)中的裝置之間。上述“OID”格式只有在主裝置中才是有效的。因此為了通過(guò)使用“OID”經(jīng)過(guò)網(wǎng)絡(luò)在裝置之間進(jìn)行連接,有必要包括作為“OID”要素的網(wǎng)址。然而,網(wǎng)址的增加就增加了由許多網(wǎng)址構(gòu)成的“OID”格式所需的位數(shù)。為了將信息傳送給正在網(wǎng)絡(luò)中另一個(gè)裝置上工作的對(duì)象,網(wǎng)址是很重要的。然而,一旦將信息送到裝置上,網(wǎng)址就不再是必需的了,如果由某個(gè)“OID”給定的信息的目的是正在同一個(gè)裝置上工作的對(duì)象,也就不需要網(wǎng)址了。因此,有必要將含有網(wǎng)絡(luò)地址的“OID”從沒有網(wǎng)絡(luò)地址的“OID”中區(qū)分出來(lái)??梢酝ㄟ^(guò)包含有格式判斷部分的“OID”格式來(lái)判斷網(wǎng)址是否存在,例如,如圖21中所示出的??梢詫⒁粋€(gè)位指定為格式判斷部分。另外,可以將一個(gè)位指定為32位格式和64位格式的判斷與網(wǎng)絡(luò)是否存在的判斷中的每一個(gè)。[4]現(xiàn)在結(jié)合上述面向?qū)ο驩S描述本發(fā)明的第三個(gè)實(shí)施例。在第三個(gè)實(shí)施例中,給出了兩個(gè)實(shí)例,其中將用于通過(guò)上述識(shí)別器管理器產(chǎn)生或破壞識(shí)別器的操作應(yīng)用于面向?qū)ο驩S。在第一個(gè)實(shí)例中,討論“mcoopmessagepassing”。這個(gè)對(duì)象的基本特征已在上面討論過(guò)了,運(yùn)樣,下面只解釋的補(bǔ)充特征。第二個(gè)實(shí)例涉及一個(gè)圖形驅(qū)動(dòng)器。(1)“mcoopmessagepassing”與識(shí)別器管理器之間的關(guān)系在適應(yīng)于“mcoopmessagepassing”的第一個(gè)實(shí)例中,討論需要禁止對(duì)象直接訪問(wèn)由OS管理的數(shù)據(jù)結(jié)構(gòu)的識(shí)別器。如從上面所提到的,用在“mcoopmessagepassing”中的識(shí)別器包括對(duì)象識(shí)別器“OID”、RBox識(shí)別器“RID”和事件識(shí)別器“EventID”。關(guān)于“mcoopmessagepassing”的三個(gè)基本API如下。方法“SendWithRBox”方法“Reply”方法“receive”在上面的API中,“OID”只用在方法“SendWithRbox”中,“RID”用在所有API中?!癊ventID”不用在上述API中。因此,“RID”的一個(gè)實(shí)例已在前面實(shí)施例中詳細(xì)描述過(guò)了。方法“SendWithRbox”是用于請(qǐng)求信息傳送的API,在這種情況下,產(chǎn)生“RID”。用于產(chǎn)生“RID”的操作已在上面討論過(guò)了。方法“Reply”是用于傳送結(jié)果信息“Result”的API,方法“receive”是用于接收結(jié)果信息“Result”的API,在這兩種情況下,“RID”是明顯地或隱含地被使用的。用于檢測(cè)“RID”的操作類似于用于上述識(shí)別器的操作。一旦發(fā)出方法“Reply”或“receive”,并最后正確地傳送結(jié)果信息“Result”,就需要將使用過(guò)的“RID”無(wú)效化。用于破壞(無(wú)效)“RID”的操作類似于上述識(shí)別器的破壞操作。(2)用在圖形驅(qū)動(dòng)器中的面向?qū)ο驩S在第二個(gè)實(shí)例中,用在圖形驅(qū)動(dòng)器中的面向?qū)ο驩S討論如下。在該例中,根據(jù)面向?qū)ο蠹夹g(shù),描述了用于禁止客戶訪問(wèn)由服務(wù)器管理的數(shù)據(jù)結(jié)構(gòu)所需的識(shí)別器。圖22是表示實(shí)施例的硬件的主要部分構(gòu)造的方塊圖。在圖22中,圖形芯片30通過(guò)總線9與CPU連接,另一種外圍器件31可以通過(guò)總線9與CPU相連。圖23表示包括圖形驅(qū)動(dòng)器的軟件結(jié)構(gòu)。換句話說(shuō),根據(jù)圖22所示的硬件實(shí)現(xiàn)面向?qū)ο驩S。圖形驅(qū)動(dòng)器對(duì)象或應(yīng)用對(duì)象進(jìn)一步地在面向?qū)ο驩S上運(yùn)行。作為應(yīng)用對(duì)象,可以使用互聯(lián)網(wǎng)瀏覽器。互聯(lián)網(wǎng)瀏覽器利用了圖形驅(qū)動(dòng)器的功能,用于監(jiān)視器或電視屏幕上的顯示字符或圖像。用于使用上述圖像驅(qū)動(dòng)器的功能(服務(wù))的API如下,它們是在面向?qū)ο驩S上由圖像驅(qū)動(dòng)器實(shí)施API的一部分?!gfxErrorNewPixelMap(inpixelMapDescriptorPixelMapDescriptor,inMemoryRegionID,outpixelMapID)·AgfxErrorDeletePixelMap(inPixelMapIDPixelMapID)·AgfxErrorCopy(inPixelMapIDsourcePixelMapID,inCoordinatesourceCoordinateTopLeft,inPixelMapIDdestinationPixelMapID,inCoordinatedestinationCoordinateTopLeft,inwidth,inheigth)·AgfxErrorReadPixel(inPixelMapIDpixelMapID,inCoordinatecoordinate,outColorcolor)AgfxErrorWritePixel(inPixelMapIDpixelMapID,inCoordinatecoordinate,inColorcolor)“NewPixelMap”是一個(gè)用于在圖形驅(qū)動(dòng)器中產(chǎn)生數(shù)據(jù)結(jié)構(gòu)“PixelMap”和用于產(chǎn)生相應(yīng)的識(shí)別器“PixelMapid”的API。數(shù)據(jù)結(jié)構(gòu)“PixelMap”由圖形驅(qū)動(dòng)器管理,而數(shù)據(jù)結(jié)構(gòu)“PixelMap”本身管理圖像數(shù)據(jù)的寬度和長(zhǎng)度,并管理圖形驅(qū)動(dòng)器的內(nèi)部數(shù)據(jù)。圖形驅(qū)動(dòng)器用戶不能直接訪問(wèn)數(shù)據(jù)結(jié)構(gòu)“PixelMap”,但能通過(guò)使用識(shí)別器“PixelMapID”來(lái)指定它。API“NewPixelMap”的第一個(gè)變?cè)菍D像數(shù)據(jù)的寬度和長(zhǎng)度報(bào)告給圖形識(shí)別器的結(jié)構(gòu)。“NewPixelMap”的第二個(gè)變?cè)且粋€(gè)識(shí)別器,該識(shí)別器用于指定產(chǎn)生數(shù)據(jù)結(jié)構(gòu)“PixelMap”所需的存儲(chǔ)器區(qū)域?!癗ewPixelMap”的第三個(gè)變?cè)且a(chǎn)生的識(shí)別器“PixelMapID”。“PixelMapID”的操作和配置與上述的相似。“DeletePixelMap”是一個(gè)用于刪除由識(shí)別器“PixelMapID”所指定的數(shù)據(jù)結(jié)構(gòu)“PixelMap”的API。使用該API,可以刪除數(shù)據(jù)結(jié)構(gòu)“PixelMap”和識(shí)別器“PixelMapID”。其操作過(guò)程與上述相似。其他的API是“Copy”、“ReadPixel”“WritePixel”?!癈opy”是一種用于將從指定的數(shù)據(jù)結(jié)構(gòu)“PixelMap”中的圖像通過(guò)指定圖像的坐標(biāo)和大小來(lái)拷貝到另一個(gè)數(shù)據(jù)結(jié)構(gòu)“PixelMap”中的API?!癛eadPixel”是一種用于在數(shù)據(jù)結(jié)構(gòu)“PixelMap”中讀取指定坐標(biāo)顏色的API。“WritePixel”是一種將指定的顏色寫入數(shù)據(jù)結(jié)構(gòu)“PixelMap”中指定的坐標(biāo)中的API。為了指定數(shù)據(jù)結(jié)構(gòu)“PixelMap”,使用識(shí)別器“PixelMapID”。圖形驅(qū)動(dòng)器根據(jù)上述方法能夠檢測(cè)“PixelMapID”是否正確。因此,通過(guò)使用在與“PixelMapID”的索引值對(duì)應(yīng)的表“PixelMapEntryTable”中輸入的地址,在不尋找表的情況下,就能快速地訪問(wèn)數(shù)據(jù)結(jié)構(gòu)“PixelMap”。即使要確?!癙ixelMapID”在時(shí)間軸上是唯一的,用于表示“PixelMapID”所需的長(zhǎng)度也只是32位。這是因?yàn)槭褂昧吮景l(fā)明的識(shí)別器格式。[5]最后描述使用本發(fā)明數(shù)據(jù)結(jié)構(gòu)識(shí)別方法的裝置的配置。圖24是表示使用本發(fā)明上述數(shù)據(jù)結(jié)構(gòu)識(shí)別方法的裝置的配置的方塊圖。圖24所示的裝置是一臺(tái)盒式磁帶錄像機(jī)(下面稱為“VCR”),用于通過(guò)在盒式磁帶機(jī)中含有錄像帶的錄像機(jī)錄制/重現(xiàn)信號(hào)。本發(fā)明可以用在除VCR外的視聽機(jī)(Av機(jī))、辦公室用機(jī)器和普通計(jì)算機(jī)中。在圖24所示的VCR中,VCR功能單元14主要用作用來(lái)通過(guò)使用盒式錄像帶錄制/重現(xiàn)信號(hào)的盒式磁帶錄像機(jī)。將由VCR功能單元14錄制在盒式錄像帶上或者從該盒式錄像帶中重現(xiàn)的數(shù)據(jù)通過(guò)一個(gè)總線/IO橋15和總線9傳送給另一個(gè)裝置,并通過(guò)端點(diǎn)23輸入一個(gè)外部源或者從該外部源中輸出。中央處理器單元(CPU)12作為控制器,通過(guò)總線/存儲(chǔ)器橋13控制與總線9相連的單個(gè)要素。一個(gè)相對(duì)小容量的隨機(jī)存取存儲(chǔ)器(RAM)10用作工作區(qū)。存儲(chǔ)在RAM10中的是象前面提到的“StructEntryTable”和“RBoxEntryTable”之類的表和象上述“freeStructIDlist”與“freeRIDlist”之類的列表。只讀存儲(chǔ)器(ROM)11存儲(chǔ)關(guān)于OS的程序以及關(guān)于基本功能的程序。換句話說(shuō),CPU12根據(jù)存儲(chǔ)在ROM11中的程序控制單個(gè)要素并將RAM10用作工作區(qū)。集成電路(IC)卡驅(qū)動(dòng)器16在卡狀裝置中,包含用于接受IC卡的槽,它是一種裝有IC的存儲(chǔ)介質(zhì);和用于從/到IC卡中讀/寫數(shù)據(jù)的IC卡驅(qū)動(dòng)部分。軟盤驅(qū)動(dòng)器17有一個(gè)接收軟盤的槽、一個(gè)用于驅(qū)動(dòng)軟盤旋轉(zhuǎn)的旋轉(zhuǎn)驅(qū)動(dòng)部分和一個(gè)用于在/從軟盤中記錄/重現(xiàn)數(shù)據(jù)的磁頭。這樣,就可以通過(guò)軟盤驅(qū)動(dòng)器17記錄各種數(shù)據(jù)或安裝應(yīng)用軟件。硬盤驅(qū)動(dòng)器18包括一個(gè)用于驅(qū)動(dòng)硬盤旋轉(zhuǎn)的旋轉(zhuǎn)驅(qū)動(dòng)部分和一個(gè)用于在/從硬盤中記錄/重現(xiàn)數(shù)據(jù)的磁頭??偩€槽19是一個(gè)用作增加擴(kuò)展板的擴(kuò)展端口。串行口20是一個(gè)輸入/輸出部分,VCR通過(guò)串行端20經(jīng)調(diào)制解調(diào)器(MODEM)21和端點(diǎn)22執(zhí)行與外部源的數(shù)據(jù)通信。實(shí)時(shí)鐘24是提供實(shí)時(shí)信息的鐘。除具有普通VCR的功能外,上述VCR還安裝有其他的應(yīng)用軟件。例如,如果用戶需要改進(jìn)VCR(給VCR加入新的功能),就可以通過(guò)記錄介質(zhì),如IC卡或軟盤,或者通過(guò)象因特網(wǎng)之類的網(wǎng)線,安裝其他功能的軟件。在上述VCR中,使用與本發(fā)明的上述數(shù)據(jù)結(jié)構(gòu)識(shí)別方法相結(jié)合的OS。在不需要用一個(gè)新的VCR取代上述VCR的情況下,就能使用戶改進(jìn)VCR的功能。換句話說(shuō),將由程序員編出的并提供給用戶的應(yīng)用程序通過(guò)記錄介質(zhì)或網(wǎng)線安裝在VCR上,盡而在不要麻煩用戶進(jìn)行特別操作的情況下就能更新VCR。上述軟件程序是通過(guò)使用面向?qū)ο蠹夹g(shù)而構(gòu)成的。上述軟件盤或IC卡用作本發(fā)明的記錄介質(zhì),其中記錄了上述程序。除上述介質(zhì)外,也可以將CD-ROM用作本發(fā)明的記錄介質(zhì)。在前面的描述中,假設(shè)將所述數(shù)據(jù)結(jié)構(gòu)識(shí)別方法應(yīng)用在裝入一個(gè)裝置的OS中,并使用32位處理器,它是目前的主流處理器。然而,可以將本發(fā)明應(yīng)用到使用除上述類型之外的處理器的系統(tǒng)中。如前述所知,本發(fā)明具有如下優(yōu)點(diǎn)。用一個(gè)識(shí)別器區(qū)別對(duì)象或數(shù)據(jù)結(jié)構(gòu),該識(shí)別器包含有與用于檢測(cè)上述對(duì)象或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引,從而減少了所需的位數(shù)并保持高水平的系統(tǒng)運(yùn)轉(zhuǎn)。上述識(shí)別器包括判斷識(shí)別器格式的格式判斷部分。因此,有可能提供一種使用一種適合用在可擴(kuò)展系統(tǒng)中的識(shí)別器的數(shù)據(jù)結(jié)構(gòu)識(shí)別方法。在記錄數(shù)據(jù)結(jié)構(gòu)識(shí)別程序的記錄介質(zhì)中,該程序用于通過(guò)使用一個(gè)識(shí)別器來(lái)區(qū)分對(duì)象或數(shù)據(jù)結(jié)構(gòu)之間的差別,用一個(gè)識(shí)別器來(lái)區(qū)別對(duì)象或數(shù)據(jù)結(jié)構(gòu),所述識(shí)別器包含有與用于檢測(cè)對(duì)象或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引。這樣,就可能提供一種記錄數(shù)據(jù)結(jié)構(gòu)識(shí)別程序的記錄介質(zhì),其中,只需要少量的位,并能保持高水平的系統(tǒng)運(yùn)轉(zhuǎn)。最后,可以減少所需存儲(chǔ)器大小,而且,在不需要搜索找表或列表的情況下,就能在識(shí)別器中快速進(jìn)行計(jì)算。更進(jìn)一步,可以構(gòu)造一種能擴(kuò)展的軟件系統(tǒng)。權(quán)利要求1.一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,該方法包括通過(guò)使用一個(gè)識(shí)別器在對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)之間進(jìn)行區(qū)別的步驟,所說(shuō)的識(shí)別器包括一個(gè)與用于檢測(cè)對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引。2.如權(quán)利要求1所述的一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中用索引代替地址,并將該索引用作包含在表格中地址的索引。3.如權(quán)利要求1所述的一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中所說(shuō)的識(shí)別器由索引與時(shí)間標(biāo)記或計(jì)數(shù)器的結(jié)合構(gòu)成,這樣就確保所說(shuō)的識(shí)別器在時(shí)間軸上是唯一的。4.如權(quán)利要求1所述的一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中產(chǎn)生了一種表示數(shù)據(jù)結(jié)構(gòu)的地址和計(jì)數(shù)器之間關(guān)系的表格,并將所說(shuō)識(shí)別器的計(jì)數(shù)器與存儲(chǔ)在表格中的計(jì)數(shù)器相比較,從而判斷所說(shuō)識(shí)別器對(duì)于系統(tǒng)是否有效。5.如權(quán)利要求4所述的一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中判斷是通過(guò)減少計(jì)數(shù)器而進(jìn)行的。6.如權(quán)利要求1所述的一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中所說(shuō)的識(shí)別器有一個(gè)設(shè)置為0的無(wú)效值,盡而判斷所說(shuō)的識(shí)別器是否是一個(gè)無(wú)效值。7.一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,該方法包括通過(guò)使用一個(gè)識(shí)別器在對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)之間進(jìn)行區(qū)別的步驟,所說(shuō)的識(shí)別器包括一個(gè)與用于檢測(cè)對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引,其中所說(shuō)的識(shí)別器有一個(gè)用于判斷所說(shuō)的識(shí)別器的格式的格式判斷部分。8.如權(quán)利要求7所述的一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中所說(shuō)的格式判斷部分有一個(gè)位,用于區(qū)分使用時(shí)間標(biāo)記的識(shí)別器格式與使用計(jì)數(shù)器的識(shí)別器格式之間的區(qū)別。9.如權(quán)利要求7所述的一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中所說(shuō)的格式判斷部分有一個(gè)位,用于區(qū)別不同識(shí)別器格式的長(zhǎng)度。10.如權(quán)利要求7所述的一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,其中所說(shuō)的識(shí)別器有一個(gè)位,用于判斷網(wǎng)絡(luò)地址是否存在。11.一種記錄介質(zhì),該記錄介質(zhì)記錄用于通過(guò)使用一個(gè)識(shí)別器來(lái)區(qū)分對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)之間的區(qū)別的程序,其中所說(shuō)的識(shí)別器包括一個(gè)與用于檢測(cè)對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引。12.一種記錄介質(zhì),該記錄介質(zhì)記錄用于通過(guò)使用一個(gè)識(shí)別器來(lái)區(qū)分對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)之間的區(qū)別的程序,其中所說(shuō)的識(shí)別器包括一個(gè)與用于檢測(cè)對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)的地址相對(duì)應(yīng)的索引和一種用于判斷所說(shuō)的識(shí)別器的格式的格式判斷部分。全文摘要一種數(shù)據(jù)結(jié)構(gòu)識(shí)別方法,用一種識(shí)別器來(lái)區(qū)別對(duì)象和/或數(shù)據(jù)結(jié)構(gòu)。該識(shí)別器由用索引代替地址的方法構(gòu)成,用一個(gè)表格表示索引與地址之間的關(guān)系。為了確保該識(shí)別器在時(shí)間軸上是唯一的,使索引與時(shí)間標(biāo)記或計(jì)數(shù)器結(jié)合起來(lái)。識(shí)別器進(jìn)一步包括一種格式判斷部分,例如對(duì)象識(shí)別器“OID”格式位和/或預(yù)留位,它們可以用于判斷網(wǎng)址是否存在。識(shí)別器適應(yīng)于一種可擴(kuò)展的系統(tǒng)。因此,只需要少量的位,并能保持高水平的系統(tǒng)運(yùn)轉(zhuǎn)。文檔編號(hào)G06F9/46GK1212396SQ9812436公開日1999年3月31日申請(qǐng)日期1998年9月19日優(yōu)先權(quán)日1997年9月19日發(fā)明者森山光一申請(qǐng)人:索尼公司