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

用于跨越保護(hù)域邊界的對象調(diào)用的方法、系統(tǒng)和設(shè)備的制作方法

文檔序號:6456384閱讀:338來源:國知局
專利名稱:用于跨越保護(hù)域邊界的對象調(diào)用的方法、系統(tǒng)和設(shè)備的制作方法
技術(shù)領(lǐng)域
所描述的方面涉及數(shù)據(jù)處理方法,且更明確地說,涉及用于在經(jīng)劃分為不同保護(hù)域 的計(jì)算機(jī)系統(tǒng)中跨越保護(hù)域邊界有效地調(diào)用對象并復(fù)制數(shù)據(jù)的方法和系統(tǒng)。
背景技術(shù)
實(shí)施受保護(hù)模式操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)將物理存儲器分段為可由某些進(jìn)程或保護(hù) 域存取的單獨(dú)虛擬地址空間或區(qū)。 一些存儲器可分配到計(jì)算機(jī)系統(tǒng)的內(nèi)核并僅可由所述
內(nèi)核存取,稱為內(nèi)核空間或內(nèi)核域,而使得其它存儲器可由應(yīng)用存取,稱為用戶空間或 用戶域。當(dāng)多個進(jìn)程正在同時(shí)運(yùn)行時(shí),向每一進(jìn)程分配其自身的虛擬存儲器空間或存儲 器域,且除非明確地說明,否則每一進(jìn)程不能存取其它進(jìn)程的存儲器域。這種對存儲器 域的保護(hù)通過減少進(jìn)程彼此干擾或干擾系統(tǒng)的操作的機(jī)會而改進(jìn)了系統(tǒng)穩(wěn)定性。
在許多操作中, 一個保護(hù)域中的用戶進(jìn)程可能需要調(diào)用或存取位于(即,存儲于或 運(yùn)行于)另一保護(hù)域中的對象或函數(shù)。在此類情形中,系統(tǒng)需要實(shí)現(xiàn)跨越相應(yīng)保護(hù)域的 通信。用于提供此類進(jìn)程間通信的多種方法包含"管道"、內(nèi)核服務(wù)、消息傳遞、虛擬 存儲器重新映射和共享存儲器。然而,此類傳統(tǒng)方法展現(xiàn)出不合需要的低效率。
舉例來說,保護(hù)域系統(tǒng)可實(shí)施管道以通過首先將數(shù)據(jù)從一個用戶保護(hù)存儲器域復(fù)制 到內(nèi)核域中且接著將相同數(shù)據(jù)從內(nèi)核域復(fù)制到另一用戶保護(hù)域的存儲器空間中來提供 進(jìn)程間通信。在其中需要傳送輸入和輸出數(shù)據(jù)的遠(yuǎn)程對象調(diào)用的情況下,當(dāng)輸出數(shù)據(jù)跨 越保護(hù)域返回到啟始所述遠(yuǎn)程對象調(diào)用的進(jìn)程時(shí),重復(fù)此過程。因此,使用管道的進(jìn)程間通信效率低下,因?yàn)槊恳环较蛏仙婕皟蓚€單獨(dú)的復(fù)制操作。
共享存儲器也可用于進(jìn)程間通信;然而,實(shí)施共享存儲器需要兩個保護(hù)域?qū)Ψ且话?數(shù)據(jù)共享方案達(dá)成一致。值得注意的是,對非一般數(shù)據(jù)共享方案達(dá)成一致不容易實(shí)現(xiàn), 因?yàn)檎{(diào)用進(jìn)程需要預(yù)測接收進(jìn)程將接收數(shù)據(jù)的方式。

發(fā)明內(nèi)容
各個方面提供用于在受保護(hù)存儲器結(jié)構(gòu)系統(tǒng)中有效地調(diào)用遠(yuǎn)程進(jìn)程調(diào)用并促進(jìn)進(jìn) 程間通信的方法和系統(tǒng)。在一個方面中,提供通過系統(tǒng)調(diào)用支持對象的遠(yuǎn)程調(diào)用的內(nèi)核。 此系統(tǒng)調(diào)用可包含對象識別符以及到輸入和輸出緩沖器的一組存儲器指針。使用所述系 統(tǒng)調(diào)用,內(nèi)核可將所指定的對象定位在一服務(wù)器進(jìn)程域中并喚醒所述服務(wù)器域內(nèi)的服務(wù) 器線程以調(diào)用所述對象。使用所提供的存儲器指針,所述內(nèi)核可將輸入數(shù)據(jù)復(fù)制到服務(wù) 器進(jìn)程中,并將輸出數(shù)據(jù)從服務(wù)器進(jìn)程復(fù)制到客戶端進(jìn)程。
在另一方面中,可實(shí)施一個或一個以上額外系統(tǒng)調(diào)用以允許服務(wù)器線程請求輸入數(shù) 據(jù)并響應(yīng)于所完成的請求。在一個實(shí)施方案中,系統(tǒng)調(diào)用允許所調(diào)用的服務(wù)器進(jìn)程將輸 入數(shù)據(jù)復(fù)制到特定地址中,或用所指定的數(shù)據(jù)填充輸出緩沖器。在一個方面中,內(nèi)核可 復(fù)制自變量,在遠(yuǎn)程對象調(diào)用的情境中驗(yàn)證請求,并使用由客戶端進(jìn)程提供的輸入和輸 出描述。在一個實(shí)施方案中,可允許從客戶端輸入緩沖器(而不是從任何其它客戶端存 儲器)讀取所調(diào)用的對象并將其寫入到客戶端輸出緩沖器(而不是寫入到任何其它客戶 端存儲器)。
在又一方面中,所調(diào)用的對象可駐存在內(nèi)核域或服務(wù)器進(jìn)程域中。在另一方面中, 到內(nèi)核的系統(tǒng)調(diào)用中的自變量可包含賦予所述對象調(diào)用其它對象的能力(例如,性能等) 的對象參考。在另一方面中,內(nèi)核可在調(diào)用啟始期間復(fù)制有限量的輸入數(shù)據(jù)并在程序調(diào) 用終止期間復(fù)制有限量的輸出數(shù)據(jù)。在又一方面中,自變量可放置在與每一調(diào)用線程相 關(guān)聯(lián)的共享存儲器緩沖器中,從而允許可通過所調(diào)用對象的保護(hù)域而讀取和寫入數(shù)據(jù)。


下文將結(jié)合附圖描述所揭示的方面,提供附圖以說明而非限制所揭示的方面,其中 相同名稱表示元件。
圖1是根據(jù)一個方面的經(jīng)劃分為不同保護(hù)域的計(jì)算機(jī)系統(tǒng)的程序狀態(tài)的示意性表示。
圖2是根據(jù)一個實(shí)施方案的在圖1中說明的方面中的進(jìn)程間通信的調(diào)用流程圖。圖3是根據(jù)一個方面的用于實(shí)施圖1中說明的方面的實(shí)例性方法的過程流程圖。 圖4是根據(jù)另一方面的經(jīng)劃分為不同保護(hù)域的計(jì)算機(jī)系統(tǒng)的程序狀態(tài)的示意性表示。
圖5A和5B是根據(jù)一個方面的用于實(shí)施圖4中說明的方面的實(shí)例性方法的過程流程圖。
圖6A和6B是根據(jù)另一方面的計(jì)算機(jī)系統(tǒng)的程序狀態(tài)的示意性表示,其中所調(diào)用的 遠(yuǎn)程對象駐存在內(nèi)核中。
圖7是根據(jù)一個方面的在圖6A和6B中說明的方面中的進(jìn)程間通信的調(diào)用流程圖。 圖8是根據(jù)另一方面的用于實(shí)施圖6A和6B中說明的方面的實(shí)例性方法的過程流程圖。
圖9是根據(jù)一方面,在被賦予對駐存在數(shù)據(jù)區(qū)塊系統(tǒng)內(nèi)的對象直接存取權(quán)限的遠(yuǎn)程 對象進(jìn)行遠(yuǎn)程調(diào)用期間,系統(tǒng)的程序狀態(tài)的示意性表示。 圖IO是在替代方面中的進(jìn)程間通信的調(diào)用流程圖。
圖11是根據(jù)一個方面的用于實(shí)施圖10中說明的方面的實(shí)例性方法的過程流程圖。 圖12是根據(jù)另一方面的在對象的客戶端進(jìn)程的遠(yuǎn)程調(diào)用期間的系統(tǒng)的程序狀態(tài)的 示意性表示,其中客戶端進(jìn)程和服務(wù)器進(jìn)程共享存儲器區(qū)。
圖13是根據(jù)一個方面的用于實(shí)施圖12中說明的方面的實(shí)例性方法的過程流程圖。 圖"是根據(jù)一個方面的用于實(shí)施圖12中說明的方面的替代方法的過程流程圖。 圖15是適于實(shí)施各個方面系統(tǒng)的系統(tǒng)框圖。 圖16是各個方面的移動手持機(jī)實(shí)施方案的組件框圖。
具體實(shí)施例方式
下文將參看附圖更詳細(xì)地描述當(dāng)前系統(tǒng)、裝置、設(shè)備、方法、計(jì)算機(jī)程序產(chǎn)品和機(jī) 器可讀媒體,附圖中展示所描述的方面。然而,可以許多不同形式實(shí)施所述系統(tǒng)、裝置、 設(shè)備、方法和機(jī)器可讀媒體,且不應(yīng)將其解釋為限于本文陳述的方面;事實(shí)上,提供當(dāng) 前方面以使得主題揭示案將是詳盡且完整的,且將把本發(fā)明的范圍傳達(dá)給所屬領(lǐng)域的技 術(shù)人員。相同標(biāo)號始終指代相同元件。
除了以上內(nèi)容外,本文使用詞語"示范性"來意指充當(dāng)實(shí)例、例子或說明。本文描 述為"示范性"的任何方面或設(shè)計(jì)不一定應(yīng)解釋為相對于其它方面或設(shè)計(jì)是優(yōu)選或有利 的。事實(shí)上,詞語"示范性"的使用希望以具體形式呈現(xiàn)概念。
如本文使用的術(shù)語"內(nèi)核"是指存儲器保護(hù)處理器結(jié)構(gòu)內(nèi)的可信進(jìn)程,如所屬領(lǐng)域的技術(shù)人員將了解。在計(jì)算機(jī)科學(xué)中,內(nèi)核通常是計(jì)算機(jī)操作系統(tǒng)的負(fù)責(zé)管理系統(tǒng)資源 (包含軟件進(jìn)程與硬件元件之間的通信)的中心組件。因此,內(nèi)核可以是操作系統(tǒng)或微 內(nèi)核結(jié)構(gòu)內(nèi)的一個或一個以上內(nèi)核,如計(jì)算機(jī)科學(xué)領(lǐng)域的一般技術(shù)人員將了解。
為了易于描述,使用本文中對"客戶端進(jìn)程"、"用戶進(jìn)程"和"服務(wù)器進(jìn)程"的參 考來指示保護(hù)域系統(tǒng)內(nèi)的單獨(dú)的進(jìn)程和存儲器域。明確地說,對"客戶端進(jìn)程"和"用 戶進(jìn)程"的參考希望識別函數(shù)調(diào)用或遠(yuǎn)程對象、操作或方法的調(diào)用的來源,而術(shù)語"服 務(wù)器進(jìn)程"希望識別代管不可由客戶端進(jìn)程直接存取的所調(diào)用對象、操作或方法的單獨(dú) 的進(jìn)程或存儲器域。此類單獨(dú)的進(jìn)程和域可包含在同一計(jì)算機(jī)(即,進(jìn)程和存儲器)內(nèi)。 因此,對"客戶端"和"服務(wù)器"的參考不應(yīng)理解為將權(quán)利要求書限于特定客戶端-服務(wù) 器結(jié)構(gòu)或理解為指代單獨(dú)的處理器或聯(lián)網(wǎng)處理器。
本文參考"執(zhí)行系統(tǒng)調(diào)用"、彼此"發(fā)送"和"傳送"消息的進(jìn)程和內(nèi)核。此類參 考希望涵蓋計(jì)算機(jī)領(lǐng)域中已知用于協(xié)調(diào)系統(tǒng)內(nèi)的單獨(dú)進(jìn)程之間的操作的所有方法。如所 屬領(lǐng)域的一般技術(shù)人員將了解,此類方法包含設(shè)定存儲器中的旗標(biāo),將特定值存儲在存 儲器(例如,處理器堆疊)中,指示狀態(tài)機(jī)中的狀態(tài)變化,向進(jìn)程發(fā)送或設(shè)定中斷,跨 越保護(hù)域傳輸符號等。為了易于描述,系統(tǒng)調(diào)用的執(zhí)行可稱為"發(fā)送"或"傳送"消息 以反映正在保護(hù)域之間傳遞請求和信息,盡管"發(fā)送"和"接收"進(jìn)程正在同一物理處 理器和存儲器空間內(nèi)執(zhí)行。因此,對"傳送"或"發(fā)送"消息的參考不應(yīng)理解為將描述 內(nèi)容或權(quán)利要求書的范圍限于特定類型的通信或消息協(xié)議,也不應(yīng)理解為涉及與系統(tǒng)調(diào) 用的"執(zhí)行"不同的類型的進(jìn)程間通信。
如本文所使用,術(shù)語"緩沖器"是指其中可存儲特定數(shù)據(jù)的存儲器位置,例如較大 隨機(jī)存取存儲器內(nèi)的存儲器地址。如本文所使用,術(shù)語"保護(hù)域"和"域"是指分配給 特定進(jìn)程的存儲器地址空間,其可為較大隨機(jī)存取存儲器內(nèi)的存儲器地址。盡管各種存 儲器位置可位于系統(tǒng)內(nèi)的單獨(dú)隨機(jī)存取存儲器芯片和磁盤驅(qū)動器內(nèi),但對緩沖器、保護(hù) 域和域的參考不希望暗示需要單獨(dú)存儲器裝置。
在一個方面中,在具有存儲器保護(hù)結(jié)構(gòu)的系統(tǒng)中提供內(nèi)核,所述存儲器保護(hù)結(jié)構(gòu)通 過提供用于同步調(diào)用在調(diào)用進(jìn)程外部的對象的系統(tǒng)調(diào)用來支持對象的遠(yuǎn)程調(diào)用。作為自 變量,系統(tǒng)調(diào)用接受或包含用于正被調(diào)用的對象的識別符、到含有將可用于所調(diào)用對象 的數(shù)據(jù)的輸入緩沖器的一組指針以及到所調(diào)用對象可將數(shù)據(jù)存儲到其中的輸出緩沖器 的一組指針。示范性系統(tǒng)調(diào)用可表現(xiàn)為SysCall (調(diào)用、nObjID、輸入緩沖器、輸出緩 沖器)。使用系統(tǒng)調(diào)用,內(nèi)核可將所指定的對象定位在單獨(dú)的服務(wù)器域中并喚醒所述服 務(wù)器域內(nèi)的服務(wù)器線程以調(diào)用所述對象??偟膩碚f, 一個或一個以上所描述的方面提供在存儲器保護(hù)系統(tǒng)結(jié)構(gòu)中實(shí)現(xiàn)有效且 同步的進(jìn)程間通信和遠(yuǎn)程對象調(diào)用提取的內(nèi)核操作。根據(jù)一個或一個以上方面,所述方 法可在內(nèi)核內(nèi)或在其它不嚴(yán)格實(shí)行存儲器保護(hù)而是對其進(jìn)行模擬的系統(tǒng)中實(shí)施。各個方 面可在以受保護(hù)存儲器結(jié)構(gòu)為特征的任何基于計(jì)算機(jī)的系統(tǒng)上實(shí)施,但尤其適用于具有 有限處理器容量的系統(tǒng),例如消費(fèi)型電子器件。值得注意的方面是具有實(shí)施操作系統(tǒng)的 處理器和存儲器的移動手持機(jī)(例如,蜂窩式電話),所述操作系統(tǒng)在受保護(hù)存儲器結(jié) 構(gòu)中實(shí)施所述方面方法中的一者或一者以上。
圖1提供根據(jù)一個方面的被劃分為不同受保護(hù)存儲器域的計(jì)算機(jī)系統(tǒng)的程序狀態(tài) 100的示意圖表示。所述系統(tǒng)包含具有內(nèi)核保護(hù)域的內(nèi)核106,以及每一者具有存儲器 保護(hù)域的客戶端和服務(wù)器進(jìn)程102和104。圖2是說明客戶端和服務(wù)器進(jìn)程102、 104與 內(nèi)核106之間的通信的調(diào)用流程圖200。實(shí)施此實(shí)施例的方法的操作步驟的實(shí)例在圖3 所示的過程流程圖中說明。
一起參看圖1、 2和3,客戶端進(jìn)程102通過執(zhí)行到內(nèi)核106的系統(tǒng)調(diào)用116而調(diào)用 對駐存在服務(wù)器進(jìn)程104中的遠(yuǎn)程對象B 108操作的函數(shù)(步驟302)。作為系統(tǒng)調(diào)用116 中的自變量,客戶端進(jìn)程102包含對象B 108的本地對象識別符和到含有所調(diào)用對象所 需的輸入數(shù)據(jù)的客戶端進(jìn)程存儲器空間中的緩沖器地址的存儲器指針,作為自變量。系 統(tǒng)調(diào)用116還可包含到從所調(diào)用對象傳遞的輸出數(shù)據(jù)應(yīng)被復(fù)制到其中的客戶端進(jìn)程存儲 器空間中的緩沖器地址的存儲器指針。在圖1所說明的示范性方面中,客戶端進(jìn)程102 發(fā)布要求內(nèi)核106在服務(wù)器進(jìn)程104中調(diào)用對象B 108的系統(tǒng)調(diào)用116,即需要存儲在 緩沖器110、 112中的兩個輸入的函數(shù)。當(dāng)然,在各個方面中,可使用任何數(shù)目的緩沖 器,其中相關(guān)聯(lián)地址指針包含在系統(tǒng)調(diào)用116中。
在執(zhí)行系統(tǒng)調(diào)用U6時(shí),內(nèi)核106首先驗(yàn)證調(diào)用所述對象(即,執(zhí)行系統(tǒng)調(diào)用)的 進(jìn)程得到許可來調(diào)用所述對象(步驟304)。如果客戶端進(jìn)程確實(shí)得到許可來調(diào)用所述對 象,那么內(nèi)核106確定對象B 108是駐存在內(nèi)核域中還是用戶域中的對象(步驟306)。 內(nèi)核106能夠定位對象108,因?yàn)閮?nèi)核跟蹤對象與各種保護(hù)域之間的關(guān)系。內(nèi)核106可 通過若干方法中的任一者來跟蹤對象位置,包含(例如)針對每一客戶端/服務(wù)器進(jìn)程維 持一表,其以識別符(例如,到表中的索引)和到對象接口的指針識別對象。作為另一 實(shí)例,內(nèi)核106可維持所述系統(tǒng)內(nèi)的對象的全局表,其將對象識別符映射到處理器域且 將指針映射到對象接口。作為另一實(shí)例,內(nèi)核106可維持使用戶進(jìn)程與對象相關(guān)聯(lián)(即, 映射)的散列法。如所屬領(lǐng)域的一般技術(shù)人員將了解,將對象映射到進(jìn)程的能力是受保 護(hù)存儲器結(jié)構(gòu)中內(nèi)核的共同特征。舉例來說,尤尼克斯(Unix)內(nèi)核可跟蹤由進(jìn)程保持的開放式套接口。
如果內(nèi)核106確定對象B 108不駐存在內(nèi)核106內(nèi),那么內(nèi)核106定位代管對象B 108的服務(wù)器進(jìn)程104 (步驟308)。如所屬領(lǐng)域的技術(shù)人員將了解,內(nèi)核106可在一個 操作中(例如,通過如上所述將對象定位在全局表中)確定所調(diào)用對象的位置和服務(wù)器 進(jìn)程,且因此可組合步驟306與308。
一旦內(nèi)核106確定對象B 108的位置,內(nèi)核就發(fā)送消息128,其告知服務(wù)器進(jìn)程104 關(guān)于客戶端進(jìn)程102對所述對象的遠(yuǎn)程調(diào)用(步驟310)。此通信可包含在系統(tǒng)調(diào)用中由 客戶端進(jìn)程102提供的對象ID。在一個方面中,服務(wù)器進(jìn)程104可具有內(nèi)核106已知的 用于接收對象ID的預(yù)定緩沖器位置。在一個方面中,內(nèi)核106喚醒服務(wù)器進(jìn)程104內(nèi) 的服務(wù)器線程(圖1中未單獨(dú)展示),其操作以調(diào)用對象B 108 (步驟312)。如所屬領(lǐng) 域的一般技術(shù)人員將了解,可通過任何適當(dāng)?shù)谋娝苤姆椒▉韱拘逊?wù)器線程。在一 個方面中,內(nèi)核106將對象ID提供到服務(wù)器進(jìn)程104 (步驟316)。
服務(wù)器進(jìn)程104接著可例如通過執(zhí)行獲取緩沖器130操作來請求來自內(nèi)核106的輸 入數(shù)據(jù)(步驟318)。此獲取緩沖器130操作請求與客戶端進(jìn)程的調(diào)用請求相關(guān)聯(lián)的輸入 數(shù)據(jù),且提供到服務(wù)器進(jìn)程域內(nèi)的輸入數(shù)據(jù)將被復(fù)制到其中的輸入緩沖器118和120的 指針。通過以獲取緩沖器操作130包含到輸入緩沖器118和120的指針,服務(wù)器進(jìn)程104 在請求數(shù)據(jù)時(shí)告知內(nèi)核106關(guān)于目的地位置。這增強(qiáng)了系統(tǒng)靈活性,因?yàn)榉?wù)器進(jìn)程104 不需要留出存儲器用于接收自變量輸入,自變量輸入使開發(fā)者難以在大小(對象輸入數(shù) 據(jù)要求變化)和定時(shí)方面進(jìn)行預(yù)期。
在一些實(shí)施方案中,如下文更詳細(xì)論述,服務(wù)器進(jìn)程104可具有內(nèi)核106己知的用 于接收輸入數(shù)據(jù)的預(yù)定緩沖器位置(有時(shí)稱為用于自變量的"著陸墊")。此實(shí)施方案允 許內(nèi)核106在單一步驟中調(diào)用對象并傳遞必需的自變量,進(jìn)而避免需要獲取緩沖器執(zhí)行 步驟。此替代方案在圖3中通過虛線箭頭A說明。
在從服務(wù)器進(jìn)程104接收輸入數(shù)據(jù)請求130后,內(nèi)核106可將駐存在客戶端進(jìn)程緩 沖器110和112中的數(shù)據(jù)復(fù)制到服務(wù)器進(jìn)程的緩沖器118和120中(步驟320)。在這樣 做時(shí),內(nèi)核在單一步驟中將數(shù)據(jù)直接從客戶端進(jìn)程緩沖器110和112相應(yīng)地復(fù)制到服務(wù) 器進(jìn)程緩沖器118和120,如圖1中分別通過虛線122和124說明。內(nèi)核106可直接將 數(shù)據(jù)從客戶端進(jìn)程102復(fù)制到服務(wù)器進(jìn)程104中,因?yàn)閮?nèi)核106具有對客戶端進(jìn)程和服 務(wù)器進(jìn)程存儲器空間的讀取和寫入存取權(quán)。此無限制的讀取和寫入存取權(quán)是內(nèi)核106的 能力。如此,內(nèi)核106可使用在系統(tǒng)調(diào)用116中傳遞到內(nèi)核106的客戶端緩沖器指針來 從客戶端進(jìn)程102輸入緩沖器IIO和112直接獲得輸入數(shù)據(jù)。類似地,內(nèi)核106可使用到獲取緩沖器130消息中所提供的那些存儲器位置(或在一些方面中,到預(yù)定義存儲器 位置)的指針將輸入數(shù)據(jù)直接寫入到服務(wù)器進(jìn)程104輸入緩沖器118和120中。此將輸 入數(shù)據(jù)從客戶端存儲器域緩沖器110和112復(fù)制到服務(wù)器存儲器域緩沖器118和120的 直接復(fù)制在客戶端和服務(wù)器進(jìn)程102、 104看來為直接復(fù)制操作,如虛線122和124所說明。
值得注意的是,服務(wù)器進(jìn)程104能夠針對包含在客戶端進(jìn)程緩沖器110和112內(nèi)的 輸入數(shù)據(jù)1A和1B執(zhí)行獲取緩沖器操作130,因?yàn)榉?wù)器進(jìn)程104處于響應(yīng)于客戶端進(jìn) 程對對象B 108的調(diào)用當(dāng)中。此調(diào)用告知服務(wù)器進(jìn)程104關(guān)于輸入數(shù)據(jù)的可用性,且因 此提示獲取緩沖器130操作的發(fā)布(步驟318)。獲取緩沖器130操作可由內(nèi)核106執(zhí)行, 因?yàn)榭蛻舳诉M(jìn)程102已針對所調(diào)用操作的持續(xù)時(shí)間授予了對讀取客戶端進(jìn)程102的緩沖 器IIO和112內(nèi)所含有的數(shù)據(jù)的許可。在下文更詳細(xì)描述的一個或一個以上方面中,還 可向服務(wù)器進(jìn)程104授予對輸入數(shù)據(jù)緩沖器110和112的臨時(shí)讀取存取權(quán),作為對象調(diào) 用的一部分。這可由執(zhí)行服務(wù)調(diào)用116時(shí)使用的API實(shí)施,從而針對服務(wù)調(diào)用的持續(xù)時(shí) 間向服務(wù)器進(jìn)程104提供對存儲器的臨時(shí)存取權(quán)。在一個或一個以上方面中,針對有限 時(shí)間,明確地說針對客戶端進(jìn)程對對象B 108的調(diào)用的持續(xù)時(shí)間,授予此讀取許可。
一旦客戶端進(jìn)程輸入緩沖器IIO和112內(nèi)所含有的數(shù)據(jù)已被復(fù)制到服務(wù)器進(jìn)程輸入 緩沖器118和120,內(nèi)核106就通過消息132將對執(zhí)行的控制返回到服務(wù)器進(jìn)程104 (步 驟322)。在此點(diǎn)處,服務(wù)器進(jìn)程104可例如通過執(zhí)行另一獲取緩沖器130以請求來自內(nèi) 核106的數(shù)據(jù)(因此重復(fù)步驟318,如圖3中通過虛線箭頭B所說明)來請求更多輸入 數(shù)據(jù)。服務(wù)器進(jìn)程104可執(zhí)行多個獲取緩沖器130請求以便復(fù)制大量輸入數(shù)據(jù)。每一獲 取緩沖器130請求可(例如)識別到不同緩沖器位置的指針,以便將表提供于服務(wù)器進(jìn) 程104內(nèi)。并且,服務(wù)器進(jìn)程104可在對所識別對象B 108執(zhí)行所調(diào)用函數(shù)的同時(shí)執(zhí)行 多個獲取緩沖器130請求。內(nèi)核106響應(yīng)于每一獲取緩沖器130請求,如上文參看步驟 320和322所描述。此能力為應(yīng)用開發(fā)者提供靈活性以優(yōu)化將數(shù)據(jù)從客戶端進(jìn)程102傳 遞到服務(wù)器進(jìn)程104中的傳遞,而不需要對內(nèi)核106或客戶端進(jìn)程102軟件的修改。
一旦所有輸入數(shù)據(jù)已復(fù)制到服務(wù)器進(jìn)程輸入緩沖器118和120中,服務(wù)器進(jìn)程104 就可開始對所述對象B 108的調(diào)用操作(步驟324)。當(dāng)服務(wù)器進(jìn)程104己對所識別對象 108執(zhí)行所調(diào)用函數(shù)時(shí),服務(wù)器進(jìn)程104例如通過執(zhí)行放置緩沖器請求134來通知內(nèi)核 106關(guān)于待復(fù)制的輸出數(shù)據(jù)(步驟326)。放置緩沖器134消息將執(zhí)行傳遞到內(nèi)核106以 將服務(wù)器進(jìn)程輸出緩沖器122內(nèi)所包含的輸出數(shù)據(jù)復(fù)制到客戶端進(jìn)程域中。放置緩沖器 134消息包含到服務(wù)器進(jìn)程104輸出緩沖器122的指針。從初始系統(tǒng)調(diào)用116內(nèi)所包含的指針,內(nèi)核106得知客戶端進(jìn)程輸出緩沖器114的存儲器位置。在如此通知的情況下, 內(nèi)核106可將駐存在服務(wù)器進(jìn)程輸出緩沖器122中的數(shù)據(jù)直接復(fù)制到客戶端處理器輸出 緩沖器114 (步驟328)。此將輸出數(shù)據(jù)從服務(wù)器存儲器域輸出緩沖器122復(fù)制到服務(wù)器 存儲器域輸出緩沖器1H的直接復(fù)制在客戶端和服務(wù)器進(jìn)程102和104看來為直接復(fù)制 操作,如圖1中通過虛線126所說明。在一些實(shí)施方案中,服務(wù)器進(jìn)程可將輸出數(shù)據(jù)放 置在內(nèi)核106已知的預(yù)定義存儲器位置中,因此避免需要放置緩沖器操作。
一旦內(nèi)核106已將輸出數(shù)據(jù)復(fù)制到客戶端進(jìn)程輸出緩沖器114中,內(nèi)核106就通過 消息136將對執(zhí)行的控制返回到服務(wù)器進(jìn)程104 (步驟330)。與獲取緩沖器130操作一 樣,服務(wù)器進(jìn)程104可執(zhí)行多個放置緩沖器134消息(如由虛線箭頭D所說明),從而 重復(fù)步驟326,進(jìn)而提示內(nèi)核106重復(fù)步驟328和330,如先前所描述。每一放置緩沖 器134請求可(例如)識別到不同輸出緩沖器位置的指針,以便在服務(wù)器進(jìn)程104內(nèi)讀 出一表。這允許服務(wù)器進(jìn)程104將大量數(shù)據(jù)區(qū)塊發(fā)送到客戶端進(jìn)程102,例如數(shù)據(jù)區(qū)塊 存儲器讀取操作中可能發(fā)生的情況。此能力為應(yīng)用開發(fā)者提供靈活性以優(yōu)化將輸出數(shù)據(jù) 從服務(wù)器進(jìn)程102傳遞到服務(wù)器進(jìn)程104中的傳遞,而不需要對內(nèi)核106或客戶端進(jìn)程 102軟件的修改、事先知道輸出數(shù)據(jù)區(qū)塊的大小,或?qū)敵鰯?shù)據(jù)區(qū)塊的可容許大小的任 意約束。
當(dāng)調(diào)用對象B 108的系統(tǒng)調(diào)用完成時(shí),服務(wù)器進(jìn)程104通過消息138將執(zhí)行返回到 內(nèi)核106 (步驟332)。由于一些對象108可能不會輸出數(shù)據(jù),例如用以激活另一進(jìn)程的 遠(yuǎn)程調(diào)用或裝置指示符(例如,顯示器或LED),所以服務(wù)器進(jìn)程104可繞過輸出數(shù)據(jù) (步驟326到330)且僅僅將對執(zhí)行的控制返回到內(nèi)核106 (消息138和步驟332),如圖 3中通過虛線箭頭C所說明。返回對執(zhí)行的控制提示內(nèi)核106將執(zhí)行控制140返回到客 戶端服務(wù)器102 (步驟334)。在此點(diǎn)處,遠(yuǎn)程對象調(diào)用完成。
如所屬領(lǐng)域的一般技術(shù)人員將了解,使上述復(fù)制數(shù)據(jù)的進(jìn)程間單一步驟成為可能, 因?yàn)閮?nèi)核具有對系統(tǒng)的所有對象和資源的開放式存取權(quán)。客戶端進(jìn)程102和服務(wù)器進(jìn)程
104僅可存取與其相應(yīng)存儲器地址空間相關(guān)聯(lián)的對象和資源。相比之下,內(nèi)核106可獲 得客戶端進(jìn)程輸入緩沖器110和112內(nèi)的數(shù)據(jù),因?yàn)閮?nèi)核106具有在客戶端進(jìn)程存儲器 地址空間中讀取和寫入數(shù)據(jù)的權(quán)限。以相同方式,內(nèi)核106可將數(shù)據(jù)直接寫入到服務(wù)器 進(jìn)程輸入緩沖器U8和120中,因?yàn)閮?nèi)核106具有向服務(wù)器進(jìn)程存儲器地址空間讀取和 寫入數(shù)據(jù)的權(quán)限。因此,圖l到3中說明的方面大致上消除原本需要的兩個數(shù)據(jù)復(fù)制操 作(即,將輸入數(shù)據(jù)復(fù)制到內(nèi)核緩沖器中和將輸出數(shù)據(jù)復(fù)制到內(nèi)核緩沖器中)。這減少 了系統(tǒng)額外開銷,尤其是對于涉及顯著量的數(shù)據(jù)的移動的遠(yuǎn)程操作。所屬領(lǐng)域的一般技術(shù)人員還將了解,在以上方面中,內(nèi)核106可將數(shù)據(jù)從一個進(jìn)程 域復(fù)制到另一進(jìn)程域而不必分配內(nèi)核的緩沖器空間中的任一者以臨時(shí)保持正被復(fù)制的 數(shù)據(jù)。換句話說,在此方面中,內(nèi)核不需要從客戶端進(jìn)程緩沖器空間復(fù)制數(shù)據(jù)到內(nèi)核空 間中且隨后從內(nèi)核緩沖器空間復(fù)制數(shù)據(jù)到服務(wù)器進(jìn)程的緩沖器空間中。這簡化了內(nèi)核結(jié) 構(gòu),同時(shí)使內(nèi)核存儲器分配最小化,這對于支持涉及大量數(shù)據(jù)傳遞的操作可能尤其有利, 例如音頻和視頻呈現(xiàn)及復(fù)制應(yīng)用中可能發(fā)生的情況。因此,通過服務(wù)器進(jìn)程104執(zhí)行多 個獲取緩沖器130和/或放置緩沖器134操作,系統(tǒng)可使用小輸入或輸出緩沖器且以有限 (如果有的話)分配的內(nèi)核存儲器在保護(hù)域之間傳遞無限量的數(shù)據(jù)。
以上方面以任意來源和目的地尋址(其中尋址內(nèi)建到調(diào)用自變量中)提供跨越保護(hù) 域的數(shù)據(jù)的單一移動復(fù)制。因此,從客戶端進(jìn)程102的觀點(diǎn)來看(以及從客戶端進(jìn)程開 發(fā)者的觀點(diǎn)來看),以單一指示調(diào)用和任意輸入/輸出緩沖器有效地實(shí)現(xiàn)遠(yuǎn)程對象的實(shí)施 (包含跨越保護(hù)域復(fù)制數(shù)據(jù),其原本為所述系統(tǒng)所禁止),而不用考慮或重寫客戶端或?qū)?象軟件。
另外,根據(jù)各個方面的內(nèi)核106支持遠(yuǎn)程對象的同步調(diào)用。這允許客戶端進(jìn)程102 經(jīng)由內(nèi)核106向?qū)ο筮M(jìn)行同步調(diào)用而不必意識到或考慮內(nèi)核106與服務(wù)器進(jìn)程104 (且 反之亦然)交互的細(xì)節(jié)。因此,為了調(diào)用對象,客戶端處理器102僅需要識別正被調(diào)用 的對象,且在一些方面中,針對對象調(diào)用操作的持續(xù)時(shí)間授予向客戶端進(jìn)程102的存儲 器空間讀取和寫入數(shù)據(jù)的許可。
如早先所提及,對于一些對象和一些方面,服務(wù)調(diào)用116可激活服務(wù)器進(jìn)程104內(nèi) 的線程。在一個實(shí)施方案中,線程可存在于服務(wù)器進(jìn)程104中等待對象B108的調(diào)用。 一旦對象B108被調(diào)用,就喚醒相應(yīng)的線程。在另一方面中,內(nèi)核106可支持線程遷移。 線程遷移是指用于使來自客戶端進(jìn)程域的服務(wù)調(diào)用與服務(wù)器進(jìn)程中執(zhí)行的線程同步的 一種機(jī)制。在線程遷移中,在服務(wù)器進(jìn)程104中分配堆疊,且對執(zhí)行的控制從客戶端切 換到服務(wù)器,如同線程已切換保護(hù)域那樣??稍诜?wù)器進(jìn)程104中啟始遷移線程的執(zhí)行, 如同客戶端進(jìn)程102的線程已針對調(diào)用的持續(xù)時(shí)間改變保護(hù)域那樣。
圖4、 5A和5B說明替代方面,其中與系統(tǒng)調(diào)用相關(guān)聯(lián)的細(xì)節(jié)可通過使用客戶端代 理146而從客戶端進(jìn)程102隱藏。類似地,響應(yīng)于系統(tǒng)調(diào)用的與服務(wù)器進(jìn)程104相關(guān)聯(lián) 的進(jìn)程間數(shù)據(jù)交換細(xì)節(jié)可通過使用服務(wù)器代理146而從服務(wù)器進(jìn)程104隱藏。調(diào)用遠(yuǎn)程 對象和在保護(hù)域之間傳遞數(shù)據(jù)的過程類似于先前參看圖1到3所描述的方面且具有兩項(xiàng) 添加。第一,執(zhí)行系統(tǒng)調(diào)用116、將輸入數(shù)據(jù)記入到輸入數(shù)據(jù)緩沖器和從內(nèi)核106接收 輸出數(shù)據(jù)的步驟可由充當(dāng)客戶端進(jìn)程102的代理的中間軟件處理。第二,從內(nèi)核106接收對象調(diào)用、產(chǎn)生獲取緩沖器130和放置緩沖器134操作以及處理輸入和輸出數(shù)據(jù)的步 驟可由充當(dāng)服務(wù)器進(jìn)程104的代理的中間軟件執(zhí)行。使用客戶端代理146和服務(wù)器代理 148進(jìn)一步簡化了客戶端和服務(wù)器應(yīng)用軟件的開發(fā),因?yàn)檎{(diào)用遠(yuǎn)程對象的應(yīng)用僅需提供 自變量并以標(biāo)準(zhǔn)格式接收輸出數(shù)據(jù),而不用考慮內(nèi)核將如何執(zhí)行所述過程。
在圖4所說明的示范性方面中,系統(tǒng)調(diào)用是由客戶端進(jìn)程102調(diào)用以讀取存儲在服 務(wù)器進(jìn)程104域內(nèi)的系統(tǒng)存儲器中的數(shù)據(jù)區(qū)塊150的讀取方法142。一起參看圖4和5A, 客戶端進(jìn)程102通過向客戶端代理146識別操作和所需數(shù)據(jù)區(qū)塊而在數(shù)據(jù)區(qū)塊150上調(diào) 用讀取方法142 (步驟402)。客戶端代理146代碼駐存在客戶端進(jìn)程102域內(nèi),且因此 具有對客戶端進(jìn)程存儲器(即,緩沖器)空間的完全存取權(quán)??蛻舳舜鞨6代碼將遠(yuǎn) 程調(diào)用的名稱和遠(yuǎn)程調(diào)用的自變量匯集到系統(tǒng)調(diào)用116中,系統(tǒng)調(diào)用116將其發(fā)送到內(nèi) 核106 (步驟404)。此方面允許客戶端進(jìn)程102在數(shù)據(jù)區(qū)塊150上調(diào)用讀取方法142, 如同數(shù)據(jù)區(qū)塊150駐存在系統(tǒng)存儲器的客戶端進(jìn)程102域內(nèi)那樣。
在操作中,客戶端進(jìn)程102向客戶端代理146進(jìn)行讀取方法調(diào)用142,從而傳遞讀 取方法142所必需的自變量(步驟402)??蛻舳舜?46將自變量填裝到系統(tǒng)調(diào)用116 中并執(zhí)行系統(tǒng)調(diào)用116,從而將對執(zhí)行的控制傳遞到內(nèi)核106 (步驟404)。在示范性方 面中,由客戶端代理146產(chǎn)生的系統(tǒng)調(diào)用116是調(diào)用系統(tǒng)調(diào)用,其包含對象識別符以及 到輸入和輸出數(shù)據(jù)的指針作為自變量。舉例來說,調(diào)用可以是SysCall(調(diào)用、nObjID、 輸入指針、輸出指針)。輸入數(shù)據(jù)可進(jìn)一步包含數(shù)據(jù)區(qū)塊對象的大小。如可了解,由客 戶端進(jìn)程102調(diào)用的讀取方法直接對應(yīng)于由客戶端代理146產(chǎn)生的調(diào)用系統(tǒng)調(diào)用。
所述過程的剩余部分以與上文參看圖1到3描述的方式類似的方式進(jìn)行。因此,對 于圖5A中所說明的相同編號的步驟,以上對圖3的描述并入到此處。在所調(diào)用操作結(jié) 束時(shí),內(nèi)核106將對執(zhí)行的控制返回到客戶端代理142 (步驟434)。
在圖4和5B所說明的另一方面中,服務(wù)器進(jìn)程104域內(nèi)的服務(wù)器代理148管理內(nèi) 核106與服務(wù)器進(jìn)程104之間的通信。在此方面中,內(nèi)核106與服務(wù)器代理148通信, 服務(wù)器代理148充當(dāng)收集服務(wù)器進(jìn)程104所需的用于所調(diào)用操作的數(shù)據(jù)的中介物。所調(diào) 用對象可例如通過將IRemoteCall接口指針傳遞到(例如)服務(wù)器代理H8而請求數(shù)據(jù)。 如所屬領(lǐng)域的一般技術(shù)人員將了解,服務(wù)器代理148可接著實(shí)施函數(shù)調(diào)用,其直接對應(yīng) 于請求消息152內(nèi)所填裝的遠(yuǎn)程調(diào)用調(diào)用。
圖5B中所說明的大部分步驟以與上文參看圖1到3和5A描述的方式類似的方式進(jìn) 行。因此,對于圖5B中所說明的相同編號的步驟,早先參看圖3和5A的描述并入到此 處。內(nèi)核106告知服務(wù)器代理148所述對象正被調(diào)用(步驟410),從而向其提供對象ID。服務(wù)器代理可例如通過向內(nèi)核106的獲取緩沖器130調(diào)用而請求輸入數(shù)據(jù)(步驟418), 內(nèi)核106響應(yīng)于此而將輸入數(shù)據(jù)從客戶端進(jìn)程緩沖器110和112復(fù)制到服務(wù)器進(jìn)程緩沖 器118和120中(步驟320),如早先參看圖1到3更詳細(xì)描述。或者,服務(wù)器代理148 可從客戶端進(jìn)程102輸入數(shù)據(jù)緩沖器接收由內(nèi)核106復(fù)制的輸入數(shù)據(jù)。當(dāng)復(fù)制操作完成 時(shí),內(nèi)核106將對執(zhí)行的控制返回到服務(wù)器代理148 (步驟422)。當(dāng)服務(wù)器代理148已 接收所有所需輸入數(shù)據(jù)時(shí),服務(wù)器代理148調(diào)用正被調(diào)用的遠(yuǎn)程對象(步驟423)。服務(wù) 器進(jìn)程104接著執(zhí)行由客戶端進(jìn)程102調(diào)用的所調(diào)用操作(圖4中說明為讀取方法142)。 所述過程的剩余部分很大程度上如上文參看圖3描述而進(jìn)行,不同之處只是與內(nèi)核106 的通信由服務(wù)器代理管理(步驟430和432)。
在一個示范性方面中,待讀取的數(shù)據(jù)區(qū)塊150可復(fù)制到服務(wù)器進(jìn)程104內(nèi)的臨時(shí)輸 出緩沖器154中。 一旦數(shù)據(jù)區(qū)塊150復(fù)制到服務(wù)器進(jìn)程104中的輸出緩沖器154中,所 述數(shù)據(jù)就由內(nèi)核106使用上文參看圖1到3描述的單一步驟進(jìn)程間復(fù)制方法來復(fù)制到客 戶端進(jìn)程102中的適當(dāng)輸出緩沖器(例如,圖1中的緩沖器114),如圖4中通過虛線箭 頭所說明。
圖4中說明以及上文描述的在服務(wù)器進(jìn)程104內(nèi)臨時(shí)復(fù)制數(shù)據(jù)的步驟不是強(qiáng)制性 的。在另一方面中,可在數(shù)據(jù)區(qū)塊150本身內(nèi)界定緩沖器154。在另一實(shí)施方案中,內(nèi) 核106可簡單地執(zhí)行將數(shù)據(jù)從數(shù)據(jù)區(qū)塊150直接復(fù)制到客戶端進(jìn)程102中的緩沖器中的 單一步驟進(jìn)程間復(fù)制,因?yàn)閮?nèi)核106具有對客戶端和服務(wù)器進(jìn)程域兩者的存取權(quán)。因此, 實(shí)施客戶端和服務(wù)器代理146和148以簡化應(yīng)用開發(fā)并不需要向由各種實(shí)施例啟用的進(jìn) 程間通信添加額外開銷。內(nèi)核106執(zhí)行單一步驟進(jìn)程間數(shù)據(jù)復(fù)制的此能力大致上消除了 與將數(shù)據(jù)從服務(wù)器進(jìn)程104復(fù)制到內(nèi)核106中并從內(nèi)核106復(fù)制到客戶端進(jìn)程中相關(guān)聯(lián) 的額外開銷。如先前所論述,啟用單一步驟進(jìn)程間數(shù)據(jù)復(fù)制在需要跨越保護(hù)域復(fù)制大量 數(shù)據(jù)時(shí)尤其有益。對于較大組函數(shù),與微內(nèi)核結(jié)構(gòu)相關(guān)聯(lián)的數(shù)據(jù)移動額外開銷可大致上 減少為零,因?yàn)檫M(jìn)程間復(fù)制可使在遠(yuǎn)程函數(shù)中可隱含的復(fù)制重疊。舉例來說,當(dāng)從文件 系統(tǒng)讀取時(shí),進(jìn)程間復(fù)制可將存儲器直接從文件系統(tǒng)高速緩沖存儲器移動到客戶端緩沖 器,從而僅要求一次復(fù)制。當(dāng)"讀取"函數(shù)中隱含復(fù)制操作時(shí),即使當(dāng)調(diào)用不必跨越進(jìn) 程邊界時(shí)也將僅要求一次復(fù)制。
在圖6A到8中說明的另一方面中,由客戶端進(jìn)程102調(diào)用的遠(yuǎn)程對象C 156駐存 在內(nèi)核106本身內(nèi)。以此方式實(shí)施基于內(nèi)核的進(jìn)程使由客戶端進(jìn)程102或客戶端代理146 啟始的系統(tǒng)調(diào)用U6能夠在結(jié)構(gòu)上和功能上相同,而不管所調(diào)用的遠(yuǎn)程對象的位置如何。 圖6A和6B說明此方面中所涉及的存儲器域、緩沖器和進(jìn)程的相互關(guān)系。圖7是說明客戶端進(jìn)程102與內(nèi)核106之間的通信的調(diào)用流程圖。此方面過程500的操作步驟的實(shí)例 在圖8的過程流程圖中說明。
一起參看圖6A到8,客戶端進(jìn)程102可以內(nèi)核106執(zhí)行系統(tǒng)調(diào)用116以調(diào)用駐存 在內(nèi)核106中的遠(yuǎn)程對象C 108 (步驟502到504)。如上文參看圖4和5A更詳細(xì)描述, 在一些方面中,客戶端進(jìn)程102可通過將函數(shù)調(diào)用發(fā)送到客戶端代理146從而向客戶端 代理146傳遞函數(shù)調(diào)用的自變量來完成此操作(步驟502)??蛻舳舜?46接著匯集必 需的自變量并產(chǎn)生且執(zhí)行系統(tǒng)調(diào)用116 (步驟504),包含遠(yuǎn)程函數(shù)調(diào)用和相關(guān)聯(lián)自變量 以及對象C 156的本地對象識別符。舉例來說,除了對象C 156的本地對象識別符外, 客戶端代理146還可傳遞到含有將可用于對象C 156的輸入數(shù)據(jù)IP 1A的客戶端進(jìn)程102 輸入緩沖器IIO的指針,以及到來自對象C 156的數(shù)據(jù)可被復(fù)制到其中的輸出緩沖器114 的指針。
在從客戶端代理146接收系統(tǒng)調(diào)用116之后,內(nèi)核106通過確認(rèn)客戶端具有調(diào)用對 象的必需許可來驗(yàn)證調(diào)用,并確定對象C 156為駐存在內(nèi)核106中還是用戶進(jìn)程中的對 象(步驟506)。 一旦內(nèi)核106確定對象C 156駐存在內(nèi)核106中,內(nèi)核106就可將對系 統(tǒng)調(diào)用116的執(zhí)行的控制傳遞到內(nèi)核代理158 (步驟508)。(應(yīng)注意,如果內(nèi)核106確 定對象駐存在服務(wù)器進(jìn)程域中,那么內(nèi)核106將以與上文參看圖1到5B描述的方式類 似的方式進(jìn)行。)在實(shí)例性實(shí)施例中,內(nèi)核106可將IRemoteCall接口指針傳遞到內(nèi)核代 理158(步驟508)。所屬領(lǐng)域的一般技術(shù)人員將了解,由內(nèi)核代理148實(shí)施的此函數(shù)調(diào) 用直接對應(yīng)于系統(tǒng)調(diào)用116的遠(yuǎn)程函數(shù)調(diào)用。內(nèi)核代理158的使用簡化了用于在內(nèi)核域 內(nèi)實(shí)施的對象的開發(fā),因?yàn)閷ο罂山?jīng)編程以與內(nèi)核代理158交互而不需要關(guān)注內(nèi)核操作。 然而,內(nèi)核代理158的使用不是強(qiáng)制性的,且在替代實(shí)施例中,內(nèi)核106可直接實(shí)施所 調(diào)用的對象C 156。
由于內(nèi)核106具有在客戶端進(jìn)程102存儲器空間內(nèi)讀取和寫入數(shù)據(jù)的授權(quán),所以內(nèi) 核106可使用系統(tǒng)調(diào)用116中所提供的指針來將輸入數(shù)據(jù)IP 1A直接復(fù)制到內(nèi)核輸入緩 沖器160 (步驟510)。內(nèi)核代理158可接收輸入數(shù)據(jù)且接著調(diào)用內(nèi)核106內(nèi)正被調(diào)用的 對象C 156 (步驟512)。內(nèi)核106執(zhí)行所調(diào)用的對象(或函數(shù)或線程)(步驟512)。輸 出數(shù)據(jù)OP Kl可臨時(shí)存儲到內(nèi)核輸出緩沖器162 (如果產(chǎn)生輸出數(shù)據(jù)的話)。內(nèi)核106 接著通過內(nèi)核106將數(shù)據(jù)復(fù)制到客戶端服務(wù)器102中的適當(dāng)輸出緩沖器(步驟514)。在 替代實(shí)施例中,內(nèi)核106可將所調(diào)用對象所產(chǎn)生的數(shù)據(jù)直接寫入到客戶端進(jìn)程102輸出 緩沖器114,因?yàn)閮?nèi)核有權(quán)向客戶端進(jìn)程102存儲器空間進(jìn)行寫入。內(nèi)核106或內(nèi)核代 理158接著將對執(zhí)行140的控制返回到客戶端進(jìn)程102 (步驟516)。在此方面的變型中,如圖6B中所說明,內(nèi)核106可從客戶端域緩沖器110讀取輸 入數(shù)據(jù)并將數(shù)據(jù)直接提供到所調(diào)用對象而不將數(shù)據(jù)復(fù)制到內(nèi)核緩沖器。此方面以與上文 參看圖6A、 7和8描述的方式相同的方式起作用,不同之處只是不需要內(nèi)核緩沖器。由 于內(nèi)核106具有對客戶端進(jìn)程102存儲器空間的讀取和寫入存取權(quán)兩者,所以內(nèi)核106 可獲取到客戶端進(jìn)程輸入緩沖器110的指針并直接存取輸入數(shù)據(jù)IP 1A。在一個示范性 實(shí)施方案中,內(nèi)核106可通過分別使用"獲取輸入指針"和"獲取輸出指針"操作而獲 得到客戶端進(jìn)程緩沖器110和114的指針。以此方式,內(nèi)核106不需要執(zhí)行與將數(shù)據(jù)從 客戶端進(jìn)程102復(fù)制到內(nèi)核106中并從內(nèi)核106復(fù)制回到客戶端進(jìn)程102中相關(guān)聯(lián)的任 何額外復(fù)制操作。
在另一實(shí)施方案中,如圖9中所說明,客戶端進(jìn)程102可調(diào)用服務(wù)器進(jìn)程104域內(nèi) 的遠(yuǎn)程對象170,所述遠(yuǎn)程對象170可調(diào)用位于文件系統(tǒng)存儲器域172內(nèi)的第二對象174。 在此實(shí)施方案中,向所調(diào)用遠(yuǎn)程對象D170授予存取另一對象的權(quán)限,所述另一對象例 如為駐存在文件系統(tǒng)域172內(nèi)的數(shù)據(jù)區(qū)塊174。因此,系統(tǒng)調(diào)用除提供自變量和緩沖器 指針外還賦予調(diào)用對象的能力(性能)。
參看圖9,客戶端進(jìn)程102將系統(tǒng)調(diào)用116發(fā)送到內(nèi)核106,請求以與先前參看圖3 和5A描述的方式類似的方式遠(yuǎn)程調(diào)用對象D 170。除了對象D 170的對象識別符外, 系統(tǒng)調(diào)用116進(jìn)一步包含對駐存在文件系統(tǒng)存儲器域172內(nèi)的對象E 174的對象參考。 在此實(shí)施方案中,對象參考賦予遠(yuǎn)程對象D 170直接調(diào)用另一對象E 174的權(quán)限。此權(quán) 限授予由內(nèi)核106記錄,所述內(nèi)核106能夠跟蹤所有對象的位置以及可存取所述對象的 每一者的進(jìn)程。也可包含調(diào)用另一對象的授權(quán)作為輸出系統(tǒng)調(diào)用中的輸出參數(shù)。因此, 系統(tǒng)調(diào)用可包含所述對象調(diào)用另一對象的輸入?yún)?shù)的授權(quán),或恢復(fù)所述客戶端進(jìn)程調(diào)用 另一對象的輸出參數(shù)的授權(quán)。
此方面的示范性實(shí)施方案是駐存在可信多媒體進(jìn)程中的多媒體播放器對象D 170。 在受保護(hù)存儲器結(jié)構(gòu)中,客戶端進(jìn)程102和多媒體進(jìn)程(服務(wù)器進(jìn)程104)不能存取彼 此的存儲器空間。通過實(shí)施此方面,客戶端進(jìn)程102可通過調(diào)用播放或停止功能而控制 多媒體播放器對象170。為了使多媒體播放器對象170能夠開始播放媒體(例如,音樂 或視頻),客戶端進(jìn)程102向多媒體播放器提供對駐存在文件系統(tǒng)存儲器域172內(nèi)的多 媒體播放器對象170可直接調(diào)用和存取176的多媒體數(shù)據(jù)區(qū)塊174的參考。在一個方面 中,通過經(jīng)由客戶端進(jìn)程102發(fā)布的系統(tǒng)調(diào)用116發(fā)送到多媒體播放器對象170的數(shù)據(jù) 區(qū)塊參考給予多媒體播放器對象170調(diào)用和存取文件系統(tǒng)存儲器域172內(nèi)的對象E 174 的權(quán)限。另一方面在圖10和11中說明,其中相對較大輸入數(shù)據(jù)區(qū)塊可有效地提供到所調(diào)用 的遠(yuǎn)程對象。此實(shí)施方案可提供對較大輸入數(shù)據(jù)區(qū)塊起作用的遠(yuǎn)程對象的有效調(diào)用。圖 10是此方面過程600的調(diào)用流程圖,而圖11是過程600的過程流程圖。由于步驟中的 若干者類似于上文參看圖3描述的那些步驟,所以針對圖11中說明的相同編號的步驟, 將那些描述并入此處。
一起參看圖10和U,客戶端進(jìn)程102執(zhí)行到內(nèi)核106的系統(tǒng)調(diào)用116 (步驟302)。 系統(tǒng)調(diào)用116向內(nèi)核106提供遠(yuǎn)程對象的對象識符、到其中駐存輸入數(shù)據(jù)的客戶端進(jìn)程 102的存儲器區(qū)的指針和到由服務(wù)器進(jìn)程104輸出的數(shù)據(jù)將被復(fù)制到其中的客戶端進(jìn)程 102存儲器中的區(qū)的指針。作為響應(yīng),內(nèi)核106驗(yàn)證系統(tǒng)調(diào)用(即,確認(rèn)準(zhǔn)許客戶端進(jìn) 程調(diào)用對象)(步驟304),并定位代管正被調(diào)用的對象的服務(wù)器進(jìn)程104 (步驟306)。
在喚醒服務(wù)器進(jìn)程104之前,內(nèi)核106將預(yù)定量的數(shù)據(jù)從客戶端進(jìn)程102的存儲器 空間復(fù)制到服務(wù)器進(jìn)程104存儲器空間內(nèi)的預(yù)先指定的存儲器區(qū)中(步驟620)。在一個 方面中,內(nèi)核106和服務(wù)器進(jìn)程104可協(xié)商以指定服務(wù)器進(jìn)程104存儲器空間的區(qū)來接 收待由內(nèi)核106直接從客戶端服務(wù)器102復(fù)制的數(shù)據(jù)。在一個實(shí)施方案中,在假定服務(wù) 器進(jìn)程104將最終調(diào)用內(nèi)核106以請求數(shù)據(jù)的剩余部分不包含在初始復(fù)制到服務(wù)器進(jìn)程 104中的預(yù)定量數(shù)據(jù)中的情況下,復(fù)制數(shù)據(jù)。對于輸入數(shù)據(jù)的此類額外請求可通過服務(wù) 器進(jìn)程104 (或服務(wù)器代理148)發(fā)布如早先參看圖3描述的多個獲取緩沖器130操作 來實(shí)現(xiàn)(步驟318到324)。
一旦輸入數(shù)據(jù)區(qū)塊已復(fù)制到服務(wù)器進(jìn)程104存儲器空間中,內(nèi)核106就通過發(fā)送消 息128以告知客戶端服務(wù)器關(guān)于由客戶端進(jìn)程102發(fā)送的請求消息來喚醒所調(diào)用服務(wù)器 線程(步驟622)。在此點(diǎn)處,服務(wù)器進(jìn)程104可調(diào)用服務(wù)器代理148 (如果實(shí)施代理的 話)以獲得輸入數(shù)據(jù)。在輸入數(shù)據(jù)預(yù)載到服務(wù)器進(jìn)程104存儲器中的情況下,服務(wù)器進(jìn) 程104或服務(wù)器代理148可獲得輸入數(shù)據(jù)而不必對內(nèi)核106執(zhí)行獲取輸入請求。事實(shí)上, 服務(wù)器進(jìn)程104或服務(wù)器代理148存取服務(wù)器緩沖器中的數(shù)據(jù)(步驟624)。此方面尤其 適用于涉及小緩沖器的實(shí)施方案和應(yīng)用。在其中使用較大緩沖器的實(shí)例中,服務(wù)器進(jìn)程 104或服務(wù)器代理148可在服務(wù)器進(jìn)程104存儲器上發(fā)布獲取緩沖器164操作。因此, 此方面可大致上消除請求來自內(nèi)核的輸入數(shù)據(jù)的需要,進(jìn)而減小到內(nèi)核106的所需系統(tǒng) 調(diào)用的數(shù)目。
一旦服務(wù)器進(jìn)程104已完成所調(diào)用線程(步驟324),服務(wù)器代理148就執(zhí)行放置緩 沖器請求134,所述放置緩沖器請求134請求內(nèi)核106將包含在服務(wù)器進(jìn)程104的緩沖 器內(nèi)的數(shù)據(jù)復(fù)制到客戶端進(jìn)程102的輸出緩沖器中(步驟326)。 一旦內(nèi)核106直接將輸出數(shù)據(jù)從服務(wù)器進(jìn)程104緩沖器復(fù)制到客戶端進(jìn)程102輸出緩沖器中(步驟328),內(nèi)核 就通過消息136將對執(zhí)行的控制返回到服務(wù)器進(jìn)程104 (步驟330)。在所調(diào)用操作完成 的情況下,服務(wù)器進(jìn)程104將對執(zhí)行138的控制返回到內(nèi)核106 (步驟332),從而提示 內(nèi)核106對執(zhí)行140的控制返回到客戶端進(jìn)程102 (步驟334)。
圖12和13說明另一方面,其通過使用共享存儲器排除由內(nèi)核106復(fù)制數(shù)據(jù)的需要。 由于步驟的若干者類似于早先參看圖3描述的那些步驟,所以針對圖13中說明的相同 編號的步驟,將那些描述并入此處。
參看圖12和13,客戶端進(jìn)程102輸入數(shù)據(jù)IP 1A駐存在共享存儲器空間180內(nèi)可 被客戶端進(jìn)程102和服務(wù)器進(jìn)程104兩者存取的輸入緩沖器182中??蛻舳诉M(jìn)程102可 將輸入數(shù)據(jù)維持在輸入緩沖器182中,或可剛好在調(diào)用遠(yuǎn)程對象之前將數(shù)據(jù)復(fù)制到輸入 緩沖器182中。在操作中,客戶端進(jìn)程102通過執(zhí)行系統(tǒng)調(diào)用116而調(diào)用駐存在服務(wù)器 進(jìn)程104中的遠(yuǎn)程對象B 108 (步驟302)。對象B 108的識別符以及指向緩沖器182和 184的指針包含在系統(tǒng)調(diào)用116中。內(nèi)核106驗(yàn)證系統(tǒng)調(diào)用(步驟304),確定對象位于 何處(步驟306和308),并接著告知服務(wù)器進(jìn)程104調(diào)用請求(步驟310)。在一個方 面中,內(nèi)核可喚醒所調(diào)用的服務(wù)器線程(步驟312),所述服務(wù)器線程可向內(nèi)核106發(fā)送 要求輸入數(shù)據(jù)的請求(步驟702)。舉例來說,服務(wù)器進(jìn)程104可執(zhí)行"獲取輸入指針" 和"獲取輸出指針"操作以獲得到數(shù)據(jù)緩沖器的指針。作為響應(yīng),內(nèi)核106向服務(wù)器線 程提供指向輸入和輸出緩沖器182和184的指針(步驟704)?;蛘撸瑑?nèi)核106可在不提 示的情況下向服務(wù)器進(jìn)程104提供指向輸入和輸出緩沖器182和187的指針(步驟704)。 由于服務(wù)器進(jìn)程104有權(quán)存取共享存儲器180,且因此有權(quán)存取駐存在其中的輸入和輸 出緩沖器182和184,所以服務(wù)器進(jìn)程104可直接存取緩沖器182內(nèi)的輸入數(shù)據(jù)IP 1A (步驟706)。這消除了內(nèi)核106將數(shù)據(jù)從客戶端進(jìn)程102復(fù)制到服務(wù)器進(jìn)程104的額外 開銷。在此點(diǎn)處,服務(wù)器進(jìn)程104執(zhí)行所調(diào)用的進(jìn)程(步驟324)。在完成后,服務(wù)器進(jìn) 程104將任何輸出數(shù)據(jù)直接寫入到共享存儲器180內(nèi)的輸出緩沖器184中(步驟708)。 在此點(diǎn)處,服務(wù)器進(jìn)程104將對執(zhí)行的控制返回到內(nèi)核106,指示函數(shù)完成(步驟332), 從而提示內(nèi)核106將對執(zhí)行的控制返回到客戶端進(jìn)程102 (步驟334)。
所屬領(lǐng)域的一般技術(shù)人員將了解,指向輸入和輸出緩沖器182和184的指針可在以 與先前參看圖11描述的方式類似的方式喚醒進(jìn)程之前被供應(yīng)到服務(wù)器進(jìn)程104,進(jìn)而減 小服務(wù)器進(jìn)程104需要發(fā)送到內(nèi)核106的請求的數(shù)目。
在此方面的任選變型中,客戶端進(jìn)程102可與內(nèi)核106協(xié)調(diào)以針對正被調(diào)用的每一 線程建立客戶端存儲器的可共享存儲器區(qū)。舉例來說,包含在客戶端進(jìn)程的系統(tǒng)調(diào)用116中的自變量可指定位于客戶端存儲器的將可由所調(diào)用線程存取的區(qū)內(nèi)的輸入和輸出數(shù) 據(jù)緩沖器(即,包含指向所述輸入和輸出數(shù)據(jù)緩沖器的指針)。在此方面中,內(nèi)核106 可引導(dǎo)存儲器管理單元(MMU)使客戶端進(jìn)程102存儲器的所指示輸入和輸出數(shù)據(jù)緩 沖器部分對于服務(wù)器進(jìn)程104為可見的(步驟710)。舉例來說,將共享的數(shù)據(jù)可在客戶 端進(jìn)程102存儲器中的特定頁中,使得MMU可授予服務(wù)器進(jìn)程104對特定頁的存取權(quán)。 通常,將僅針對系統(tǒng)調(diào)用的持續(xù)時(shí)間授予此存取權(quán)。這可通過在從服務(wù)器進(jìn)程104接收 到系統(tǒng)調(diào)用返回后內(nèi)核106請求MMU移除服務(wù)器進(jìn)程104對客戶端進(jìn)程102存儲器的 存取權(quán)來實(shí)現(xiàn)。
在此方面的另一變型中,如圖14中所說明,當(dāng)客戶端進(jìn)程102和服務(wù)器進(jìn)程104 不具有對存儲器的相同區(qū)的存取權(quán)時(shí),內(nèi)核106可引導(dǎo)MMU使客戶端的緩沖器可用于 服務(wù)器進(jìn)程104持續(xù)所述調(diào)用的持續(xù)時(shí)間。在調(diào)用啟始后,內(nèi)核106可修改服務(wù)器進(jìn)程 104的虛擬地址空間以使一個或一個以上輸入緩沖器可由服務(wù)器進(jìn)程104讀取。同樣, 內(nèi)核106可修改服務(wù)器進(jìn)程104的虛擬地址空間以使一個或一個以上輸出緩沖器可由服 務(wù)器進(jìn)程104寫入。這要求引導(dǎo)MMU將服務(wù)器進(jìn)程虛擬地址映射到其中駐存輸入或輸 出緩沖器的物理存儲器地址。內(nèi)核106可接著通知服務(wù)器進(jìn)程104關(guān)于調(diào)用對象的請求 (步驟812)。如果內(nèi)核通知未包含輸入數(shù)據(jù)的位置,那么服務(wù)器進(jìn)程104可請求來自內(nèi) 核106的數(shù)據(jù)(步驟814)。作為響應(yīng),內(nèi)核106向服務(wù)器進(jìn)程104提供輸入數(shù)據(jù)的位置 (步驟816)。在此點(diǎn)處,服務(wù)器進(jìn)程可直接存取來自新映射的虛擬存儲器地址的輸入數(shù) 據(jù)(步驟818),且對對象執(zhí)行所調(diào)用操作(步驟820),從而將所得輸出存儲到新的共 享存儲器空間中(步驟822)。為了完成操作,服務(wù)器進(jìn)程104告知內(nèi)核106關(guān)于輸出數(shù) 據(jù)的在共享存儲器中的位置(步驟824),其允許內(nèi)核106告知客戶端進(jìn)程關(guān)于輸出數(shù)據(jù) 位置(步驟826)。在將對執(zhí)行的控制返回到客戶端進(jìn)程102之前,內(nèi)核106將移除已被 放置在適當(dāng)位置以使緩沖器可用于服務(wù)器進(jìn)程104的虛擬存儲器映射。
此實(shí)施方案允許所述進(jìn)程直接存取輸入和輸出數(shù)據(jù),從而避免需要內(nèi)核106跨越保 護(hù)邊界復(fù)制數(shù)據(jù)。此方面具有若干優(yōu)點(diǎn)。第一優(yōu)點(diǎn)是可在客戶端進(jìn)程(即,調(diào)用進(jìn)程) 與服務(wù)器進(jìn)程(即,被調(diào)用進(jìn)程)之間"移動"輸入和輸出數(shù)據(jù),而不進(jìn)行任何復(fù)制, 其中所述復(fù)制步驟由客戶端進(jìn)程102執(zhí)行。第二優(yōu)點(diǎn)是服務(wù)器進(jìn)程不需要預(yù)測輸入的大 小和/或位置或在返回到客戶端進(jìn)程之后保留輸出數(shù)據(jù)的復(fù)本。事實(shí)上,服務(wù)器進(jìn)程104 簡單地直接讀取輸入數(shù)據(jù),并將數(shù)據(jù)輸出到客戶端進(jìn)程域內(nèi)的緩沖器。第三優(yōu)點(diǎn)是服務(wù) 器進(jìn)程104不需要具有充足的存儲器來同時(shí)將所有輸入或輸出自變量保持在存儲器中。
用于實(shí)施以上方面的事件的硬件可以是經(jīng)配置以執(zhí)行一組指令的處理元件和存儲器元件,其中所述組指令用于執(zhí)行對應(yīng)于以上事件的方法步驟?;蛘?, 一些事件可由特 定針對給定函數(shù)的電路執(zhí)行。圖15說明實(shí)施以上方面的系統(tǒng)的典型組件。此系統(tǒng)包含 處理器l,所述處理器1耦合到隨機(jī)存取存儲器2且包含存儲器管理單元(MMU) 3。 所述系統(tǒng)還可包含只讀存儲器,其可用于存儲內(nèi)核軟件指令。在操作中,客戶端進(jìn)程102、 服務(wù)器進(jìn)程104和內(nèi)核106作為在存取隨機(jī)存取存儲器2的處理器1上運(yùn)行的單獨(dú)軟件 指令線程存在。
圖16中說明移動手持機(jī)中的各個方面的特定實(shí)施方案。如早先所注意到,各個方 面由于移動手持機(jī)的有限處理器和存儲器容量而在移動手持機(jī)中尤其有益。移動手持機(jī) 10,其可以是蜂窩式電話、支持多媒體因特網(wǎng)的蜂窩式電話、個人數(shù)字助理、電子音樂 數(shù)據(jù)區(qū)塊(例如,MP3)播放器和/或無線電子郵件接收器中的任一者。此移動手持機(jī) 10可包含處理器11,其耦合到存儲器12和顯示器13。移動手持機(jī)10還可包含若干數(shù) 據(jù)輸入/輸出接口,例如蜂窩式電話數(shù)據(jù)接收器、有線(例如,火線)數(shù)據(jù)鏈路、藍(lán)牙無 線數(shù)據(jù)鏈路和紅外數(shù)據(jù)鏈路(未圖示)。舉例來說,移動手持機(jī)IO可包含用于從無線網(wǎng) 絡(luò)傳輸器/接收器節(jié)點(diǎn)(未圖示)接收電磁信號的天線14以及連接到天線14用于接收無 線信號并將信號轉(zhuǎn)換為中繼到處理器11的數(shù)字?jǐn)?shù)據(jù)的無線收發(fā)器15。類似地,藍(lán)牙或 類似的局部無線數(shù)據(jù)鏈路可包含連接到WiFi、藍(lán)牙、WLAN、 WiMax等收發(fā)器18的天 線14(或未單獨(dú)展示的另一天線),所述收發(fā)器18將所接收無線信號轉(zhuǎn)換為中繼到處理 器11的數(shù)字?jǐn)?shù)據(jù)。數(shù)據(jù)還可借助有線數(shù)據(jù)鏈路(例如,火線、USB、串行(例如,RS-232) 或以太網(wǎng)數(shù)據(jù)鏈路)傳輸?shù)揭苿邮殖謾C(jī)IO或從移動手持機(jī)IO傳輸。舉例來說,數(shù)據(jù)可 通過耦合到火線調(diào)制解調(diào)器電路20的火線數(shù)據(jù)連接器19的方式傳輸,所述火線調(diào)制解 調(diào)器電路20將從連接器19接收的數(shù)據(jù)轉(zhuǎn)換為中繼到處理器11的數(shù)字?jǐn)?shù)據(jù)。如此項(xiàng)技 術(shù)中眾所周知,其它有線數(shù)據(jù)鏈路將涉及適于特定數(shù)據(jù)鏈路的類似電路。值得注意的是, 移動手持機(jī)10內(nèi)的數(shù)據(jù)輸入和輸出裝置中的任一者可由客戶端進(jìn)程102作為服務(wù)器進(jìn) 程存取以便實(shí)現(xiàn)數(shù)據(jù)通信功能。
可通過處理器11執(zhí)行經(jīng)配置以實(shí)施所描述方法中的一者或一者以上的軟件指令來 實(shí)施各個方面。此類軟件指令可存儲在存儲器12中作為裝置的操作系統(tǒng)、由操作系統(tǒng) 實(shí)施的一系列API,或作為實(shí)施實(shí)施例方法的經(jīng)編譯軟件。此外,軟件指令可存儲在任 何形式的有形處理器可讀存儲器上,其中包含隨機(jī)存取存儲器2和12模塊,例如系 統(tǒng)內(nèi)的存儲器芯片2和12,或外部存儲器芯片,例如USB可連接的外部存儲器(例如, "快閃驅(qū)動器");只讀存儲器4;硬盤存儲器裝置;軟盤;以及壓縮光盤。
所屬領(lǐng)域的技術(shù)人員將了解,結(jié)合本文揭示的實(shí)施例描述的各種說明性邏輯區(qū)塊、模塊、電路和算法步驟可實(shí)施為電子硬件、計(jì)算機(jī)軟件或兩者的組合。為了清楚地說明 硬件與軟件的這種可交換性,上文已大體上依照各種說明性組件、區(qū)塊、模塊、電路和 步驟的功能性而描述了所述各種說明性組件、區(qū)塊、模塊、電路和步驟。此功能性實(shí)施 為硬件還是軟件取決于特定應(yīng)用和強(qiáng)加于整個系統(tǒng)的設(shè)計(jì)約束。熟練的技術(shù)人員可針對 每一特定應(yīng)用以不同方式實(shí)施所描述的功能性,但這些實(shí)施方案決策不應(yīng)解釋為導(dǎo)致與 本發(fā)明范圍的偏離。
結(jié)合本文所揭示的方面而描述的方法或算法的步驟可直接用硬件、由處理器執(zhí)行的 軟件模塊或所述兩者的組合來實(shí)施。軟件模塊可駐存在處理器可讀存儲器中,所述處理 器可讀存儲器可以是RAM存儲器、快閃存儲器、ROM存儲器、EPROM存儲器、EEPROM 存儲器、寄存器、硬盤、可移除式磁盤、CD-ROM或此項(xiàng)技術(shù)中已知的任何其它形式的 存儲媒體中的任一者。示范性存儲媒體耦合到處理器,使得處理器可從存儲媒體讀取信 息并向存儲媒體寫入信息。在替代方案中,存儲媒體可與處理器成一體式。處理器和存 儲媒體可駐存在ASIC中。ASIC可駐存在用戶終端中。在替代方案中,處理器和存儲媒 體可作為離散組件而駐存在用戶終端中。另外,在一些方面中,方法或算法的步驟和/ 或動作可作為代碼和/或指令的一者或任何組合或集合而駐存在機(jī)器可讀媒體和/或計(jì)算 機(jī)可讀媒體(其可并入到計(jì)算機(jī)程序產(chǎn)品中)上。
各個方面提供優(yōu)于現(xiàn)有技術(shù)的若干優(yōu)點(diǎn)。實(shí)施方案使得能夠以單一復(fù)制在調(diào)用(即, 客戶端)進(jìn)程與被調(diào)用(即,服務(wù)器)進(jìn)程之間移動輸入和輸出數(shù)據(jù),而不引起先前系 統(tǒng)中的限制、復(fù)雜性和額外開銷。舉例來說,在當(dāng)前實(shí)施方案中,服務(wù)器進(jìn)程不需要預(yù) 測數(shù)據(jù)輸入的大小和/或位置。此外,在返回到調(diào)用進(jìn)程之后,服務(wù)器進(jìn)程不需要保留輸 出數(shù)據(jù)的復(fù)本。并且,服務(wù)器進(jìn)程不需要具有充足的存儲器來同時(shí)將所有輸入或輸出自 變量保持在存儲器中。對于較大組函數(shù),各個方面將微內(nèi)核結(jié)構(gòu)的數(shù)據(jù)移動額外開銷減 少到零,因?yàn)檫M(jìn)程間復(fù)制可使在遠(yuǎn)程函數(shù)中隱含的復(fù)制重疊。舉例來說,當(dāng)從數(shù)據(jù)區(qū)塊 讀取時(shí),到客戶端進(jìn)程中的復(fù)制可將存儲器從文件系統(tǒng)高速緩沖存儲器移動到客戶端進(jìn) 程緩沖器。由于遠(yuǎn)程"讀取"函數(shù)隱含此復(fù)制,所以即使當(dāng)調(diào)用者駐存在相同進(jìn)程中時(shí) 也將要求所述復(fù)制。
提供對各個方面/實(shí)施方案的先前描述以使所屬領(lǐng)域的技術(shù)人員能夠制作或使用本 發(fā)明。所屬領(lǐng)域的技術(shù)人員將易于了解對于這些方面/實(shí)施方案的各種修改,且本文定義 的一般原理可在不偏離本發(fā)明精神或范圍的情況下應(yīng)用于其它方面/實(shí)施方案。因此,不 希望本發(fā)明限于本文展示的方面/實(shí)施方案,而是權(quán)利要求書應(yīng)符合與本文揭示的原理和 新穎特征一致的最廣泛范圍。
權(quán)利要求
1. 一種用于在具有內(nèi)核的存儲器保護(hù)結(jié)構(gòu)中實(shí)現(xiàn)數(shù)據(jù)的進(jìn)程間傳送的方法,其包括在所述內(nèi)核中通過第一存儲器域內(nèi)的客戶端進(jìn)程請求調(diào)用第二存儲器域中的對象來執(zhí)行系統(tǒng)調(diào)用,所述系統(tǒng)調(diào)用識別所述第一存儲器域中含有輸入數(shù)據(jù)的客戶端輸入緩沖器和所述第一存儲器域中輸出數(shù)據(jù)將被復(fù)制到其中的客戶端輸出緩沖器;在所述內(nèi)核中將所述第二存儲器域識別為所述對象的位置;通知所述第二存儲器域中的服務(wù)器進(jìn)程所述調(diào)用請求;在所述內(nèi)核中通過所述服務(wù)器進(jìn)程執(zhí)行對于輸入數(shù)據(jù)的輸入請求,所述輸入請求識別所述第二存儲器域中用于接收所述輸入數(shù)據(jù)的服務(wù)器輸入緩沖器;將輸入數(shù)據(jù)直接從所述第一存儲器域中的所述客戶端輸入緩沖器復(fù)制到所述第二存儲器域中的所述服務(wù)器輸入緩沖器中;在所述內(nèi)核中執(zhí)行從所述第二存儲器域復(fù)制輸出數(shù)據(jù)的輸出請求,所述輸出請求識別含有所述輸出數(shù)據(jù)的服務(wù)器輸出緩沖器;以及將所述輸出數(shù)據(jù)直接從所述第二存儲器域中的所述服務(wù)器輸出緩沖器復(fù)制到所述第一存儲器域中的所述客戶端輸入緩沖器中。
2. 根據(jù)權(quán)利要求1所述的方法,其中由第一存儲器位置內(nèi)的客戶端代理產(chǎn)生所述系統(tǒng) 調(diào)用,且由第二存儲器位置內(nèi)的服務(wù)器代理產(chǎn)生所述輸入請求和所述輸出請求。
3. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括在通知所述服務(wù)器進(jìn)程所述調(diào)用請求之 前將所述輸入數(shù)據(jù)的至少一部分復(fù)制到所述第二存儲器域中。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述系統(tǒng)調(diào)用包含授權(quán)所述對象調(diào)用另一對象的 輸入?yún)?shù),或使調(diào)用另一對象的權(quán)限授權(quán)返回到所述客戶端進(jìn)程的輸出參數(shù)。
5. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包括在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸入緩沖器的可讀存儲 器地址的請求;以及在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸出緩沖器的可寫存儲 器地址的請求,其中所述內(nèi)核在檢驗(yàn)所述服務(wù)器進(jìn)程具有對由所述客戶端進(jìn)程指定的存儲器的 適當(dāng)種類的存取權(quán)時(shí)滿足所述請求。
6. —種用于在具有內(nèi)核的存儲器保護(hù)結(jié)構(gòu)中實(shí)現(xiàn)數(shù)據(jù)的進(jìn)程間傳送的方法,其包括在所述內(nèi)核中通過客戶端進(jìn)程執(zhí)行系統(tǒng)調(diào)用,所述系統(tǒng)調(diào)用請求調(diào)用服務(wù)器進(jìn)程 中的對象,且識別含有輸入數(shù)據(jù)的輸入緩沖器和輸出數(shù)據(jù)將被復(fù)制到其中的輸出緩 沖器的存儲器位置;引導(dǎo)存儲器管理單元授予所述服務(wù)器進(jìn)程讀取所述輸入緩沖器和向所述輸出緩沖器進(jìn)行寫入的權(quán)限;通知所述服務(wù)器進(jìn)程所述調(diào)用請求; 告知所述服務(wù)器進(jìn)程所述所識別的存儲器位置; 在所述內(nèi)核處從所述服務(wù)器進(jìn)程接收所述對象已被調(diào)用的指示; 引導(dǎo)所述存儲器管理單元取消服務(wù)器進(jìn)程對所述所識別的存儲器位置讀取和寫入數(shù)據(jù)的權(quán)限;以及將對執(zhí)行的控制返回到所述客戶端進(jìn)程。
7. —種與存儲器保護(hù)結(jié)構(gòu)一起操作的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括存儲器;處理器,其耦合到所述存儲器且實(shí)施包含內(nèi)核進(jìn)程、客戶端進(jìn)程和服務(wù)器進(jìn)程的 處理器可執(zhí)行指令,其中所述客戶端進(jìn)程具有限于第一存儲器域的存儲器讀取和寫 入存取權(quán),所述服務(wù)器進(jìn)程具有限于第二存儲器域的存儲器讀取和寫入存取權(quán),且 所述內(nèi)核進(jìn)程具有對所述第一和第二存儲器域以及內(nèi)核域的存儲器讀取寫入存取 權(quán),其中所述處理器配置有用以執(zhí)行包括以下各項(xiàng)的步驟的軟件指令-在所述內(nèi)核中通過第一存儲器域內(nèi)的客戶端進(jìn)程請求調(diào)用第二存儲器域中的 對象來執(zhí)行系統(tǒng)調(diào)用,所述系統(tǒng)調(diào)用識別所述第一存儲器域中含有輸入數(shù)據(jù)的客 戶端輸入緩沖器和所述第一存儲器域中輸出數(shù)據(jù)將被復(fù)制到其中的客戶端輸出 緩沖器;在所述內(nèi)核中將所述第二存儲器域識別為所述對象的位置; 通知所述第二存儲器域中的服務(wù)器進(jìn)程所述調(diào)用請求;在所述內(nèi)核中通過所述服務(wù)器進(jìn)程執(zhí)行對于輸入數(shù)據(jù)的輸入請求,所述輸入請求識別所述第二存儲器域中用于接收所述輸入數(shù)據(jù)的服務(wù)器輸入緩沖器;將輸入數(shù)據(jù)直接從所述第一存儲器域中的所述客戶端輸入緩沖器復(fù)制到所述 第二存儲器域中的所述服務(wù)器輸入緩沖器中;在所述內(nèi)核中執(zhí)行從所述第二存儲器域復(fù)制輸出數(shù)據(jù)的輸出請求,所述輸出請 求識別含有所述輸出數(shù)據(jù)的服務(wù)器輸出緩沖器;以及將所述輸出數(shù)據(jù)直接從所述第二存儲器域中的所述服務(wù)器輸出緩沖器復(fù)制到 所述第一存儲器域中的所述客戶端輸入緩沖器中。
8. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中所述處理器配置有軟件指令,使得由第一 存儲器位置內(nèi)的客戶端代理產(chǎn)生所述系統(tǒng)調(diào)用,且由第二存儲器位置內(nèi)的服務(wù)器代 理產(chǎn)生所述輸入請求和所述輸出請求。
9. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中所述處理器配置有用以進(jìn)一步執(zhí)行包括以 下各項(xiàng)的步驟的軟件指令在通知所述服務(wù)器進(jìn)程所述調(diào)用請求之前將所述輸入數(shù) 據(jù)的至少一部分復(fù)制到所述第二存儲器域中。
10. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中所述處理器配置有軟件指令,使得所述系 統(tǒng)調(diào)用包含所述對象調(diào)用另一對象的輸入?yún)?shù)的授權(quán),或恢復(fù)所述客戶端進(jìn)程調(diào)用 另一對象的輸出參數(shù)的授權(quán)。
11. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中所述處理器進(jìn)一步配置有用以執(zhí)行包括以 下各項(xiàng)的步驟的軟件指令在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸入緩沖器的可讀存儲 器地址的請求;以及在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸出緩沖器的可寫存儲 器地址的請求,其中所述內(nèi)核在檢驗(yàn)所述服務(wù)器進(jìn)程具有對由所述客戶端進(jìn)程指定的存儲器的 適當(dāng)種類的存取權(quán)時(shí)滿足所述請求。
12. —種與存儲器保護(hù)結(jié)構(gòu)一起操作的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括-存儲器;處理器,其耦合到所述存儲器且實(shí)施包含內(nèi)核進(jìn)程、客戶端進(jìn)程和服務(wù)器進(jìn)程的 處理器可執(zhí)行指令,其中所述客戶端進(jìn)程具有限于第一存儲器域的存儲器讀取和寫 入存取權(quán),所述服務(wù)器進(jìn)程具有限于第二存儲器域的存儲器讀取和寫入存取權(quán),且 所述內(nèi)核進(jìn)程具有對所述第一和第二存儲器域以及內(nèi)核域的存儲器讀取寫入存取 權(quán),其中所述處理器配置有用以執(zhí)行包括以下各項(xiàng)的步驟的軟件指令在所述內(nèi)核中通過客戶端進(jìn)程執(zhí)行系統(tǒng)調(diào)用,所述系統(tǒng)調(diào)用請求調(diào)用服務(wù)器進(jìn)程中的對象,且識別含有輸入數(shù)據(jù)的輸入緩沖器和輸出數(shù)據(jù)將被復(fù)制到其中的輸出緩沖器的存儲器位置;引導(dǎo)存儲器管理單元授予所述服務(wù)器進(jìn)程讀取所述輸入緩沖器和向所述輸出緩沖器進(jìn)行寫入的權(quán)限;通知所述服務(wù)器進(jìn)程所述調(diào)用請求; 告知所述服務(wù)器進(jìn)程所述所識別的存儲器位置; 在所述內(nèi)核處從所述服務(wù)器進(jìn)程接收所述對象已被調(diào)用的指示; 引導(dǎo)所述存儲器管理單元取消服務(wù)器進(jìn)程對所述所識別的存儲器位置讀取和寫入數(shù)據(jù)的權(quán)限;以及將對執(zhí)行的控制返回到所述客戶端進(jìn)程。
13. —種與存儲器保護(hù)結(jié)構(gòu)一起操作的移動手持機(jī),計(jì)算機(jī)系統(tǒng)包括 存儲器;處理器,其耦合到所述存儲器且實(shí)施包含內(nèi)核進(jìn)程、客戶端進(jìn)程和服務(wù)器進(jìn)程的 處理器可執(zhí)行指令,其中所述客戶端進(jìn)程具有限于第一存儲器域的存儲器讀取和寫 入存取權(quán),所述服務(wù)器進(jìn)程具有限于第二存儲器域的存儲器讀取和寫入存取權(quán),且 所述內(nèi)核進(jìn)程具有對所述第一和第二存儲器域以及內(nèi)核域的存儲器讀取寫入存取 權(quán),其中所述處理器配置有用以執(zhí)行包括以下各項(xiàng)的步驟的軟件指令在所述內(nèi)核中通過第一存儲器域內(nèi)的客戶端進(jìn)程請求調(diào)用第二存儲器域中的 對象來執(zhí)行系統(tǒng)調(diào)用,所述系統(tǒng)調(diào)用識別所述第一存儲器域中含有輸入數(shù)據(jù)的客 戶端輸入緩沖器和所述第一存儲器域中輸出數(shù)據(jù)將被復(fù)制到其中的客戶端輸出 緩沖器;在所述內(nèi)核中將所述第二存儲器域識別為所述對象的位置;通知所述第二存儲器域中的服務(wù)器進(jìn)程所述調(diào)用請求;在所述內(nèi)核中通過所述服務(wù)器進(jìn)程執(zhí)行對于輸入數(shù)據(jù)的輸入請求,所述輸入請 求識別所述第二存儲器域中用于接收所述輸入數(shù)據(jù)的服務(wù)器輸入緩沖器;將輸入數(shù)據(jù)直接從所述第一存儲器域中的所述客戶端輸入緩沖器復(fù)制到所述 第二存儲器域中的所述服務(wù)器輸入緩沖器中;在所述內(nèi)核中執(zhí)行從所述第二存儲器域復(fù)制輸出數(shù)據(jù)的輸出請求,所述輸出請 求識別含有所述輸出數(shù)據(jù)的服務(wù)器輸出緩沖器;以及將所述輸出數(shù)據(jù)直接從所述第二存儲器域中的所述服務(wù)器輸出緩沖器復(fù)制到 所述第一存儲器域中的所述客戶端輸入緩沖器中。
14. 根據(jù)權(quán)利要求13所述的移動手持機(jī),其中所述處理器配置有軟件指令,使得由第 一存儲器位置內(nèi)的客戶端代理產(chǎn)生所述系統(tǒng)調(diào)用,且由第二存儲器位置內(nèi)的服務(wù)器 代理產(chǎn)生所述輸入請求和所述輸出請求。
15. 根據(jù)權(quán)利要求13所述的移動手持機(jī),其中所述處理器配置有用以進(jìn)一步執(zhí)行包括 以下各項(xiàng)的步驟的軟件指令在通知所述服務(wù)器進(jìn)程所述調(diào)用請求之前將所述輸入 數(shù)據(jù)的至少一部分復(fù)制到所述第二存儲器域中。
16. 根據(jù)權(quán)利要求13所述的移動手持機(jī),其中所述處理器配置有軟件指令,使得所述 系統(tǒng)調(diào)用包含所述對象調(diào)用另一對象的輸入?yún)?shù)的授權(quán),或恢復(fù)所述客戶端進(jìn)程調(diào) 用另一對象的輸出參數(shù)的授權(quán)。
17. 根據(jù)權(quán)利要求13所述的移動手持機(jī),其中所述處理器配置有用以執(zhí)行包括以下各 項(xiàng)的步驟的軟件指令在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸入緩沖器的可讀存儲 器地址的請求;以及在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸出緩沖器的可寫存儲 器地址的請求,其中所述內(nèi)核在檢驗(yàn)所述服務(wù)器進(jìn)程具有對由所述客戶端進(jìn)程指定的存儲器的 適當(dāng)種類的存取權(quán)時(shí)滿足所述請求。
18. —種與存儲器保護(hù)結(jié)構(gòu)一起操作的移動手持機(jī),計(jì)算機(jī)系統(tǒng)包括存儲器;處理器,其耦合到所述存儲器且實(shí)施包含內(nèi)核進(jìn)程、客戶端進(jìn)程和服務(wù)器進(jìn)程的 處理器可執(zhí)行指令,其中所述客戶端進(jìn)程具有限于第一存儲器域的存儲器讀取和寫 入存取權(quán),所述服務(wù)器進(jìn)程具有限于第二存儲器域的存儲器讀取和寫入存取權(quán),且 所述內(nèi)核進(jìn)程具有對所述第一和第二存儲器域以及內(nèi)核域的存儲器讀取寫入存取 權(quán),其中所述處理器配置有用以執(zhí)行包括以下各項(xiàng)的步驟的軟件指令.-在所述內(nèi)核中通過客戶端進(jìn)程執(zhí)行系統(tǒng)調(diào)用,所述系統(tǒng)調(diào)用請求調(diào)用服務(wù)器進(jìn)程中的對象,且識別含有輸入數(shù)據(jù)的輸入緩沖器和輸出數(shù)據(jù)將被復(fù)制到其中的輸出緩沖器的存儲器位置;引導(dǎo)存儲器管理單元授予所述服務(wù)器進(jìn)程讀取所述輸入緩沖器和向所述輸出緩沖器進(jìn)行寫入的權(quán)限;通知所述服務(wù)器進(jìn)程所述調(diào)用請求; 告知所述服務(wù)器進(jìn)程所述所識別的存儲器位置; 在所述內(nèi)核處從所述服務(wù)器進(jìn)程接收所述對象已被調(diào)用的指示; 引導(dǎo)所述存儲器管理單元取消服務(wù)器進(jìn)程對所述所識別的存儲器位置讀取和寫入數(shù)據(jù)的權(quán)限;以及將對執(zhí)行的控制返回到所述客戶端進(jìn)程。
19. 一種有形處理器可讀存儲器,其上存儲有處理器可執(zhí)行指令,所述處理器可執(zhí)行指 令經(jīng)配置以促使耦合到存儲器的處理器執(zhí)行包括以下各項(xiàng)的步驟在內(nèi)核中通過第一存儲器域內(nèi)的客戶端進(jìn)程請求調(diào)用第二存儲器域中的對象來 執(zhí)行系統(tǒng)調(diào)用,所述系統(tǒng)調(diào)用識別所述第一存儲器域中含有輸入數(shù)據(jù)的客戶端輸入 緩沖器和所述第一存儲器域中輸出數(shù)據(jù)將被復(fù)制到其中的客戶端輸出緩沖器;在所述內(nèi)核中將所述第二存儲器域識別為所述對象的位置;通知所述第二存儲器域中的服務(wù)器進(jìn)程所述調(diào)用請求;在所述內(nèi)核中通過所述服務(wù)器進(jìn)程執(zhí)行對于輸入數(shù)據(jù)的輸入請求,所述輸入請求 識別所述第二存儲器域中用于接收所述輸入數(shù)據(jù)的服務(wù)器輸入緩沖器;將輸入數(shù)據(jù)直接從所述第一存儲器域中的所述客戶端輸入緩沖器復(fù)制到所述第 二存儲器域中的所述服務(wù)器輸入緩沖器中;在所述內(nèi)核中執(zhí)行從所述第二存儲器域復(fù)制輸出數(shù)據(jù)的輸出請求,所述輸出請求 識別含有所述輸出數(shù)據(jù)的服務(wù)器輸出緩沖器;以及將所述輸出數(shù)據(jù)直接從所述第二存儲器域中的所述服務(wù)器輸出緩沖器復(fù)制到所 述第一存儲器域中的所述客戶端輸入緩沖器中。
20. 根據(jù)權(quán)利要求19所述的有形處理器可讀存儲器,其中所述所存儲的處理器可執(zhí)行 指令進(jìn)一步經(jīng)配置以使得由第一存儲器位置內(nèi)的客戶端代理產(chǎn)生所述系統(tǒng)調(diào)用,且 由第二存儲器位置內(nèi)的服務(wù)器代理產(chǎn)生所述輸入請求和所述輸出請求。
21. 根據(jù)權(quán)利要求19所述的有形處理器可讀存儲器,其中所述所存儲的處理器可執(zhí)行 指令進(jìn)一步經(jīng)配置以促使所述處理器執(zhí)行進(jìn)一步包括以下各項(xiàng)的步驟在通知所述 服務(wù)器進(jìn)程所述調(diào)用請求之前將所述輸入數(shù)據(jù)的至少一部分復(fù)制到所述第二存儲 器域中。
22. 根據(jù)權(quán)利要求19所述的有形處理器可讀存儲器,其中所述所存儲的處理器可執(zhí)行 指令經(jīng)配置以使得所述系統(tǒng)調(diào)用包含所述對象調(diào)用另一對象的輸入?yún)?shù)的授權(quán),或 恢復(fù)所述客戶端進(jìn)程調(diào)用另一對象的輸出參數(shù)的授權(quán)。
23. 根據(jù)權(quán)利要求19所述的有形處理器可讀存儲器,其中所述所存儲的處理器可執(zhí)行 指令進(jìn)一步經(jīng)配置以促使所述處理器執(zhí)行進(jìn)一步包括以下各項(xiàng)的步驟在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸入緩沖器的可讀存儲 器地址的請求;以及在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸出緩沖器的可寫存儲 器地址的請求,其中所述內(nèi)核在檢驗(yàn)所述服務(wù)器進(jìn)程具有對由所述客戶端進(jìn)程指定的存儲器的 適當(dāng)種類的存取權(quán)時(shí)滿足所述請求。
24. —種有形處理器可讀存儲器,其上存儲有處理器可執(zhí)行指令,所述處理器可執(zhí)行指 令經(jīng)配置以促使耦合到存儲器的處理器執(zhí)行包括以下各項(xiàng)的步驟在內(nèi)核中通過客戶端進(jìn)程執(zhí)行系統(tǒng)調(diào)用,所述系統(tǒng)調(diào)用請求調(diào)用服務(wù)器進(jìn)程中的 對象,且識別含有輸入數(shù)據(jù)的輸入緩沖器和輸出數(shù)據(jù)將被復(fù)制到其中的輸出緩沖器的存儲器位置;引導(dǎo)存儲器管理單元授予所述服務(wù)器進(jìn)程讀取所述輸入緩沖器和向所述輸出緩沖器進(jìn)行寫入的權(quán)限;通知所述服務(wù)器進(jìn)程所述調(diào)用請求; 告知所述服務(wù)器進(jìn)程所述所識別的存儲器位置; 在所述內(nèi)核處從所述服務(wù)器進(jìn)程接收所述對象已被調(diào)用的指示; 引導(dǎo)所述存儲器管理單元取消服務(wù)器進(jìn)程對所述所識別的存儲器位置讀取和寫入數(shù)據(jù)的權(quán)限;以及將對執(zhí)行的控制返回到所述客戶端進(jìn)程。
25. —種系統(tǒng),其包括內(nèi)核裝置,其用于控制所述系統(tǒng)的中央操作; 客戶端進(jìn)程,其在第一存儲器域內(nèi); 服務(wù)器進(jìn)程,其在第二存儲器域內(nèi);用于通過所述客戶端進(jìn)程裝置執(zhí)行系統(tǒng)調(diào)用的裝置,所述系統(tǒng)調(diào)用請求調(diào)用所述 服務(wù)器進(jìn)程中的對象,且識別所述第一存儲器域中含有輸入數(shù)據(jù)的客戶端輸入緩沖 器和所述第一存儲器域中輸出數(shù)據(jù)將被復(fù)制到其中的客戶端輸出緩沖器; 用于在所述內(nèi)核中將所述第二存儲器域識別為所述對象的位置的裝置; 用于通知所述第二存儲器域中的所述服務(wù)器進(jìn)程所述調(diào)用請求的裝置; 用于在所述內(nèi)核中通過所述服務(wù)器進(jìn)程執(zhí)行對于輸入數(shù)據(jù)的輸入請求的裝置,所 述輸入請求識別所述第二存儲器域中用于接收所述輸入數(shù)據(jù)的服務(wù)器輸入緩沖器; 用于將輸入數(shù)據(jù)直接從所述第一存儲器域中的所述客戶端輸入緩沖器復(fù)制到所 述第二存儲器域中的所述服務(wù)器輸入緩沖器中的裝置;用于接收從所述第二存儲器域復(fù)制輸出數(shù)據(jù)的輸出請求的裝置,所述輸出請求識 別含有所述輸出數(shù)據(jù)的服務(wù)器輸出緩沖器;以及用于將所述輸出數(shù)據(jù)直接從第二存儲器域中的所述服務(wù)器輸出緩沖器復(fù)制到所 述第一存儲器域中的所述客戶端輸入緩沖器中的裝置。
26. 根據(jù)權(quán)利要求25所述的系統(tǒng),其中由第一存儲器位置內(nèi)的客戶端代理產(chǎn)生所述系 統(tǒng)調(diào)用,且由第二存儲器位置內(nèi)的服務(wù)器代理產(chǎn)生所述輸入請求和所述輸出請求。
27. 根據(jù)權(quán)利要求25所述的系統(tǒng),其進(jìn)一步包括在通知所述服務(wù)器進(jìn)程所述調(diào)用請求 之前將所述輸入數(shù)據(jù)的至少一部分復(fù)制到所述第二存儲器域中。
28. 根據(jù)權(quán)利要求25所述的系統(tǒng),其中所述系統(tǒng)調(diào)用包含所述對象調(diào)用另一對象的輸 入?yún)?shù)的授權(quán),或恢復(fù)所述客戶端進(jìn)程調(diào)用另一對象的輸出參數(shù)的授權(quán)。
29. 根據(jù)權(quán)利要求25所述的系統(tǒng),其進(jìn)一步包括用于在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸入緩沖器的可讀 存儲器地址的請求的裝置;以及用于在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸出緩沖器的可寫 存儲器地址的請求的裝置,其中所述內(nèi)核在檢驗(yàn)所述服務(wù)器進(jìn)程具有對由所述客戶端進(jìn)程指定的存儲器的 適當(dāng)種類的存取權(quán)時(shí)滿足所述請求。
30. —種系統(tǒng),其包括內(nèi)核裝置,其用于控制所述系統(tǒng)的中央操作; 客戶端進(jìn)程,其在第一存儲器域內(nèi); 服務(wù)器進(jìn)程,其在第二存儲器域內(nèi);用于通過客戶端進(jìn)程在所述內(nèi)核中執(zhí)行系統(tǒng)調(diào)用的裝置,所述系統(tǒng)調(diào)用請求調(diào)用服務(wù)器進(jìn)程中的對象,且識別含有輸入數(shù)據(jù)的輸入緩沖器和輸出數(shù)據(jù)將被復(fù)制到其中的輸出緩沖器的存儲器位置;用于引導(dǎo)存儲器管理單元授予所述服務(wù)器進(jìn)程讀取所述輸入緩沖器和向所述輸出緩沖器進(jìn)行寫入的權(quán)限的裝置;用于通知所述服務(wù)器進(jìn)程所述調(diào)用請求的裝置; 用于告知所述服務(wù)器進(jìn)程所述所識別的存儲器位置的裝置; 用于在所述內(nèi)核處從所述服務(wù)器進(jìn)程接收所述對象已被調(diào)用的指示的裝置; 用于引導(dǎo)所述存儲器管理單元取消服務(wù)器進(jìn)程對所述所識別的存儲器位置讀取和寫入數(shù)據(jù)的權(quán)限的裝置;以及用于將對執(zhí)行的控制返回到所述客戶端進(jìn)程的裝置。
31. —種計(jì)算機(jī)程序產(chǎn)品,其包括計(jì)算機(jī)可讀媒體,其包括用于促使計(jì)算機(jī)在內(nèi)核中通過第一存儲器域內(nèi)的客戶端進(jìn)程請求調(diào)用第二存 儲器域中的對象來執(zhí)行系統(tǒng)調(diào)用的至少一個指令,所述系統(tǒng)調(diào)用識別所述第一存 儲器域中含有輸入數(shù)據(jù)的客戶端輸入緩沖器和所述第一存儲器域中輸出數(shù)據(jù)將 被復(fù)制到其中的客戶端輸出緩沖器;用于促使計(jì)算機(jī)在所述內(nèi)核中將所述第二存儲器域識別為所述對象的位置的 至少一個指令;用于促使計(jì)算機(jī)通知所述第二存儲器域中的服務(wù)器進(jìn)程所述調(diào)用請求的至少 一個指令;用于促使計(jì)算機(jī)在所述內(nèi)核中通過所述服務(wù)器進(jìn)程執(zhí)行對于輸入數(shù)據(jù)的輸入 請求的至少一個指令,所述輸入請求識別所述第二存儲器域中用于接收所述輸入 數(shù)據(jù)的服務(wù)器輸入緩沖器;用于促使計(jì)算機(jī)將輸入數(shù)據(jù)直接從所述第一存儲器域中的所述客戶端輸入緩 沖器復(fù)制到所述第二存儲器域中的所述服務(wù)器輸入緩沖器中的至少一個指令;用于促使計(jì)算機(jī)在所述內(nèi)核中執(zhí)行從所述第二存儲器域復(fù)制輸出數(shù)據(jù)的輸出 請求的至少一個指令,所述輸出請求識別含有所述輸出數(shù)據(jù)的服務(wù)器輸出緩沖 器;以及用于促使計(jì)算機(jī)將所述輸出數(shù)據(jù)直接從所述第二存儲器域中的所述服務(wù)器輸 出緩沖器復(fù)制到所述第一存儲器域中的所述客戶端輸入緩沖器中的至少一個指 令。
32. 根據(jù)權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中所述計(jì)算機(jī)可讀媒體進(jìn)一步包括用于促使計(jì)算機(jī)在第一存儲器位置內(nèi)的客戶端代理中產(chǎn)生所述系統(tǒng)調(diào)用的至少 一個指令;以及用于促使計(jì)算機(jī)通過第二存儲器位置內(nèi)的服務(wù)器代理產(chǎn)生所述輸入請求和所述 輸出請求的至少一個指令。
33. 根據(jù)權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中所述計(jì)算機(jī)可讀媒體進(jìn)一步包括用于促使計(jì)算機(jī)在通知所述服務(wù)器進(jìn)程所述調(diào)用請求之前將所述輸入數(shù)據(jù)的至 少一部分復(fù)制到所述第二存儲器域中的至少一個指令。
34. 根據(jù)權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中所述計(jì)算機(jī)可讀媒體進(jìn)一步包括用于促使計(jì)算機(jī)產(chǎn)生所述系統(tǒng)調(diào)用的至少一個指令,所述系統(tǒng)調(diào)用包含授權(quán)所述 對象調(diào)用另一對象的輸入?yún)?shù),或使調(diào)用另一對象的權(quán)限授權(quán)返回到所述客戶端進(jìn) 程的輸出參數(shù)。
35. 根據(jù)權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中所述計(jì)算機(jī)可讀媒體進(jìn)一步包括-用于促使計(jì)算機(jī)在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸入緩 沖器的可讀存儲器地址的請求的至少一個指令;以及用于促使計(jì)算機(jī)在所述內(nèi)核中執(zhí)行向所述服務(wù)器進(jìn)程提供用于直接存取輸出緩 沖器的可寫存儲器地址的請求的至少一個指令,其中所述內(nèi)核在檢驗(yàn)所述服務(wù)器進(jìn)程具有對由所述客戶端進(jìn)程指定的存儲器的 適當(dāng)種類的存取權(quán)時(shí)滿足所述請求。
36. —種計(jì)算機(jī)程序產(chǎn)品,其包括計(jì)算機(jī)可讀媒體,其包括用于促使計(jì)算機(jī)通過客戶端進(jìn)程在內(nèi)核中執(zhí)行系統(tǒng)調(diào)用的至少一個指令,所述 系統(tǒng)調(diào)用請求調(diào)用服務(wù)器進(jìn)程中的對象,且識別含有輸入數(shù)據(jù)的輸入緩沖器和輸 出數(shù)據(jù)將被復(fù)制到其中的輸出緩沖器的存儲器位置;用于促使計(jì)算機(jī)引導(dǎo)存儲器管理單元授予所述服務(wù)器進(jìn)程讀取所述輸入緩沖 器和向所述輸出緩沖器進(jìn)行寫入的權(quán)限的至少一個指令;用于促使計(jì)算機(jī)通知所述服務(wù)器進(jìn)程所述調(diào)用請求的至少一個指令;用于促使計(jì)算機(jī)告知所述服務(wù)器進(jìn)程所述所識別的存儲器位置的至少一個指 令;用于促使計(jì)算機(jī)在所述內(nèi)核處從所述服務(wù)器進(jìn)程接收所述對象己被調(diào)用的指示的至少一個指令;用于促使計(jì)算機(jī)引導(dǎo)所述存儲器管理單元取消服務(wù)器進(jìn)程對所述所識別的存儲器位置讀取和寫入數(shù)據(jù)的權(quán)限的至少一個指令;以及用于促使計(jì)算機(jī)將對執(zhí)行的控制返回到所述客戶端進(jìn)程的至少一個指令。
37. —種計(jì)算機(jī)系統(tǒng),其包括內(nèi)核接口;以及內(nèi)核進(jìn)程,其與所述內(nèi)核接口通信,其中所述內(nèi)核進(jìn)程可操作以在第一保護(hù)域與 第二保護(hù)域之間直接復(fù)制數(shù)據(jù)而不進(jìn)行中間復(fù)制。
全文摘要
用于在受保護(hù)存儲器系統(tǒng)中調(diào)用遠(yuǎn)程進(jìn)程調(diào)用并促進(jìn)進(jìn)程間通信的方法、設(shè)備、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品采用通過系統(tǒng)調(diào)用支持對對象的遠(yuǎn)程調(diào)用的內(nèi)核。所述系統(tǒng)調(diào)用可包含對象識別符以及指向輸入和輸出緩沖器的一組指針。所述內(nèi)核將所指定的對象定位在單獨(dú)的服務(wù)器進(jìn)程域中并喚醒所述服務(wù)器域內(nèi)的服務(wù)器線程以調(diào)用所述對象。使用所提供的存儲器指針,所述內(nèi)核可在單一步驟中跨越保護(hù)域復(fù)制輸入和輸出數(shù)據(jù),而無需將數(shù)據(jù)復(fù)制到中間緩沖器中。這消除了常規(guī)受保護(hù)存儲器系統(tǒng)中所需的多個數(shù)據(jù)復(fù)制步驟的額外開銷。
文檔編號G06F9/54GK101535958SQ200780040818
公開日2009年9月16日 申請日期2007年11月29日 優(yōu)先權(quán)日2006年11月29日
發(fā)明者克里斯托弗·S·厄克特, 布萊恩·H·凱利, 拉梅什·錢德拉塞卡爾, 羅伯特·G·沃克 申請人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
桦甸市| 辽中县| 墨竹工卡县| 新泰市| 东台市| 长阳| 平定县| 纳雍县| 罗定市| 永济市| 通山县| 南汇区| 营山县| 武邑县| 苏尼特右旗| 民勤县| 黑龙江省| 酒泉市| 通州区| 常熟市| 大名县| 顺昌县| 许昌市| 利津县| 扎赉特旗| 东乌| 平舆县| 调兵山市| 玉林市| 台北市| 渑池县| 宣汉县| 长宁区| 公安县| 玉林市| 东至县| 洪洞县| 延庆县| 宜章县| 铜陵市| 屯留县|