專利名稱::在操作系統(tǒng)內(nèi)核環(huán)境中高速緩存應(yīng)用數(shù)據(jù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
:本發(fā)明通常涉及操作系統(tǒng),且具體涉及在操作系統(tǒng)內(nèi)核環(huán)境中高速緩存應(yīng)用數(shù)據(jù)。
背景技術(shù):
:高速緩存已應(yīng)用于計算機(jī)科學(xué)的許多領(lǐng)域,它完全與字典中作出的“用于隱藏或存儲事物的安全場地”的定義一致(如參見Webster’sNewWorldDictionaryoftheAmerican,2ndcollegeed.1976)。處理器可具有多種級別的高速緩存(cache)(參見Hennessy,JohnandDavidAPatterson,ComputerArchitectureAQuantitativeApproach2nded.SanFranciscoMorganKaufmann,1996,p.375),而一些文件系統(tǒng)也能具有高速緩存(參見Solomon,DavidandMarkRussinovich,InsideMicrosoftWindows20003rded.RedmondMicrosoftPress,2000,p.646)。諸如HTTP服務(wù)器(Fielding,R.,etal.,RFC2068,1997,p.70,http//www.ietf.org/rfc/rfc2068.txt)的應(yīng)用(application)也可具有高速緩存。還存在有更多例子。一些應(yīng)用甚至在操作系統(tǒng)內(nèi)核中具有應(yīng)用專用的高速緩存(Hu,Elbert,etal.,“AdaptiveFastPathArchitecture”,IBMJournalofResearchandDevelopment,March2001,p.191-206)。術(shù)語“內(nèi)核”通常指運行在特權(quán)模式中的那部分操作系統(tǒng);它是操作系統(tǒng)實現(xiàn)基本功能和服務(wù)的重要部分。然而,迄今為止,據(jù)了解還不存在任何一種獨立于數(shù)據(jù)的源的、通用操作系統(tǒng)內(nèi)核環(huán)境的高速緩存。這樣,就產(chǎn)生了克服這種缺陷的需求。
發(fā)明內(nèi)容根據(jù)本發(fā)明至少一個現(xiàn)有優(yōu)選實施例,本發(fā)明廣泛考慮了一種既能高速緩存專用于應(yīng)用的數(shù)據(jù),又能高速緩存獨立于應(yīng)用的數(shù)據(jù),并基本上通過任何應(yīng)用協(xié)議來傳遞這些數(shù)據(jù)的通用操作系統(tǒng)內(nèi)核的高速緩存。數(shù)據(jù)可來自多個源,并可使用多個內(nèi)核專用機(jī)構(gòu)(mechanism)將其存儲在內(nèi)核高速緩存中。本發(fā)明還廣泛考慮了用于管理該高速緩存的系統(tǒng)??傊?,一方面,本發(fā)明提供一種用于在操作系統(tǒng)內(nèi)核環(huán)境中高速緩存應(yīng)用數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括用于創(chuàng)建至少一個高速緩存對象的裝置,該高速緩存對象用于在內(nèi)核環(huán)境中存儲所緩存的內(nèi)容;至少一個用于查找至少一個高速緩存對象的裝置;和用于從多個數(shù)據(jù)源收集數(shù)據(jù)并將所收集的數(shù)據(jù)賦予至少一個高速緩存對象的裝置。另一方面,本發(fā)明提供了一種在操作系統(tǒng)內(nèi)核環(huán)境中高速緩存應(yīng)用數(shù)據(jù)的方法,該方法包括以下步驟創(chuàng)建至少一個用于在內(nèi)核環(huán)境中存儲所緩存內(nèi)容的高速緩存對象;查找至少一個高速緩存對象;以及從多個數(shù)據(jù)源收集數(shù)據(jù)并將所收集的數(shù)據(jù)賦予至少一個高速緩存對象。此外,又一方面,本發(fā)明提供了一種可被機(jī)器讀取的程序存儲裝置,具體包括可被機(jī)器執(zhí)行的指令程序,以執(zhí)行在操作系統(tǒng)的內(nèi)核環(huán)境中高速緩存應(yīng)用數(shù)據(jù)的方法步驟,所述方法包括如下步驟創(chuàng)建至少一個用于在內(nèi)核環(huán)境中存儲所緩存內(nèi)容的高速緩存對象;查找至少一個高速緩存對象;以及從多個數(shù)據(jù)源收集數(shù)據(jù)并將所收集的數(shù)據(jù)賦予至少一個高速緩存對象。為更好地理解本發(fā)明以及其他更多特征和優(yōu)點,下面將結(jié)合附圖,詳細(xì)描述本發(fā)明,同時將在所附權(quán)利要求中給出本發(fā)明的范圍。圖1的框圖表示一運行環(huán)境;圖2的示例圖表示以示例說明的不同對象及其指針;圖3的框圖表示多個模塊與對象之間的交互;圖4的示圖表示用于高速緩存對象的存儲器劃分和指針;圖5的示圖表示用于數(shù)據(jù)源的存儲器劃分和指針;圖6的框圖表示在對象與模塊之間關(guān)于數(shù)據(jù)請求的通信;圖7的框圖表示各種內(nèi)核組件;圖8的框圖表示文件數(shù)據(jù)源和與之相關(guān)聯(lián)的內(nèi)核組件之間的通信;圖9的框圖表示HTTP數(shù)據(jù)源和與之相關(guān)聯(lián)的內(nèi)核組件之間的通信;圖10的框圖表示用戶空間與內(nèi)核空間之間的通信。具體實施例方式通常,本發(fā)明至少一個現(xiàn)有優(yōu)選實施例涉及用于構(gòu)建高性能網(wǎng)絡(luò)服務(wù)器的內(nèi)核運行環(huán)境。本發(fā)明的一個方面涉及一種N源內(nèi)核高速緩存(NICache,N-sourceIn-kernelCache)。NICache使得一個或多個應(yīng)用(application)有可能為獲得高性能而對操作系統(tǒng)進(jìn)行擴(kuò)展。這里所述的通過NICache增強(qiáng)的應(yīng)用為自適應(yīng)快速路徑體系結(jié)構(gòu)(AFPA,AdaptiveFastPathArchitecture)。AFPA是一種為來自多個分散源的數(shù)據(jù)提供服務(wù)的內(nèi)核網(wǎng)絡(luò)服務(wù)器加速器。應(yīng)該將其理解為,NICache不是一個獨立的應(yīng)用,它必須為一個或多個應(yīng)用所使用。下面將給出本發(fā)明所用一些術(shù)語的具體定義。“回調(diào)函數(shù)(callbackfunction)”,可將其理解為一種指向不連續(xù)編碼的指針(reference),即,所指定的并且在以后所需某一時刻被調(diào)用的函數(shù)。對于由于一事件而希望調(diào)用函數(shù)或不想同時調(diào)用多個函數(shù)的程序員,通常使用這種技術(shù)。例如,當(dāng)信號發(fā)生時,信號處理程序會執(zhí)行由程序員編寫的函數(shù)?!吧⒘斜?hashtable)”,可將其理解為程序員用于存儲數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)。散列表提供了對表中元素快速直接的尋址(addressing),而不必使用足夠存儲一組K元素的存儲機(jī)構(gòu)。散列表通常對每一數(shù)據(jù)元素應(yīng)用一種函數(shù)(一般稱之為散列函數(shù))以確定對表的索引。散列表通常長度是固定的。“鏈表(linkedlist)”,可將其理解為程序員用于存儲數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)。鏈表線性地存儲數(shù)據(jù),通常從表的前端或后端進(jìn)行訪問。鏈表長度不固定且易于增加。檢索鏈表所需的時間量通常隨表中項的數(shù)量線性地增加。下面將描述本發(fā)明的優(yōu)選實施例,如圖1所示,本機(jī)內(nèi)核環(huán)境(nativekernelenvironment)110可包括通常對用戶級應(yīng)用隱藏的操作系統(tǒng)的地址空間、執(zhí)行文本、安全屬性等。本機(jī)內(nèi)核環(huán)境將實現(xiàn)用戶空間中的應(yīng)用可用的服務(wù),并可為寫入內(nèi)核擴(kuò)展提供服務(wù)。術(shù)語“本機(jī)(native)”,用于對“內(nèi)核環(huán)境”進(jìn)行限制,專指一具體內(nèi)核環(huán)境。例如,AIX,Linux和Windows操作系統(tǒng)都具有截然不同的本機(jī)內(nèi)核環(huán)境。這種不同性是由于它們都具有專用的一組用于寫入子系統(tǒng)(如網(wǎng)絡(luò)適配器驅(qū)動器,視頻驅(qū)動器,或內(nèi)核擴(kuò)展)的應(yīng)用接口(API)。Windows在其本機(jī)內(nèi)核環(huán)境中提供數(shù)百個API。AIX和Linux各具有不同的API。此外,在文件系統(tǒng)與TCP/IP子系統(tǒng)如何交互方面,這些操作系統(tǒng)之間的運行環(huán)境也有所不同。N源內(nèi)核高速緩存(NICache)130使用這些API作為內(nèi)核擴(kuò)展。通常將NICache與一個或多個應(yīng)用120一起使用,或在一個或多個應(yīng)用120內(nèi)使用。一個應(yīng)用,無論其目的如何,也在本機(jī)內(nèi)核環(huán)境110中運行。在本發(fā)明一優(yōu)選實施例中,HTTP服務(wù)器加速器是所述應(yīng)用,NICache與該應(yīng)用相鏈接。即,不能將NICache作為獨立的執(zhí)行單元在該應(yīng)用外執(zhí)行。應(yīng)用本身可具有多個執(zhí)行單元,包括運行在用戶空間中的擴(kuò)展。應(yīng)用擴(kuò)展140最好不運行在本機(jī)內(nèi)核環(huán)境中而運行在用戶空間中。應(yīng)用擴(kuò)展140可以是HTTP服務(wù)器的一部分,HTTP服務(wù)器可基于所接收到的HTTP請求來產(chǎn)生動態(tài)內(nèi)容。對于應(yīng)用,將服務(wù)器劃分為內(nèi)核和用戶部分是有利的。這種方法允許服務(wù)器寫入器拾取和選擇服務(wù)器的哪些部分需要在用戶空間中,哪些部分需要在內(nèi)核中。例如,由于CGI需要用戶空間保護(hù),因而HTTP服務(wù)器總是希望在用戶空間運行客戶通用網(wǎng)關(guān)接口(CGI)請求,而不是在內(nèi)核中。在本發(fā)明的優(yōu)選實施例中,應(yīng)用處理包括GET,HEAD和POST請求的HTTP請求。如果高速緩存中存在一響應(yīng),那么該請求是從內(nèi)核被提供的。然而,如果HTTP請求是對動態(tài)內(nèi)容的請求(如CGI請求),那么它將由應(yīng)用擴(kuò)展140來處理。應(yīng)用擴(kuò)展執(zhí)行需要用戶空間執(zhí)行環(huán)境(context)的任何部分請求。NICache130對其相關(guān)(accompanying)應(yīng)用120提供API。所有到API的調(diào)用通過高速緩存對象管理器210(如圖2所示)。在圖2中,高速緩存對象管理器210最好代理到NICache的所有調(diào)用(call),以及管理所有的內(nèi)部組件和邏輯。為了最優(yōu)地實現(xiàn)其功能,高速緩存對象管理器可查詢260諸如物理存儲器利用(utilization)或CPU利用之類的機(jī)器硬件狀態(tài)。它還可查詢260本機(jī)內(nèi)核環(huán)境的狀態(tài),即非分頁池(non-pagedpool)的使用和空閑頁數(shù)描述符的數(shù)量。所緩存的內(nèi)容是NICache為應(yīng)用高速緩存的數(shù)據(jù)。更具體說,它是應(yīng)用所需的要保存在易于檢索(retrieve)數(shù)據(jù)的系統(tǒng)中的數(shù)據(jù)。這種數(shù)據(jù)可以為任何源生成的任何格式,如ASCII或二進(jìn)制。對緩存內(nèi)容的限制是本機(jī)內(nèi)核環(huán)境的限制。每一部分?jǐn)?shù)據(jù)由其源而確定。這些源可包括來自用戶級程序的輸出,對HTTPGET請求作出的響應(yīng),或本地或遠(yuǎn)端文件的內(nèi)容。高速緩存內(nèi)容存儲在高速緩存對象230,231,232中。高速緩存對象是使用專用內(nèi)核機(jī)構(gòu)存儲和緩存所需數(shù)據(jù)的結(jié)構(gòu)和程序。這些機(jī)構(gòu)可包括文件系統(tǒng)高速緩存,插針存儲器(pinnedmemory),或可分頁存儲器以及表示多個高速緩存對象的類型和類??蓪⒚總€高速緩存對象與應(yīng)用可能提供的描述符或檢索鍵相關(guān)聯(lián)。為了保持和定位高速緩存內(nèi)容,高速緩存對象管理器210使用任意一個容器數(shù)據(jù)結(jié)構(gòu)220。這些容器最好以各自特定的方式保存指向高速緩存對象230的指針。例如,容器可包括鏈表221,散列表220,二叉樹,或數(shù)組。鏈表容器221最好具有指向雙向鏈表頭部高速緩存對象的指針250。散列表容器220具有指向散列表中存儲的所有高速緩存對象的指針270。必須將指向每個高速緩存的指針存儲在至少一個容器中。對于哪些容器保持哪些高速緩存對象,高速緩存對象管理器210最好具有惟一的判斷??苫跀?shù)據(jù)源,系統(tǒng)資源的使用量,或其他標(biāo)準(zhǔn),將其他容器用于對高速緩存對象分類。每個高速緩存對象最好與單個數(shù)據(jù)源相聯(lián)系。數(shù)據(jù)源描述了高速緩存對象的數(shù)據(jù)來自何處,后面將對數(shù)據(jù)源做詳細(xì)描述。數(shù)據(jù)源代表高速緩存對象與本機(jī)內(nèi)核環(huán)境110進(jìn)行通信215,225,235。為了對其數(shù)據(jù)源240,241,242進(jìn)行定位,每一高速緩存對象230,231,232最好保持指向該數(shù)據(jù)源的指針280。同樣,該數(shù)據(jù)源具有指回高速緩存對象的指針290。NICache130最好可同時支持任何類型的任意多個高速緩存對象。此外,NICache130可同時支持來自多個源的數(shù)據(jù)。從任何源都可對任何類型的高速緩存對象賦值(populate)。例如,將其內(nèi)容存儲在插針存儲器中的高速緩存對象,可從本地文件接收內(nèi)容,或可從HTTP響應(yīng)來接收內(nèi)容。為清楚起見,高速緩存對象存儲高速緩存的內(nèi)容。數(shù)據(jù)的源識別出那些內(nèi)容來自何處,并且被配置用于檢索該內(nèi)容。每個高速緩存對象都與單個數(shù)據(jù)源相關(guān)聯(lián),反之亦然。對于哪種類型的高速緩存對象能與哪種類型的數(shù)據(jù)源相配最好不要有任何限制,反之亦然。下面,如圖3所示,NICache130通常可對來自一個或多個應(yīng)用120的請求作出響應(yīng)。作為高速緩存,NICache130響應(yīng)查找/查尋310,存儲/創(chuàng)建350和去除/刪除380的請求。對于高速緩存對象操作的所有請求,諸如上述的請求,最好是被發(fā)送到高速緩存對象管理器210中。高速緩存對象管理器210最好管理所有高速緩存對象,從而處理所有外部請求。當(dāng)應(yīng)用120需將數(shù)據(jù)緩存時,它最好向NICache130發(fā)送創(chuàng)建命令,并將指向數(shù)據(jù)源的指針傳給它(盡管不是數(shù)據(jù))?;跀?shù)據(jù)源中的字段,收集260的關(guān)于系統(tǒng)當(dāng)前狀態(tài)以及NICache當(dāng)前狀態(tài)的信息,高速緩存對象管理器210最好確定出使用那種存儲機(jī)構(gòu)來存儲數(shù)據(jù)(即使用高速緩存對象的類型)。確定出高速緩存對象類型之后,最好創(chuàng)建360該類型的高速緩存對象330,并在一個或多個適當(dāng)?shù)娜萜?20,221中存儲361,362指向該高速緩存象的指針。將指向最新創(chuàng)建的高速緩存對象的指針返回370給應(yīng)用120。相反,當(dāng)應(yīng)用120打算從高速緩存中移除內(nèi)容時,它最好向NICache130啟動調(diào)用通過傳遞(passin)指向所要移除的高速緩存對象的指針來刪除380該高速緩存對象。高速緩存對象管理器210通過調(diào)用在任何包含指向該高速緩存對象指針的容器220,221上的移除程序390,391,而后向高速緩存對象330發(fā)送刪除命令,來處理來自應(yīng)用120的請求380。最好是該高速緩存對象將清除它正使用來存儲高速緩存內(nèi)容的任何易失性和非易失性存儲器(storage)。實現(xiàn)這些操作之后,高速緩存對象管理器210最好刪除被高速緩存對象數(shù)據(jù)結(jié)構(gòu)本身所使用的所有易失性存儲器。當(dāng)應(yīng)用需要在高速緩存NICache130中存儲的數(shù)據(jù)時,最好基于標(biāo)識符對高速緩存對象發(fā)出查找請求310。在本發(fā)明的示例性實施例中,這種標(biāo)識符包括HTTP統(tǒng)一資源標(biāo)識符(URI,UniversalResourceIdentifier)(Berners-Lee,T.,etal.,RFC1945,1996,http//www.ieft.org/rfc/rfc1945.txt)。如果高速緩存對象處于至少NICache的容器其中的一個中,則將其返回312到應(yīng)用120。在本實施例中還包括“快速檢索容器”的概念——其為一種容器,在這種容器中在固定時間內(nèi)完成對標(biāo)識符的查找,且該高速緩存對象知道如何定位這種容器。為此,NICache的優(yōu)選實施例使用散列表220。當(dāng)然,高速緩存對象管理器向這種快速容器發(fā)送查找調(diào)用320來查找在該標(biāo)識符下存儲的數(shù)據(jù)。一旦定位,該容器將向高速緩存對象管理器210返回340高速緩存對象,而高速緩存對象管理器210向應(yīng)用返回高速緩存對象(或未找到)。這些操作可同步進(jìn)行,或可異步進(jìn)行。NICache130的優(yōu)選實施例包括作為容器221,220兩者之一的鏈表容器221。最好使用加權(quán)的最近最少使用的(LRU,LeastRecentlyUsed)算法對該鏈表進(jìn)行分類。每次將高速緩存對象作為查找請求310的結(jié)果返回時,最好將該高速緩存對象移到該鏈表的頭部。這會確保將最近最少訪問的高速緩存對象逼近該表的尾部。例如在資源有限的環(huán)境中,當(dāng)必須將高速緩存對象從高速緩存移除時,這些信息將會有用。高速緩存對象多個不同的類會導(dǎo)致高速緩存對象多個不同的實現(xiàn)方式;然而,所有高速緩存對象都通常需要具有某些部分。如圖4和圖5所示,在高速緩存對象需要通知高速緩存對象管理器數(shù)據(jù)的源已被移除從而高速緩存對象本身也必須被移除的情況下,最好保持指向高速緩存對象管理器210的指針450。元數(shù)據(jù)結(jié)構(gòu)410最好具有描述這種高速緩存對象的信息。在此將找到生成網(wǎng)絡(luò)協(xié)議頭所需的信息。每個高速緩存對象最好包含有指向單個元數(shù)據(jù)的指針。同樣,每個高速緩存對象最好保持指向利用420的指針,該利用420描述了與其相應(yīng)的高速緩存對象230的系統(tǒng)資源利用。高速緩存對象最好包含指向一列被包含的高速緩存對象430的指針。當(dāng)應(yīng)用請求用于高速緩存對象的數(shù)據(jù)時,則將來自被包含的高速緩存對象的數(shù)據(jù)以及原始高速緩存對象的數(shù)據(jù)一起返回。被包含的高速緩存對象結(jié)構(gòu)430可包含用于發(fā)送被包含的高速緩存對象數(shù)據(jù)的規(guī)則,如排序。高速緩存對象的專用類型部分(type-specificportion)430最好包含高速緩存對象使用的任意和所有數(shù)據(jù)與指針以以定義類型的方式保持緩存內(nèi)容。數(shù)據(jù)源240可保持指向各自高速緩存對象230的指針290,反之亦然。圖4和圖5顯示出這種聯(lián)系。除指向高速緩存對象的指針290外,每個數(shù)據(jù)源最好還保存有數(shù)據(jù)的大小(若有的話)和數(shù)據(jù)到期的時間(若有的話)。在數(shù)據(jù)源240的專用類型510部分中最好包含有對數(shù)據(jù)源專用的信息和如何從源檢索內(nèi)容的信息。下面如圖6所示,當(dāng)應(yīng)用120準(zhǔn)備從高速緩存對象230提取信息時,它最好發(fā)出對數(shù)據(jù)的請求610,該請求可選擇性地包括偏移量和長度。在NICache該優(yōu)選實施方式中,當(dāng)需要內(nèi)容以發(fā)送到客戶機(jī)時,應(yīng)用將僅發(fā)送這種請求610。此外,高速緩存對象不會預(yù)填充該內(nèi)容。因此,當(dāng)對數(shù)據(jù)的請求610傳到高速緩存對象時,可能數(shù)據(jù)不存在(即未存儲在高速緩存對象內(nèi))。如果數(shù)據(jù)存在的話,則該高速緩存對象立即將內(nèi)容返回620。然后,基于高速緩存對象的所包含的高速緩存對象結(jié)構(gòu)430的規(guī)則,高速緩存對象可將請求620轉(zhuǎn)發(fā)到被包含的高速緩存對象。如果在高速緩存對象中內(nèi)容不存在的話,則調(diào)用610以未定狀態(tài)編碼返回,并且該高速緩存對象向其數(shù)據(jù)源啟動調(diào)用來請求數(shù)據(jù),該調(diào)用可選擇地包括偏移量和長度。當(dāng)數(shù)據(jù)源已具有來自源的請求的信息時,就立即將請求630返回,從而將數(shù)據(jù)傳回到應(yīng)用120。然而,在一些情況下,數(shù)據(jù)源必須經(jīng)由內(nèi)核機(jī)構(gòu)來接觸615數(shù)據(jù)的源以取得數(shù)據(jù)的最新副本。在這種情況下,高速緩存對象的調(diào)用630被返回以未定(pending)狀態(tài)編碼,而數(shù)據(jù)源等待源返回數(shù)據(jù)。一旦數(shù)據(jù)源接收到高速緩存對象所需的一些或所有內(nèi)容,就將數(shù)據(jù)回調(diào)640給高速緩存對象,并使高速緩存對象將數(shù)據(jù)返回620給應(yīng)用120。對于單次到數(shù)據(jù)源的請求630可調(diào)用多次高速緩存對象回調(diào)640。這種雙層異步接口可防止應(yīng)用和高速緩存對象處于等待。這允許應(yīng)用120在中斷級或較高中斷請求級(IRQL)提交對數(shù)據(jù)610的請求。如上所述,數(shù)據(jù)源與本機(jī)內(nèi)核環(huán)境110進(jìn)行通信以獲取最新數(shù)據(jù)的副本,如附圖標(biāo)記615所示。圖7重點講述在本機(jī)內(nèi)核環(huán)境110中的不同子組件。盡管在操作系統(tǒng)之間其名稱以及可能的分組會有所不同,但這些組件都以各自的特性在商業(yè)操作系統(tǒng)如AIX,Linux和Windows中存在。NICache可能會使用多個這樣的組件。文件系統(tǒng)710是處理向非易失性存儲器和非易失性存儲器傳輸數(shù)據(jù)的操作系統(tǒng)的一部分。該存儲器可以是位于同一物理機(jī)器中的物理或邏輯的磁盤驅(qū)動器,或位于通過網(wǎng)絡(luò)相連的物理或邏輯的磁盤驅(qū)動器。可將來自這些文件的數(shù)據(jù)賦予高速緩存對象。NICache數(shù)據(jù)源可使用這些文件系統(tǒng)的API進(jìn)行通信,以創(chuàng)建文件,打開文件,檢索文件句柄(handler),讀取數(shù)據(jù)和寫入數(shù)據(jù)。圖8顯示出在示例性實施例中文件數(shù)據(jù)源800如何向文件系統(tǒng)710發(fā)送文件打開請求810,以及如何返回文件句柄820。存儲器管理器720是一組負(fù)責(zé)分配、解除分配和管理虛擬存儲器,解析硬件存儲器異常和管理頁表(參見SolomonandRussinovich,supra,p.380)的系統(tǒng)服務(wù)。為了滿足高速緩存對象的索取數(shù)據(jù)(GetData)請求630,數(shù)據(jù)源可能需要分配725存儲器(插針存儲器,非分頁池等)或訪問共享存儲器。內(nèi)核的網(wǎng)絡(luò)棧(stack)730通常通過網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù),詳細(xì)解釋請參見W.RichardStevens,TCP/IPIllustrated,Volume1TheProtocolsAddison-Wesley,1994。數(shù)據(jù)源可通過與網(wǎng)絡(luò)棧730的交互735來獲取其數(shù)據(jù)。圖9表示在NICache的示例性實施例中HTTP數(shù)據(jù)源900利用內(nèi)核的網(wǎng)絡(luò)棧730向HTTP服務(wù)器發(fā)送HTTP請求910(參見Berners-Lee,T..etal.,RFC1945,1996,http//www.ietf.org/rfc/rfc1945.txt)。對這些HTTP請求的響應(yīng)以數(shù)據(jù)流920的形式被路由返回到HTTP數(shù)據(jù)源900?;谄渌W(wǎng)絡(luò)協(xié)議需使用網(wǎng)絡(luò)棧730可創(chuàng)建多個數(shù)據(jù)源。進(jìn)程和線程740是指運行在與NICache相同的機(jī)器上但在不同的范圍(context)的程序。通過由本機(jī)內(nèi)核環(huán)境110提供的內(nèi)部進(jìn)程通信機(jī)構(gòu),數(shù)據(jù)源可與另一進(jìn)程或線程通信745。圖10顯示一類數(shù)據(jù)源與另一執(zhí)行程序或線程1030的交互,在示例性實施例中該類數(shù)據(jù)源為UserLevelDataSource1000。數(shù)據(jù)請求1010和含有數(shù)據(jù)的響應(yīng)1020通過用于內(nèi)部進(jìn)程通信的內(nèi)核機(jī)構(gòu)來通信,該內(nèi)核機(jī)構(gòu)包括套接字、數(shù)據(jù)流、共享存儲器、信令或管道。應(yīng)該理解,根據(jù)至少一個現(xiàn)有優(yōu)選實施例,本發(fā)明包括,用于創(chuàng)建至少一個用于在內(nèi)核環(huán)境中存儲所緩存內(nèi)容的高速緩存對象的裝置,至少一個用于查找至少一個高速緩存對象的裝置,和用于從多個數(shù)據(jù)源收集數(shù)據(jù)并將所收集的數(shù)據(jù)賦予至少一個高速緩存對象的裝置。綜合起來,可在至少一臺運行適合的軟件程序的通用計算機(jī)上實現(xiàn)這些組件。也可以在至少一塊集成電路或至少一塊集成電路的部分上實現(xiàn)這些組件。從而,應(yīng)當(dāng)理解本發(fā)明可以以硬件、軟件,或在二者的組合來實現(xiàn)。如果不另外聲明,則認(rèn)為此處提到和引用的所有專利,專利申請,專利公開和其他出版物(包括基于Web的出版物),在此全部引作參考。盡管在此參照附圖描述了本發(fā)明說明性的實施例,但應(yīng)該理解本發(fā)明不限于那些具體的實施例,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的范圍或精神的條件下可進(jìn)行各種其他修改和變化。權(quán)利要求1.一種用于在操作系統(tǒng)的內(nèi)核環(huán)境中高速緩存應(yīng)用數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括用于創(chuàng)建至少一個用于在內(nèi)核環(huán)境中存儲所緩存內(nèi)容的高速緩存對象的裝置;至少一個用于查找至少一個高速緩存對象的裝置;和用于從多個數(shù)據(jù)源收集數(shù)據(jù)并將所收集的數(shù)據(jù)賦予至少一個高速緩存對象的裝置。2.如權(quán)利要求1所述的系統(tǒng),其中至少一個高速緩存對象適合于采用至少一種專用于操作系統(tǒng)的存儲機(jī)構(gòu)。3.如權(quán)利要求2所述的系統(tǒng),其中至少有一種存儲機(jī)構(gòu)與以下二者至少之一相對應(yīng)獨立的高速緩存對象類型和獨立的高速緩存類。4.如權(quán)利要求1所述的系統(tǒng),其中所述系統(tǒng)專門管理和控制至少一個高速緩存對象。5.如權(quán)利要求4所述的系統(tǒng),還包括用于使至少一個高速緩存對象的處理適用于專用操作系統(tǒng)環(huán)境的裝置。6.如權(quán)利要求5所述的系統(tǒng),其中所述使至少一個高速緩存對象處理適用的裝置被配置用于基于以下至少一項使至少一個高速緩存對象的處理適用已用可分頁存儲器量;可用的空閑可分頁存儲器量;系統(tǒng)中可分頁存儲器總量;內(nèi)核中可分頁存儲器總量;已用非分頁存儲器量;可用的空閑非分頁存儲器量;系統(tǒng)中非分頁存儲器總量;內(nèi)核中非分頁存儲器總量;已用的系統(tǒng)頁表表項數(shù);可用系統(tǒng)頁表表項數(shù);分配到系統(tǒng)頁表的虛擬存儲器量;系統(tǒng)高速緩存的大??;在系統(tǒng)高速緩存中可用空間量;在系統(tǒng)高速緩存中已用空間量;系統(tǒng)工作組的大小;已用系統(tǒng)緩沖器數(shù)量;可用系統(tǒng)緩沖器數(shù)量;系統(tǒng)緩沖器數(shù)量;頁大?。唤⒌木W(wǎng)絡(luò)連接數(shù);一個或多個中央處理器(CPU)的利用;分配的工作線程數(shù);空閑工作線程數(shù);忙碌的工作線程數(shù);分配的高速緩存對象數(shù);在內(nèi)核中花費CPU時間的百分?jǐn)?shù);每時間單位系統(tǒng)中斷數(shù);每時間單位頁出錯數(shù);每時間單位在系統(tǒng)中的頁出錯數(shù);每時間單位分頁池分配的數(shù)量;每時間單位非分頁池分配的數(shù)量;旁視表的長度;打開文件描述符數(shù);一個或多個磁盤上可用空間量;和在中斷級以及其他已知較高的中斷請求級所花費時間的百分?jǐn)?shù)。7.如權(quán)利要求1所述的系統(tǒng),其中所述至少一個用于查找至少一個高速緩存對象的裝置包括至少一個數(shù)據(jù)結(jié)構(gòu)。8.如權(quán)利要求7所述的系統(tǒng),其中所述至少一個數(shù)據(jù)結(jié)構(gòu)由所述系統(tǒng)來控制。9.如權(quán)利要求8所述的系統(tǒng),其中所述至少一個數(shù)據(jù)結(jié)構(gòu)包括以下至少一個至少一個散列表、至少一個鏈表、至少一個樹、至少一個堆棧和至少一個隊列。10.如權(quán)利要求1所述的系統(tǒng),還包括存儲有關(guān)多個數(shù)據(jù)源詳細(xì)信息的易失性存儲器。11.如權(quán)利要求10所述的系統(tǒng),其中至少一個高速緩存對象利用所存儲的多個數(shù)據(jù)源的詳細(xì)信息適于與多個數(shù)據(jù)源保持一致。12.如權(quán)利要求1所述的系統(tǒng),其中將至少一個高速緩存對象的任何分類與多個數(shù)據(jù)源任何分類的一個相關(guān)聯(lián)。13.如權(quán)利要求12所述的系統(tǒng),其中用于存儲來自多個數(shù)據(jù)源的數(shù)據(jù)的任何裝置獨立于存儲有關(guān)多個數(shù)據(jù)源的詳細(xì)信息的任何裝置。14.如權(quán)利要求13所述的系統(tǒng),其中多個數(shù)據(jù)源獨立與至少一個高速緩存對象。15.如權(quán)利要求1所述的系統(tǒng),其中來自多個數(shù)據(jù)源的數(shù)據(jù)是應(yīng)用專用的。16.如權(quán)利要求1所述的系統(tǒng),其中來自多個數(shù)據(jù)源的數(shù)據(jù)獨立于應(yīng)用。17.如權(quán)利要求1所述的系統(tǒng),還包括用于刪除至少一個高速緩存對象的裝置。18.如權(quán)利要求1所述的系統(tǒng),還包括用于在對至少一個高速緩存對象賦值期間允許將來自多個數(shù)據(jù)源的數(shù)據(jù)發(fā)送到客戶機(jī)應(yīng)用的裝置。19.如權(quán)利要求1所述的系統(tǒng),其中客戶機(jī)應(yīng)用負(fù)責(zé)以下至少一個任何對請求參數(shù)的必要分析;產(chǎn)生多個數(shù)據(jù)源提供的之外的、任何必需的專用于應(yīng)用的響應(yīng)數(shù)據(jù);選擇至少一個數(shù)據(jù)的類型;和產(chǎn)生多個數(shù)據(jù)源。20.如權(quán)利要求1所述的系統(tǒng),其中多個數(shù)據(jù)源包括以下至少一個文件系統(tǒng);HTTP服務(wù)器;和用戶級應(yīng)用。21.如權(quán)利要求1所述的系統(tǒng),還包括用于根據(jù)請求返回所緩存內(nèi)容的裝置。22.如權(quán)利要求21所述的系統(tǒng),其中使所述返回緩存內(nèi)容的裝置適合于根據(jù)請求返回至少一個高速緩存對象的數(shù)據(jù)。23.如權(quán)利要求21所述的系統(tǒng),其中使所述返回緩存內(nèi)容的裝置適合于使用高速緩存對象返回至少一個被包含的高速緩存對象的數(shù)據(jù)。24.一種在操作系統(tǒng)的內(nèi)核環(huán)境中高速緩存應(yīng)用數(shù)據(jù)的方法,所述方法包括以下步驟創(chuàng)建至少一個用于在內(nèi)核環(huán)境中存儲緩存內(nèi)容的高速緩存對象;查找至少一個高速緩存對象;和從多個數(shù)據(jù)源收集數(shù)據(jù)并將所收集的數(shù)據(jù)賦予至少一個高速緩存對象。25.如權(quán)利要求24所述的方法,其中所述的創(chuàng)建步驟包括創(chuàng)建至少一個適用于采用至少一個專用于操作系統(tǒng)的存儲機(jī)構(gòu)的高速緩存對象。26.如權(quán)利要求25所述的方法,其中至少一個存儲機(jī)構(gòu)與以下至少一個相對應(yīng)獨立的高速緩存對象類型和獨立的高速緩存對象類。27.如權(quán)利要求24所述的方法,其中所述系統(tǒng)專門管理和控制至少一個高速緩存對象。28.如權(quán)利要求27所述的方法,還包括使至少一個高速緩存對象的處理適用于專用操作系統(tǒng)環(huán)境的步驟。29.如權(quán)利要求28所述的方法,其中所述使至少一個高速緩存對象的程序適用的步驟包括基于以下至少一項使至少一個高速緩存對象的處理適用已用可分頁存儲器量;可用的空閑可分頁存儲器量;系統(tǒng)中可分頁存儲器總量;內(nèi)核中可分頁存儲器總量;已用非分頁存儲器量;可用的空閑非分頁存儲器量;系統(tǒng)中非分頁存儲器總量;內(nèi)核中非分頁存儲器總量;已用的系統(tǒng)頁表表項數(shù);可用系統(tǒng)頁表表項數(shù);分配到系統(tǒng)頁表的虛擬存儲器量;系統(tǒng)高速緩存的大??;在系統(tǒng)高速緩存中可用空間量;在系統(tǒng)高速緩存中已用空間量;系統(tǒng)工作組的大小;已用系統(tǒng)緩沖器數(shù)量;可用系統(tǒng)緩沖器數(shù)量;系統(tǒng)緩沖器數(shù)量;頁大?。唤⒌木W(wǎng)絡(luò)連接數(shù);一個或多個中央處理器(CPU)的利用;分配的工作線程數(shù);空閑工作線程數(shù);忙碌的工作線程數(shù);分配的高速緩存對象數(shù);在內(nèi)核中花費CPU時間的百分?jǐn)?shù);每時間單位系統(tǒng)中斷數(shù);每時間單位頁出錯數(shù);每時間單位在系統(tǒng)中的頁出錯數(shù);每時間單位分頁池分配的數(shù)量;每時間單位非分頁池分配的數(shù)量;旁視表的長度;打開文件描述符數(shù);一個或多個磁盤上可用空間量;和在中斷級以及其他已知較高的中斷請求級所花費時間的百分?jǐn)?shù)。30.如權(quán)利要求24所述的方法,還包括提供至少一個數(shù)據(jù)結(jié)構(gòu);其中所述查找至少一個高速緩存對象的步驟包括利用所述至少一個數(shù)據(jù)結(jié)構(gòu)來查找至少一個高速緩存。31.如權(quán)利要求30所述的方法,其中所述至少一個數(shù)據(jù)結(jié)構(gòu)由所述系統(tǒng)控制。32.如權(quán)利要求31所述的方法,其中所述至少一個數(shù)據(jù)結(jié)構(gòu)包括以下至少一個至少一個散列表、至少一個鏈表、至少一個樹、至少一個堆棧和至少一個隊列。33.如權(quán)利要求24所述的方法,還包括為存儲有關(guān)多個數(shù)據(jù)源的數(shù)據(jù)信息而提供易失性存儲器的步驟。34.如權(quán)利要求33所述的方法,其中至少一個高速緩存對象利用所存儲的多個數(shù)據(jù)源的詳細(xì)信息來與多個數(shù)據(jù)源保持一致。35.如權(quán)利要求24所述的方法,其中將至少一個高速緩存對象的任何分類與多個數(shù)據(jù)源任何分類的一個相關(guān)聯(lián)。36.如權(quán)利要求35所述的方法,其中用于存儲來自多個數(shù)據(jù)源數(shù)據(jù)的任何裝置獨立于存儲有關(guān)多個數(shù)據(jù)源詳細(xì)信息的任何裝置。37.如權(quán)利要求36所述的方法,其中多個數(shù)據(jù)源獨立于至少一個高速緩存對象。38.如權(quán)利要求24所述的方法,其中來自多個數(shù)據(jù)源的數(shù)據(jù)是應(yīng)用專用的。39.如權(quán)利要求24所述的方法,其中來自多個數(shù)據(jù)源的數(shù)據(jù)獨立于應(yīng)用。40.如權(quán)利要求24所述的方法,還包括提供用于刪除至少一個高速緩存對象的裝置的步驟。41.如權(quán)利要求24所述的方法,還包括在對至少一個高速緩存對象賦值期間允許將來自多個數(shù)據(jù)源的數(shù)據(jù)發(fā)送到客戶機(jī)應(yīng)用的步驟。42.如權(quán)利要求24所述的方法,其中客戶機(jī)應(yīng)用負(fù)責(zé)以下至少一項任何對請求參數(shù)的必要分析;產(chǎn)生由多個數(shù)據(jù)源提供之外的、任何必需的專用于應(yīng)用的響應(yīng)數(shù)據(jù);選擇至少一個數(shù)據(jù)的類型;和產(chǎn)生多個數(shù)據(jù)源。43.如權(quán)利要求24所述的方法,其中多個數(shù)據(jù)源包括以下至少一個文件系統(tǒng);HTTP服務(wù)器;和用戶級應(yīng)用。44.如權(quán)利要求24所述的方法,還包括根據(jù)請求返回所緩存內(nèi)容的步驟。45.如權(quán)利要求44所述的方法,其中所述返回所緩存內(nèi)容的步驟包括根據(jù)請求返回至少一個高速緩存對象的數(shù)據(jù)。46.如權(quán)利要求44所述的方法,其中所述返回所緩存內(nèi)容的步驟包括使用高速緩存對象返回至少一個被包含的高速緩存對象的數(shù)據(jù)。47.一種可被機(jī)器讀取的程序存儲裝置,具體包括有可被機(jī)器執(zhí)行的指令程序,以執(zhí)行在操作系統(tǒng)的內(nèi)核環(huán)境中高速緩存應(yīng)用數(shù)據(jù)的方法步驟,所述方法包括如下步驟創(chuàng)建至少一個用于在內(nèi)核環(huán)境中存儲所緩存內(nèi)容的高速緩存對象;查找至少一個高速緩存對象;以及從多個數(shù)據(jù)源收集數(shù)據(jù)并將所收集的數(shù)據(jù)賦予至少一個高速緩存對象。全文摘要本發(fā)明實現(xiàn)了一種獨立于應(yīng)用的內(nèi)核高速緩存。該內(nèi)核高速緩存可快速有效地為應(yīng)用提供常用數(shù)據(jù)。利用操作系統(tǒng)提供的機(jī)構(gòu),實現(xiàn)了用于存儲內(nèi)容、高速緩存對象的方法和設(shè)備。每種操作系統(tǒng)都具有一個或多個內(nèi)核擴(kuò)展可用的內(nèi)核存儲的專用裝置。實現(xiàn)了一種為高速緩存對象獲得存儲的系統(tǒng)。定義了可允許多個不同數(shù)據(jù)的源的技術(shù)。通過使用多種協(xié)議,多個數(shù)據(jù)源可提供專用于應(yīng)用和/或獨立于應(yīng)用的數(shù)據(jù)。上述高速緩存對象存儲機(jī)構(gòu)獨立于數(shù)據(jù)源,反之亦然。定義了用于快速查找和管理高速緩存對象的技術(shù)。實現(xiàn)了用于將數(shù)據(jù)從數(shù)據(jù)源移動到高速緩存對象存儲機(jī)構(gòu)的機(jī)構(gòu)。文檔編號H04L29/08GK1497448SQ0315879公開日2004年5月19日申請日期2003年9月24日優(yōu)先權(quán)日2002年9月30日發(fā)明者杰森·D·拉沃伊,杰森D拉沃伊,M翠斯,約翰·M·翠斯申請人:國際商業(yè)機(jī)器公司