專(zhuān)利名稱(chēng)::用于訪(fǎng)問(wèn)另一個(gè)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及數(shù)據(jù)處理領(lǐng)域。更具體地,本發(fā)明涉及計(jì)算機(jī)系統(tǒng)中的尋址方案的領(lǐng)域。
背景技術(shù):
:自從計(jì)算機(jī)時(shí)代的來(lái)臨,計(jì)算機(jī)系統(tǒng)已演變?yōu)榭稍诤芏嗖煌O(shè)置中找到的極為復(fù)雜的裝置。典型地,計(jì)算機(jī)系統(tǒng)包括硬件(例如,半導(dǎo)體、電路板等)和軟件(例如,計(jì)算機(jī)程序)的組合。隨著半導(dǎo)體工藝和計(jì)算機(jī)架構(gòu)的進(jìn)步使計(jì)算機(jī)硬件的性能推向更高,已為了利用硬件的更高的性能而發(fā)展出更復(fù)雜的計(jì)算機(jī)軟件,從而導(dǎo)致今天的計(jì)算機(jī)系統(tǒng)比幾年前強(qiáng)大得多。計(jì)算機(jī)系統(tǒng)具有由計(jì)算機(jī)硬件定義的尋址能力。計(jì)算機(jī)系統(tǒng)的地址空間是可用來(lái)引用數(shù)據(jù)、指令等的地址的范圍,并通過(guò)地址的大小(以位為單位)而被確定。地址大小是計(jì)算機(jī)系統(tǒng)的基礎(chǔ)架構(gòu)特征中的一個(gè)。早先,計(jì)算機(jī)系統(tǒng)是單用戶(hù)計(jì)算機(jī),其僅可同時(shí)處理單個(gè)任務(wù),每當(dāng)需要執(zhí)行新任務(wù)時(shí),便將所有數(shù)據(jù)映射到單個(gè)地址空間、并將數(shù)據(jù)調(diào)入和調(diào)出地址空間。之后,開(kāi)發(fā)出支持多用戶(hù)和進(jìn)程的計(jì)算機(jī)。支持多進(jìn)程的計(jì)算機(jī)系統(tǒng)必須管理進(jìn)程之間的地址空間的分配。通常,每個(gè)進(jìn)程具有對(duì)于該進(jìn)程來(lái)說(shuō)唯一的、其自己的工作數(shù)據(jù)。對(duì)于單處理器和多處理器計(jì)算機(jī)系統(tǒng)來(lái)說(shuō)均是這樣。通常,計(jì)算機(jī)架構(gòu)支持“進(jìn)程本地尋址”,其中,僅在執(zhí)行進(jìn)程的環(huán)境(context)中解析存儲(chǔ)裝置訪(fǎng)問(wèn)。處理器使用進(jìn)程唯一的段表(segmenttable)(其在本領(lǐng)域中還被稱(chēng)為“變換表”),以將進(jìn)程本地地址變換為虛擬地址。兩個(gè)不同的進(jìn)程可使用相同的進(jìn)程本地地址而引用存儲(chǔ)裝置,但是,因?yàn)椴僮飨到y(tǒng)內(nèi)核利用用于每個(gè)進(jìn)程的獨(dú)立虛擬地址范圍來(lái)填充(populate)段表,所以,引用了不同的虛擬地址,其隨后導(dǎo)致對(duì)不同存儲(chǔ)裝置的訪(fǎng)問(wèn)。一般在行業(yè)中使用進(jìn)程本地尋址。使用進(jìn)程本地尋址機(jī)制來(lái)防止一個(gè)進(jìn)程偶然或有意地訪(fǎng)問(wèn)另一個(gè)進(jìn)程的存儲(chǔ)裝置。由此,期望操作系統(tǒng)內(nèi)核將每個(gè)進(jìn)程的工作數(shù)據(jù)布置為駐留在被進(jìn)程本地地址引用的進(jìn)程本地存儲(chǔ)裝置中。然而,存在協(xié)作進(jìn)程需要共享它們的工作存儲(chǔ)裝置的至少一部分的情形。由此,典型地,操作系統(tǒng)內(nèi)核提供一個(gè)或多個(gè)共享機(jī)制,協(xié)作進(jìn)程借此共享它們的工作存儲(chǔ)裝置的至少一部分。兩個(gè)這樣的共享機(jī)制分別被稱(chēng)為“共享存儲(chǔ)器”和“存儲(chǔ)器映射文件”。第一個(gè)共享機(jī)制,即共享存儲(chǔ)器,是這樣的技術(shù)操作系統(tǒng)內(nèi)核將每個(gè)協(xié)作進(jìn)程的段表的一部分填充相同的虛擬地址范圍,并提供后備存儲(chǔ)裝置,以支持那些虛擬地址。由此,協(xié)作進(jìn)程可引用同一存儲(chǔ)裝置。此外,如果操作系統(tǒng)內(nèi)核將相同的進(jìn)程本地地址與每個(gè)進(jìn)程的段表中的相同的虛擬地址相關(guān)聯(lián),那么,協(xié)作進(jìn)程可使用相同的進(jìn)程本地地址而引用相同的存儲(chǔ)裝置。第二個(gè)共享機(jī)制,即存儲(chǔ)器映射文件,是類(lèi)似的技術(shù),但是,在此情況下,通過(guò)存在于文件系統(tǒng)中某處的文件而提供后備存儲(chǔ)裝置。協(xié)作進(jìn)程引用相同的存儲(chǔ)裝置,其是該文件的一部分。這些共享機(jī)制是有用的,但需要進(jìn)程之間的某種協(xié)作。在這一點(diǎn)上,應(yīng)注意,進(jìn)程的工作數(shù)據(jù)不位于共享區(qū)域中的一個(gè)中。進(jìn)程必須顯式地創(chuàng)建共享存儲(chǔ)器對(duì)象、或映射該文件,并且隨后,必須基于所得到的共享區(qū)域的地址而定義其工作存儲(chǔ)裝置中其想要共享的部分。并且,進(jìn)程必須在對(duì)共享的存儲(chǔ)裝置進(jìn)行尋址時(shí)進(jìn)行協(xié)作。如果共享的存儲(chǔ)裝置中的任一個(gè)包含共享的存儲(chǔ)裝置的其它部分的地址,那么,所有進(jìn)程必須能夠使用相同的進(jìn)程本地地址來(lái)引用共享的存儲(chǔ)裝置,或者,必須能夠在引用共享的存儲(chǔ)裝置時(shí)向該地址施加偏移。另外,當(dāng)將地址存儲(chǔ)在共享的存儲(chǔ)裝置中時(shí),必須考慮相同問(wèn)題。在某些情形中,難以或者不可能實(shí)現(xiàn)這些共享機(jī)制。進(jìn)程經(jīng)常必須根據(jù)共享機(jī)制中的一個(gè)的需要,而共享不能被組織的數(shù)據(jù)。例如,考慮執(zhí)行用于客戶(hù)機(jī)進(jìn)程的給定服務(wù)器功能的服務(wù)器進(jìn)程。該服務(wù)器功能可涉及從客戶(hù)機(jī)進(jìn)程的存儲(chǔ)裝置提取大量數(shù)據(jù)、或?qū)⒋罅繑?shù)據(jù)存儲(chǔ)到客戶(hù)機(jī)進(jìn)程的存儲(chǔ)裝置中。客戶(hù)機(jī)進(jìn)程的存儲(chǔ)裝置可在任何位置的事實(shí)引入了復(fù)雜性。例如,它可在其自己的工作存儲(chǔ)裝置中、或在調(diào)用它的過(guò)程的工作存儲(chǔ)裝置中;它可在與共享存儲(chǔ)器對(duì)象或存儲(chǔ)器映射文件相關(guān)聯(lián)的存儲(chǔ)裝置中;它可在堆?;蜢o態(tài)存儲(chǔ)裝置中,或者它可在這些位置的某個(gè)組合中??蛻?hù)機(jī)進(jìn)程的存儲(chǔ)裝置可能需要遍歷復(fù)雜的結(jié)構(gòu),這復(fù)雜的結(jié)構(gòu)包括若干級(jí)別的間接尋址(indirection)和指針廢棄,以定位要訪(fǎng)問(wèn)的所有存儲(chǔ)裝置??赡艽嬖谟糜谔幚磉@些復(fù)雜性的各種技術(shù),但這些技術(shù)中的每個(gè)不期望地影響性能。在一個(gè)這樣的技術(shù)中,使用共享存儲(chǔ)器作為中間緩沖器。服務(wù)器進(jìn)程從此中間存儲(chǔ)器提取數(shù)據(jù),或?qū)?shù)據(jù)置入此中間存儲(chǔ)器,并且,客戶(hù)機(jī)進(jìn)程在調(diào)用服務(wù)器功能之前,將數(shù)據(jù)從其自己的工作存儲(chǔ)裝置復(fù)制到共享的區(qū)域中,或者,在調(diào)用服務(wù)器功能之后,將數(shù)據(jù)從共享的區(qū)域復(fù)制到其自己的工作存儲(chǔ)裝置中。與設(shè)置中間存儲(chǔ)裝置、以及副本復(fù)制(尤其是在涉及大量數(shù)據(jù)的情況下)有關(guān)的、與中間復(fù)制相關(guān)聯(lián)的開(kāi)銷(xiāo)是不理想的。在用于處理這些復(fù)雜性的另一種技術(shù)中,服務(wù)器進(jìn)程使用操作系統(tǒng)內(nèi)核功能,以從客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置“獲得”、或“置入”客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置。取決于如何實(shí)現(xiàn)它,這可能還涉及數(shù)據(jù)的中間復(fù)制。無(wú)論如何,此類(lèi)功能在本質(zhì)上是非常通用的,例如,獲得/放置在指定地址上開(kāi)始的特定數(shù)目(n)的字節(jié),并且,此類(lèi)功能不擁有用來(lái)遍歷客戶(hù)機(jī)數(shù)據(jù)結(jié)構(gòu)的實(shí)際知識(shí)。結(jié)果,服務(wù)器進(jìn)程需要對(duì)遍歷的每一個(gè)分支調(diào)用此功能,并且,對(duì)性能的影響同樣是不期望的。存在對(duì)于以受控方式訪(fǎng)問(wèn)另一個(gè)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的增強(qiáng)機(jī)制的需要。
發(fā)明內(nèi)容根據(jù)本發(fā)明的優(yōu)選實(shí)施例,操作系統(tǒng)內(nèi)核包括附連機(jī)制和分離機(jī)制。另外,通過(guò)將進(jìn)程標(biāo)識(shí)為客戶(hù)機(jī)進(jìn)程或服務(wù)器進(jìn)程的訪(fǎng)問(wèn)屬性來(lái)標(biāo)記進(jìn)程?;谠L(fǎng)問(wèn)屬性,操作系統(tǒng)內(nèi)核取決于進(jìn)程是客戶(hù)機(jī)進(jìn)程還是服務(wù)器進(jìn)程而不同地布置進(jìn)程本地地址空間。服務(wù)器進(jìn)程可“附連”到客戶(hù)機(jī)進(jìn)程,并且,如同客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置是其自己的那樣,引用客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置的全部。服務(wù)器進(jìn)程繼續(xù)引用其自己的進(jìn)程本地存儲(chǔ)裝置,但是另外,其可使用客戶(hù)機(jī)進(jìn)程的本地地址而引用客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置。通過(guò)帶著附連請(qǐng)求進(jìn)入到操作系統(tǒng)內(nèi)核,服務(wù)器進(jìn)程調(diào)用內(nèi)核的附連機(jī)制來(lái)執(zhí)行“附連”。一旦附連,便可以?xún)?nèi)核或用戶(hù)模式來(lái)引用其它存儲(chǔ)裝置。當(dāng)完成了訪(fǎng)問(wèn)客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置的服務(wù)器進(jìn)程時(shí),通過(guò)帶著分離請(qǐng)求進(jìn)入到操作系統(tǒng)內(nèi)核,服務(wù)器進(jìn)程調(diào)用內(nèi)核的分離機(jī)制來(lái)執(zhí)行“分離”。一旦分離,便不再能夠以?xún)?nèi)核或用戶(hù)模式來(lái)引用其它存儲(chǔ)裝置。從下面對(duì)附圖中圖解的本發(fā)明的優(yōu)選實(shí)施例的更具體的描述中,本發(fā)明的前述和其它特征、以及優(yōu)點(diǎn)將變得清楚。下文中,將通過(guò)結(jié)合附圖而描述本發(fā)明的優(yōu)選示例實(shí)施例,其中,相同的附圖標(biāo)記表示相同的元素。圖1是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的計(jì)算機(jī)設(shè)備的框圖。圖2是圖解根據(jù)本發(fā)明的優(yōu)選實(shí)施例的與幾個(gè)示例并發(fā)進(jìn)程中的每個(gè)相關(guān)聯(lián)的各種機(jī)制的框圖。圖3是圖解根據(jù)本發(fā)明的優(yōu)選實(shí)施例的幾個(gè)示例并發(fā)進(jìn)程中的每個(gè)的地址空間內(nèi)的分配的框圖。圖4是圖解根據(jù)本發(fā)明的優(yōu)選實(shí)施例、用于基于訪(fǎng)問(wèn)屬性而布置進(jìn)程的地址空間的方法的流程圖。圖5是圖解根據(jù)本發(fā)明的優(yōu)選實(shí)施例、用于使服務(wù)器進(jìn)程能夠附連(attach)到客戶(hù)機(jī)進(jìn)程的方法的流程圖。圖6是圖解根據(jù)本發(fā)明的優(yōu)選實(shí)施例用于處理段故障的方法的流程圖。圖7是圖解根據(jù)本發(fā)明的優(yōu)選實(shí)施例、用于使服務(wù)器進(jìn)程能夠與客戶(hù)機(jī)進(jìn)程分離(detach)的方法的流程圖。具體實(shí)施例方式1.0概述本發(fā)明使服務(wù)器進(jìn)程能夠直接訪(fǎng)問(wèn)所有客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置,如同客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置是它自己的那樣。服務(wù)器進(jìn)程繼續(xù)引用其自己的進(jìn)程本地存儲(chǔ)裝置,但是另外,其可使用客戶(hù)機(jī)進(jìn)程的本地地址而引用客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,使用包括附連機(jī)制和分離機(jī)制的操作系統(tǒng)內(nèi)核來(lái)提供此能力。另外,用將進(jìn)程標(biāo)識(shí)為客戶(hù)機(jī)進(jìn)程或服務(wù)器進(jìn)程的訪(fǎng)問(wèn)屬性來(lái)標(biāo)記進(jìn)程?;谠L(fǎng)問(wèn)屬性,操作系統(tǒng)內(nèi)核取決于該進(jìn)程是客戶(hù)機(jī)進(jìn)程還是服務(wù)器進(jìn)程而區(qū)別地布置進(jìn)程本地地址空間。對(duì)于不熟悉本地尋址的一般概念的人員,下面連同在這里使用的定義而更詳細(xì)地討論此尋址方案。在討論尋址模式時(shí),已在該領(lǐng)域中使用相同的術(shù)語(yǔ)來(lái)表示對(duì)于不同人來(lái)說(shuō)不同的事物。例如,在本領(lǐng)域中最公知的術(shù)語(yǔ)“虛擬地址”表示這樣的地址可被訪(fǎng)問(wèn)、或可通過(guò)執(zhí)行地址計(jì)算而導(dǎo)出,并且,對(duì)于執(zhí)行程序來(lái)說(shuō)可見(jiàn)、并可被執(zhí)行程序操作。然而,在PowerPC術(shù)語(yǔ)中,此類(lèi)虛擬地址被稱(chēng)為“有效地址”。PowerPC術(shù)語(yǔ)中的“虛擬地址”是根據(jù)有效地址而生成的、并在PowerPC地址變換方案中被內(nèi)部使用的地址。這通常就是如何在這里的“
背景技術(shù):
”部分中使用術(shù)語(yǔ)“虛擬地址”。一般說(shuō)來(lái),此類(lèi)地址在后面被稱(chēng)為“內(nèi)部地址”,以指示此地址對(duì)程序員來(lái)說(shuō)不可見(jiàn),而是由地址變換機(jī)制生成并使用的地址。PowerPC術(shù)語(yǔ)中的“真實(shí)地址”是用來(lái)訪(fǎng)問(wèn)真實(shí)(或物理)存儲(chǔ)器的地址,并在這里被稱(chēng)為“真實(shí)地址”。在現(xiàn)今的行業(yè)中通常使用的“進(jìn)程本地尋址”中,僅在執(zhí)行進(jìn)程的環(huán)境中解析存儲(chǔ)裝置訪(fǎng)問(wèn)。硬件使用進(jìn)程唯一的段表來(lái)將“進(jìn)程本地地址”變換為內(nèi)部地址。下面更詳細(xì)地討論的操作系統(tǒng)內(nèi)核將分配進(jìn)程本地地址空間、以及用于程序工作數(shù)據(jù)的存儲(chǔ)裝置。兩個(gè)不同的進(jìn)程可使用相同的進(jìn)程本地地址來(lái)引用存儲(chǔ)裝置,但是,因?yàn)椴僮飨到y(tǒng)內(nèi)核可對(duì)每個(gè)進(jìn)程用不同的內(nèi)部地址范圍來(lái)填充段表,所以進(jìn)程訪(fǎng)問(wèn)不同的存儲(chǔ)裝置。與防止一個(gè)進(jìn)程偶然或有意地訪(fǎng)問(wèn)另一個(gè)進(jìn)程的存儲(chǔ)裝置的傳統(tǒng)的進(jìn)程本地尋址機(jī)制不同,本發(fā)明使服務(wù)器進(jìn)程能夠以受控方式直接訪(fǎng)問(wèn)所有客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置,如同客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置是其自己的那樣。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,操作系統(tǒng)內(nèi)核在請(qǐng)求時(shí)允許此功能,并且,如果準(zhǔn)許訪(fǎng)問(wèn),則提供對(duì)另一個(gè)進(jìn)程的存儲(chǔ)裝置的訪(fǎng)問(wèn)。一般說(shuō)來(lái),對(duì)于這里的討論以及現(xiàn)今的行業(yè)中所共識(shí)的,進(jìn)程本地地址空間包括一組連續(xù)的段。硬件/軟件使用段表逐段地將進(jìn)程本地地址變換為內(nèi)部地址。自此,硬件/軟件繼續(xù)使用傳統(tǒng)的方式(其對(duì)于本發(fā)明的目的來(lái)說(shuō)并不重要),而將內(nèi)部地址解析為真實(shí)地址。2.0詳細(xì)的描述本發(fā)明的優(yōu)選實(shí)施例提供了包括附連機(jī)制和分離機(jī)制的操作系統(tǒng)內(nèi)核。另外,用將進(jìn)程標(biāo)識(shí)為客戶(hù)機(jī)進(jìn)程或服務(wù)器進(jìn)程的訪(fǎng)問(wèn)屬性來(lái)標(biāo)記進(jìn)程?;谠L(fǎng)問(wèn)屬性,操作系統(tǒng)內(nèi)核取決于該進(jìn)程是客戶(hù)機(jī)進(jìn)程還是服務(wù)器進(jìn)程而區(qū)別地布置進(jìn)程本地地址空間。服務(wù)器進(jìn)程可“附連”到客戶(hù)機(jī)進(jìn)程,并且引用所有客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置,如同客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置是其自己的那樣。服務(wù)器進(jìn)程繼續(xù)引用其自己的進(jìn)程本地存儲(chǔ)裝置,但是另外,它可使用客戶(hù)機(jī)進(jìn)程的本地地址來(lái)引用客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置。通過(guò)帶著附連請(qǐng)求進(jìn)入到操作系統(tǒng)內(nèi)核,服務(wù)器進(jìn)程調(diào)用內(nèi)核的附連機(jī)制來(lái)執(zhí)行“附連”。一旦附連,便可以?xún)?nèi)核或用戶(hù)模式來(lái)引用其它存儲(chǔ)裝置。當(dāng)完成了訪(fǎng)問(wèn)客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置的服務(wù)器進(jìn)程時(shí),通過(guò)帶著分離請(qǐng)求進(jìn)入到操作系統(tǒng)內(nèi)核,服務(wù)器進(jìn)程調(diào)用內(nèi)核的分離機(jī)制來(lái)執(zhí)行“分離”。一旦分離,便不再能夠以?xún)?nèi)核或用戶(hù)模式來(lái)引用其它存儲(chǔ)裝置?,F(xiàn)在參照?qǐng)D1,計(jì)算機(jī)系統(tǒng)100是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的設(shè)備的一個(gè)適用的實(shí)現(xiàn)。計(jì)算機(jī)系統(tǒng)100是增強(qiáng)型IBMeServeriSeries計(jì)算機(jī)系統(tǒng)。然而,本領(lǐng)域的技術(shù)人員將理解,還可將本發(fā)明的機(jī)制和設(shè)備應(yīng)用于任意計(jì)算機(jī)系統(tǒng),而無(wú)論該計(jì)算機(jī)系統(tǒng)是復(fù)雜的多用戶(hù)計(jì)算設(shè)備、單用戶(hù)工作站、還是嵌入式控制系統(tǒng)。如圖1所示,計(jì)算機(jī)系統(tǒng)100包括多個(gè)處理器110A、110B、110C和110D、主存儲(chǔ)器120、大容量存儲(chǔ)裝置接口130、顯示器接口140、以及網(wǎng)絡(luò)接口150。通過(guò)使用系統(tǒng)總線(xiàn)160而互連這些系統(tǒng)組件。大容量存儲(chǔ)裝置接口130用來(lái)將大容量存儲(chǔ)裝置(如直接存取存儲(chǔ)裝置155)連接到計(jì)算機(jī)系統(tǒng)100。直接存取存儲(chǔ)裝置155的一個(gè)具體類(lèi)型是可讀且可寫(xiě)CD-RW驅(qū)動(dòng)器,其可將數(shù)據(jù)存儲(chǔ)到CD-RW195、并從CD-RW195讀取數(shù)據(jù)。圖1意圖繪出計(jì)算機(jī)系統(tǒng)100在高層上的代表性的主要組件,應(yīng)理解,各個(gè)組件可能具有比圖1中表示的更大的復(fù)雜性,并且,這樣的組件的數(shù)目、類(lèi)型、以及配置可能變化。具體地,計(jì)算機(jī)系統(tǒng)100可能包含與所示出的數(shù)目不同的處理器。本領(lǐng)域的技術(shù)人員將理解,可使用具有一個(gè)或多個(gè)處理器的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)踐本發(fā)明。根據(jù)優(yōu)選實(shí)施例的主存儲(chǔ)器120包含數(shù)據(jù)121、操作系統(tǒng)122、一個(gè)或多個(gè)進(jìn)程125、以及一個(gè)或多個(gè)程序127。數(shù)據(jù)121表示用作到計(jì)算機(jī)系統(tǒng)100中的任意程序的輸入、或來(lái)自計(jì)算機(jī)系統(tǒng)100中的任意程序的輸出的任意數(shù)據(jù),或者用于計(jì)算機(jī)系統(tǒng)100中的任意程序的工作存儲(chǔ)裝置。操作系統(tǒng)122是多任務(wù)操作系統(tǒng),其在行業(yè)中被稱(chēng)為OS/400或IBMi5/OS;然而,本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的精神和范圍不限于任一個(gè)操作系統(tǒng)。作為一般情況,操作系統(tǒng)122包括操作系統(tǒng)內(nèi)核123(在此也被稱(chēng)為“內(nèi)核”)。內(nèi)核123被集成到操作系統(tǒng)122中,并向操作系統(tǒng)組件和其它程序(如程序127)提供內(nèi)核級(jí)服務(wù)。例如,內(nèi)核123包括系統(tǒng)任務(wù)分配器124,其被操作系統(tǒng)122調(diào)用,以使用本領(lǐng)域中公知的各種機(jī)制中的任一個(gè)將進(jìn)程125分配到一個(gè)或多個(gè)處理器110A、110B、110C和110D。內(nèi)核123是安全、審核、和控制的判優(yōu)器。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,內(nèi)核123提供兩個(gè)新的機(jī)制附連機(jī)制180、以及分離機(jī)制182。附連機(jī)制180允許服務(wù)器進(jìn)程附連到客戶(hù)機(jī)進(jìn)程。分離機(jī)制182允許服務(wù)器進(jìn)程與客戶(hù)機(jī)進(jìn)程分離。內(nèi)核123還創(chuàng)建并維護(hù)與每個(gè)進(jìn)程125相關(guān)聯(lián)的一組“屬性”。從用戶(hù)調(diào)用程序127導(dǎo)出所述屬性中的一些,并從程序自身導(dǎo)出其它屬性。傳統(tǒng)屬性的一些例子為用戶(hù)ID、組ID、以及特權(quán)(privilege)。另外,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,內(nèi)核123還提供與每個(gè)進(jìn)程125相關(guān)聯(lián)的、在這里被稱(chēng)為“訪(fǎng)問(wèn)屬性”126的新屬性。如早先所提到的,訪(fǎng)問(wèn)屬性126將進(jìn)程125標(biāo)記為客戶(hù)機(jī)進(jìn)程或服務(wù)器進(jìn)程。并且,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,內(nèi)核123在執(zhí)行程序127之前布置一個(gè)或多個(gè)進(jìn)程125。例如,在執(zhí)行諸如“網(wǎng)頁(yè)瀏覽器”或字處理程序的應(yīng)用程序之前,內(nèi)核123布置一個(gè)或多個(gè)進(jìn)程125。首先布置進(jìn)程125(即,在程序開(kāi)始執(zhí)行之前),這是因?yàn)椋缦旅娓敿?xì)地討論的那樣,每個(gè)進(jìn)程125必須通過(guò)訪(fǎng)問(wèn)屬性126而被標(biāo)記為客戶(hù)機(jī)進(jìn)程或服務(wù)器進(jìn)程,于是,內(nèi)核123獲知在何處安排程序的進(jìn)程本地存儲(chǔ)空間。每個(gè)進(jìn)程125由一個(gè)或多個(gè)處理器110A、110B、110C和110D執(zhí)行的程序指令組成。如前所述,由操作系統(tǒng)122創(chuàng)建一個(gè)或多個(gè)進(jìn)程125。這些進(jìn)程可包括客戶(hù)機(jī)進(jìn)程和服務(wù)器進(jìn)程。典型地,進(jìn)程包含有關(guān)程序資源和程序執(zhí)行狀態(tài)的信息。計(jì)算機(jī)系統(tǒng)100利用公知的虛擬尋址機(jī)制,其允許計(jì)算機(jī)系統(tǒng)100的程序進(jìn)行操作,如同它們具有對(duì)大容量單個(gè)存儲(chǔ)實(shí)體的訪(fǎng)問(wèn)權(quán)、而不是對(duì)多個(gè)較小的存儲(chǔ)實(shí)體(如主存儲(chǔ)器120和DASD裝置155)的訪(fǎng)問(wèn)權(quán)。因此,盡管將數(shù)據(jù)121、操作系統(tǒng)122、操作系統(tǒng)內(nèi)核123、系統(tǒng)任務(wù)分配器124、附連機(jī)制180、分離機(jī)制182、一個(gè)或多個(gè)進(jìn)程125、訪(fǎng)問(wèn)屬性126、以及一個(gè)或多個(gè)程序127示出為駐留在主存儲(chǔ)器120中,但本領(lǐng)域的技術(shù)人員將理解,這些項(xiàng)目不必同時(shí)完全包含在主存儲(chǔ)器120中。處理器110A、110B、110C和110D各自可由一個(gè)或多個(gè)微處理器和/或集成電路構(gòu)成。優(yōu)選地,處理器110A、110B、110C和110D是在行業(yè)中被共稱(chēng)為PowerPC架構(gòu)的處理器架構(gòu)的部件;然而,本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的精神和范圍不限于任一種處理器架構(gòu)。處理器110A、110B、110C和110D執(zhí)行存儲(chǔ)在主存儲(chǔ)器120中的程序指令。主存儲(chǔ)器120存儲(chǔ)處理器110A、110B、110C和110D可訪(fǎng)問(wèn)的程序和數(shù)據(jù)。當(dāng)計(jì)算機(jī)系統(tǒng)100啟動(dòng)時(shí),處理器110A、110B、110C和110D首先執(zhí)行構(gòu)成操作系統(tǒng)122的程序指令。操作系統(tǒng)122是管理計(jì)算機(jī)系統(tǒng)100的資源的復(fù)雜的程序。這些資源中的一些是處理器110A、110B、110C和110D、主存儲(chǔ)器120、大容量存儲(chǔ)裝置接口130、顯示器接口140、網(wǎng)絡(luò)接口150、以及系統(tǒng)總線(xiàn)160。優(yōu)選地,每個(gè)處理器具有用于將進(jìn)程本地地址變換為內(nèi)部地址的變換信息的關(guān)聯(lián)段高速緩沖存儲(chǔ)器112A、112B、112C和112D,如在下面更詳細(xì)地討論的那樣。為了簡(jiǎn)化起見(jiàn),一般在這里分別由附圖標(biāo)號(hào)110和112來(lái)指定處理器和段高速緩沖存儲(chǔ)器。盡管對(duì)于每個(gè)處理器110示出了單個(gè)段高速緩沖存儲(chǔ)器112,但可能存在多級(jí)段高速緩沖存儲(chǔ)器,或者可能根本不存在段高速緩沖存儲(chǔ)器。處理器110還可具有用于其它目的的其它高速緩沖存儲(chǔ)器,如存儲(chǔ)器的高速緩沖存儲(chǔ)器,其中的一些可專(zhuān)用于指令,而其它用于不可執(zhí)行的數(shù)據(jù)。地址變換機(jī)制190是提供使用地址空間來(lái)間接地訪(fǎng)問(wèn)真實(shí)存儲(chǔ)器、或通過(guò)地址空間的間接引用而訪(fǎng)問(wèn)真實(shí)存儲(chǔ)器的能力的機(jī)制。地址變換機(jī)制190是邏輯類(lèi)型的實(shí)體,如在下面更詳細(xì)地討論的那樣,其通過(guò)嵌入在處理器110和段高速緩沖存儲(chǔ)器112內(nèi)的硬件附件而擴(kuò)充。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,地址變換機(jī)制190包括基于進(jìn)程的地址空間環(huán)境(context)191,其將進(jìn)程本地地址變換為內(nèi)部地址。將地址空間環(huán)境191定義為數(shù)據(jù)結(jié)構(gòu)和關(guān)聯(lián)代碼,該關(guān)聯(lián)代碼使用戶(hù)所感覺(jué)的作為地址空間。如在下面詳細(xì)地討論的那樣,地址空間環(huán)境191包括基于進(jìn)程的段表192、目錄193、以及指向替換(alternate)地址空間環(huán)境的指針194。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,在將進(jìn)程本地地址變換為內(nèi)部地址時(shí)使用多級(jí)地址變換信息。以大小增大的次序列出的此地址變換信息包括段高速緩沖存儲(chǔ)器112、段表192、以及目錄193。通常,地址空間環(huán)境191全部或至少部分地以軟件實(shí)現(xiàn)。如前所述,進(jìn)程本地地址空間包括一組連續(xù)段。如在本領(lǐng)域中慣用且公知的那樣,段高速緩沖存儲(chǔ)器112中的條目用來(lái)將進(jìn)程本地地址變換為內(nèi)部地址。段高速緩沖存儲(chǔ)器112是在嘗試將進(jìn)程本地地址變換為內(nèi)部地址時(shí)使用的第一級(jí)變換信息。通常,由硬件并行(即,并發(fā))地搜索段高速緩沖存儲(chǔ)器112中的條目,以便快速確定是否存在匹配。當(dāng)在段高速緩沖存儲(chǔ)器112中的條目中未發(fā)現(xiàn)進(jìn)程本地地址時(shí),出現(xiàn)段故障。如果出現(xiàn)段故障,則根據(jù)本發(fā)明的優(yōu)選實(shí)施例、并且如下面更詳細(xì)地描述的地址變換機(jī)制190使用段表192、目錄193、以及指向替換地址空間環(huán)境的指針194,逐段地將進(jìn)程本地地址變換為內(nèi)部地址。自此,地址變換機(jī)制190繼續(xù)使用傳統(tǒng)的方式將內(nèi)部地址解析為真實(shí)的地址,該傳統(tǒng)的方式對(duì)于本發(fā)明的目的來(lái)說(shuō)不重要。如在現(xiàn)有技術(shù)中公知的那樣,由硬件執(zhí)行在段高速緩沖存儲(chǔ)器112中的條目中的進(jìn)程本地地址的搜索。如果該硬件在段高速緩沖存儲(chǔ)器112中的條目中發(fā)現(xiàn)進(jìn)程本地地址,則該硬件將進(jìn)程本地地址變換為內(nèi)部地址,隨后將內(nèi)部地址解析為真實(shí)的地址。典型地,如果該硬件在段高速緩沖存儲(chǔ)器112中的條目中發(fā)現(xiàn)進(jìn)程本地地址,則不通知軟件。另一方面,如果該硬件未在段高速緩沖存儲(chǔ)器112中的條目中發(fā)現(xiàn)進(jìn)程本地地址,則出現(xiàn)段故障。在此異常情況中,取決于所使用的具體實(shí)現(xiàn),如在下面更詳細(xì)地討論的那樣,可能、或者可能不向軟件通知出現(xiàn)段故障。段高速緩沖存儲(chǔ)器112未大到足以包含用于所有進(jìn)程本地尋址段的變換信息。由此,如現(xiàn)今在行業(yè)中通常的那樣,基于進(jìn)程而維護(hù)具有較大的變換信息集的段表192。如果在變換期間出現(xiàn)段故障,則生成中斷,并且,軟件中斷處理器195快速地嘗試根據(jù)段表192而定位變換信息,并將變換信息作為條目置入段高速緩沖存儲(chǔ)器112,并且,可重新執(zhí)行引起段故障的指令。軟件中斷處理器195在本領(lǐng)域中是傳統(tǒng)且公知的,并且由此,不在這里詳細(xì)討論??商鎿Q地、且在本領(lǐng)域中也是公知的,可以硬件方式實(shí)現(xiàn)段表的搜索,一般不通知軟件。例如,處理器110可獲知段表位于何處。在該情況下,如果在變換期間出現(xiàn)段故障,則處理器將嘗試在段表中找到變換信息,并將變換信息作為條目置入段高速緩沖存儲(chǔ)器112,并且,可重新執(zhí)行引起段故障的指令。目錄193比段表192大,這是因?yàn)?,其包含基于進(jìn)程的、用于進(jìn)程125的所有進(jìn)程本地地址到內(nèi)部地址變換信息。如果軟件中斷處理器195不能在段表中找到必要的變換信息,那么,調(diào)用長(zhǎng)得多的故障處理軟件方法196,以在目錄193中查找變換信息,并且,在重新執(zhí)行故障指令之前使用它來(lái)填充段高速緩沖存儲(chǔ)器112和/或段表192。故障處理軟件方法196在本領(lǐng)域中是慣用且公知的,并且由此,不在這里詳細(xì)討論它??商鎿Q地,在以硬件方式實(shí)現(xiàn)段表的搜索、且該硬件不能在段表中發(fā)現(xiàn)必要的變換信息的情況下,生成中斷,并調(diào)用故障處理軟件196。由此,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,當(dāng)出現(xiàn)段故障時(shí),軟件(例如,軟件中斷處理器195和故障處理軟件方法196)用來(lái)自在段表192或目錄193中找到的變換信息的條目來(lái)加載段高速緩沖存儲(chǔ)器112。并且,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,當(dāng)條目不再被需要、或無(wú)效時(shí),該軟件從段高速緩沖存儲(chǔ)器112中清除(flush)所述條目,如在下面更詳細(xì)地討論的那樣。并且,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,處理器110不斷引用并使用段高速緩沖存儲(chǔ)器112中的條目,并且,只要變換信息的搜索成功,即在段高速緩沖存儲(chǔ)器112中的條目中找到變換信息,就不用打攪來(lái)通知軟件。然而,當(dāng)搜索不成功時(shí),硬件通知軟件已出現(xiàn)了段故障。如上所述,地址空間環(huán)境191包括基于進(jìn)程的、到用附圖標(biāo)號(hào)194表示的替換地址空間環(huán)境的指針(也被稱(chēng)為“指針”和“替換地址空間環(huán)境指針”)。如在下面更詳細(xì)地討論的那樣,在附連進(jìn)程期間,將與服務(wù)器進(jìn)程相關(guān)聯(lián)的地址空間環(huán)境的指針194設(shè)置為指向與客戶(hù)機(jī)進(jìn)程相關(guān)聯(lián)的地址空間環(huán)境。盡管為了說(shuō)明的目的而將地址空間環(huán)境191、段表192、目錄193、指針194、軟件中斷處理器195、以及故障處理軟件方法196示出為駐留在地址變換機(jī)制190中,但本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,這些組件不需要一起駐留,并且,這些組件中的一個(gè)或多個(gè)可駐留在其它位置。例如,地址空間環(huán)境191可駐留在內(nèi)核123中,而軟件中斷處理器195、以及故障處理軟件方法196可駐留在主存儲(chǔ)器120中的其它位置。另外,但本領(lǐng)域的技術(shù)人員還將認(rèn)識(shí)到,可組合這些組件,或者,可省略一個(gè)或多個(gè)組件。盡管將計(jì)算機(jī)系統(tǒng)100示出為僅包含單個(gè)系統(tǒng)總線(xiàn),但本領(lǐng)域的技術(shù)人員將理解,可使用具有多個(gè)總線(xiàn)的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)踐本發(fā)明。另外,在優(yōu)選實(shí)施例中使用的接口各自包括分離的、全編程的微處理器,其用來(lái)從處理器110A、110B、110C和110D中卸載計(jì)算密集的處理。然而,本領(lǐng)域的技術(shù)人員將理解,可將本發(fā)明同等地應(yīng)用于簡(jiǎn)單地使用I/O適配器來(lái)執(zhí)行類(lèi)似功能的計(jì)算機(jī)系統(tǒng)。顯示器接口140用來(lái)將一個(gè)或多個(gè)顯示器165直接連接到計(jì)算機(jī)系統(tǒng)100??梢允欠侵悄?即,啞(dumb))終端或可全編程的工作站的這些顯示器用來(lái)允許系統(tǒng)管理員和用戶(hù)與計(jì)算機(jī)系統(tǒng)100通信。然而,注意,盡管提供顯示器接口140來(lái)支持與一個(gè)或多個(gè)顯示器165的通信,但計(jì)算機(jī)系統(tǒng)100不必需要顯示器165,這是因?yàn)?,可?jīng)由網(wǎng)絡(luò)接口150而出現(xiàn)與用戶(hù)和其它進(jìn)程的所有所需交互。網(wǎng)絡(luò)接口150用來(lái)跨越網(wǎng)絡(luò)170而將其它計(jì)算機(jī)系統(tǒng)和/或工作站(例如,圖1中的175)連接到計(jì)算機(jī)系統(tǒng)100。無(wú)論計(jì)算機(jī)系統(tǒng)100可如何連接到其它計(jì)算機(jī)系統(tǒng)和/或工作站,無(wú)論使用現(xiàn)今的模擬和/或數(shù)字技術(shù)還是通過(guò)將來(lái)的某種聯(lián)網(wǎng)機(jī)制而產(chǎn)生網(wǎng)絡(luò)連接170,本發(fā)明均同等地適用。另外,可使用很多不同的網(wǎng)絡(luò)協(xié)議來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)。這些協(xié)議是允許計(jì)算機(jī)跨越網(wǎng)絡(luò)170通信的專(zhuān)用計(jì)算機(jī)程序。TCP/IP(傳輸控制協(xié)議/因特網(wǎng)協(xié)議)是適用的網(wǎng)絡(luò)協(xié)議的例子。在這一點(diǎn)上,重要的是要注意,盡管已經(jīng)并將繼續(xù)在全功能計(jì)算機(jī)系統(tǒng)的上下文中描述本發(fā)明,但本領(lǐng)域的技術(shù)人員將理解,本發(fā)明能夠以各種形式、作為程序產(chǎn)品而分發(fā),并且,無(wú)論用來(lái)實(shí)際實(shí)現(xiàn)該分發(fā)的信號(hào)承載介質(zhì)的特定類(lèi)型如何,本發(fā)明均同等地適用。適用的信號(hào)承載介質(zhì)的例子包括可記錄類(lèi)型的介質(zhì),如軟盤(pán)和CD-RW(例如,圖1中的195);以及傳輸型介質(zhì),如數(shù)字和模擬通信鏈路。圖2示出了圖解與幾個(gè)并發(fā)用戶(hù)進(jìn)程214、216和218中的每個(gè)相關(guān)聯(lián)的各種機(jī)制的功能框圖。包括訪(fǎng)問(wèn)屬性126、地址空間環(huán)境191、段表192、目錄193、以及指針194的這些機(jī)制存在于內(nèi)核123和例如處理器110的硬件中,并在內(nèi)核123和例如處理器110的硬件上運(yùn)行。每個(gè)進(jìn)程具有與其相關(guān)聯(lián)的指向“替換(alternate)”地址空間環(huán)境191(以及替換地址空間環(huán)境的段表192和目錄193,其分別被稱(chēng)為“進(jìn)程的替換段表”以及“進(jìn)程的替換目錄”)的指針194。例如,與服務(wù)器進(jìn)程相關(guān)聯(lián)的指針194可指向與客戶(hù)機(jī)進(jìn)程216或客戶(hù)機(jī)進(jìn)程218相關(guān)聯(lián)的地址空間環(huán)境191。為了下面討論的原因,不允許與客戶(hù)機(jī)進(jìn)程(例如,客戶(hù)機(jī)進(jìn)程216)相關(guān)聯(lián)的指針194指向與其它客戶(hù)機(jī)進(jìn)程(例如,客戶(hù)機(jī)進(jìn)程218)相關(guān)聯(lián)的地址空間環(huán)境191。同樣地,不允許與服務(wù)器進(jìn)程(例如,服務(wù)器進(jìn)程214)相關(guān)聯(lián)的指針194指向與其它服務(wù)器進(jìn)程相關(guān)聯(lián)的地址空間環(huán)境191。首先,指針194為空,以指示該進(jìn)程目前不具有替換地址空間環(huán)境。在優(yōu)選實(shí)施例中,與客戶(hù)機(jī)進(jìn)程216(或客戶(hù)機(jī)進(jìn)程218)相關(guān)聯(lián)的指針194總是保持為空,這是由于,客戶(hù)機(jī)進(jìn)程從不具有替換地址空間環(huán)境??赏ㄟ^(guò)“用戶(hù)模式”程序以及具有全系統(tǒng)特權(quán)的“內(nèi)核模式”程序-包括(圖1中示出的)內(nèi)核123和所關(guān)聯(lián)的硬件(其在圖2中一起被表示為內(nèi)核/硬件250)-來(lái)訪(fǎng)問(wèn)進(jìn)程214、216和218。內(nèi)核123還可訪(fǎng)問(wèn)與圖2中示出的各種機(jī)制相關(guān)聯(lián)的元描述對(duì)象和代碼,其中圖2中示出的各種機(jī)制與每個(gè)進(jìn)程相關(guān)聯(lián)。如前所述,內(nèi)核123提供與每個(gè)進(jìn)程相關(guān)聯(lián)的訪(fǎng)問(wèn)屬性126。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,進(jìn)程214、216和218中的每個(gè)具有呈現(xiàn)兩個(gè)值中的一個(gè)的訪(fǎng)問(wèn)屬性126?!翱蛻?hù)機(jī)(Client)”是由多數(shù)進(jìn)程(示例為客戶(hù)機(jī)進(jìn)程216和218)使用的缺省屬性值。具有此屬性的進(jìn)程僅可引用它們自己的進(jìn)程本地存儲(chǔ)裝置。“服務(wù)器(Server)”是專(zhuān)用于需要引用客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的能力的進(jìn)程的屬性值。服務(wù)器進(jìn)程214例示了這樣的進(jìn)程。圖3是圖解進(jìn)程214、216和218中的每個(gè)的地址空間內(nèi)的分配的框圖。與每個(gè)進(jìn)程相關(guān)聯(lián)的地址空間示例為用于服務(wù)器進(jìn)程214的地址空間342、用于客戶(hù)機(jī)進(jìn)程216的地址空間344、以及用于客戶(hù)機(jī)進(jìn)程218的地址空間346。在這里使用術(shù)語(yǔ)“地址空間”來(lái)表示進(jìn)程本地地址范圍在存儲(chǔ)器上的映射。盡管在圖3中示出,但內(nèi)核/硬件250實(shí)際上不是地址空間的一部分,而是被示出用來(lái)圖解內(nèi)核/硬件250對(duì)進(jìn)程214、216和218提供的基礎(chǔ)(underpinning)和支持。例如,在請(qǐng)求時(shí)、并且一旦驗(yàn)證該請(qǐng)求通過(guò)了各種安全、審核和控制規(guī)則,內(nèi)核123便設(shè)置影響內(nèi)核或用戶(hù)隨后進(jìn)行的與該地址空間相關(guān)的任何事物的數(shù)據(jù)結(jié)構(gòu)。如圖3所示,每個(gè)進(jìn)程214、216和218被約束在其所擁有的其進(jìn)程本地地址范圍的量中。此約束在具有32位尋址的系統(tǒng)上可能是不可行的,這是因?yàn)?,合理地,該進(jìn)程可能已經(jīng)需要使用其全部地址空間。然而,在例如具有64位尋址的系統(tǒng)的較大的系統(tǒng)上,典型地,將進(jìn)程約束為使用比其全部進(jìn)程本地尋址范圍小的范圍不是問(wèn)題。為了簡(jiǎn)單起見(jiàn),并且非限制性地,假定僅允許進(jìn)程214、216和218擁有大約它們各自的地址范圍的一半。例如,這可通過(guò)允許目錄193僅包含用于允許每個(gè)相應(yīng)的進(jìn)程214、216和218擁有的地址范圍的變換信息,而相對(duì)簡(jiǎn)單地完成。此外,基于訪(fǎng)問(wèn)屬性126的值,假定諸如客戶(hù)機(jī)進(jìn)程216和218的客戶(hù)機(jī)進(jìn)程僅分別擁有進(jìn)程本地地址范圍的“前一半”部分302和304,并且,例如服務(wù)器進(jìn)程214的服務(wù)器進(jìn)程僅擁有進(jìn)程本地地址范圍的“后一半”部分306。由此,諸如客戶(hù)機(jī)進(jìn)程216和218的客戶(hù)機(jī)進(jìn)程分別不擁有進(jìn)程本地地址范圍的“后一半”部分312和314;并且,例如服務(wù)器進(jìn)程214的服務(wù)器進(jìn)程不擁有進(jìn)程本地地址范圍的“前一半”部分316。另外,如圖3所示,有可能包括每個(gè)相應(yīng)的進(jìn)程本地地址范圍的可選的保留部分326。如果被包括,則保留部分326未被使用,并為了可能的將來(lái)使用而被保留。在以上描述中的進(jìn)程本地地址空間被分割為前一和后一半的事實(shí)僅為了說(shuō)明的方便。在優(yōu)選實(shí)施例中,根本未使用地址空間中的一些(例如,保留部分326),并且,不在客戶(hù)機(jī)和服務(wù)器進(jìn)程之間均勻地分割可使用的部分(例如,擁有的部分302、304和306、以及未擁有的部分312、314和316)。典型地,服務(wù)器進(jìn)程是專(zhuān)用的,并且,通常不需要擁有對(duì)于其它進(jìn)程必須可用的進(jìn)程本地存儲(chǔ)裝置的全部。因此,典型地,服務(wù)器進(jìn)程所擁有的地址空間的共享(例如,擁有的部分306)將比客戶(hù)機(jī)進(jìn)程所擁有的地址空間的共享(例如,擁有的部分302和304)小得多?;谠L(fǎng)問(wèn)屬性的進(jìn)程創(chuàng)建如前所述,內(nèi)核在執(zhí)行進(jìn)程中的任何程序之前,開(kāi)始該進(jìn)程。必須通過(guò)訪(fǎng)問(wèn)屬性而將每個(gè)進(jìn)程標(biāo)記為客戶(hù)機(jī)進(jìn)程或服務(wù)器進(jìn)程,于是,內(nèi)核獲知在何處安排程序的進(jìn)程本地存儲(chǔ)裝置?,F(xiàn)在,參照?qǐng)D4,當(dāng)內(nèi)核基于期望的屬性值確定進(jìn)程是客戶(hù)機(jī)進(jìn)程還是服務(wù)器進(jìn)程(步驟410)時(shí),根據(jù)本發(fā)明的優(yōu)選實(shí)施例的用于布置進(jìn)程的地址空間的方法400開(kāi)始。在運(yùn)行程序的時(shí)刻或之前指定訪(fǎng)問(wèn)屬性。在進(jìn)程創(chuàng)建時(shí)刻指定訪(fǎng)問(wèn)屬性是優(yōu)選的。創(chuàng)建進(jìn)程機(jī)制在本領(lǐng)域中是公知的??商鎿Q地,可在布置地址空間的任意時(shí)刻指定訪(fǎng)問(wèn)屬性,例如,在UNIX系統(tǒng)的exec函數(shù)上。如果屬性值是客戶(hù)機(jī),則內(nèi)核布置進(jìn)程本地地址空間,于是,客戶(hù)機(jī)進(jìn)程僅擁有客戶(hù)機(jī)進(jìn)程的進(jìn)程本地地址范圍的第一部分(例如,圖3中的“前一半”部分302)(步驟412)。在這一點(diǎn)上,內(nèi)核布置進(jìn)程本地地址空間,于是,客戶(hù)機(jī)進(jìn)程的進(jìn)程本地地址范圍的其余部分是未被擁有、或未被使用的。例如,在圖3中示出的客戶(hù)機(jī)進(jìn)程216的情況下,內(nèi)核布置進(jìn)程本地地址空間344,使得“后一半”部分312是未被擁有的,并且,如果存在,保留部分326是未被使用的。如果屬性值是服務(wù)器,則內(nèi)核布置進(jìn)程本地地址空間,于是,服務(wù)器進(jìn)程僅擁有服務(wù)器進(jìn)程的進(jìn)程本地地址范圍的第二部分(例如,圖3中的“后一半”部分306)(步驟414)。在這一點(diǎn)上,內(nèi)核布置進(jìn)程本地地址空間,于是,服務(wù)器進(jìn)程的進(jìn)程本地地址范圍的其余部分是未被擁有、或未被使用的。例如,在圖3中示出的服務(wù)器進(jìn)程214的情況下,內(nèi)核布置進(jìn)程本地地址空間342,使得“前一半”部分316是未被擁有的,并且,如果存在,保留部分326是未被使用的。對(duì)每個(gè)進(jìn)程重復(fù)步驟410、412和414。一旦內(nèi)核布置進(jìn)程、并獲知將程序的進(jìn)程本地存儲(chǔ)裝置安排在何處,便可在該進(jìn)程內(nèi)開(kāi)始程序執(zhí)行(步驟416)。附連機(jī)制如前所述,內(nèi)核123提供允許服務(wù)器進(jìn)程以受控方式附連到客戶(hù)機(jī)進(jìn)程的新的功能。例如,暫時(shí)返回到圖2,服務(wù)器進(jìn)程214可通過(guò)調(diào)用內(nèi)核的附連機(jī)制而附連到客戶(hù)機(jī)進(jìn)程216。現(xiàn)在參照?qǐng)D5,當(dāng)服務(wù)器進(jìn)程調(diào)用附連機(jī)制(步驟510)時(shí),根據(jù)本發(fā)明的優(yōu)選實(shí)施例的允許服務(wù)器進(jìn)程以受控方式附連到客戶(hù)機(jī)進(jìn)程的方法500開(kāi)始。更具體地,服務(wù)器進(jìn)程調(diào)用附連機(jī)制,作為參數(shù)而將引用傳遞到客戶(hù)機(jī)進(jìn)程。通過(guò)帶著附連請(qǐng)求進(jìn)入到操作系統(tǒng)內(nèi)核,服務(wù)器進(jìn)程調(diào)用內(nèi)核的附連機(jī)制來(lái)執(zhí)行“附連”。內(nèi)核在請(qǐng)求時(shí)允許此功能,并且,如果批準(zhǔn)了訪(fǎng)問(wèn)(例如,內(nèi)核可執(zhí)行安全檢查來(lái)確保服務(wù)器進(jìn)程具有附連到客戶(hù)機(jī)進(jìn)程的權(quán)力),便經(jīng)由附連機(jī)制而提供對(duì)客戶(hù)機(jī)進(jìn)程的存儲(chǔ)裝置的訪(fǎng)問(wèn)。在執(zhí)行附連機(jī)制時(shí),執(zhí)行下面討論的步驟(步驟512-524)。這些步驟以其優(yōu)選次序而被闡述。然而,必須理解,各種步驟可在與所示出不同的、相對(duì)于彼此的不同時(shí)刻上出現(xiàn),或可同時(shí)出現(xiàn)。此外,本領(lǐng)域的技術(shù)人員將理解,可省略一個(gè)或多個(gè)步驟。在任意情形中,一旦附連,便可以?xún)?nèi)核或用戶(hù)模式引用其它存儲(chǔ)裝置。注意,服務(wù)器進(jìn)程也能夠使用其自己的進(jìn)程本地地址引用其自己的進(jìn)程本地存儲(chǔ)裝置。內(nèi)核驗(yàn)證執(zhí)行進(jìn)程具有服務(wù)器屬性、且引用進(jìn)程具有客戶(hù)機(jī)屬性(步驟512)。此步驟的要點(diǎn)是在于為了避免兩個(gè)進(jìn)程必須擁有進(jìn)程本地地址范圍的不同部分的沖突。內(nèi)核還驗(yàn)證當(dāng)前未將執(zhí)行進(jìn)程附連到其它進(jìn)程(步驟514)。另外,內(nèi)核執(zhí)行確保服務(wù)器進(jìn)程具有附連到客戶(hù)機(jī)進(jìn)程的權(quán)力所期望或必要的任何安全性檢查(步驟516)。期望以受控方式提供訪(fǎng)問(wèn),以防止對(duì)客戶(hù)機(jī)進(jìn)程的存儲(chǔ)裝置的未授權(quán)訪(fǎng)問(wèn)。如果服務(wù)器進(jìn)程具有附連到客戶(hù)機(jī)進(jìn)程的權(quán)力,則批準(zhǔn)訪(fǎng)問(wèn)。另一方面,如果服務(wù)器進(jìn)程缺少這樣的權(quán)力,則拒絕訪(fǎng)問(wèn)。如可能期望或需要的那樣,內(nèi)核創(chuàng)建審核服務(wù)器進(jìn)程已獲取了對(duì)客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置的訪(fǎng)問(wèn)權(quán)的事實(shí)所需的信息(步驟518)。例如,一些操作系統(tǒng)需要審核。內(nèi)核使客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境中的引用計(jì)數(shù)遞增(步驟520)。這確保了如果要終止客戶(hù)機(jī)進(jìn)程,則其段表和目錄會(huì)繼續(xù)存在,于是,仍可從服務(wù)器進(jìn)程引用它們。另外,優(yōu)選地,內(nèi)核創(chuàng)建與客戶(hù)機(jī)進(jìn)程的本地地址范圍的所擁有部分相對(duì)應(yīng)的、服務(wù)器進(jìn)程的目錄中的條目(步驟522)。不是將這些進(jìn)程本地地址與內(nèi)部地址相關(guān),此目錄條目將客戶(hù)機(jī)本地地址范圍的全部擁有部分(否則其不被服務(wù)器進(jìn)程擁有)與客戶(hù)機(jī)地址空間環(huán)境相關(guān)。此條目對(duì)于故障處理來(lái)說(shuō)不需要,但對(duì)于記帳(book-keeping)目的來(lái)說(shuō)是期望的。例如,此條目會(huì)有助于添加使目錄具體化(materialize)以查看其內(nèi)容的功能。例如,使目錄具體化使得有可能確定服務(wù)器進(jìn)程是否具有對(duì)其它進(jìn)程的存儲(chǔ)裝置的尋址能力。內(nèi)核還將服務(wù)器進(jìn)程的替換地址空間環(huán)境指針指向客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境(步驟524)。用于處理段故障的機(jī)制圖6是圖解根據(jù)本發(fā)明的優(yōu)選實(shí)施例、用于處理段故障的方法600的流程圖。在執(zhí)行用于處理段故障的機(jī)制時(shí),執(zhí)行下面討論的步驟(步驟602-650)。這些步驟以它們的優(yōu)選次序被闡述。然而,必須理解,各種步驟可在與所示不同的、相對(duì)于彼此的不同時(shí)刻上出現(xiàn),或可同時(shí)出現(xiàn)。此外,本領(lǐng)域的技術(shù)人員將理解,可省略一個(gè)或多個(gè)步驟。當(dāng)出現(xiàn)段故障(步驟602)時(shí),方法600開(kāi)始。更具體地,硬件執(zhí)行了段高速緩沖存儲(chǔ)器中的不成功的查找,并且,該硬件隨后呈現(xiàn)出段故障。只要出現(xiàn)段故障,便確定該進(jìn)程是否具有替換地址空間環(huán)境的確定(步驟604)。更具體地,檢查進(jìn)程的地址空間環(huán)境指針,以確定其是否已被設(shè)置為非空值。如果確定進(jìn)程不具有替換地址空間環(huán)境,中斷處理器便嘗試通過(guò)在該進(jìn)程的段表中查找故障地址(步驟608)來(lái)解決該故障。當(dāng)然,本領(lǐng)域的技術(shù)人員將理解,可替換地,如上所述,可以硬件方式實(shí)現(xiàn)段表的搜索。隨后,確定中斷處理器(或硬件)嘗試解析故障指令的成功(步驟610)。如果中斷處理器(或硬件)成功,便將來(lái)自進(jìn)程的段表的變換信息作為條目而提供給段高速緩沖存儲(chǔ)器,將該條目加載到處理器中,并且隨后,重新執(zhí)行故障指令(步驟612)。另一方面,如果中斷處理器(或硬件)不能使用段表解決該故障,則采用較長(zhǎng)的路徑來(lái)從該進(jìn)程的目錄解決故障(步驟614)。在這一點(diǎn)上,調(diào)用傳統(tǒng)的故障處理軟件方法,以查找進(jìn)程的目錄中的變換信息??商鎿Q地,在以硬件方式實(shí)現(xiàn)段表的搜索、且硬件不能在段表中找到必要的變換信息的情況下,生成中斷,并調(diào)用故障處理軟件。在任意情形中,隨后確定故障處理軟件方法嘗試解析故障指令的成功(步驟616)。如果故障處理軟件方法不能夠使用進(jìn)程的目錄來(lái)解決該故障,則返回錯(cuò)誤(步驟618)。另一方面,如果故障處理軟件方法成功,則使用在目錄中找到的信息來(lái)更新進(jìn)程的段表,并且隨后,重新執(zhí)行故障指令(步驟620)。本領(lǐng)域的技術(shù)人員將理解,步驟620中的故障指令的重新執(zhí)行將再次導(dǎo)致段故障。然而,段故障的這個(gè)第二次出現(xiàn)將導(dǎo)致采用到步驟612的更短路徑,其中,將變換信息作為條目下推(pushdown)到段高速緩沖存儲(chǔ)器中,并且隨后,成功地重新執(zhí)行故障指令。可替換地,在步驟620中,可與更新進(jìn)程的段表同時(shí)地、作為條目而將變換信息加載到段高速緩沖存儲(chǔ)器中。返回到步驟604,如果確定進(jìn)程具有替換地址空間環(huán)境,則內(nèi)核確定故障地址是否落入地址空間的客戶(hù)機(jī)擁有的部分中(步驟630)。如果故障地址未落入地址空間的客戶(hù)機(jī)擁有的部分中,則該方法返回到步驟608。另一方面,如果故障地址落入地址空間的客戶(hù)機(jī)擁有的部分中,則執(zhí)行步驟638-650(其一般分別對(duì)應(yīng)于步驟608-620的替換地址空間環(huán)境版本)。如果該地址在地址空間的客戶(hù)機(jī)擁有的部分中,則中斷處理器嘗試通過(guò)在進(jìn)程的替換段表中查找故障地址(步驟638)來(lái)解決該故障。注意,在第一次服務(wù)器進(jìn)程嘗試使用客戶(hù)機(jī)地址來(lái)引用存儲(chǔ)裝置時(shí),將出現(xiàn)段故障,并且,中斷處理器將嘗試使用進(jìn)程的替換段表來(lái)解決它。在引用客戶(hù)機(jī)地址的新的段時(shí),將出現(xiàn)后續(xù)故障。隨后,確定中斷處理器嘗試解析故障指令的成功(步驟640)。如果中斷處理器成功,則將來(lái)自進(jìn)程的替換段表的變換信息作為條目而提供給段高速緩沖存儲(chǔ)器,將該條目加載到處理器中,并且隨后,重新執(zhí)行故障指令(步驟642)。在以硬件方式實(shí)現(xiàn)進(jìn)程的段表的搜索的替換情況下,必須在步驟642中將進(jìn)程的替換段表中的條目復(fù)制到進(jìn)程的段表中,使得該硬件可找到該副本。另一方面,如果中斷處理器不能使用進(jìn)程的替換段表來(lái)解決該故障,則采用較長(zhǎng)的路徑來(lái)從該進(jìn)程的替換目錄解決該故障(步驟644)。在這一點(diǎn)上,調(diào)用傳統(tǒng)的故障處理軟件方法,以查找進(jìn)程的替換目錄中的變換信息??商鎿Q地,在以硬件方式實(shí)現(xiàn)段表的搜索、且硬件不能在進(jìn)程的段表中找到必要的變換信息的副本的情況下,生成中斷,并調(diào)用故障處理軟件。在任意情形中,隨后確定故障處理軟件方法嘗試解析故障指令的成功(步驟646)。如果故障處理軟件方法不能夠使用進(jìn)程的替換目錄來(lái)解決該故障,則返回錯(cuò)誤(步驟648)。另一方面,如果故障處理軟件方法成功,則使用在進(jìn)程的替換目錄中找到的信息來(lái)更新進(jìn)程的替換段表,并且隨后,重新執(zhí)行故障指令(步驟650)。并且,本領(lǐng)域的技術(shù)人員將理解,步驟650中的故障指令的重新執(zhí)行將再次導(dǎo)致段故障。然而,段故障的這個(gè)第二次出現(xiàn)將導(dǎo)致采用到步驟642的更短路徑,其中,將變換信息作為條目下推到段高速緩沖存儲(chǔ)器中,并且隨后,成功地重新執(zhí)行故障指令。可替換地,在步驟650中,可與更新進(jìn)程的替換段表同時(shí)地、作為條目而將變換信息加載到段高速緩沖存儲(chǔ)器中。分離機(jī)制如上所述,內(nèi)核123還提供允許服務(wù)器進(jìn)程與客戶(hù)機(jī)進(jìn)程分離的新功能。例如,暫時(shí)返回到圖2,服務(wù)器進(jìn)程214可通過(guò)調(diào)用內(nèi)核的分離機(jī)制而與客戶(hù)機(jī)進(jìn)程216分離?,F(xiàn)在參照?qǐng)D7,當(dāng)服務(wù)器進(jìn)程調(diào)用分離機(jī)制(步驟710)時(shí),根據(jù)本發(fā)明的優(yōu)選實(shí)施例的用于允許服務(wù)器進(jìn)程與客戶(hù)機(jī)進(jìn)程分離的方法700開(kāi)始。當(dāng)不再需要對(duì)客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置的訪(fǎng)問(wèn)時(shí),服務(wù)器進(jìn)程調(diào)用此功能。當(dāng)完成訪(fǎng)問(wèn)客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置的服務(wù)器進(jìn)程時(shí),通過(guò)帶著分離請(qǐng)求進(jìn)入到操作系統(tǒng)內(nèi)核,服務(wù)器進(jìn)程調(diào)用內(nèi)核的分離機(jī)制來(lái)執(zhí)行“分離”。在執(zhí)行分離機(jī)制時(shí),執(zhí)行下面討論的步驟(步驟712-722)。這些步驟以其優(yōu)選次序被闡述。然而,必須理解,各種步驟可在與所示出不同的、相對(duì)于彼此的不同時(shí)刻上出現(xiàn),或可同時(shí)出現(xiàn)。此外,本領(lǐng)域的技術(shù)人員將理解,可省略一個(gè)或多個(gè)步驟。在任意情形中,一旦分離,便不再能夠以?xún)?nèi)核或用戶(hù)模式引用該其它存儲(chǔ)裝置。在這一點(diǎn)上,服務(wù)器進(jìn)程僅可訪(fǎng)問(wèn)其自己的本地存儲(chǔ)裝置。內(nèi)核驗(yàn)證服務(wù)器進(jìn)程附連到客戶(hù)機(jī)進(jìn)程(步驟712)。內(nèi)核還將服務(wù)器進(jìn)程的替換地址空間環(huán)境指針設(shè)置為空(步驟714)。另外,內(nèi)核從服務(wù)器進(jìn)程的目錄中移除在步驟522(如圖5所示)中創(chuàng)建的、將客戶(hù)機(jī)進(jìn)程本地地址與客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境相關(guān)的條目(步驟716)。內(nèi)核從所有處理器的段高速緩沖存儲(chǔ)器中清除當(dāng)前運(yùn)行該進(jìn)程的線(xiàn)程的條目(步驟718)。并且,在以硬件方式實(shí)現(xiàn)服務(wù)器進(jìn)程的段表的搜索的替換情況下,內(nèi)核還使服務(wù)器進(jìn)程的段表中的相關(guān)條目無(wú)效。這是因?yàn)?,在該替換情況下,如上所述,客戶(hù)機(jī)進(jìn)程的段表中的條目可能已被復(fù)制到服務(wù)器進(jìn)程的段表中。對(duì)于通常的清除,本領(lǐng)域的技術(shù)人員將理解,當(dāng)一個(gè)進(jìn)程正在觀察(即,附連)另一個(gè)進(jìn)程時(shí),如果被觀察的進(jìn)程對(duì)被觀察的進(jìn)程的地址空間做出改變,則對(duì)于觀察該進(jìn)程的所有進(jìn)程,內(nèi)核有責(zé)任進(jìn)行特定級(jí)別的通知、段高速緩沖存儲(chǔ)器的清除等。另外,正在進(jìn)行觀察的進(jìn)程將使用被觀察的進(jìn)程已被移除或被替換為不同進(jìn)程的陳舊(stale)地址變換信息。換句話(huà)說(shuō),正確的數(shù)據(jù)將不會(huì)在正在進(jìn)行觀察的進(jìn)程的視圖中被查看到,即,正在進(jìn)行觀察的進(jìn)程將查看到與被觀察的進(jìn)程不同的數(shù)據(jù)。通常,當(dāng)進(jìn)程從地址空間移除段或存儲(chǔ)器時(shí),在本領(lǐng)域中公知的是,向可能正在運(yùn)行該進(jìn)程的其它線(xiàn)程的處理器廣播。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,不僅向可能正在運(yùn)行該進(jìn)程的其它線(xiàn)程的處理器、還向可能正在運(yùn)行觀察進(jìn)程的處理器作出清空變換信息的廣播?,F(xiàn)在,回來(lái)參照?qǐng)D7,內(nèi)核還將客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境中的引用計(jì)數(shù)遞減(步驟720)。如果客戶(hù)機(jī)進(jìn)程已經(jīng)被終止,則現(xiàn)在這將允許消滅其進(jìn)程本地尋址結(jié)構(gòu)的全部。如可能期望或需要的那樣,內(nèi)核創(chuàng)建審核服務(wù)器進(jìn)程不再具有對(duì)客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置的訪(fǎng)問(wèn)權(quán)的事實(shí)所需的信息(步驟722)。本領(lǐng)域的技術(shù)人員將理解,在本發(fā)明的范圍內(nèi),很多變化是有可能的。例如,在優(yōu)選實(shí)施例中,僅存在兩類(lèi)進(jìn)程、以及它們附連的一種方式。然而,本領(lǐng)域的技術(shù)人員將理解,存在此機(jī)制的其它擴(kuò)展。這些擴(kuò)展包括客戶(hù)機(jī)進(jìn)程也向回附連到相同的服務(wù)器進(jìn)程、或附連到不同的服務(wù)器進(jìn)程的能力。另一個(gè)擴(kuò)展涉及多種類(lèi)型的進(jìn)程,其中,每個(gè)種類(lèi)擁有進(jìn)程本地地址范圍的唯一部分,并且,任意種類(lèi)的進(jìn)程將能夠附連到任意其它種類(lèi)的進(jìn)程。在另一個(gè)擴(kuò)展中,如果每個(gè)進(jìn)程具有到多個(gè)替換地址空間環(huán)境的多個(gè)指針,則可將一個(gè)進(jìn)程同時(shí)附連到多個(gè)其它種類(lèi)的進(jìn)程。并且,為避免沖突,每個(gè)種類(lèi)的進(jìn)程擁有進(jìn)程本地地址范圍的唯一部分。由此,盡管已通過(guò)參照本發(fā)明的優(yōu)選實(shí)施例而具體地示出并描述了本發(fā)明,但本領(lǐng)域的技術(shù)人員將理解,可在其中做出這些和其它形式和細(xì)節(jié)上的改變,而不會(huì)背離本發(fā)明的精神和范圍。權(quán)利要求1.一種設(shè)備,包括至少一個(gè)處理器;耦接到所述至少一個(gè)處理器的存儲(chǔ)器;駐留在存儲(chǔ)器中的客戶(hù)機(jī)進(jìn)程,該客戶(hù)機(jī)進(jìn)程僅可引用其自己的進(jìn)程本地存儲(chǔ)裝置;駐留在存儲(chǔ)器中的服務(wù)器進(jìn)程,該服務(wù)器進(jìn)程可引用其自己的進(jìn)程本地存儲(chǔ)裝置,并要求訪(fǎng)問(wèn)客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的能力;駐留在存儲(chǔ)器中、并由所述至少一個(gè)處理器執(zhí)行的操作系統(tǒng)內(nèi)核,該操作系統(tǒng)內(nèi)核具有附連機(jī)制,在附連機(jī)制被調(diào)用時(shí),允許服務(wù)器進(jìn)程附連到客戶(hù)機(jī)進(jìn)程,使得服務(wù)器進(jìn)程可使用客戶(hù)機(jī)進(jìn)程的進(jìn)程本地地址來(lái)引用客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置,并保留對(duì)其自己的進(jìn)程本地存儲(chǔ)裝置的訪(fǎng)問(wèn)權(quán)。2.如權(quán)利要求1所述的設(shè)備,其中,客戶(hù)機(jī)進(jìn)程具有與其關(guān)聯(lián)的、具有指示將客戶(hù)機(jī)進(jìn)程約束為引用其自己的進(jìn)程本地存儲(chǔ)裝置的屬性值的訪(fǎng)問(wèn)屬性,并且,服務(wù)器進(jìn)程具有與其關(guān)聯(lián)的、具有指示服務(wù)器進(jìn)程需要引用客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的能力的屬性值的訪(fǎng)問(wèn)屬性。3.如權(quán)利要求2所述的設(shè)備,其中,基于訪(fǎng)問(wèn)屬性的屬性值,操作系統(tǒng)內(nèi)核為客戶(hù)機(jī)進(jìn)程布置與服務(wù)器進(jìn)程的進(jìn)程本地地址空間不同的進(jìn)程本地地址空間。4.如權(quán)利要求3所述的設(shè)備,其中,通過(guò)具有至少第一部分和第二部分的第一進(jìn)程本地地址范圍,定義客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置,其中,客戶(hù)機(jī)進(jìn)程擁有第一進(jìn)程本地地址范圍的第一部分,且客戶(hù)機(jī)進(jìn)程不擁有第一進(jìn)程本地地址范圍的第二部分,并且其中,通過(guò)具有至少第一部分和第二部分的第二進(jìn)程本地地址范圍,定義服務(wù)器進(jìn)程的進(jìn)程本地存儲(chǔ)裝置,其中,該至少第一部分和第二部分分別對(duì)應(yīng)于第一進(jìn)程本地地址范圍的第一部分和第二部分,并且其中服務(wù)器進(jìn)程不擁有第二進(jìn)程本地地址范圍的第一部分,且服務(wù)器進(jìn)程擁有第二進(jìn)程本地地址范圍的第二部分。5.如權(quán)利要求1所述的設(shè)備,還包括駐留在存儲(chǔ)器中、并由處理器執(zhí)行的中斷處理器和故障處理方法中的至少一個(gè),其中,如果服務(wù)器進(jìn)程正在引用其自己的進(jìn)程本地存儲(chǔ)裝置,則中斷處理器/故障處理方法嘗試使用地址空間環(huán)境的段表和目錄中的至少一個(gè)來(lái)解決段故障,并且,如果服務(wù)器進(jìn)程正在引用客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置,則中斷處理器/故障處理方法嘗試使用替換地址空間環(huán)境的段表和目錄中的至少一個(gè)來(lái)解決段故障。6.如權(quán)利要求5所述的設(shè)備,其中,地址空間環(huán)境包括指向替換地址空間環(huán)境的指針,并且其中,一旦調(diào)用了附連機(jī)制,則操作系統(tǒng)內(nèi)核便設(shè)置該指針。7.如權(quán)利要求6所述的設(shè)備,其中,操作系統(tǒng)內(nèi)核還包括分離機(jī)制,在分離機(jī)制被調(diào)用時(shí),允許服務(wù)器進(jìn)程與客戶(hù)機(jī)進(jìn)程分離,使得服務(wù)器進(jìn)程不再能夠引用客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置,并且其中,一旦調(diào)用了分離機(jī)制,則操作系統(tǒng)便將該指針設(shè)置為空。8.如權(quán)利要求4所述的設(shè)備,其中,操作系統(tǒng)內(nèi)核還包括分離機(jī)制,在分離機(jī)制被調(diào)用時(shí),允許服務(wù)器進(jìn)程與客戶(hù)機(jī)進(jìn)程分離,使得服務(wù)器進(jìn)程不再能夠引用客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置。9.如權(quán)利要求1所述的設(shè)備,其中,操作系統(tǒng)內(nèi)核還包括分離機(jī)制,在分離機(jī)制被調(diào)用時(shí),允許服務(wù)器進(jìn)程與客戶(hù)機(jī)進(jìn)程分離,使得服務(wù)器進(jìn)程不再能夠引用客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置。10.一種設(shè)備,包括至少一個(gè)處理器;耦接到所述至少一個(gè)處理器的存儲(chǔ)器;駐留在存儲(chǔ)器中的第一進(jìn)程;駐留在存儲(chǔ)器中的第二進(jìn)程;可通過(guò)由至少一個(gè)處理器執(zhí)行的至少一個(gè)指令而尋址的地址空間,該地址空間包括通過(guò)具有至少第一部分和第二部分的第一進(jìn)程本地地址范圍定義的第一進(jìn)程的第一進(jìn)程本地存儲(chǔ)裝置,其中,第一進(jìn)程擁有第一進(jìn)程本地地址范圍的第一部分,且第一進(jìn)程不擁有第一進(jìn)程本地地址范圍的第二部分;通過(guò)具有至少第一部分和第二部分的第二進(jìn)程本地地址范圍定義的第二進(jìn)程的第二進(jìn)程本地存儲(chǔ)裝置,其中,該至少第一部分和第二部分分別對(duì)應(yīng)于第一進(jìn)程本地地址范圍的第一部分和第二部分,并且第二進(jìn)程不擁有第二進(jìn)程本地地址范圍的第一部分,且第二進(jìn)程擁有第二進(jìn)程本地地址范圍的第二部分。11.如權(quán)利要求10所述的設(shè)備,其中,第一進(jìn)程具有帶有屬性值“客戶(hù)機(jī)”的訪(fǎng)問(wèn)屬性,其中屬性值“客戶(hù)機(jī)”指示第一進(jìn)程是被約束為引用第一進(jìn)程本地存儲(chǔ)裝置的第一部分的客戶(hù)機(jī)進(jìn)程,并且其中,第二進(jìn)程具有帶有屬性值“服務(wù)器”的訪(fǎng)問(wèn)屬性,其中屬性值“服務(wù)器”指示第二進(jìn)程是需要引用第一進(jìn)程本地存儲(chǔ)裝置的第一部分的能力、并且保留對(duì)其進(jìn)程本地存儲(chǔ)裝置的擁有部分的訪(fǎng)問(wèn)權(quán)的服務(wù)器進(jìn)程。12.如權(quán)利要求10所述的設(shè)備,其中,第一進(jìn)程本地地址范圍的第一部分以及第二進(jìn)程本地地址范圍的第一部分各自定義比第一進(jìn)程本地地址范圍的第二部分以及第二進(jìn)程本地存儲(chǔ)裝置地址范圍的第二部分大的地址空間。13.如權(quán)利要求10所述的設(shè)備,其中,第一進(jìn)程本地地址范圍以及第二進(jìn)程本地地址范圍各自具有與第一部分和第二部分互斥的第三部分,并且其中,第一進(jìn)程和第二進(jìn)程分別不擁有或不可使用第一進(jìn)程本地地址范圍的第三部分和第二進(jìn)程本地地址范圍的第三部分。14.如權(quán)利要求10所述的設(shè)備,還包括駐留在存儲(chǔ)器中、并由所述至少一個(gè)處理器執(zhí)行的操作系統(tǒng)內(nèi)核,該操作系統(tǒng)內(nèi)核具有附連機(jī)制,在附連機(jī)制被調(diào)用時(shí),允許第二進(jìn)程附連到第一進(jìn)程,使得第二進(jìn)程可使用第一進(jìn)程的進(jìn)程本地地址來(lái)引用第一進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的第一部分,并保留對(duì)其進(jìn)程本地存儲(chǔ)裝置的擁有部分的訪(fǎng)問(wèn)權(quán)。15.一種用于基于訪(fǎng)問(wèn)屬性的屬性值而布置進(jìn)程本地地址空間的計(jì)算機(jī)實(shí)現(xiàn)的方法,該布置有助于一個(gè)進(jìn)程訪(fǎng)問(wèn)另一個(gè)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置,該方法包括以下步驟(A)基于訪(fǎng)問(wèn)屬性的屬性值,確定進(jìn)程是服務(wù)器進(jìn)程還是客戶(hù)機(jī)進(jìn)程,其中,客戶(hù)機(jī)進(jìn)程僅可引用其自己的進(jìn)程本地存儲(chǔ)裝置,服務(wù)器進(jìn)程可引用其自己的進(jìn)程本地存儲(chǔ)裝置,并需要訪(fǎng)問(wèn)客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的能力;(B)如果進(jìn)程的屬性值指示該進(jìn)程是客戶(hù)機(jī)進(jìn)程,則布置進(jìn)程本地地址空間,使得通過(guò)具有至少第一部分和第二部分的進(jìn)程本地地址范圍來(lái)定義客戶(hù)機(jī)進(jìn)程,其中,客戶(hù)機(jī)進(jìn)程僅擁有其進(jìn)程本地地址范圍的第一部分;(C)如果進(jìn)程的屬性值指示該進(jìn)程是服務(wù)器進(jìn)程,則布置進(jìn)程本地地址空間,使得通過(guò)具有至少第一部分和第二部分的進(jìn)程本地地址范圍來(lái)定義服務(wù)器進(jìn)程,其中,所述第一部分和第二部分分別對(duì)應(yīng)于客戶(hù)機(jī)進(jìn)程的進(jìn)程本地地址范圍的第一部分和第二部分,并且其中,服務(wù)器進(jìn)程僅擁有其進(jìn)程本地地址范圍的進(jìn)程本地地址范圍的第二部分。16.如權(quán)利要求15所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,還包括以下步驟(D)在執(zhí)行進(jìn)程中的任何程序之前,對(duì)每個(gè)進(jìn)程重復(fù)步驟(A)-(C)。17.一種用于允許一個(gè)進(jìn)程訪(fǎng)問(wèn)另一個(gè)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括以下步驟(A)創(chuàng)建客戶(hù)機(jī)進(jìn)程,其中客戶(hù)機(jī)進(jìn)程僅可引用其自己的進(jìn)程本地存儲(chǔ)裝置;(B)創(chuàng)建服務(wù)器進(jìn)程,其中服務(wù)器進(jìn)程可引用其自己的進(jìn)程本地存儲(chǔ)裝置,并需要訪(fǎng)問(wèn)客戶(hù)機(jī)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置的能力;(C)創(chuàng)建基于進(jìn)程的地址空間環(huán)境,其包括段表、目錄和指向替換地址空間環(huán)境的指針;(D)將服務(wù)器進(jìn)程的地址空間環(huán)境中的指針設(shè)置為指向客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境;(E)如果出現(xiàn)段故障,則確定服務(wù)器進(jìn)程正在引用的故障地址是否落入客戶(hù)機(jī)進(jìn)程的地址空間中的客戶(hù)機(jī)擁有的部分中;(F)如果在步驟(E)中確定故障地址未落入客戶(hù)機(jī)進(jìn)程的地址空間中的客戶(hù)機(jī)擁有的部分中,則嘗試使用服務(wù)器進(jìn)程的地址空間環(huán)境的段表和目錄中的至少一個(gè)來(lái)解決段故障;(G)如果在步驟(E)中確定故障地址落入客戶(hù)機(jī)進(jìn)程的地址空間中的客戶(hù)機(jī)擁有的部分中,則嘗試基于在步驟(D)中設(shè)置的指針,使用客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境的段表和目錄中的至少一個(gè)來(lái)解決段故障。18.如權(quán)利要求17所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中,步驟(F)包括以下步驟(F1)嘗試使用服務(wù)器進(jìn)程的地址空間環(huán)境的段表來(lái)解決段故障;(F2)如果步驟(F1)失敗,則嘗試使用服務(wù)器進(jìn)程的地址空間環(huán)境的目錄來(lái)解決段故障。19.如權(quán)利要求18所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中,步驟(G)包括以下步驟(G1)嘗試使用客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境的段表來(lái)解決段故障;(G2)如果步驟(G1)失敗,則嘗試使用客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境的目錄來(lái)解決段故障。20.如權(quán)利要求17所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中,步驟(G)包括以下步驟(G1)嘗試使用客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境的段表來(lái)解決段故障;(G2)如果步驟(G1)失敗,則嘗試使用客戶(hù)機(jī)進(jìn)程的地址空間環(huán)境的目錄來(lái)解決段故障。21.一種計(jì)算機(jī)程序產(chǎn)品,用于允許一個(gè)進(jìn)程訪(fǎng)問(wèn)另一個(gè)進(jìn)程的進(jìn)程本地存儲(chǔ)裝置,該計(jì)算機(jī)程序產(chǎn)品包括在計(jì)算機(jī)可讀信號(hào)承載介質(zhì)上提供的多個(gè)計(jì)算機(jī)可執(zhí)行的指令,所述程序包括權(quán)利要求1至20中的任一方法的步驟。全文摘要操作系統(tǒng)內(nèi)核包括附連機(jī)制和分離機(jī)制。另外,通過(guò)將進(jìn)程標(biāo)識(shí)為客戶(hù)機(jī)進(jìn)程或服務(wù)器進(jìn)程的訪(fǎng)問(wèn)屬性來(lái)標(biāo)記進(jìn)程。基于訪(fǎng)問(wèn)屬性,操作系統(tǒng)內(nèi)核取決于進(jìn)程是客戶(hù)機(jī)進(jìn)程還是服務(wù)器進(jìn)程而不同地布置進(jìn)程本地地址空間。服務(wù)器進(jìn)程可“附連”到客戶(hù)機(jī)進(jìn)程,并且引用客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置的全部,如同客戶(hù)機(jī)進(jìn)程的本地存儲(chǔ)裝置是其自己的那樣。服務(wù)器進(jìn)程繼續(xù)引用其自己的進(jìn)程本地存儲(chǔ)裝置,但是另外,其可使用客戶(hù)機(jī)進(jìn)程的本地地址引用其它存儲(chǔ)裝置。當(dāng)不再需要對(duì)其它存儲(chǔ)裝置的訪(fǎng)問(wèn)時(shí),服務(wù)器進(jìn)程可與客戶(hù)機(jī)進(jìn)程“分離”。一旦分離,便不再能夠引用該其它存儲(chǔ)裝置。文檔編號(hào)G06F9/46GK101055543SQ20071000375公開(kāi)日2007年10月17日申請(qǐng)日期2007年1月24日優(yōu)先權(quán)日2006年2月23日發(fā)明者理查德·K·柯克曼,保羅·L·戈特蘭德,邁克爾·J·科里根,小喬治·D·蒂姆斯,韋德·B·奧倫申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司