用于數(shù)據(jù)通信的編程接口的制作方法
【專利摘要】在用于數(shù)據(jù)通信的編程接口的實(shí)施例中,可以從對(duì)應(yīng)于應(yīng)用的用戶模式虛擬存儲(chǔ)緩沖器分配請(qǐng)求隊(duì)列和完成隊(duì)列。該請(qǐng)求隊(duì)列和完成隊(duì)列可以被鎖定到物理存儲(chǔ)器并且之后被映射到內(nèi)核模式系統(tǒng)地址,從而使得該請(qǐng)求隊(duì)列和完成隊(duì)列可以由內(nèi)核模式執(zhí)行線程訪問(wèn)。從應(yīng)用接收請(qǐng)求以便內(nèi)核處理該請(qǐng)求隊(duì)列中的數(shù)據(jù),并且向該內(nèi)核發(fā)布系統(tǒng)調(diào)用以便內(nèi)核模式執(zhí)行線程處理該請(qǐng)求。內(nèi)核模式執(zhí)行線程之后可以處理來(lái)自該應(yīng)用的附加請(qǐng)求而無(wú)需發(fā)布附加的系統(tǒng)調(diào)用。
【專利說(shuō)明】用于數(shù)據(jù)通信的編程接口
【背景技術(shù)】 [0001]目前,連接高性能聯(lián)網(wǎng)應(yīng)用與計(jì)算設(shè)備內(nèi)核的應(yīng)用編程接口(API)不能有效地應(yīng)對(duì)聯(lián)網(wǎng)應(yīng)用的增加數(shù)據(jù)處理請(qǐng)求。例如,“Windows Socket^API (即“Winsock”)被配置成促進(jìn)由應(yīng)用發(fā)布的操作,以便向與物理網(wǎng)絡(luò)設(shè)備通信的內(nèi)核層發(fā)送數(shù)據(jù)并且從內(nèi)核層接收數(shù)據(jù)。一般地,在套接字(socket)的壽命過(guò)程期間發(fā)布多次發(fā)送和接收操作。因此,作為整體的發(fā)送和接收處理開(kāi)銷可以組成網(wǎng)絡(luò)處理的大半并且有可能組成應(yīng)用的大半。
[0002]例如在傳統(tǒng)的Winsock API中,啟動(dòng)發(fā)送和接收操作涉及做系統(tǒng)調(diào)用來(lái)將用戶模式虛擬存儲(chǔ)器鎖定到物理存儲(chǔ)器并且啟動(dòng)數(shù)據(jù)到內(nèi)核中的傳遞。之后典型地需要附加的系統(tǒng)調(diào)用來(lái)獲得傳遞的完成狀態(tài)并且將用戶模式虛擬存儲(chǔ)器從物理存儲(chǔ)器中解鎖。因此,如果應(yīng)用一次又一次地使用相同的存儲(chǔ)器來(lái)發(fā)送和接收數(shù)據(jù),那么現(xiàn)有的Winsock發(fā)送和接收API會(huì)招致多余的存儲(chǔ)器鎖定(pin)和解鎖(unpin)。
【發(fā)明內(nèi)容】
[0003]本
【發(fā)明內(nèi)容】
被提供來(lái)介紹用于數(shù)據(jù)通信的編程接口的簡(jiǎn)化概念,并且這些概念將在下文的【具體實(shí)施方式】中得到進(jìn)一步的描述和/或在附圖中被示出。本
【發(fā)明內(nèi)容】
不應(yīng)當(dāng)被看作是描述所要求保護(hù)的主題的本質(zhì)特征,也不是用來(lái)確定或限制所要求保護(hù)的主題的范圍。
[0004]本文描述了用于數(shù)據(jù)通信的編程接口。在實(shí)施例中,可以從對(duì)應(yīng)于應(yīng)用的用戶模式虛擬存儲(chǔ)緩沖器分配請(qǐng)求隊(duì)列。該請(qǐng)求隊(duì)列可以被鎖定到物理存儲(chǔ)器并且之后被映射到內(nèi)核模式系統(tǒng)地址從而使得內(nèi)核模式執(zhí)行線程可以訪問(wèn)該請(qǐng)求隊(duì)列??梢詾閮?nèi)核從應(yīng)用接收請(qǐng)求來(lái)處理該請(qǐng)求隊(duì)列中的數(shù)據(jù),并且為該內(nèi)核模式執(zhí)行線程向內(nèi)核發(fā)布(issue)系統(tǒng)調(diào)用來(lái)處理該請(qǐng)求。該內(nèi)核模式執(zhí)行線程之后可以處理來(lái)自該應(yīng)用的附加請(qǐng)求而無(wú)需發(fā)布附加的系統(tǒng)調(diào)用。例如,I/O請(qǐng)求可以是一個(gè)系統(tǒng)調(diào)用,但是不需要任何存儲(chǔ)器鎖定開(kāi)銷,并且該I/O的完成將無(wú)需任何系統(tǒng)調(diào)用開(kāi)銷而發(fā)生。可以注冊(cè)套接字來(lái)將數(shù)據(jù)請(qǐng)求從應(yīng)用提供到內(nèi)核。在實(shí)施例中,注冊(cè)套接字包含向該套接字識(shí)別完成隊(duì)列、從用戶模式虛擬存儲(chǔ)緩沖器分配請(qǐng)求隊(duì)列,以及將該請(qǐng)求隊(duì)列鎖定到物理存儲(chǔ)器。
[0005]在其它的實(shí)施例中,將用戶模式虛擬存儲(chǔ)緩沖器注冊(cè)為與應(yīng)用對(duì)應(yīng)。從該用戶模式虛擬存儲(chǔ)緩沖器分配完成隊(duì)列并將該完成隊(duì)列鎖定到物理存儲(chǔ)器。之后將該完成隊(duì)列映射到內(nèi)核中的內(nèi)核模式系統(tǒng)地址。該完成隊(duì)列經(jīng)由內(nèi)核模式系統(tǒng)地址接收來(lái)自內(nèi)核模式執(zhí)行線程的完成通知,并且使得該應(yīng)用經(jīng)由用戶模式虛擬存儲(chǔ)緩沖器能夠訪問(wèn)該完成通知而無(wú)需任何內(nèi)核進(jìn)行用戶系統(tǒng)調(diào)用的開(kāi)銷。
【專利附圖】
【附圖說(shuō)明】
[0006]參考下列附圖來(lái)描述用于數(shù)據(jù)通信的編程接口的實(shí)施例。在附圖中使用相同的數(shù)字來(lái)標(biāo)記圖中示出的類似特征和組件,其中:
圖1圖示了一個(gè)示例計(jì)算設(shè)備,其中可以實(shí)現(xiàn)用于數(shù)據(jù)通信的編程接口的實(shí)施例。[0007]圖2圖示了根據(jù)一個(gè)或多個(gè)實(shí)施例,到內(nèi)核的數(shù)據(jù)請(qǐng)求的一個(gè)示例。
[0008]圖3圖示了根據(jù)一個(gè)或多個(gè)實(shí)施例,用于數(shù)據(jù)通信的編程接口的(多個(gè))示例方法。
[0009]圖4圖示了根據(jù)一個(gè)或多個(gè)實(shí)施例,用于數(shù)據(jù)通信的編程接口的(多個(gè))附加示例方法。
[0010]圖5圖示了可以實(shí)現(xiàn)用于數(shù)據(jù)通信的編程接口的多個(gè)實(shí)施例的一個(gè)示例設(shè)備的各種組件。
【具體實(shí)施方式】
[0011]本文描述了一種用于數(shù)據(jù)通信的編程接口??梢栽谟?jì)算設(shè)備的軟件中實(shí)現(xiàn)“通信?!眮?lái)經(jīng)由網(wǎng)絡(luò)通信數(shù)據(jù)。典型的通信棧包含其中實(shí)現(xiàn)聯(lián)網(wǎng)應(yīng)用的應(yīng)用層和其中實(shí)現(xiàn)操作系統(tǒng)內(nèi)核的內(nèi)核層。所述應(yīng)用層為應(yīng)用暴露從該通信棧的底層細(xì)節(jié)中抽象出來(lái)的接口。所述內(nèi)核層與被配置成在網(wǎng)絡(luò)上通信數(shù)據(jù)的聯(lián)網(wǎng)設(shè)備交互。
[0012]典型地,為了在網(wǎng)絡(luò)上發(fā)送數(shù)據(jù),應(yīng)用推送數(shù)據(jù)通過(guò)用戶模式應(yīng)用編程接口(API),之后聯(lián)網(wǎng)棧對(duì)該數(shù)據(jù)進(jìn)行處理來(lái)構(gòu)造(frame)用戶模式和內(nèi)核模式二者中的協(xié)議。根據(jù)本文所述,用戶模式指的是一種執(zhí)行模式,其中對(duì)諸如物理存儲(chǔ)器和I/O設(shè)備之類的系統(tǒng)資源的訪問(wèn)受到操作系統(tǒng)的保護(hù),以便在運(yùn)行于同一系統(tǒng)中的多個(gè)應(yīng)用之間提供隔離。根據(jù)本文所述,內(nèi)核模式指的是一種執(zhí)行模式,其中提供對(duì)所有系統(tǒng)資源的訪問(wèn)但是僅僅允許操作系統(tǒng)代碼的特定部分運(yùn)行在內(nèi)核模式中。該數(shù)據(jù)之后被移動(dòng)到內(nèi)核層中的諸如網(wǎng)卡(NIC)之類的聯(lián)網(wǎng)設(shè)備,該聯(lián)網(wǎng)設(shè)備促進(jìn)數(shù)據(jù)在網(wǎng)絡(luò)上的通信。NIC是一種由系統(tǒng)使用來(lái)在網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù)的硬件設(shè)備。
[0013]因此,應(yīng)當(dāng)指出的是,為了使應(yīng)用在網(wǎng)絡(luò)上通信數(shù)據(jù),該應(yīng)用必須首先將數(shù)據(jù)從應(yīng)用層傳輸?shù)絻?nèi)核層。編程接口(比如微軟公司的“Windows Socket”,即“Winsock”)被配置成連接應(yīng)用層與內(nèi)核層并且可以被用于促進(jìn)應(yīng)用層和內(nèi)核層之間的數(shù)據(jù)傳遞。
[0014]在傳統(tǒng)的Winsock API中,啟動(dòng)(initiate)發(fā)送和接收操作涉及做系統(tǒng)調(diào)用來(lái)將用戶模式虛擬存儲(chǔ)器鎖定到物理存儲(chǔ)器并且啟動(dòng)數(shù)據(jù)到內(nèi)核中的傳遞。如本文所述,“系統(tǒng)調(diào)用”指的是用于用戶模式代碼向運(yùn)行在內(nèi)核模式中的系統(tǒng)代碼發(fā)布請(qǐng)求的一種機(jī)制。這就是用戶模式應(yīng)用如何以受保護(hù)的方式獲取訪問(wèn)系統(tǒng)資源的權(quán)限并且使用系統(tǒng)資源的方式。另外,典型地使用附加的系統(tǒng)調(diào)用來(lái)得到該傳遞的完成狀態(tài)并且之后從物理存儲(chǔ)器解鎖用戶模式虛擬存儲(chǔ)器。因此,如果該應(yīng)用一次又一次地使用相同的存儲(chǔ)器來(lái)發(fā)送和接收數(shù)據(jù),那么現(xiàn)有的Winsock發(fā)送和接收API將招致多余的存儲(chǔ)器鎖定和解鎖。
[0015]對(duì)內(nèi)核的系統(tǒng)調(diào)用的高頻率通常導(dǎo)致內(nèi)核上沉重的處理負(fù)載,該內(nèi)核也許不能有效地應(yīng)對(duì)高容量的聯(lián)網(wǎng)數(shù)據(jù)處理請(qǐng)求,特別是對(duì)于聯(lián)網(wǎng)應(yīng)用的高速數(shù)據(jù)處理需求來(lái)說(shuō)更是如此。因此,通信延遲(也被稱作等待時(shí)間)通常由應(yīng)用層和內(nèi)核層之間的數(shù)據(jù)通信所導(dǎo)致。另外,聯(lián)網(wǎng)應(yīng)用在數(shù)據(jù)通信期間會(huì)經(jīng)歷抖動(dòng)、等待時(shí)間的變化。
[0016]在實(shí)施例中,描述了一種與現(xiàn)有通信棧、應(yīng)用和網(wǎng)絡(luò)協(xié)議兼容的編程接口。在使得能夠?qū)崿F(xiàn)高速數(shù)據(jù)通信方面的在先嘗試已經(jīng)嘗試修改整個(gè)通信棧。應(yīng)該理解本文描述的編程接口可以被實(shí)現(xiàn)為現(xiàn)有編程接口的修改,并且不會(huì)影響通信棧。該編程接口的實(shí)施例通過(guò)降低對(duì)內(nèi)核的系統(tǒng)調(diào)用的數(shù)量,改進(jìn)了處理器負(fù)載,縮短了網(wǎng)絡(luò)通信的等待時(shí)間,并且減少了抖動(dòng)。[0017]該編程接口將用戶模式虛擬存儲(chǔ)器到物理存儲(chǔ)器的鎖定和導(dǎo)出同數(shù)據(jù)傳遞請(qǐng)求啟動(dòng)和完成處理分離開(kāi)來(lái)。因此,用戶模式應(yīng)用只要注冊(cè)用戶模式虛擬存儲(chǔ)緩沖器一次(這可能涉及該存儲(chǔ)緩沖器到該物理存儲(chǔ)器位置的鎖定),之后就可以將所注冊(cè)的用戶模式虛擬存儲(chǔ)緩沖器用于多個(gè)數(shù)據(jù)傳遞請(qǐng)求而無(wú)需再注冊(cè)或解鎖該存儲(chǔ)緩沖器。通過(guò)將數(shù)據(jù)傳遞啟動(dòng)和完成與存儲(chǔ)器的鎖定和解鎖分離開(kāi)來(lái),該編程接口使得能夠?qū)崿F(xiàn)數(shù)據(jù)傳遞啟動(dòng)和完成處理而無(wú)需做多次系統(tǒng)調(diào)用。
[0018]在實(shí)施例中,該編程接口使用請(qǐng)求隊(duì)列來(lái)請(qǐng)求啟動(dòng)并且使用完成隊(duì)列來(lái)用于找回(retrieve)請(qǐng)求完成。該請(qǐng)求隊(duì)列和完成隊(duì)列可以從對(duì)應(yīng)于該應(yīng)用的用戶模式虛擬存儲(chǔ)緩沖器被分配并且被鎖定物理存儲(chǔ)器。之后可以將該請(qǐng)求隊(duì)列和完成隊(duì)列映射到內(nèi)核模式系統(tǒng)地址來(lái)使得內(nèi)核模式執(zhí)行線程能夠訪問(wèn)請(qǐng)求隊(duì)列和完成隊(duì)列。
[0019]這種配置使得用戶模式應(yīng)用能夠連續(xù)將各個(gè)請(qǐng)求排隊(duì)到請(qǐng)求隊(duì)列中,同時(shí)內(nèi)核模式執(zhí)行線程(諸如系統(tǒng)線程或中斷)連續(xù)從該請(qǐng)求隊(duì)列中排出各個(gè)請(qǐng)求來(lái)處理各請(qǐng)求。由于在內(nèi)核模式中完成各個(gè)請(qǐng)求,因此內(nèi)核模式執(zhí)行線程可以將完成通知排隊(duì)到到完成隊(duì)列中。之后用戶模式應(yīng)用可以直接將這些完成通知從完成隊(duì)列中出列(dequeue)。應(yīng)當(dāng)指出的是,之后該編程接口只需要在沒(méi)有內(nèi)核模式執(zhí)行線程已經(jīng)被指派來(lái)處理來(lái)自請(qǐng)求隊(duì)列的已排隊(duì)請(qǐng)求時(shí)發(fā)布系統(tǒng)調(diào)用。
[0020]盡管用于數(shù)據(jù)通信的編程接口的特征和概念可以實(shí)現(xiàn)在任何數(shù)目的不同設(shè)備、系統(tǒng)、環(huán)境、網(wǎng)絡(luò)和/或配置中,但是在下文中的示例設(shè)備、系統(tǒng)和方法的背景下來(lái)描述用于數(shù)據(jù)通信的編程接口的實(shí)施例。
[0021]圖1圖示了一個(gè)示例計(jì)算設(shè)備100,在其中可以實(shí)現(xiàn)用于數(shù)據(jù)通信的編程接口的各種實(shí)施例。該示例計(jì)算設(shè)備100可以被配置成任何類型的計(jì)算設(shè)備或服務(wù)器,并且可以采用任何數(shù)目的不同組件和不同組件的組合來(lái)實(shí)現(xiàn),這將參考圖5中的示例設(shè)備來(lái)進(jìn)一步描述。例如,計(jì)算設(shè)備100可以被實(shí)現(xiàn)為服務(wù)器、電視客戶端設(shè)備、計(jì)算設(shè)備、游戲系統(tǒng)、電器設(shè)備、電子設(shè)備,和/或任何其它類型的可以實(shí)現(xiàn)在網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù)的設(shè)備中的一種或其組合。因此,該計(jì)算設(shè)備100還可以實(shí)現(xiàn)為被實(shí)現(xiàn)來(lái)接收和/或通信無(wú)線數(shù)據(jù)的無(wú)線設(shè)備,諸如移動(dòng)電話(例如蜂窩式、VoIP、WiFi等等)、便攜式計(jì)算機(jī)設(shè)備、媒體播放器設(shè)備,和/或任何其它能夠發(fā)送和接收數(shù)據(jù)的無(wú)線設(shè)備中的一種或其組合。
[0022]計(jì)算設(shè)備100可以經(jīng)由網(wǎng)絡(luò)102通信數(shù)據(jù),該網(wǎng)絡(luò)102可以被實(shí)現(xiàn)為包含促進(jìn)數(shù)據(jù)通信的有線和/或無(wú)線網(wǎng)絡(luò)。也可以通過(guò)使用任何類型的網(wǎng)絡(luò)拓?fù)浜?或通信協(xié)議來(lái)實(shí)現(xiàn)該網(wǎng)絡(luò),并且該網(wǎng)絡(luò)可以被表示或者否則被實(shí)現(xiàn)為兩個(gè)或更多網(wǎng)絡(luò)的組合。該網(wǎng)絡(luò)也可以包含由移動(dòng)運(yùn)營(yíng)商管理的移動(dòng)運(yùn)營(yíng)商網(wǎng)絡(luò),諸如通信服務(wù)提供商、手機(jī)提供商,和/或因特網(wǎng)服務(wù)提供商之類。移動(dòng)運(yùn)營(yíng)商可以促進(jìn)用于任何類型的無(wú)線設(shè)備或移動(dòng)電話(例如蜂窩式、VoIP、WiFi等等)的移動(dòng)數(shù)據(jù)和/或語(yǔ)音通信。
[0023]計(jì)算設(shè)備100可以包含一個(gè)或多個(gè)處理器104(例如微處理器、控制器等等中的任一設(shè)備),其處理各種計(jì)算機(jī)可執(zhí)行指令來(lái)控制該設(shè)備的工作。該設(shè)備還包含一個(gè)或多個(gè)使得能夠?qū)崿F(xiàn)數(shù)據(jù)存儲(chǔ)的存儲(chǔ)器設(shè)備106 (例如計(jì)算機(jī)可讀存儲(chǔ)介質(zhì))。存儲(chǔ)器設(shè)備可以被實(shí)現(xiàn)為任何類型的存儲(chǔ)器、存儲(chǔ)介質(zhì),和/或合適的電子數(shù)據(jù)存儲(chǔ)裝置。
[0024]計(jì)算設(shè)備100還可以包含編程接口 108,其被配置成將各種應(yīng)用110 (例如聯(lián)網(wǎng)應(yīng)用)與通信棧的底層細(xì)節(jié)連接。該應(yīng)用可以被實(shí)現(xiàn)成經(jīng)由網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)。該編程接口 108還被配置成將內(nèi)核112 (例如操作系統(tǒng)內(nèi)核)與聯(lián)網(wǎng)設(shè)備114 (諸如網(wǎng)卡之類)連接來(lái)在網(wǎng)絡(luò)上通信數(shù)據(jù)。該編程接口可以被實(shí)現(xiàn)為計(jì)算機(jī)可執(zhí)行指令(諸如軟件應(yīng)用之類),并且由該計(jì)算設(shè)備的所述一個(gè)或多個(gè)處理器執(zhí)行來(lái)實(shí)現(xiàn)本文描述的各種實(shí)施例。
[0025]在一個(gè)實(shí)施例中,編程接口 108被實(shí)現(xiàn)成接收諸如來(lái)自應(yīng)用110的注冊(cè)請(qǐng)求來(lái)在網(wǎng)絡(luò)102上通信數(shù)據(jù)。為了在網(wǎng)絡(luò)上通信數(shù)據(jù),由內(nèi)核112處理該數(shù)據(jù),該內(nèi)核112被實(shí)現(xiàn)成促進(jìn)數(shù)據(jù)到聯(lián)網(wǎng)設(shè)備114的通信來(lái)進(jìn)行在網(wǎng)絡(luò)上的通信。編程接口 108被實(shí)現(xiàn)成接收注冊(cè)請(qǐng)求并且之后通過(guò)注冊(cè)用戶模式虛擬地址和長(zhǎng)度二者來(lái)注冊(cè)對(duì)應(yīng)于應(yīng)用110的用戶模式虛擬存儲(chǔ)緩沖器116。注冊(cè)用戶模式虛擬存儲(chǔ)緩沖器還可以包含向應(yīng)用發(fā)送注冊(cè)識(shí)別符,在數(shù)據(jù)傳遞請(qǐng)求期間該應(yīng)用可以使用該注冊(cè)識(shí)別符。
[0026]編程接口 108還可以被實(shí)現(xiàn)成從用戶模式虛擬存儲(chǔ)緩沖器116分配完成隊(duì)列。該完成隊(duì)列被分配得足夠大以在該注冊(cè)請(qǐng)求中保持由應(yīng)用110指定的完成條目(entry)的數(shù)目。分配該完成隊(duì)列后,該編程接口可以將完成隊(duì)列鎖定到物理存儲(chǔ)器118并且將該完成隊(duì)列映射到內(nèi)核112中的內(nèi)核模式系統(tǒng)地址(例如在虛擬存儲(chǔ)器空間中)。
[0027]通過(guò)將物理存儲(chǔ)器118的相同區(qū)域映射到用戶模式虛擬存儲(chǔ)緩沖器116和內(nèi)核模式系統(tǒng)地址二者,編程接口 108使得應(yīng)用110和內(nèi)核112能夠同時(shí)訪問(wèn)該完成隊(duì)列。該完成隊(duì)列能夠經(jīng)由內(nèi)核模式系統(tǒng)地址從由內(nèi)核112啟動(dòng)的內(nèi)核模式執(zhí)行線程接收完成通知,并且使得應(yīng)用110能夠經(jīng)由用戶模式虛擬存儲(chǔ)緩沖器訪問(wèn)該完成通知。該完成隊(duì)列可以被實(shí)現(xiàn)為環(huán)形FIFO隊(duì)列,其使得內(nèi)核能夠向完成隊(duì)列公布完成,其之后可以由該應(yīng)用找回。
[0028]編程接口 108還可以注冊(cè)從應(yīng)用110向內(nèi)核112提供數(shù)據(jù)請(qǐng)求的套接字。在一個(gè)實(shí)施例中,該編程接口注冊(cè)現(xiàn)有的套接字,比如Winsock API。注冊(cè)該套接字包括從用戶模式虛擬存儲(chǔ)緩沖器116分配請(qǐng)求隊(duì)列。該請(qǐng)求隊(duì)列被分配得足夠大來(lái)保持由該應(yīng)用指定的請(qǐng)求條目的數(shù)目。注冊(cè)該套接字還包含將該請(qǐng)求隊(duì)列鎖定到物理存儲(chǔ)器118,以及將該請(qǐng)求隊(duì)列映射到內(nèi)核模式系統(tǒng)地址。通過(guò)將物理存儲(chǔ)器的相同區(qū)域映射到用戶模式虛擬存儲(chǔ)緩沖器和內(nèi)核模式系統(tǒng)地址二者,該編程接口使得應(yīng)用110和內(nèi)核112能夠同時(shí)訪問(wèn)該請(qǐng)求隊(duì)列。
[0029]該請(qǐng)求隊(duì)列可以經(jīng)由用戶模式虛擬存儲(chǔ)緩沖器從應(yīng)用接收數(shù)據(jù),并且使得內(nèi)核模式執(zhí)行線程能夠經(jīng)由內(nèi)核模式系統(tǒng)地址訪問(wèn)數(shù)據(jù)。該請(qǐng)求隊(duì)列也可以被實(shí)現(xiàn)為環(huán)形FIFO隊(duì)列,其使得該應(yīng)用能夠在該請(qǐng)求隊(duì)列中公布請(qǐng)求,其之后可以由內(nèi)核找回。作為注冊(cè)進(jìn)程的一個(gè)部分,該編程接口還被實(shí)現(xiàn)成向該套接字識(shí)別完成隊(duì)列,比如通過(guò)將該完成隊(duì)列的位置和長(zhǎng)度傳送到該套接字。
[0030]圖2圖示了根據(jù)用于數(shù)據(jù)通信的編程接口的多個(gè)實(shí)施例的到內(nèi)核的數(shù)據(jù)請(qǐng)求的一個(gè)示例200。該示例200包含已經(jīng)參考圖1描述的應(yīng)用110、用戶模式虛擬存儲(chǔ)緩沖器116,以及內(nèi)核模式虛擬存儲(chǔ)器120。如圖2所示,應(yīng)用110和用戶模式虛擬存儲(chǔ)緩沖器116位于應(yīng)用層202中,并且內(nèi)核模式虛擬存儲(chǔ)器120位于內(nèi)核層204中。
[0031]在這個(gè)示例中并且根據(jù)上文的討論,編程接口 108已經(jīng)注冊(cè)了能夠從應(yīng)用向內(nèi)核提供數(shù)據(jù)請(qǐng)求的套接字。例如,該編程接口可以從用戶模式虛擬存儲(chǔ)緩沖器116分配請(qǐng)求隊(duì)列206,并且將該請(qǐng)求隊(duì)列映射到內(nèi)核模式虛擬存儲(chǔ)器120中(例如在內(nèi)核模式系統(tǒng)地址處)的對(duì)應(yīng)請(qǐng)求隊(duì)列208。另外,該編程接口可以從該用戶模式虛擬存儲(chǔ)緩沖器分配完成隊(duì)列210,并且將該完成隊(duì)列映射到該內(nèi)核模式虛擬存儲(chǔ)器中(例如在內(nèi)核模式系統(tǒng)地址處)的對(duì)應(yīng)完成隊(duì)列212。
[0032]在一個(gè)實(shí)施例中,編程接口 108被實(shí)現(xiàn)成從應(yīng)用110接收請(qǐng)求以供該內(nèi)核處理請(qǐng)求隊(duì)列206中的數(shù)據(jù)。該請(qǐng)求可以由該應(yīng)用通過(guò)在請(qǐng)求隊(duì)列206中放置數(shù)據(jù)并且之后為該編程接口識(shí)別請(qǐng)求隊(duì)列206來(lái)生成,比如通過(guò)包含請(qǐng)求隊(duì)列206的注冊(cè)識(shí)別符,該注冊(cè)識(shí)別符之前由該編程接口發(fā)送到該應(yīng)用。
[0033]編程接口 108被實(shí)現(xiàn)成確定是否指派內(nèi)核模式執(zhí)行線程214 (諸如系統(tǒng)線程或中斷)來(lái)處理該請(qǐng)求。該編程接口可以發(fā)布系統(tǒng)調(diào)用到內(nèi)核,以便內(nèi)核模式執(zhí)行線程214處理該請(qǐng)求。一旦該內(nèi)核模式執(zhí)行線程被啟動(dòng)來(lái)處理該請(qǐng)求,則該應(yīng)用能夠連續(xù)地將請(qǐng)求排隊(duì)到該請(qǐng)求隊(duì)列中,而該內(nèi)核模式執(zhí)行線程獲取來(lái)自該請(qǐng)求隊(duì)列的請(qǐng)求來(lái)處理來(lái)請(qǐng)求。因此,如果已經(jīng)指派一個(gè)內(nèi)核模式執(zhí)行線程來(lái)處理位于該請(qǐng)求隊(duì)列的請(qǐng)求,那么該編程接口不需要發(fā)布隨后的系統(tǒng)調(diào)用,因?yàn)樵搩?nèi)核模式執(zhí)行線程被實(shí)現(xiàn)成自動(dòng)處理各請(qǐng)求。
[0034]內(nèi)核模式執(zhí)行線程214被實(shí)現(xiàn)成通過(guò)經(jīng)由內(nèi)核模式系統(tǒng)地址(例如在虛擬存儲(chǔ)器空間中)從請(qǐng)求隊(duì)列208找回?cái)?shù)據(jù)來(lái)處理請(qǐng)求。例如,如圖2中的箭頭所示,由應(yīng)用110放置在請(qǐng)求隊(duì)列206中的數(shù)據(jù)被映射到內(nèi)核模式虛擬存儲(chǔ)器120中的請(qǐng)求隊(duì)列208,在那里它可以由該內(nèi)核模式執(zhí)行線程找回和處理。處理該數(shù)據(jù)后,內(nèi)核模式執(zhí)行線程214被實(shí)現(xiàn)成在內(nèi)核模式虛擬存儲(chǔ)器120中的完成隊(duì)列212中公布完成通知。例如,該內(nèi)核模式執(zhí)行線程可以在處理該數(shù)據(jù)后通過(guò)處理該請(qǐng)求并且將該請(qǐng)求提供給促進(jìn)網(wǎng)絡(luò)上的數(shù)據(jù)通信的聯(lián)網(wǎng)設(shè)備(比如網(wǎng)卡)來(lái)公布完成通知。
[0035]應(yīng)用110被實(shí)現(xiàn)成經(jīng)由用戶模式虛擬存儲(chǔ)緩沖器116監(jiān)視完成隊(duì)列210來(lái)探測(cè)由該內(nèi)核模式執(zhí)行線程公布的完成通知。例如,如圖2中的箭頭所示,由該內(nèi)核模式執(zhí)行線程放置在完成隊(duì)列212中的完成通知被映射到在用戶模式虛擬存儲(chǔ)緩沖器116中的完成隊(duì)列210,在那里它被應(yīng)用110探測(cè)到。該完成通知向該應(yīng)用指示該請(qǐng)求已經(jīng)由內(nèi)核模式執(zhí)行線程所處理。在探測(cè)到該完成通知后,該應(yīng)用隨后可以將該完成通知從該完成隊(duì)列出列并且重用請(qǐng)求隊(duì)列206 (即剛剛由最近完成的請(qǐng)求使用的請(qǐng)求隊(duì)列)來(lái)用于附加的請(qǐng)求。在一個(gè)實(shí)施例中,如果在該請(qǐng)求被處理后應(yīng)用先前請(qǐng)求過(guò)發(fā)送信號(hào),那么該內(nèi)核模式執(zhí)行線程被實(shí)現(xiàn)成在處理該請(qǐng)求后直接向該應(yīng)用發(fā)送信號(hào)。
[0036]在一個(gè)實(shí)施例中,編程接口 108被實(shí)現(xiàn)成從應(yīng)用110接收附加請(qǐng)求,以便內(nèi)核處理請(qǐng)求隊(duì)列206中的附加數(shù)據(jù)。例如,在該應(yīng)用探測(cè)到完成通知后,該應(yīng)用可以將附加數(shù)據(jù)放置在該請(qǐng)求隊(duì)列中。在這個(gè)實(shí)例中,已經(jīng)指派內(nèi)核模式執(zhí)行線程214來(lái)處理該請(qǐng)求,并且該內(nèi)核模式執(zhí)行線程之后可以處理該附加請(qǐng)求而無(wú)需發(fā)布附加系統(tǒng)調(diào)用到內(nèi)核。
[0037]在一個(gè)實(shí)施例中,該編程接口可以被實(shí)現(xiàn)成檢查已經(jīng)被放置在該請(qǐng)求和完成隊(duì)列中的數(shù)據(jù)來(lái)避免系統(tǒng)級(jí)損壞(例如避免損壞其它應(yīng)用或系統(tǒng)狀態(tài))。例如,應(yīng)當(dāng)指出的是,當(dāng)用戶模式應(yīng)用代碼直接訪問(wèn)該請(qǐng)求或完成隊(duì)列時(shí),它可能具有通過(guò)改變?cè)撽?duì)列的內(nèi)容來(lái)?yè)p壞該隊(duì)列的完整性的能力。因此,通過(guò)執(zhí)行檢查,該編程接口確保了用戶模式應(yīng)用至多只能夠損壞它自身的完整性,但是不會(huì)影響其它應(yīng)用的完整性或該系統(tǒng)的完整性。
[0038]根據(jù)用于數(shù)據(jù)通信的編程接口的一個(gè)或多個(gè)實(shí)施例,分別參考圖3和圖4來(lái)描述示例方法300和400。一般地,通過(guò)使用軟件、固件、硬件(例如固定邏輯電路)、手工處理,或其任何組合可以實(shí)現(xiàn)本文描述的任何服務(wù)、功能、方法、步驟、組件和模塊。軟件實(shí)現(xiàn)代表當(dāng)由計(jì)算機(jī)處理器執(zhí)行時(shí)實(shí)現(xiàn)特定任務(wù)的程序代碼??梢栽谟?jì)算機(jī)可執(zhí)行指令的一般背景下描述(多種)示例方法,其可以包含軟件、應(yīng)用、例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)、步驟、模塊、功能等等。該程序代碼可以被存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)設(shè)備中,該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以在計(jì)算機(jī)處理器本地和/或遠(yuǎn)離計(jì)算機(jī)處理器。該方法也可以在分布式計(jì)算環(huán)境中由多個(gè)計(jì)算機(jī)設(shè)備實(shí)施。此外,本文描述的特征是獨(dú)立于平臺(tái)的,并且可以在具有各種處理器的各種計(jì)算平臺(tái)上實(shí)現(xiàn)。
[0039]圖3圖示了用于數(shù)據(jù)通信的編程接口的(多個(gè))示例方法300,并且參考圖1和圖2中示出的編程接口 108來(lái)描述該方法。方法框被描述的順序不旨在被解釋為一種限制,并且任何數(shù)目的所描述的方法框都可以以任何順序組合來(lái)實(shí)現(xiàn)方法或可替換的方法。
[0040]在框302處,注冊(cè)對(duì)應(yīng)于一個(gè)應(yīng)用的用戶模式虛擬存儲(chǔ)緩沖器。例如,編程接口108 (圖1)注冊(cè)對(duì)應(yīng)于應(yīng)用110的用戶模式虛擬存儲(chǔ)緩沖器116。在框304處,從該用戶模式虛擬存儲(chǔ)緩沖器分配完成隊(duì)列并且將該完成隊(duì)列鎖定到物理存儲(chǔ)器。例如,編程接口 108從用戶模式虛擬存儲(chǔ)緩沖器116分配完成隊(duì)列210 (圖2)并且將該完成隊(duì)列鎖定到物理存儲(chǔ)器118。
[0041]在框306處,將該完成隊(duì)列映射到內(nèi)核中的內(nèi)核模式系統(tǒng)地址。例如,編程接口108將完成隊(duì)列210映射到內(nèi)核112中的內(nèi)核模式系統(tǒng)地址。該完成隊(duì)列可以經(jīng)由內(nèi)核模式系統(tǒng)地址從內(nèi)核模式執(zhí)行線程214接收完成通知并且使得應(yīng)用能夠經(jīng)由用戶模式虛擬存儲(chǔ)緩沖器訪問(wèn)該完成通知。在框308處,注冊(cè)一個(gè)從該應(yīng)用向內(nèi)核提供數(shù)據(jù)請(qǐng)求的套接字。例如,編程接口 108注冊(cè)一個(gè)從應(yīng)用110向內(nèi)核112提供數(shù)據(jù)請(qǐng)求的套接字。在實(shí)施例中,注冊(cè)套接字可以包含在框310、312和314處描述的特征。
[0042]在框310處,從用戶模式虛擬存儲(chǔ)緩沖器分配請(qǐng)求隊(duì)列并且將該請(qǐng)求隊(duì)列鎖定到物理存儲(chǔ)器。例如,編程接口 108從用戶模式虛擬存儲(chǔ)緩沖器116分配請(qǐng)求隊(duì)列206并且將該請(qǐng)求隊(duì)列鎖定到物理存儲(chǔ)器118。在框312處,將該請(qǐng)求隊(duì)列映射到內(nèi)核中的內(nèi)核模式系統(tǒng)地址。例如,編程接口 108將請(qǐng)求隊(duì)列206映射到內(nèi)核112中的內(nèi)核模式系統(tǒng)地址。該請(qǐng)求隊(duì)列被實(shí)現(xiàn)成經(jīng)由該用戶模式虛擬存儲(chǔ)緩沖器從該應(yīng)用接收數(shù)據(jù)并且使得該內(nèi)核模式執(zhí)行線程能夠經(jīng)由該內(nèi)核模式系統(tǒng)地址訪問(wèn)該數(shù)據(jù)。在框314處,向該套接字識(shí)別該完成隊(duì)列。例如,編程接口 108向套接字識(shí)別完成隊(duì)列210。
[0043]圖4圖示了用于數(shù)據(jù)通信的編程接口的(多個(gè))示例方法400,并且參考圖1和圖2中示出的編程接口 108來(lái)描述該方法。在實(shí)施例中,參考圖4描述的示例方法框在圖3的方法框已經(jīng)完成后開(kāi)始(例如在框314處向套接字識(shí)別完成隊(duì)列后)。方法框被描述的順序不旨在被解釋為一種限制,并且任何數(shù)目的所描述的方法框都可以以任何順序組合來(lái)實(shí)現(xiàn)方法或可替換的方法。
[0044]在框402處,從應(yīng)用接收請(qǐng)求以便該內(nèi)核處理請(qǐng)求隊(duì)列中的數(shù)據(jù)。例如,編程接口108 (圖1)從應(yīng)用110接收請(qǐng)求以便該內(nèi)核112處理該請(qǐng)求隊(duì)列中的數(shù)據(jù)。該請(qǐng)求可以包含注冊(cè)識(shí)別符。在框404處,向內(nèi)核發(fā)布系統(tǒng)調(diào)用以便內(nèi)核模式執(zhí)行線程處理該請(qǐng)求。例如,編程接口 108發(fā)布系統(tǒng)調(diào)用給內(nèi)核112以便內(nèi)核模式執(zhí)行線程214處理該請(qǐng)求。
[0045]在框406處,在完成隊(duì)列中接收完成通知。例如,當(dāng)來(lái)自該應(yīng)用的請(qǐng)求被處理時(shí),內(nèi)核模式執(zhí)行線程214可以經(jīng)由內(nèi)核模式虛擬存儲(chǔ)緩沖器120在完成隊(duì)列210中公布完成通知。
[0046]在框408處,從該應(yīng)用接收附加請(qǐng)求,以便該內(nèi)核處理請(qǐng)求隊(duì)列中的附加數(shù)據(jù),并且在框410處,內(nèi)核模式執(zhí)行線程處理該附加請(qǐng)求而無(wú)需發(fā)布系統(tǒng)調(diào)用。例如,編程接口108從應(yīng)用110接收附加請(qǐng)求以便內(nèi)核112處理請(qǐng)求隊(duì)列206中的附加數(shù)據(jù),并且指派內(nèi)核模式執(zhí)行線程214來(lái)處理該附加請(qǐng)求。該內(nèi)核模式執(zhí)行線程被實(shí)現(xiàn)成處理附加請(qǐng)求而無(wú)需向內(nèi)核發(fā)布附加的系統(tǒng)調(diào)用。
[0047]圖5圖示了一個(gè)示例設(shè)備500的各種組件,其可以被實(shí)現(xiàn)為參考圖1-4描述的任何設(shè)備或由設(shè)備實(shí)現(xiàn)的服務(wù)。在實(shí)施例中,該設(shè)備可以以任何形式的用電設(shè)備(consumer)、計(jì)算機(jī)、服務(wù)器、便攜式設(shè)備、用戶、通信、電話、導(dǎo)航、電視、電器、游戲設(shè)備、媒體回放設(shè)備和/或電子設(shè)備被實(shí)現(xiàn)為固定或移動(dòng)設(shè)備中的任何一種或組合。該設(shè)備還可以與用戶(即人)和/或操作該設(shè)備的實(shí)體相關(guān)聯(lián),從而使得設(shè)備描述包含用戶、軟件、固件、硬件和/或設(shè)備的組合的邏輯設(shè)備。
[0048]設(shè)備500包含通信設(shè)備502,其使得能夠?qū)崿F(xiàn)設(shè)備數(shù)據(jù)504的有線和/或無(wú)線通信,設(shè)備數(shù)據(jù)504例如是所接收的數(shù)據(jù)、正在被接收的數(shù)據(jù)、預(yù)定用于廣播的數(shù)據(jù)、數(shù)據(jù)的數(shù)據(jù)包等等。該設(shè)備數(shù)據(jù)或其它設(shè)備內(nèi)容可以包含該設(shè)備的配置設(shè)置、該設(shè)備上存儲(chǔ)的媒體內(nèi)容、和/或與該設(shè)備的用戶相關(guān)聯(lián)的信息。存儲(chǔ)在該設(shè)備上的媒體內(nèi)容可以包含任何類型的音頻、視頻和/或圖像數(shù)據(jù)。該設(shè)備包含一個(gè)或多個(gè)數(shù)據(jù)輸入506,經(jīng)由該數(shù)據(jù)輸入506可以接收任何類型的數(shù)據(jù)、媒體內(nèi)容和/或輸入,比如用戶可選擇輸入、消息、通信、音樂(lè)、電視內(nèi)容、錄制的視頻內(nèi)容,以及接收自任何內(nèi)容和/或數(shù)據(jù)來(lái)源的其它任何類型的音頻、視頻和/或圖像數(shù)據(jù)。
[0049]設(shè)備500還包含通信接口 508,諸如串行、并行、網(wǎng)絡(luò)或無(wú)線接口中的任何一種或多種。該通信接口提供該設(shè)備與網(wǎng)絡(luò)之間的連接和/或通信鏈路,通過(guò)該網(wǎng)絡(luò)其它電子的、計(jì)算的和通信設(shè)備與該設(shè)備通信數(shù)據(jù)。
[0050]設(shè)備500包含一個(gè)或多個(gè)處理器510 (例如任何微處理器、控制器等等),其處理各種計(jì)算機(jī)可執(zhí)行指令來(lái)控制該設(shè)備的工作??商鎿Q地或附加地,該設(shè)備可以由與處理和控制電路有關(guān)地實(shí)現(xiàn)的軟件、硬件、固件或固定邏輯電路中的任何一種或其組合來(lái)實(shí)現(xiàn),其一般地被指示為512。盡管未示出,該設(shè)備可以包含在該設(shè)備內(nèi)耦合各種組件的系統(tǒng)總線或數(shù)據(jù)傳遞系統(tǒng)。系統(tǒng)總線可以包含不同總線結(jié)構(gòu)中的任何一種或其組合,比如存儲(chǔ)總線或存儲(chǔ)控制器、外圍總線、通用串行總線、和/或利用各種總線架構(gòu)中的任何種類的處理器或局部總線。
[0051]設(shè)備500還包含一個(gè)或多個(gè)使得能夠?qū)崿F(xiàn)數(shù)據(jù)存儲(chǔ)的存儲(chǔ)器設(shè)備(例如計(jì)算機(jī)可讀存儲(chǔ)介質(zhì))514,諸如隨機(jī)讀取存儲(chǔ)器(RAM)、非易失性存儲(chǔ)器(例如只讀存儲(chǔ)器(ROM)、閃速存儲(chǔ)器等等),以及磁盤存儲(chǔ)設(shè)備。磁盤存儲(chǔ)設(shè)備可以被實(shí)現(xiàn)為任何類型的磁或光學(xué)存儲(chǔ)設(shè)備,比如硬盤驅(qū)動(dòng)器、可刻錄的和/或可重寫的盤等等。該設(shè)備還可以包含海量存儲(chǔ)媒體設(shè)備。
[0052]計(jì)算機(jī)可讀介質(zhì)可以是任何由計(jì)算設(shè)備訪問(wèn)的可用媒介或介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括存儲(chǔ)介質(zhì)和通信介質(zhì)。存儲(chǔ)介質(zhì)包含實(shí)現(xiàn)在用于信息存儲(chǔ)的任何方法或技術(shù)中的易失性和非易失性、可移動(dòng)和不可移動(dòng)的介質(zhì),這些信息為比如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。存儲(chǔ)介質(zhì)包含但是不限于RAM、R0M、EEPR0M、閃速存儲(chǔ)器或其它存儲(chǔ)技術(shù)、CD-ROM、數(shù)字多功能光盤(DVD)或其它光學(xué)存儲(chǔ)裝置、磁盒、磁帶、磁盤存儲(chǔ)裝置或其它磁存儲(chǔ)設(shè)備,或任何其它能夠被用于存儲(chǔ)信息并且可由計(jì)算機(jī)訪問(wèn)的媒介。
[0053]通信介質(zhì)典型地包含計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它在調(diào)制數(shù)據(jù)信號(hào)中的數(shù)據(jù),比如載波或其它運(yùn)輸機(jī)制。通信介質(zhì)還包含任何信息輸送介質(zhì)。術(shù)語(yǔ)“調(diào)制數(shù)據(jù)信號(hào)”意味著一種信號(hào),它的一種或多種特性可以以在該信號(hào)中編碼信息的方式而被設(shè)置或改變。作為示例而非限制,通信介質(zhì)包含諸如有線網(wǎng)絡(luò)或直接有線連接之類的有線介質(zhì)和諸如超聲、RF、紅外或其它無(wú)線介質(zhì)之類的無(wú)線介質(zhì)。
[0054]存儲(chǔ)裝置514提供數(shù)據(jù)存儲(chǔ)機(jī)制來(lái)存儲(chǔ)設(shè)備數(shù)據(jù)504、其它類型的信息和/或數(shù)據(jù),以及各種設(shè)備應(yīng)用516。例如,操作系統(tǒng)518可以保持作為具有存儲(chǔ)裝置并在處理器上被執(zhí)行的軟件應(yīng)用。該設(shè)備應(yīng)用還可以包含設(shè)備管理器(比如任何形式的控制應(yīng)用)、軟件應(yīng)用、信號(hào)處理和控制模塊、源于特定設(shè)備的代碼、針對(duì)特定設(shè)備的硬件抽象層等等。在這個(gè)示例中,設(shè)備應(yīng)用516包含被示出作為軟件模塊和/或計(jì)算機(jī)應(yīng)用的編程接口 520??商鎿Q地或附加地,該編程接口可以被實(shí)現(xiàn)為硬件、軟件、固件、固定邏輯或其任何組合。
[0055]設(shè)備500還包含音頻和/或視頻處理系統(tǒng)522,其為音頻系統(tǒng)524生成音頻數(shù)據(jù)和/或?yàn)轱@示系統(tǒng)526生成顯示數(shù)據(jù)。該音頻系統(tǒng)和/或顯示系統(tǒng)可以包含處理、顯示和/或否則再現(xiàn)音頻、視頻、顯示和/或圖像數(shù)據(jù)的任何設(shè)備??梢越?jīng)由RF (射頻)鏈路、S端子輸出(S-video)鏈路、復(fù)合視頻鏈路、分量視頻鏈路(component video link)、DVI (數(shù)字視頻接口)、模擬音頻連接,或其它類似的通信鏈路將顯示數(shù)據(jù)和音頻信號(hào)通信到音頻設(shè)備和/或顯示設(shè)備。在實(shí)現(xiàn)中,該音頻系統(tǒng)和/或顯示系統(tǒng)可以是該設(shè)備的外部組件。可替換地,該音頻系統(tǒng)和/或顯示系統(tǒng)是該示例設(shè)備的集成組件。
[0056]盡管已經(jīng)以具體到特征和/或方法的語(yǔ)言描述了用于數(shù)據(jù)通信的編程接口的各個(gè)實(shí)施例,但是隨附的權(quán)利要求的主題不一定被限制為所描述的具體特征或方法。相反地,具體特征和方法作為用于數(shù)據(jù)通信的編程接口的示例實(shí)現(xiàn)而被公開(kāi)。
【權(quán)利要求】
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括: 注冊(cè)對(duì)應(yīng)于應(yīng)用的用戶模式虛擬存儲(chǔ)緩沖器; 從用戶模式虛擬存儲(chǔ)緩沖器分配完成隊(duì)列并且將該完成隊(duì)列鎖定到物理存儲(chǔ)器; 將完成隊(duì)列映射到內(nèi)核中的第一內(nèi)核模式系統(tǒng)地址,該完成隊(duì)列被配置成經(jīng)由該內(nèi)核模式系統(tǒng)地址從內(nèi)核模式執(zhí)行線程接收完成通知并且使得該應(yīng)用能夠經(jīng)由該用戶模式虛擬存儲(chǔ)緩沖器訪問(wèn)該完成通知; 注冊(cè)被配置成從應(yīng)用向內(nèi)核提供數(shù)據(jù)請(qǐng)求的套接字,所述注冊(cè)套接字包括: 從用戶模式虛擬存儲(chǔ)緩沖器分配請(qǐng)求隊(duì)列并且將該請(qǐng)求隊(duì)列鎖定到物理存儲(chǔ)器;將請(qǐng)求隊(duì)列映射到第二內(nèi)核模式系統(tǒng)地址,該請(qǐng)求隊(duì)列被配置成經(jīng)由該用戶模式虛擬存儲(chǔ)緩沖器從該應(yīng)用接收數(shù)據(jù)并且使得內(nèi)核模式執(zhí)行線程能夠經(jīng)由第二內(nèi)核模式系統(tǒng)地址訪問(wèn)該數(shù)據(jù);以及 向該套接字識(shí)別該完成隊(duì)列。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述注冊(cè)用戶模式虛擬存儲(chǔ)緩沖器還包括向應(yīng)用發(fā)送該緩沖器的注冊(cè)識(shí)別符。
3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,進(jìn)一步包括: 從該應(yīng)用接收請(qǐng)求以便內(nèi)核處理請(qǐng)求隊(duì)列中的數(shù)據(jù),該請(qǐng)求包含緩沖器的注冊(cè)識(shí)別符;以及 發(fā)布系統(tǒng)調(diào)用到內(nèi)核以便內(nèi) 核模式執(zhí)行線程處理該請(qǐng)求。
4.根據(jù)權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述內(nèi)核模式執(zhí)行線程被配置成通過(guò)經(jīng)由第二內(nèi)核模式系統(tǒng)地址從請(qǐng)求隊(duì)列找回?cái)?shù)據(jù)來(lái)處理該請(qǐng)求。
5.根據(jù)前面權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,進(jìn)一步包括接收完成隊(duì)列中的完成通知,當(dāng)請(qǐng)求被處理時(shí),由內(nèi)核模式執(zhí)行線程經(jīng)由內(nèi)核模式虛擬存儲(chǔ)緩沖器在完成隊(duì)列中公布該完成通知。
6.根據(jù)權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述應(yīng)用被配置用于: 經(jīng)由用戶模式虛擬存儲(chǔ)緩沖器監(jiān)視完成隊(duì)列來(lái)探測(cè)由內(nèi)核模式執(zhí)行線程公布的完成通知,該完成通知向應(yīng)用指示該請(qǐng)求已經(jīng)由內(nèi)核模式執(zhí)行線程所處理;以及為響應(yīng)于探測(cè)到完成通知,而針對(duì)附加請(qǐng)求重用該請(qǐng)求隊(duì)列。
7.根據(jù)權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,進(jìn)一步包括從應(yīng)用接收附加請(qǐng)求以便內(nèi)核處理請(qǐng)求隊(duì)列中的附加數(shù)據(jù),并且內(nèi)核模式執(zhí)行線程處理該附加請(qǐng)求而無(wú)需向內(nèi)核發(fā)布附加系統(tǒng)調(diào)用。
8.一種計(jì)算設(shè)備,包括: 至少存儲(chǔ)器和處理器來(lái)實(shí)現(xiàn)編程接口,該編程接口被配置成: 從對(duì)應(yīng)于應(yīng)用的用戶模式虛擬存儲(chǔ)緩沖器分配請(qǐng)求隊(duì)列和完成隊(duì)列; 將該請(qǐng)求隊(duì)列和該完成隊(duì)列鎖定到物理存儲(chǔ)器;以及 將該請(qǐng)求隊(duì)列和完成隊(duì)列映射到內(nèi)核中的內(nèi)核模式系統(tǒng)地址來(lái)使得內(nèi)核模式執(zhí)行線程能夠訪問(wèn)該請(qǐng)求隊(duì)列和完成隊(duì)列。
9.根據(jù)權(quán)利要求8所述的計(jì)算設(shè)備,其中所述編程接口被進(jìn)一步配置成: 從應(yīng)用接收請(qǐng)求以便內(nèi)核處理請(qǐng)求隊(duì)列中的數(shù)據(jù);以及 向內(nèi)核發(fā)布系統(tǒng)調(diào)用以便內(nèi)核模式執(zhí)行線程處理該請(qǐng)求,該內(nèi)核模式執(zhí)行線程被進(jìn)一步配置成處理來(lái)自該應(yīng)用的附加請(qǐng)求。
10.根據(jù)權(quán)利要求9所述的計(jì)算設(shè)備,其中所述內(nèi)核模式執(zhí)行線程被配置成通過(guò)從請(qǐng)求隊(duì)列找回?cái)?shù)據(jù)來(lái)處理來(lái)自該應(yīng)用的請(qǐng)求,并且其中所述內(nèi)核模式執(zhí)行線程被進(jìn)一步配置成處理來(lái)自該應(yīng)用的附加請(qǐng)求 而無(wú)需編程接口發(fā)布附加的系統(tǒng)調(diào)用。
【文檔編號(hào)】G06F9/06GK103608767SQ201280030914
【公開(kāi)日】2014年2月26日 申請(qǐng)日期:2012年6月13日 優(yōu)先權(quán)日:2011年6月23日
【發(fā)明者】O.N.埃爾圖蓋, K.E.霍爾頓, J.尼維爾特 申請(qǐng)人:微軟公司