用于實(shí)施內(nèi)核和用戶空間之間共享的鎖的系統(tǒng)和方法
【專(zhuān)利摘要】一種裝置,包括用于為包括內(nèi)核和用戶應(yīng)用的操作系統(tǒng)(OS)平臺(tái)實(shí)施多個(gè)操作的一個(gè)或多個(gè)處理器,一個(gè)或多個(gè)所述內(nèi)核和所述用戶應(yīng)用共享的資源塊,以及對(duì)應(yīng)于所述共享的資源塊的一個(gè)或多個(gè)所述內(nèi)核和所述用戶應(yīng)用共享的鎖,其中所述用戶應(yīng)用用于通過(guò)直接訪問(wèn)所述鎖無(wú)需使用到內(nèi)核的系統(tǒng)呼叫來(lái)同步用戶線程和內(nèi)核線程對(duì)所述共享資源塊的使用。
【專(zhuān)利說(shuō)明】用于實(shí)施內(nèi)核和用戶空間之間共享的鎖的系統(tǒng)和方法
[0001]相關(guān)申請(qǐng)案交叉申請(qǐng)
[0002]本發(fā)明要求2011年11月22日由董雪松等人遞交的發(fā)明名稱(chēng)為“用于實(shí)施內(nèi)核和用戶空間之間共享的鎖的系統(tǒng)和方法”的第13/302918號(hào)美國(guó)專(zhuān)利申請(qǐng)案的在先申請(qǐng)優(yōu)先權(quán),該在先申請(qǐng)的內(nèi)容以引入的方式并入本文本中,如全文再現(xiàn)一般。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明涉及通信網(wǎng)絡(luò),尤其涉及用于實(shí)施內(nèi)核和用戶空間之間共享的鎖的系統(tǒng)和方法。
【背景技術(shù)】
[0004]一些當(dāng)前操作系統(tǒng)(OS)平臺(tái),例如在計(jì)算設(shè)備和網(wǎng)絡(luò)組件中使用的OS平臺(tái),允許內(nèi)核空間和用戶空間之間共享計(jì)算/網(wǎng)絡(luò)資源(例如,內(nèi)存、處理器使用、帶寬等)。內(nèi)核對(duì)應(yīng)于OS的組件,其橋接應(yīng)用(軟件)和硬件級(jí)別實(shí)施的實(shí)際數(shù)據(jù)處理。內(nèi)核的職責(zé)包括管理系統(tǒng)資源,例如軟硬件組件之間的通信。通常,內(nèi)核為應(yīng)用軟件需要控制以執(zhí)行其功能的資源(例如,為處理器和輸入/輸出(I/o)設(shè)備)提供最低級(jí)別的抽象層。內(nèi)核通常通過(guò)進(jìn)程間通信機(jī)制以及系統(tǒng)呼叫向應(yīng)用進(jìn)程提供這些資源。內(nèi)核空間包括內(nèi)核使用的任務(wù)、操作以及關(guān)聯(lián)的資源。用戶空間包括應(yīng)用或軟件使用的任務(wù)、操作以及關(guān)聯(lián)的資源。
【發(fā)明內(nèi)容】
[0005]在一項(xiàng)實(shí)施例中,本發(fā)明包括一種裝置,包括用于為包括內(nèi)核和用戶應(yīng)用的操作系統(tǒng)(OS)平臺(tái)實(shí)施多個(gè)操作的一個(gè)或多個(gè)處理器,一個(gè)或多個(gè)所述內(nèi)核和所述用戶應(yīng)用共享的資源塊,以及對(duì)應(yīng)于所述共享的資源塊的一個(gè)或多個(gè)所述內(nèi)核和所述用戶應(yīng)用共享的鎖,其中所述用戶應(yīng)用用于通過(guò)直接訪問(wèn)所述鎖無(wú)需使用到內(nèi)核的系統(tǒng)呼叫來(lái)同步用戶線程和內(nèi)核線程對(duì)所述共享資源塊的使用。
[0006]在另一項(xiàng)實(shí)施例中,本發(fā)明包括共享的內(nèi)存塊以及網(wǎng)絡(luò)組件,所述網(wǎng)絡(luò)組件包括用于OS平臺(tái)的處理器,用于接收來(lái)自在所述處理器上操作的第一 OS線程的請(qǐng)求以為多個(gè)OS線程訪問(wèn)所述共享的內(nèi)存塊,以及如果所述共享的內(nèi)存塊未被第二 OS線程鎖定或者由所述第二 OS線程進(jìn)行的鎖定的時(shí)間限制超時(shí),允許所述第一 OS線程鎖定并訪問(wèn)所述共享的內(nèi)存塊。
[0007]在第三方面,本發(fā)明包括一種由實(shí)施包括多個(gè)線程的OS平臺(tái)的處理器實(shí)施的方法,所述多個(gè)線程包括應(yīng)用線程和內(nèi)核線程,所述方法包括如果鎖未由另一進(jìn)程設(shè)置,第一線程為目標(biāo)內(nèi)存塊設(shè)置所述鎖,所述第一線程接收來(lái)自O(shè)S內(nèi)核的關(guān)于允許的操作的信息和所述鎖的時(shí)間限制,所述第一線程訪問(wèn)所述目標(biāo)內(nèi)存塊的地圖,以及如果終止呼叫由所述第一線程從更高優(yōu)先級(jí)的線程接收或者所述目標(biāo)內(nèi)存塊上的操作由所述第一線程完成,所述第一線程釋放所述目標(biāo)內(nèi)存塊上的所述鎖。
[0008]結(jié)合附圖和權(quán)利要求書(shū),可從以下的詳細(xì)描述中更清楚地理解這些和其他特征?!緦?zhuān)利附圖】
【附圖說(shuō)明】
[0009]為了更完整地理解本發(fā)明,現(xiàn)在參考以下結(jié)合附圖和詳細(xì)描述進(jìn)行的簡(jiǎn)要描述,其中相同參考標(biāo)號(hào)表不相同部分。
[0010]圖1是內(nèi)核-用戶共享的鎖系統(tǒng)的實(shí)施例的示意圖。
[0011]圖2是內(nèi)核-用戶共享的鎖方法的實(shí)施例的示意圖。
[0012]圖3是內(nèi)核-用戶共享的鎖方法的實(shí)施例的示意圖。
[0013]圖4是網(wǎng)絡(luò)單元的實(shí)施例的示意圖。
[0014]圖5是通用計(jì)算機(jī)系統(tǒng)的實(shí)施例的示意圖。
【具體實(shí)施方式】
[0015]最初應(yīng)理解,盡管下文提供一個(gè)或多個(gè)實(shí)施例的說(shuō)明性實(shí)施方案,但可使用任意數(shù)目的當(dāng)前已知或現(xiàn)有的技術(shù)來(lái)實(shí)施所公開(kāi)的系統(tǒng)和/或方法。本發(fā)明決不應(yīng)限于下文所說(shuō)明的所述說(shuō)明性實(shí)施方案、圖式和技術(shù),包含本文所說(shuō)明并描述的示范性設(shè)計(jì)和實(shí)施方案,而是可以在所附權(quán)利要求書(shū)的范圍以及其均等物的完整范圍內(nèi)修改。
[0016]在典型的OS平臺(tái)中,資源通過(guò)鎖在用戶空間和內(nèi)核空間之間共享。鎖在內(nèi)核空間中實(shí)施為內(nèi)核保護(hù)或預(yù)留資源以及避免用戶空間訪問(wèn)鎖定的資源。如果資源未被(例如,內(nèi)核)鎖定,那么用戶空間可以訪問(wèn)該資源。為了鎖定資源,用戶線程使用系統(tǒng)呼叫發(fā)送鎖定操作請(qǐng)求。該鎖定方案可導(dǎo)致瓶頸,例如,相對(duì)大量的鎖定操作請(qǐng)求和系統(tǒng)呼叫,這對(duì)高性能系統(tǒng)有害。
[0017]路由器OS平臺(tái)等實(shí)時(shí)系統(tǒng)可能需要相對(duì)較高的性能基礎(chǔ)設(shè)施支持和相對(duì)較高的系統(tǒng)開(kāi)銷(xiāo)。當(dāng)性能至關(guān)重要,例如,在零復(fù)制套接字中,系統(tǒng)緩存可能不會(huì)從內(nèi)核復(fù)制以及復(fù)制到內(nèi)核。相反,緩存可在用戶空間和內(nèi)核空間之間共享。在該情況下,為共享的資源(例如,緩存或內(nèi)存)改善鎖機(jī)制可顯著改善系統(tǒng)性能。本文揭示一種用于管理和處理內(nèi)核-用戶共享的鎖的系統(tǒng)和方法以改善用戶空間和內(nèi)核空間之間的內(nèi)存或資源共享和保護(hù)??晒芾砗筒僮鲀?nèi)核-用戶共享的鎖以降低用戶空間和內(nèi)核空間之間的通信成本并且提升系統(tǒng)性能。不同于基于由內(nèi)核提供的系統(tǒng)呼叫的典型方案,所公開(kāi)的系統(tǒng)和方法可允許用戶應(yīng)用(用戶空間)直接設(shè)置內(nèi)核-用戶共享的鎖以訪問(wèn)用戶空間和內(nèi)核空間之間共享的內(nèi)存(或類(lèi)似資源)塊。內(nèi)核-用戶共享的鎖可允許用戶應(yīng)用無(wú)需系統(tǒng)呼叫直接鎖定和解鎖共享鎖以同步到用戶空間和內(nèi)核空間之間共享的內(nèi)存塊的訪問(wèn)。下文詳細(xì)地描述了實(shí)施內(nèi)核-用戶共享的鎖的詳情。
[0018]圖1示出了內(nèi)核-用戶共享的鎖系統(tǒng)100的實(shí)施例,該系統(tǒng)可在多進(jìn)程路由OS或軟件平臺(tái)等路由平臺(tái)中使用。例如,路由平臺(tái)可對(duì)應(yīng)于路由器等一個(gè)或多個(gè)網(wǎng)絡(luò)路由組件,在這些組件中,用戶空間應(yīng)用(例如,路由應(yīng)用)可與系統(tǒng)內(nèi)核進(jìn)行通信以從內(nèi)核和/或網(wǎng)絡(luò)接口獲取信息或數(shù)據(jù)。內(nèi)核-用戶共享的鎖系統(tǒng)100可實(shí)施內(nèi)核-用戶共享的鎖方案,其可以通過(guò)極大地限制系統(tǒng)呼叫的使用允許共享內(nèi)核空間和用戶空間之間的一些資源和/或數(shù)據(jù)結(jié)構(gòu)。限制系統(tǒng)呼叫的使用可提高平臺(tái)的部件或機(jī)器內(nèi)或間的通信性能,從而降低系統(tǒng)開(kāi)銷(xiāo)。可使用內(nèi)核-用戶共享的鎖的集合,其可包括多個(gè)互斥鎖、讀/寫(xiě)鎖、自旋鎖和/或其他類(lèi)型的鎖。[0019]內(nèi)核-用戶共享的鎖系統(tǒng)100可包括內(nèi)核-用戶共享的內(nèi)存或內(nèi)存塊110,其可由內(nèi)核生產(chǎn)者線程102、內(nèi)核消費(fèi)者線程104、用戶生產(chǎn)者線程106和用戶消費(fèi)者線程108訪問(wèn)。內(nèi)核-用戶共享的內(nèi)存110可包括發(fā)送緩存112、接收緩存114、與發(fā)送緩存112關(guān)聯(lián)的第一鎖(Lockl)控制塊122和與接收緩存114關(guān)聯(lián)的第二鎖(Lock2)控制塊124。內(nèi)核生產(chǎn)者線程102可以是用于訪問(wèn)接收緩存114以放置數(shù)據(jù)的內(nèi)核空間的一部分。用戶消費(fèi)者線程108可以是用于訪問(wèn)接收緩存114以接收已放置的數(shù)據(jù)的用戶空間(或應(yīng)用)的一部分。用戶生產(chǎn)者線程106可以是用于訪問(wèn)發(fā)送緩存112以放置數(shù)據(jù)的用戶空間的一部分。內(nèi)核消費(fèi)者線程104可以是用于訪問(wèn)發(fā)送緩存112以獲取放置的數(shù)據(jù)的內(nèi)核空間的一部分。
[0020]內(nèi)核生產(chǎn)者線程102和用戶消費(fèi)者線程108可在試圖訪問(wèn)接收緩存114之前檢查L(zhǎng)ock2控制塊124。如果Lock2控制塊124未鎖定或Lock2控制塊124的鎖定時(shí)間超時(shí),那么內(nèi)核生產(chǎn)者線程102或用戶消費(fèi)者線程108可鎖定Lock2控制塊124,然后訪問(wèn)接收緩存114。同樣,用戶生產(chǎn)者線程106和內(nèi)核消費(fèi)者線程104可在試圖訪問(wèn)發(fā)送緩存112之前檢查L(zhǎng)ockl控制塊122。如果Lockl控制塊122未鎖定或Lockl控制塊122的鎖定時(shí)間超時(shí),那么用戶生產(chǎn)者線程106或內(nèi)核消費(fèi)者線程104可鎖定Lockl控制塊122,然后訪問(wèn)發(fā)送緩存112。例如,Lockl控制塊122和Lock2控制塊124可以是包括例如標(biāo)志等的數(shù)據(jù)結(jié)構(gòu)的內(nèi)存部件,可設(shè)置標(biāo)志以放置鎖或不設(shè)置標(biāo)志以刪除鎖。
[0021]內(nèi)核-用戶共享的鎖系統(tǒng)100可有利于保護(hù)以生產(chǎn)者-消費(fèi)者方式運(yùn)轉(zhuǎn)的數(shù)據(jù)結(jié)構(gòu)。內(nèi)核套接字緩存的內(nèi)容可通常從用戶內(nèi)存空間復(fù)制或復(fù)制到用戶內(nèi)存空間。如果緩存在用戶空間和內(nèi)核空間之間共享,共享鎖可用于保護(hù)共享的數(shù)據(jù)結(jié)構(gòu)、用戶線程或進(jìn)程可對(duì)應(yīng)于發(fā)送緩存112上的用戶生產(chǎn)者線程106或接收緩存114上的用戶消費(fèi)者線程108。內(nèi)核線程可對(duì)應(yīng)于接收緩存114上的內(nèi)核生產(chǎn)者線程102或發(fā)送緩存112上的內(nèi)核消費(fèi)者線程104。用戶線程可在最大時(shí)間周期內(nèi)持有共享鎖,該最大時(shí)間周期在鎖創(chuàng)建時(shí)確定并在鎖釋放時(shí)結(jié)束。用戶線程的優(yōu)先級(jí)可根據(jù)優(yōu)先級(jí)繼承(分層)設(shè)置而變化。
[0022](例如,用戶生產(chǎn)者線程106或用戶消費(fèi)者線程108)可使用用戶空間應(yīng)用編程接口(API)(或代碼)以(例如,為L(zhǎng)ockl控制塊122或Lock2控制塊124)初始化鎖。初始化過(guò)程中,一部分內(nèi)核-用戶共享的內(nèi)存110(例如,發(fā)送緩存112或接收緩存114)可被創(chuàng)建并被映射到用戶內(nèi)存空間。當(dāng)鎖被初始化時(shí),用戶應(yīng)用(例如,用戶生產(chǎn)者線程106或用戶消費(fèi)者線程108)可從內(nèi)核獲取合同,指明應(yīng)用可在鎖上進(jìn)行的操作和/或應(yīng)用可以持有鎖的時(shí)長(zhǎng)。如果鎖持有的時(shí)間大于指明的時(shí)間限制,內(nèi)核(例如,內(nèi)核消費(fèi)者線程104或內(nèi)核生產(chǎn)者線程102)可殺死用戶進(jìn)程。
[0023]如果用戶進(jìn)程或內(nèi)核試圖獲取或釋放鎖,可直接完成獲取/釋放操作而無(wú)需調(diào)用系統(tǒng)呼叫,這與典型共享鎖方案不同。當(dāng)用戶應(yīng)用持有鎖時(shí),用戶應(yīng)用可在鎖釋放時(shí)完成運(yùn)行,但是如果系統(tǒng)允許,用戶應(yīng)用可能仍然易被搶占。例如,如果需要,內(nèi)核可在任意時(shí)間殺死用戶應(yīng)用并釋放鎖??蓺w類(lèi)不同線程(內(nèi)核和用戶線程),這樣一些類(lèi)型的線程(例如,內(nèi)核線程)比其他類(lèi)型的線程(例如,用戶線程)能優(yōu)先獲取鎖。優(yōu)先級(jí)倒置可由優(yōu)先級(jí)繼承設(shè)置解決,優(yōu)先級(jí)繼承可允許,例如,用戶線程的優(yōu)先級(jí)和內(nèi)核線程的優(yōu)先級(jí)一樣高。優(yōu)先級(jí)倒置是一種當(dāng)更高優(yōu)先級(jí)的任務(wù)被較低優(yōu)先級(jí)的任務(wù)間接搶占有效地“倒置”兩個(gè)任務(wù)的相對(duì)優(yōu)先級(jí)時(shí)調(diào)度的問(wèn)題場(chǎng)景。這違反了優(yōu)先級(jí)模式,優(yōu)先級(jí)模式中,高優(yōu)先級(jí)任務(wù)僅能被更高優(yōu)先級(jí)的任務(wù)阻止運(yùn)行并暫時(shí)被低優(yōu)先級(jí)任務(wù)阻止運(yùn)行,該低優(yōu)先級(jí)任務(wù)將快速完成高和低優(yōu)先級(jí)任務(wù)共享的資源的使用。
[0024]圖2示出了內(nèi)核-用戶共享的鎖方法200的實(shí)施例,該方法可在內(nèi)核-用戶共享的鎖系統(tǒng)100中實(shí)施。內(nèi)核-用戶共享的鎖方法200可由用戶線程或用戶應(yīng)用,例如用戶生產(chǎn)者線程106或用戶消費(fèi)者線程108,實(shí)施。內(nèi)核-用戶共享的鎖方法200可開(kāi)始于方框210,其中用戶應(yīng)用或線程可確定目標(biāo)內(nèi)存塊上是否設(shè)置了鎖。例如,用戶生產(chǎn)者線程106可檢查是否為發(fā)送緩存112設(shè)置了 Lockl控制塊122。同樣,用戶消費(fèi)者線程108可檢查是否為接收緩存114設(shè)置了 Lock2控制塊124。如果方框210中的條件為真,那么方法200可返回方框210(即,重新開(kāi)始)以驗(yàn)證一段時(shí)間后鎖是否仍被設(shè)置。否則,方法200可以前進(jìn)到方框220。
[0025]在方框220處,可為目標(biāo)內(nèi)存塊設(shè)置鎖。當(dāng)鎖未由例如另一用戶線程或內(nèi)核在目標(biāo)內(nèi)存塊上設(shè)置時(shí),用戶線程可設(shè)置鎖。在塊230處,可從內(nèi)核接收關(guān)于允許的操作的信息和/或鎖的時(shí)間限制。用戶線程可從內(nèi)核接收這些數(shù)據(jù),并且可相應(yīng)地設(shè)置在目標(biāo)內(nèi)存塊上訪問(wèn)和操作的定時(shí)器。在方框240處,可訪問(wèn)目標(biāo)內(nèi)存塊。用戶線程可將目標(biāo)內(nèi)存塊映射到用戶空間,然后訪問(wèn)映射的內(nèi)存數(shù)據(jù),例如以進(jìn)行讀操作、寫(xiě)操作或其他類(lèi)型的操作。
[0026]在方框250處,用戶線程可確定是否已經(jīng)接收到了終止呼叫或目標(biāo)內(nèi)存塊上的操作是否已經(jīng)完成。如果用戶線程從內(nèi)核或比用戶線程的優(yōu)先級(jí)高的任一線程接收到了截?cái)嗷蚪K止呼叫,或者如果用戶線程操作完成,那么方法200可前進(jìn)到方框260。否則,方法200可返回到方框250并繼續(xù)在目標(biāo)內(nèi)存塊上訪問(wèn)并操作直到方框250中的條件變?yōu)檎?。在方?60處,可釋放目標(biāo)內(nèi)存塊上的鎖。因此,用戶線程可不再訪問(wèn)共享內(nèi)存塊并終止或暫停操作。方法200隨后可以結(jié)束。
[0027]圖3示出了另一內(nèi)核-用戶共享的鎖方法300的實(shí)施例,該方法可在內(nèi)核-用戶共享的鎖系統(tǒng)100中實(shí)施。內(nèi)核-用戶共享的鎖方法300可由內(nèi)核線程,例如內(nèi)核生產(chǎn)者線程102或內(nèi)核消費(fèi)者線程104,實(shí)施。內(nèi)核-用戶共享的鎖方法300可開(kāi)始于方框310,其中內(nèi)核線程可確定目標(biāo)內(nèi)存塊上是否設(shè)置了鎖。例如,內(nèi)核生產(chǎn)者線程102可檢查是否為接收緩存114設(shè)置了 Lock2控制塊124。同樣,內(nèi)核消費(fèi)者線程104可檢查是否為發(fā)送緩存112設(shè)置了 Lockl控制塊122。如果方框310中的條件為真,那么方法300可前進(jìn)到方框330。否則,方法300可前進(jìn)到方框320。
[0028]在方框320處,內(nèi)核線程可確定鎖的時(shí)間限制是否超時(shí)。如果方框320中的條件為真,那么方法300可前進(jìn)到方框330。否則,方法300可返回方框310(即,重新開(kāi)始)以驗(yàn)證一段時(shí)間后鎖是否仍被設(shè)置。在方框330處,(例如內(nèi)核線程)可終止目標(biāo)內(nèi)存塊上的鎖。在方框340處,(例如內(nèi)核線程)可為目標(biāo)內(nèi)存塊設(shè)置鎖。在方框350處,(例如內(nèi)核線程)可訪問(wèn)目標(biāo)內(nèi)存塊以進(jìn)行寫(xiě)操作、讀操作或其他類(lèi)型的操作。在方框360處,內(nèi)核線程可確定目標(biāo)內(nèi)存塊上的操作是否完成。如果內(nèi)核線程操作完成,那么方法300可前進(jìn)到方框370。否則,方法300可返回方框350并繼續(xù)在目標(biāo)內(nèi)存塊上訪問(wèn)和操作直到方框360中的條件變?yōu)檎?。在方?70處,可釋放目標(biāo)內(nèi)存塊上的鎖。因此,目標(biāo)內(nèi)存塊對(duì)于其他線程可變?yōu)榭捎?。方?00隨后可以結(jié)束。
[0029]在一些實(shí)施例中,更高優(yōu)先級(jí)(用戶)線程可實(shí)施方法300中的類(lèi)似步驟以鎖定/訪問(wèn)可與更低優(yōu)先級(jí)(用戶)線程共享的目標(biāo)內(nèi)存塊。例如,更高優(yōu)先級(jí)的線程可終止更低優(yōu)先級(jí)線程的鎖,然后鎖定和訪問(wèn)目標(biāo)內(nèi)存塊。當(dāng)線程操作結(jié)束時(shí),更高優(yōu)先級(jí)線程可隨后釋放鎖。更低優(yōu)先級(jí)線程可能無(wú)權(quán)終止由更高優(yōu)先級(jí)線程設(shè)置的鎖,但是可以等待直到鎖被操作線程終止。內(nèi)核可具有最高優(yōu)先級(jí)以終止鎖和訪問(wèn)共享內(nèi)存塊。進(jìn)一步地,不同內(nèi)核線程和/或用戶線程可被分配不同的優(yōu)先級(jí)??蓪?shí)施方法200和300中的鎖定/終止機(jī)制而無(wú)需在內(nèi)核中發(fā)送或發(fā)起系統(tǒng)呼叫。
[0030]圖4示出了網(wǎng)絡(luò)單元400的實(shí)施例,所述網(wǎng)絡(luò)單元可以是在網(wǎng)絡(luò)中路由數(shù)據(jù)或報(bào)文的任何設(shè)備。例如,網(wǎng)絡(luò)單元400可位于路由器或與其他組件交換或傳輸數(shù)據(jù)的任意網(wǎng)絡(luò)組件中。網(wǎng)絡(luò)400可包括一個(gè)或多個(gè)耦合到接收器412 (Rx)的入端口 410,所述接收器可用于從其他組件接收數(shù)據(jù)、報(bào)文或幀。網(wǎng)絡(luò)400可包括耦合到接收器412的邏輯單元或處理器420并用于處理數(shù)據(jù)或確定將數(shù)據(jù)發(fā)送到哪些組件。邏輯單元420也可耦合到存儲(chǔ)單元440用于數(shù)據(jù)存儲(chǔ)。邏輯單元或處理器420也可用于實(shí)施或支持內(nèi)核-用戶共享的方法200和300。邏輯單元或處理器420可以使用硬件、軟件或兩者來(lái)實(shí)施。網(wǎng)絡(luò)單元400還可包括一個(gè)或多個(gè)耦合到發(fā)射器432 (Tx)的出端口 430,所述發(fā)射器可用于傳輸數(shù)據(jù)、報(bào)文或幀到其他組件。 [0031]上述組件和/或方法可在任何通用網(wǎng)絡(luò)組件上實(shí)施,例如計(jì)算機(jī)或網(wǎng)絡(luò)組件,其具有足夠的處理能力、存儲(chǔ)資源和網(wǎng)絡(luò)吞吐能力來(lái)處理其上的必要工作負(fù)荷。圖5示出了一種典型的通用網(wǎng)絡(luò)組件500,其適用于實(shí)施本文所揭示組件的一項(xiàng)或多項(xiàng)實(shí)施例。網(wǎng)絡(luò)組件500包括處理器502 (可以稱(chēng)為中央處理器單元或CPU),其與包括輔助存儲(chǔ)器504、只讀存儲(chǔ)器(ROM) 506、隨機(jī)存取存儲(chǔ)器(RAM) 508、輸入/輸出(I/O)設(shè)備510,以及網(wǎng)絡(luò)連接設(shè)備512在內(nèi)的存儲(chǔ)設(shè)備通信。處理器502可以作為一個(gè)或多個(gè)CPU芯片實(shí)施,或者可以為一個(gè)或多個(gè)專(zhuān)用集成電路(ASIC)的一部分。
[0032]輔助存儲(chǔ)器504通常由一個(gè)或多個(gè)磁盤(pán)驅(qū)動(dòng)器或磁帶驅(qū)動(dòng)器組成,用于數(shù)據(jù)的非易失性存儲(chǔ),且如果RAM508的大小不足以保存所有工作數(shù)據(jù),那么所述輔助存儲(chǔ)器還用作溢流數(shù)據(jù)存儲(chǔ)設(shè)備。輔助存儲(chǔ)器504可以用于存儲(chǔ)程序,當(dāng)選擇執(zhí)行這些程序時(shí),所述程序?qū)⒓虞d到RAM508中。R0M506用于存儲(chǔ)在程序執(zhí)行期間讀取的指令以及可能讀取的數(shù)據(jù)。R0M506為非易失性存儲(chǔ)設(shè)備,其存儲(chǔ)容量相對(duì)于輔助存儲(chǔ)器504的較大存儲(chǔ)容量而言通常較小。RAM508用于存儲(chǔ)易失性數(shù)據(jù),并且可能用于存儲(chǔ)指令。R0M506和RAM508兩者的存取速度通常比輔助存儲(chǔ)器504的存取速度快。
[0033]本發(fā)明公開(kāi)至少一項(xiàng)實(shí)施例,且所屬領(lǐng)域的普通技術(shù)人員對(duì)所述實(shí)施例和/或所述實(shí)施例的特征作出的變化、組合和/或修改均在本發(fā)明公開(kāi)的范圍內(nèi)。因組合、合并和/或省略所述實(shí)施例的特征而得到的替代性實(shí)施例也在本發(fā)明的范圍內(nèi)。應(yīng)當(dāng)理解的是,本發(fā)明已明確闡明了數(shù)值范圍或限制,此類(lèi)明確的范圍或限制應(yīng)包括涵蓋在上述范圍或限制(如從大約I至大約10的范圍包括2、3、4等;大于0.10的范圍包括0.11,0.12,0.13等)內(nèi)的類(lèi)似數(shù)量級(jí)的迭代范圍或限制。例如,每當(dāng)公開(kāi)具有下限R1和上限Ru的數(shù)值范圍時(shí),具體是公開(kāi)落入所述范圍內(nèi)的任何數(shù)字。具體而言,特別公開(kāi)所述范圍內(nèi)的以下數(shù)字:R =R^kMRu-R1),其中k為從I %到100%范圍內(nèi)以1%遞增的變量,即,k為1%、2%、3%、4%,7%,...,70%,71%,72%,...、97%、96%、97%、98%、99%或 100%。此外,還特此公開(kāi)了,上文定義的兩個(gè)R值所定義的任何數(shù)值范圍。相對(duì)于權(quán)利要求的某一要素,術(shù)語(yǔ)“可選擇”的使用表示該要素可以是“需要的”,或者也可以是“不需要的”,二者均在所述權(quán)利要求的范圍內(nèi)。使用如“包括”、“包含”和“具有”等較廣術(shù)語(yǔ)應(yīng)被理解為提供對(duì)如“由...組成”、“基本上由...組成”以及“大體上由...組成”等較窄術(shù)語(yǔ)的支持。因此,保護(hù)范圍不受上文所述的限制,而是由所附權(quán)利要求書(shū)定義,所述范圍包含所附權(quán)利要求書(shū)的標(biāo)的物的所有等效物。每項(xiàng)和每條權(quán)利要求作為進(jìn)一步公開(kāi)的內(nèi)容并入說(shuō)明書(shū)中,且權(quán)利要求書(shū)是本發(fā)明的實(shí)施例。所述揭示內(nèi)容中的參考的論述并不是承認(rèn)其為現(xiàn)有技術(shù),尤其是具有在本申請(qǐng)案的在先申請(qǐng) 優(yōu)先權(quán)日:期之后的
【公開(kāi)日】期的任何參考。本發(fā)明中所引用的所有專(zhuān)利、專(zhuān)利申請(qǐng)案和公開(kāi)案的揭示內(nèi)容特此以引用的方式并入本文本中,其提供補(bǔ)充本發(fā)明的示例性、程序性或其他細(xì)節(jié)。
[0034]雖然本發(fā)明中已提供若干實(shí)施例,但應(yīng)理解,在不脫離本發(fā)明的精神或范圍的情況下,本發(fā)明所公開(kāi)的系統(tǒng)和方法可以以許多其他特定形式來(lái)體現(xiàn)。本發(fā)明的實(shí)例應(yīng)被視為說(shuō)明性而非限制性的,且本發(fā)明并不限于本文本所給出的細(xì)節(jié)。例如,各種元件或組件可以在另一系統(tǒng)中組合或合并,或者某些特征可以省略或不實(shí)施。
[0035]此外,在不脫離本發(fā)明的范圍的情況下,各種實(shí)施例中描述和說(shuō)明為離散或單獨(dú)的技術(shù)、系統(tǒng)、子系統(tǒng)和方法可以與其他系統(tǒng)、模塊、技術(shù)或方法進(jìn)行組合或合并。展示或論述為彼此耦接或直接耦接或通信的其他項(xiàng)也可以采用電方式、機(jī)械方式或其他方式通過(guò)某一接口、設(shè)備或中間組件間接地耦接或通信。其他變化、替代和改變的示例可以由本領(lǐng)域的技術(shù)人員在不脫離本文精神和所公開(kāi)的范圍的情況下確定。
【權(quán)利要求】
1.一種裝置,其特征在于,包括: 用于為包括內(nèi)核和用戶應(yīng)用的操作系統(tǒng)(OS)平臺(tái)實(shí)施多個(gè)操作的一個(gè)或多個(gè)處理器; 一個(gè)或多個(gè)所述內(nèi)核和所述用戶應(yīng)用共享的資源塊;以及 對(duì)應(yīng)于所述共享的資源塊的一個(gè)或多個(gè)所述內(nèi)核和所述用戶應(yīng)用共享的鎖, 其中所述用戶應(yīng)用用于通過(guò)直接訪問(wèn)所述鎖無(wú)需使用到內(nèi)核的系統(tǒng)呼叫來(lái)同步用戶線程和內(nèi)核線程對(duì)所述共享資源塊的使用。
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,OS平臺(tái)是多處理網(wǎng)絡(luò)路由OS平臺(tái),用戶應(yīng)用是網(wǎng)絡(luò)路由功能。
3.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述共享資源塊包括多個(gè)所述內(nèi)核和所述用戶應(yīng)用之間的共享內(nèi)存塊,所述鎖包括多個(gè)互斥鎖、讀/寫(xiě)鎖以及自旋鎖中的至少一個(gè)。
4.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述共享資源塊包括所述內(nèi)核和所述用戶應(yīng)用之間共享的零復(fù)制套接字。
5.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述用戶應(yīng)用通過(guò)將來(lái)自?xún)?nèi)核空間的所述共享資源塊的所述數(shù) 據(jù)映射到用戶空間并在所述映射的數(shù)據(jù)上操作來(lái)共享所述共享資源塊。
6.根據(jù)權(quán)利要求1所述的裝置,其特征在于,為所述OS進(jìn)行的所述操作包括多個(gè)根據(jù)優(yōu)先級(jí)分類(lèi)的內(nèi)核線程和用戶線程,所述具有較高優(yōu)先級(jí)的所述內(nèi)核線程允許通過(guò)終止所述用戶線程刪除由具有較低優(yōu)先級(jí)的所述用戶線程設(shè)置的所述鎖。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述共享鎖在內(nèi)核空間中初始化并由所述用戶線程和所述內(nèi)核線程使用。
8.一種網(wǎng)絡(luò)組件,其特征在于,包括: 共享的內(nèi)存塊;以及 用于OS平臺(tái)的處理器,用于接收來(lái)自在所述處理器上操作的第一 OS線程的請(qǐng)求以為多個(gè)OS線程訪問(wèn)所述共享的內(nèi)存塊,以及如果所述共享的內(nèi)存塊未被第二 OS線程鎖定或者由所述第二 OS線程進(jìn)行的鎖定的時(shí)間限制超時(shí),允許所述第一 OS線程鎖定并訪問(wèn)所述共享的內(nèi)存塊。
9.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)組件,其特征在于,所述第一OS線程是實(shí)施應(yīng)用編程接口(API)的應(yīng)用線程以初始化所述共享內(nèi)存塊上的鎖。
10.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)組件,其特征在于,所述第一OS線程是第一應(yīng)用線程,所述第二 OS線程是第二應(yīng)用線程。
11.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)組件,其特征在于,所述第一OS線程是應(yīng)用線程,所述第二 OS線程是內(nèi)核線程。
12.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)組件,其特征在于,所述第一OS線程在無(wú)需使用到OS內(nèi)核的系統(tǒng)呼叫完成所述共享內(nèi)存塊上的操作后設(shè)置鎖以訪問(wèn)共享內(nèi)存塊并刪除所述鎖。
13.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)組件,其特征在于,在允許所述第一OS線程鎖定并訪問(wèn)所述共享內(nèi)存塊前由所述第二 OS線程刪除所述鎖。
14.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)組件,其特征在于,所述鎖包括讀/寫(xiě)鎖和自旋鎖中的一個(gè)。
15.一種由實(shí)施包括多個(gè)線程的操作系統(tǒng)(OS)平臺(tái)的處理器實(shí)施的方法,所述多個(gè)線程包括應(yīng)用線程和內(nèi)核線程,其特征在于,包括: 如果鎖未由另一線程設(shè)置,第一線程為目標(biāo)內(nèi)存塊設(shè)置所述鎖; 所述第一線程接收來(lái)自O(shè)S內(nèi)核的關(guān)于允許的操作的信息和所述鎖的時(shí)間限制; 所述第一線程訪問(wèn)所述目標(biāo)內(nèi)存塊的地圖;以及 如果終止呼叫由所述第一線程從更高優(yōu)先級(jí)的線程接收或者所述目標(biāo)內(nèi)存塊上的操作由所述第一線程完成,所述第一線程釋放所述目標(biāo)內(nèi)存塊上的所述鎖。
16.根據(jù)權(quán)利要求15所述的方法,其特征在于,所述第一線程是較低優(yōu)先級(jí)的應(yīng)用線程,其中,所述較高優(yōu)先級(jí)的線程是內(nèi)核線程或較高優(yōu)先級(jí)的應(yīng)用線程。
17.根據(jù)權(quán)利要求15所述的方法,其特征在于,進(jìn)一步包括: 如果另一線程未設(shè)置鎖或者如果所述目標(biāo)內(nèi)存塊上的鎖的時(shí)間限制超時(shí),第二線程終止所述目標(biāo)內(nèi)存塊上設(shè)置的鎖; 所述第二線程為所述目標(biāo)內(nèi)存塊設(shè)置鎖;以及 所述第二線程訪問(wèn)所述目標(biāo)內(nèi)存塊。
18.根據(jù)權(quán)利要求15所述的方法,其特征在于,進(jìn)一步包括: 如果所述目標(biāo)內(nèi)存塊上的操作由所述第二線程完成,所述第二線程釋放所述目標(biāo)內(nèi)存塊上的所述鎖。
19.根據(jù)權(quán)利要求18所述的方法,其特征在于,所述第二線程是內(nèi)核線程或應(yīng)用線程,其優(yōu)先級(jí)與內(nèi)核線程相同或高于其他線程。
20.根據(jù)權(quán)利要求15所述的方法,其特征在于,所述鎖包括讀/寫(xiě)鎖和自旋鎖中的一個(gè)。
【文檔編號(hào)】G06F13/18GK103946827SQ201280056350
【公開(kāi)日】2014年7月23日 申請(qǐng)日期:2012年11月22日 優(yōu)先權(quán)日:2011年11月22日
【發(fā)明者】董雪松, 尹鴻濤, 蘭達(dá)爾·斯圖爾特, 胡士輝, 李鳳凱 申請(qǐng)人:華為技術(shù)有限公司