两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

使用進(jìn)程調(diào)度來提高數(shù)據(jù)吞吐量的系統(tǒng)和方法

文檔序號:6433857閱讀:183來源:國知局
專利名稱:使用進(jìn)程調(diào)度來提高數(shù)據(jù)吞吐量的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及計(jì)算機(jī)數(shù)據(jù)的處理,具體涉及到為應(yīng)用程序的處理提供數(shù)據(jù)的操作。
背景技術(shù)
數(shù)據(jù)輸入/輸出(I/O),包括將數(shù)據(jù)從一個(gè)計(jì)算機(jī)部件傳輸?shù)搅硪粋€(gè)計(jì)算機(jī)部件,通常是數(shù)據(jù)處理中的限制因素或者瓶頸。例如,在計(jì)算機(jī)上運(yùn)行的應(yīng)用程序典型地依靠較低等級的設(shè)備驅(qū)動(例如在核心程序模型中)向其提供用于處理的數(shù)據(jù)。因此程序的性能就依賴于能夠提供實(shí)現(xiàn)任務(wù)所需數(shù)據(jù)的驅(qū)動器的效率。
按照慣例,程序可以通過兩種方式從設(shè)備驅(qū)動器中接受數(shù)據(jù)。在第一種方式中,如果所請求的數(shù)據(jù)是現(xiàn)在不可得的,程序發(fā)送一個(gè)請求來從設(shè)備驅(qū)動器中接收數(shù)據(jù)。該請求被異步處理,即程序并不等待設(shè)備驅(qū)動器來提供所請求的數(shù)據(jù),并當(dāng)數(shù)據(jù)可得時(shí)所請求的數(shù)據(jù)在滯后的時(shí)間被發(fā)送給程序。在第二種方式中,數(shù)據(jù)請求被同步處理。在這種情況下,所請求的數(shù)據(jù)已經(jīng)被放置在隊(duì)列中并能被立即發(fā)送來響應(yīng)請求。這種數(shù)據(jù)發(fā)送的異步處理方法通常很少被選用,因?yàn)樗鼘?dǎo)致了真正的處理和存儲溢出,由于為跟蹤數(shù)據(jù)請求而對數(shù)據(jù)結(jié)構(gòu)定位和初始化的需要,也導(dǎo)致異步整體的溢出。而同步方式,相反,沒有這種溢出,但是要求驅(qū)動器已經(jīng)具有列隊(duì)備選的數(shù)據(jù)來響應(yīng)應(yīng)用程序的系統(tǒng)呼叫。因?yàn)樵诎l(fā)送所請求的數(shù)據(jù)時(shí)沒有延遲,在微軟Windows平臺下同步方式也被稱作“快速I/O”,盡管其他平臺可能使用不同的術(shù)語。因?yàn)橥椒椒ň哂袦p少溢出和立即發(fā)送數(shù)據(jù)的優(yōu)點(diǎn),應(yīng)該提高它的的使用率使之超過異步方法的使用率。
發(fā)明概述鑒于前面所述,本發(fā)明提供一種用于將數(shù)據(jù)從設(shè)備驅(qū)動器發(fā)送到應(yīng)用程序的系統(tǒng)極其方法,它通過使用進(jìn)程調(diào)度來提高所請求數(shù)據(jù)對于立即發(fā)送可實(shí)現(xiàn)的可能性,從而提高了數(shù)據(jù)發(fā)送中同步處理(例如快速I/O方式)的使用率。當(dāng)應(yīng)用程序需要用于處理的數(shù)據(jù)時(shí),檢查由設(shè)備驅(qū)動器所使用的來向程序發(fā)送已經(jīng)存儲好數(shù)據(jù)的數(shù)據(jù)隊(duì)列。如果數(shù)據(jù)隊(duì)列中的數(shù)據(jù)量較低,則修改系統(tǒng)的進(jìn)程調(diào)度來促進(jìn)設(shè)備驅(qū)動器的進(jìn)程,由此給予設(shè)備驅(qū)動器將更多數(shù)據(jù)放入數(shù)據(jù)隊(duì)列中以供程序消耗的機(jī)會。設(shè)備驅(qū)動器進(jìn)程的促進(jìn)可能通過不同方式來完成,包括將應(yīng)用程序程序進(jìn)程轉(zhuǎn)為另一個(gè)進(jìn)程(不必須是設(shè)備驅(qū)動器進(jìn)程),提高設(shè)備驅(qū)動器進(jìn)程的優(yōu)先級,和/或降低應(yīng)用程序進(jìn)程的優(yōu)先級,等等。
附圖概述附

圖1是一般舉例說明了示范計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)圖,在其上能實(shí)現(xiàn)用于本發(fā)明直接設(shè)備的對象配額管理。
附圖2是實(shí)現(xiàn)本發(fā)明實(shí)施方案的計(jì)算機(jī)系統(tǒng)的示意圖,它提高了將數(shù)據(jù)從驅(qū)動器傳送到應(yīng)用程序的數(shù)據(jù)請求的同步處理(例如,快速I/O)利用率。
附圖3是概括了通過進(jìn)程調(diào)度提高快速I/O使用率的方法的流程圖。
附圖4是表示了設(shè)備驅(qū)動器的多種狀態(tài)及其作為例子的以傳統(tǒng)方式使用的異步數(shù)據(jù)傳送的數(shù)據(jù)隊(duì)列的示意圖。
附圖5是表示了設(shè)備驅(qū)動器的狀態(tài)及其數(shù)據(jù)隊(duì)列的示意圖,數(shù)據(jù)隊(duì)列作為根據(jù)本發(fā)明的實(shí)施方案通過修改進(jìn)程調(diào)度的方式來提高快速I/O使用率的效果的例子。
發(fā)明詳述現(xiàn)在來看附圖,其中相同的編號指相同的元件,本發(fā)明被圖解為就如在一個(gè)適合的計(jì)算環(huán)境中被實(shí)現(xiàn)。盡管沒有要求,本發(fā)明將在計(jì)算機(jī)可執(zhí)行指令的一般范圍內(nèi)被描述,例如被個(gè)人計(jì)算機(jī)執(zhí)行的程序模塊。通常,程序模塊包括規(guī)則,程序,對象,構(gòu)件,數(shù)據(jù)結(jié)構(gòu),等等,它們實(shí)現(xiàn)特殊任務(wù)或者執(zhí)行特殊抽象數(shù)據(jù)類型。另外,本領(lǐng)域技術(shù)人應(yīng)當(dāng)理解本發(fā)明可能被其他計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)來執(zhí)行,包括手持設(shè)備,多處理器系統(tǒng),基于微處理或可編程客戶電器,網(wǎng)絡(luò)PCs,迷你計(jì)算機(jī),大型計(jì)算機(jī),等等。本發(fā)明可以在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中任務(wù)可通過由通信網(wǎng)絡(luò)所連接的遠(yuǎn)程設(shè)備來實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以即被置于本地也可以被置于遠(yuǎn)程存儲設(shè)備中。
下面的描述將以對一般目的的計(jì)算設(shè)備的描述開始,這些計(jì)算設(shè)備可能被應(yīng)用來實(shí)現(xiàn)本發(fā)明,并且將參考附圖2-5更加詳細(xì)地描述通過進(jìn)程調(diào)度來提高快速數(shù)據(jù)I/O的本發(fā)明的系統(tǒng)和方法?,F(xiàn)在來看附圖1,以傳統(tǒng)個(gè)人計(jì)算機(jī)20的形式表示了的一般目的計(jì)算設(shè)備,包括處理單元21,系統(tǒng)存儲器22,和系統(tǒng)總線23,它連接了包括從系統(tǒng)存儲器到處理單元21的多種系統(tǒng)部件,。系統(tǒng)總線23可以是幾類總線結(jié)構(gòu)中的任何一種,包括存儲總線或者存儲控制器,外圍設(shè)備總線,和用于多種總線結(jié)構(gòu)的本地總線。系統(tǒng)存儲器包括只讀存儲器(ROM)24和隨機(jī)存取存儲器(RAM)25?;A(chǔ)輸入/輸出系統(tǒng)(BIOS)26被存儲在ROM24中,它包括了例如在啟動時(shí)幫助在個(gè)人計(jì)算機(jī)20內(nèi)部的元件之間傳送信息的基礎(chǔ)程序。個(gè)人計(jì)算機(jī)20還包括用于從硬盤60中讀寫的硬盤驅(qū)動器27,用于在可移動磁盤29中讀寫的磁盤驅(qū)動器28,以及用于在可移動光盤31例如CD ROM或者其他光介質(zhì)中讀寫的光盤驅(qū)動器30。
硬盤驅(qū)動器27,磁盤驅(qū)動器28,和光盤驅(qū)動器30分別通過硬盤驅(qū)動器接口32,磁盤驅(qū)動器接口33,和光盤驅(qū)動器34,連接到系統(tǒng)總線23上。驅(qū)動器和它們連帶的計(jì)算機(jī)可讀介質(zhì),為計(jì)算機(jī)可讀指令、數(shù)據(jù)接口、程序模塊和其他用于個(gè)人計(jì)算機(jī)20的數(shù)據(jù)提供非易失性的存儲器。盡管這里所描述的示范性的環(huán)境使用了硬盤60,可移動磁盤29,和可移動光盤31,但對本領(lǐng)域技術(shù)人員來說應(yīng)當(dāng)理解能夠被計(jì)算機(jī)接受的其他類型的能存儲數(shù)據(jù)的可機(jī)讀介質(zhì),例如,磁帶,閃存卡,數(shù)字化視頻光盤,伯努里式盒式磁盤,隨機(jī)存取存儲器,只讀存儲器,區(qū)域網(wǎng)絡(luò)存儲器,等等也可以在示范性操作環(huán)境中使用。
一定數(shù)量的程序模塊可被存儲在包括了操作系統(tǒng)35,一個(gè)或多個(gè)應(yīng)用程序36,其他程序模塊37,以及程序數(shù)據(jù)38的硬盤60,磁盤29,光盤31,ROM24或RAM25中。用戶可以將命令和信息輸入個(gè)人計(jì)算機(jī)20,通過輸入設(shè)備例如鍵盤40和點(diǎn)擊設(shè)備42。其他輸入設(shè)備(未表示出)可以包括麥克風(fēng),控制手柄,游戲墊,圓盤式衛(wèi)星電視天線,掃描儀,等等。這些及其他輸入設(shè)備通常通過與系統(tǒng)總線相連的串行接口46連接到處理單元21上,但也可能通過其他的接口,例如并行端口,游戲端口,通用串行總線(USB)或者網(wǎng)絡(luò)接口卡。監(jiān)視器47或者其他類型的顯示設(shè)備也通過接口與系統(tǒng)總線23相連接,例如視頻適配器48。除監(jiān)視器以外,個(gè)人計(jì)算機(jī)還通常包括其他的外部輸出設(shè)備,這里沒有表示,例如話筒和打印機(jī)。
個(gè)人計(jì)算機(jī)29可能在一個(gè)與一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),例如遠(yuǎn)程計(jì)算機(jī)49,相邏輯連接的網(wǎng)絡(luò)工作環(huán)境下操作。遠(yuǎn)程計(jì)算機(jī)49可以是另一臺個(gè)人計(jì)算機(jī),服務(wù)器,路由器,網(wǎng)絡(luò)計(jì)算機(jī),同級設(shè)備或者其他普通的網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括許多或全部上述個(gè)人計(jì)算機(jī)20的元件,盡管在附圖1中是表示了一個(gè)存儲器設(shè)備50。在附圖1中描述的邏輯連接包括局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN)52。這種網(wǎng)絡(luò)工作環(huán)境在辦公室,企業(yè)內(nèi)部計(jì)算機(jī)網(wǎng)絡(luò),企業(yè)內(nèi)部互聯(lián)網(wǎng)和國際互聯(lián)網(wǎng)中是很平常的事。
當(dāng)在局域網(wǎng)網(wǎng)絡(luò)工作環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)20通過網(wǎng)絡(luò)接口或者適配器53連接到局域網(wǎng)51。當(dāng)在廣域網(wǎng)網(wǎng)絡(luò)工作環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)20通常包括調(diào)制解調(diào)器54或者其他用于在廣域網(wǎng)52中建立通信的裝置。調(diào)制解調(diào)器54,可以是內(nèi)置的也可以是外置的,通過串行端口接口46連接到系統(tǒng)總線23。在網(wǎng)絡(luò)工作環(huán)境中,與個(gè)人計(jì)算機(jī)20相關(guān)的程序模塊,或者它的一部分,可以存儲在遠(yuǎn)程存儲設(shè)備中。應(yīng)當(dāng)理解圖中所示的網(wǎng)絡(luò)連接是示范性的并且其他在計(jì)算機(jī)之間建立通信連接的裝置也是可以被使用的。
在下面的說明書中,除非另有表示,本發(fā)明將被作為由一個(gè)或者多個(gè)計(jì)算機(jī)實(shí)現(xiàn)的,關(guān)于行為和符號表示的操作來描述。同樣,應(yīng)當(dāng)理解這種行為和操作,有時(shí)稱作被計(jì)算機(jī)執(zhí)行,包括由以結(jié)構(gòu)形式表示數(shù)據(jù)的電子信號的計(jì)算機(jī)的處理單元進(jìn)行的操作。這種操作轉(zhuǎn)換了數(shù)據(jù)或者將它保存在計(jì)算機(jī)存儲系統(tǒng)的位置中,以一種為本領(lǐng)域普通技術(shù)人員所眾所周知的方式對計(jì)算機(jī)的操作進(jìn)行重置或做其他改變。數(shù)據(jù)被保存的數(shù)據(jù)結(jié)構(gòu),是具有由數(shù)據(jù)格式所定義的特殊性質(zhì)的存儲器的物理位置。因此,當(dāng)本發(fā)明在前面內(nèi)容中被描述時(shí),并不意味著被限制,正如本領(lǐng)域技術(shù)人員所理解的,在下文中描述的多種行為和操作也可能以硬件的形式實(shí)現(xiàn)。
參見附圖2,本發(fā)明專注于一種用于提高從設(shè)備驅(qū)動器70到應(yīng)用程序72的數(shù)據(jù)吞吐量的系統(tǒng)和方法。設(shè)備驅(qū)動器向應(yīng)用程序提供所需要的數(shù)據(jù)來實(shí)現(xiàn)它的功能。為了提高向應(yīng)用程序72傳送數(shù)據(jù)的效率,設(shè)備驅(qū)動器保存了一個(gè)已經(jīng)存儲好用于向應(yīng)用程序立即發(fā)送的數(shù)據(jù)的隊(duì)列76。如附圖2中所舉例說明的那樣,在計(jì)算機(jī)結(jié)構(gòu)中設(shè)備驅(qū)動器70通常處于一個(gè)低于應(yīng)用程序72的等級。例如,設(shè)備驅(qū)動器70可能在操作系統(tǒng)的核心程序模型中,而應(yīng)用程序72運(yùn)行在操作系統(tǒng)的用戶模型中。設(shè)備驅(qū)動器70可以從數(shù)據(jù)源中接受數(shù)據(jù),該數(shù)據(jù)源有可能是處于較低等級的另一個(gè)驅(qū)動器80。數(shù)據(jù)源可能會從另一個(gè)數(shù)據(jù)源處順序接收數(shù)據(jù)。例如在附圖2中所例舉的實(shí)施方案中,驅(qū)動器80可能從網(wǎng)絡(luò)82,如國際互聯(lián)網(wǎng)中接收數(shù)據(jù)。
根據(jù)在數(shù)據(jù)隊(duì)列76中是否有足夠的數(shù)據(jù)用于程序的消耗,將數(shù)據(jù)從設(shè)備驅(qū)動器70傳送到應(yīng)用程序72有兩種模式。在“低速I/O”模式中,數(shù)據(jù)隊(duì)列76中沒有足夠的數(shù)據(jù),并且應(yīng)用程序72要求進(jìn)行異步數(shù)據(jù)傳送。當(dāng)數(shù)據(jù)變得對于設(shè)備驅(qū)動器70而言是可獲得后,被傳送給應(yīng)用程序72。除了速度慢之外,這種數(shù)據(jù)傳送模式還有在存儲和處理中高溢出的缺點(diǎn),因?yàn)閿?shù)據(jù)結(jié)構(gòu)不得不被定位并且初始化來跟蹤異步數(shù)據(jù)請求。相反,在“快速I/O”模式中,應(yīng)用程序72發(fā)送同步數(shù)據(jù)請求,并且所請求的數(shù)據(jù)被立即傳送給應(yīng)用程序。這種數(shù)據(jù)傳送方式不會導(dǎo)致異步模式中的那類溢出。此外,應(yīng)用程序所需的數(shù)據(jù)立即為應(yīng)用程序所得。因?yàn)橹挥挟?dāng)擁有所需要的數(shù)據(jù)后,應(yīng)用程序才可以實(shí)現(xiàn)其功能,應(yīng)用程序的性能取決于當(dāng)需要時(shí)它能多快獲得發(fā)送給它的數(shù)據(jù)。因此,如果數(shù)據(jù)傳送在大多數(shù)時(shí)間內(nèi)能以快速I/O模式進(jìn)行的話,應(yīng)用程序的性能將有顯著的提高??焖買/O模式的必要條件是,當(dāng)然,應(yīng)用程序72所要求的數(shù)據(jù)已經(jīng)存在于用于程序消耗的數(shù)據(jù)隊(duì)列76之內(nèi)。
與本發(fā)明的一個(gè)特征相一致,通過給予設(shè)備驅(qū)動器70更多的機(jī)會用新數(shù)據(jù)來填充數(shù)據(jù)隊(duì)列,在數(shù)據(jù)隊(duì)列76中具有足夠數(shù)據(jù)的可能性被提高,這通過進(jìn)程調(diào)度來實(shí)現(xiàn)。參見附圖3,為了確定數(shù)據(jù)隊(duì)列76包括足夠的數(shù)據(jù)來允許快速I/O方式的數(shù)據(jù)傳送,數(shù)據(jù)隊(duì)列76中的數(shù)據(jù)量時(shí)常被檢查(步驟92)。這種檢查可以在例如,每次應(yīng)用程序72需要更多數(shù)據(jù)但是在數(shù)據(jù)請求發(fā)出之前進(jìn)行。換句話說,這種檢查可以在每次數(shù)據(jù)源(例如,驅(qū)動器80)有更多給設(shè)備驅(qū)動器的數(shù)據(jù)時(shí)進(jìn)行。如果確定(步驟96)數(shù)據(jù)隊(duì)列76中的數(shù)據(jù)量太低(例如,低于一個(gè)預(yù)先選定的閾值),在計(jì)算機(jī)系統(tǒng)上運(yùn)行的部件的進(jìn)程調(diào)度被修改(步驟98),提高設(shè)備驅(qū)動器的進(jìn)程從而給設(shè)備驅(qū)動器一個(gè)將更多數(shù)據(jù)放進(jìn)數(shù)據(jù)隊(duì)列中的機(jī)會。如這里所使用的,“提高”設(shè)備驅(qū)動器的進(jìn)程意味著使設(shè)備驅(qū)動器的進(jìn)程更快的輪到被運(yùn)行。當(dāng)設(shè)備驅(qū)動器的進(jìn)程運(yùn)行時(shí),設(shè)備驅(qū)動器70可以將更多的數(shù)據(jù)放進(jìn)數(shù)據(jù)隊(duì)列76(步驟100),如果這些數(shù)據(jù)是從數(shù)據(jù)源可得的。然后,當(dāng)應(yīng)用程序進(jìn)程運(yùn)行時(shí),應(yīng)用程序可以通過快速I/O在數(shù)據(jù)隊(duì)列中檢索數(shù)據(jù)(步驟102)。
重新參見附圖2,進(jìn)程調(diào)度如何被修改,取決于操作系統(tǒng)的執(zhí)行。例如,可能為計(jì)算機(jī)的部件提供應(yīng)用程序接口(API)功能110,用于呼叫用進(jìn)程調(diào)度改變它們的優(yōu)先級或者轉(zhuǎn)換為其他進(jìn)程。在一個(gè)實(shí)施方案中,應(yīng)用程序72在請求數(shù)據(jù)之前檢查數(shù)據(jù)隊(duì)列76中是否有足夠的數(shù)據(jù)。如果認(rèn)為數(shù)據(jù)量太低,應(yīng)用程序進(jìn)程向處理器讓給其他進(jìn)程,通過呼叫API110的適當(dāng)功能來通知進(jìn)程管理者120它的讓步意向。應(yīng)當(dāng)指出下一個(gè)被轉(zhuǎn)換的進(jìn)程可能不是設(shè)備驅(qū)動器進(jìn)程。盡管如此,通過僅僅是將它自己的進(jìn)程讓給另一個(gè)進(jìn)程,應(yīng)用程序已經(jīng)加快了設(shè)備驅(qū)動器進(jìn)程轉(zhuǎn)換的時(shí)間,并且在發(fā)出數(shù)據(jù)請求之前給予設(shè)備驅(qū)動器一個(gè)向數(shù)據(jù)隊(duì)列中增加更多數(shù)據(jù)的機(jī)會。
如前所述,除了將應(yīng)用程序進(jìn)程轉(zhuǎn)換為另一個(gè)進(jìn)程外,設(shè)備驅(qū)動器進(jìn)程的促進(jìn)也可以通過提高設(shè)備驅(qū)動器進(jìn)程的優(yōu)先級,或者降低應(yīng)用程序進(jìn)程的優(yōu)先級來實(shí)現(xiàn)。進(jìn)程優(yōu)先級的提高或者降低可以通過呼叫API功能來進(jìn)行。在一個(gè)實(shí)施方案中,無論是應(yīng)用程序72還是設(shè)備驅(qū)動器70都可以呼叫API110來提高設(shè)備驅(qū)動器進(jìn)程的優(yōu)先級。換句話說或者另外的說,用于設(shè)備驅(qū)動器的數(shù)據(jù)源,在附圖2中是驅(qū)動器80,可以呼叫API來提高設(shè)備驅(qū)動器進(jìn)程的優(yōu)先級。
為了舉例說明利用進(jìn)程調(diào)度提高快速I/O的效果,分別在附圖4和附圖5中提供了傳統(tǒng)串行處理的實(shí)施例和快速I/O提高的實(shí)施例。在這兩個(gè)實(shí)施例當(dāng)中,應(yīng)用程序被稱作“App Pool”,它用來服務(wù)自國際互聯(lián)網(wǎng)處接收的網(wǎng)絡(luò)請求。假如這樣的話,被App Pool處理的數(shù)據(jù)是網(wǎng)絡(luò)請求的形式。負(fù)責(zé)向App Pool提供網(wǎng)絡(luò)請求的設(shè)備驅(qū)動器是一個(gè)Http.sys驅(qū)動器126。Http.sys驅(qū)動器126順序接收來自傳輸驅(qū)動程序接口(TDI)驅(qū)動器128的網(wǎng)絡(luò)請求,它從國際互聯(lián)網(wǎng)接收請求。TDI驅(qū)動器128有一個(gè)用來存儲從網(wǎng)絡(luò)中接收的將被Http.sys驅(qū)動器獲得的網(wǎng)絡(luò)請求的緩存130。類似地,Http.sys驅(qū)動器126有一個(gè)用來存儲將被App Pool122獲得的請求的隊(duì)列136。
在附圖4所舉的實(shí)施例中,本發(fā)明的快速I/O提高沒有實(shí)現(xiàn),并且當(dāng)隊(duì)列136中沒有數(shù)據(jù)(網(wǎng)絡(luò)請求)可供其處理時(shí)App Pool122發(fā)出傳統(tǒng)的異步數(shù)據(jù)請求。隊(duì)列136和緩存130的五個(gè)連續(xù)狀態(tài),用A-E標(biāo)出的,在附圖4中表示。箭頭138用來表示App Pool122,Http.sys驅(qū)動器126,或擁有處理器的TDI驅(qū)動器128等等中哪一個(gè)能使其進(jìn)程運(yùn)行。因此在狀態(tài)A中,App Pool122進(jìn)程正在運(yùn)行。當(dāng)AppPool122試圖接收網(wǎng)絡(luò)請求時(shí),它發(fā)現(xiàn)隊(duì)列136是空的。因?yàn)槭莻鹘y(tǒng)方式的,AppPool122在隊(duì)列136中發(fā)送兩個(gè)“接收IRPs”。IRPs(I/O請求包)是一個(gè)用于異步數(shù)據(jù)傳送的數(shù)據(jù)結(jié)構(gòu)。在狀態(tài)B中,輪到Http.sys進(jìn)程運(yùn)行。Http.sys進(jìn)程使用它從緩存130檢索到的網(wǎng)絡(luò)請求完成兩個(gè)被發(fā)出的接收IRPs。在狀態(tài)C中,Http.sys將保留在緩存130中的網(wǎng)絡(luò)請求移動到隊(duì)列136中。在狀態(tài)D中,返回到App Pool進(jìn)程。這時(shí),在隊(duì)列136中有一個(gè)網(wǎng)絡(luò)請求。當(dāng)App Pool處理時(shí),TDI驅(qū)動器128,已經(jīng)中斷了驅(qū)動,可以將更多的網(wǎng)絡(luò)請求放入緩存130中。在狀態(tài)E中,App Pool通過快速I/O消耗了隊(duì)列136中僅有的網(wǎng)絡(luò)請求,并且重新變得缺乏數(shù)據(jù)。這時(shí),TDI繼續(xù)將網(wǎng)絡(luò)請求加入緩存。
在附圖5所舉的實(shí)施例中,快速I/O提高已經(jīng)被實(shí)現(xiàn)了。附圖5表示了用A-C標(biāo)記的三個(gè)狀態(tài)。傾向地,在進(jìn)行接收呼叫時(shí)App Pool會一直在隊(duì)列136中查找數(shù)據(jù)項(xiàng)。當(dāng)一個(gè)網(wǎng)絡(luò)請求出現(xiàn)在隊(duì)列136中時(shí),接收呼叫被通過快速I/O立即完成。當(dāng)App Pool快要耗盡隊(duì)列136中的數(shù)據(jù)時(shí),一個(gè)Http.sys進(jìn)程被提高的情況會更加頻繁地發(fā)生。如狀態(tài)A所示,App Pool檢查隊(duì)列136并且觀察隊(duì)列中保留的少量數(shù)據(jù)。在響應(yīng)時(shí),App Pool讓出其進(jìn)程并且提高Http.sys進(jìn)程的優(yōu)先級,使得Http.sys更可能運(yùn)行。在狀態(tài)B中,Http.sys進(jìn)程運(yùn)行,并且Http.sys驅(qū)動器將網(wǎng)絡(luò)請求從緩存130中移動到隊(duì)列136中。當(dāng)App Pool進(jìn)程回到狀態(tài)C,在隊(duì)列136中有足夠的網(wǎng)絡(luò)請求可供其通過快速I/O檢索。當(dāng)隊(duì)列136中請求的數(shù)量重新變低時(shí),App Pool進(jìn)程讓給另一個(gè)進(jìn)程。
鑒于有許多可能的實(shí)施例都可以采用本發(fā)明的原理,應(yīng)當(dāng)認(rèn)識到這里根據(jù)附圖所描述的實(shí)施例僅僅是舉例說明,并且不應(yīng)該被視為對本發(fā)明保護(hù)范圍的限制。因此,這里所描述的發(fā)明期待所有這些實(shí)施方案可以落入下述權(quán)利要求書的范圍并與其等效。
權(quán)利要求
1.一種用于執(zhí)行從設(shè)備驅(qū)動器向在計(jì)算機(jī)上運(yùn)行的應(yīng)用程序傳送數(shù)據(jù)的步驟的具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述計(jì)算機(jī)可讀介質(zhì)包括檢查被設(shè)備驅(qū)動器使用的隊(duì)列中的數(shù)據(jù)以存儲已準(zhǔn)備好用于向應(yīng)用程序同步傳送的數(shù)據(jù)項(xiàng);如果數(shù)據(jù)隊(duì)列中的數(shù)據(jù)量超過一個(gè)閾值,向應(yīng)用程序同步傳送數(shù)據(jù)隊(duì)列中的數(shù)據(jù)項(xiàng);并且如果數(shù)據(jù)隊(duì)列中的數(shù)據(jù)量低于一個(gè)閾值,通過進(jìn)程調(diào)度的方式提高設(shè)備驅(qū)動器的進(jìn)程。
2.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述提高設(shè)備驅(qū)動器進(jìn)程的步驟包括將應(yīng)用程序進(jìn)程讓給另一個(gè)進(jìn)程。
3.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述提高設(shè)備驅(qū)動器進(jìn)程的步驟包括提高設(shè)備驅(qū)動器進(jìn)程的優(yōu)先級。
4.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述提高設(shè)備驅(qū)動器進(jìn)程的步驟包括降低應(yīng)用程序進(jìn)程的優(yōu)先級。
5.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),還包括用于執(zhí)行以下步驟的計(jì)算機(jī)可讀指令通過設(shè)備驅(qū)動器,將數(shù)據(jù)項(xiàng)從第二驅(qū)動器的緩存中移動到用于向應(yīng)用程序傳送的數(shù)據(jù)隊(duì)列。
6.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述數(shù)據(jù)項(xiàng)是網(wǎng)絡(luò)請求。
7.如權(quán)利要求6所述的計(jì)算機(jī)可讀介質(zhì),還包括用于執(zhí)行以下步驟的計(jì)算機(jī)可讀指令通過第二驅(qū)動器接收來自國際互聯(lián)網(wǎng)的網(wǎng)絡(luò)請求;通過第二驅(qū)動器把已接收的網(wǎng)絡(luò)請求存儲到緩存;通過第二驅(qū)動器把緩存中的網(wǎng)絡(luò)請求移動到用于向應(yīng)用程序同步傳送的數(shù)據(jù)隊(duì)列。
8.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述提高設(shè)備驅(qū)動器進(jìn)程的步驟包括呼叫用來修改計(jì)算機(jī)的進(jìn)程調(diào)度的API功能。
9.一種用于從設(shè)備驅(qū)動器向運(yùn)行在執(zhí)行進(jìn)程調(diào)度的計(jì)算機(jī)上的應(yīng)用程序傳送數(shù)據(jù)的方法,包括;檢查被設(shè)備驅(qū)動器使用的數(shù)據(jù)隊(duì)列中的數(shù)據(jù)以存儲已準(zhǔn)備好用于向應(yīng)用程序同步傳送的數(shù)據(jù)項(xiàng);如果數(shù)據(jù)隊(duì)列中的數(shù)據(jù)量超過一個(gè)閾值,向應(yīng)用程序同步傳送數(shù)據(jù)隊(duì)列中的數(shù)據(jù)項(xiàng);并且如果數(shù)據(jù)隊(duì)列中的數(shù)據(jù)量低于一個(gè)閾值,通過進(jìn)程調(diào)度的方式提高設(shè)備驅(qū)動器的進(jìn)程。
10.如權(quán)利要求9所述的方法,其特征在于,所述提高設(shè)備驅(qū)動器進(jìn)程的步驟包括將應(yīng)用程序進(jìn)程讓給另一個(gè)進(jìn)程。
11.如權(quán)利要求9所述的方法,其特征在于,所述提高設(shè)備驅(qū)動器進(jìn)程的步驟包括提高設(shè)備驅(qū)動器進(jìn)程的優(yōu)先級。
12.如權(quán)利要求9所述的方法,其特征在于,所述提高設(shè)備驅(qū)動器進(jìn)程的步驟包括降低應(yīng)用程序進(jìn)程的優(yōu)先級。
13.如權(quán)利要求9所述的方法,還包括以下步驟通過設(shè)備驅(qū)動器,將數(shù)據(jù)項(xiàng)從第二驅(qū)動器的緩存中移動到用于向應(yīng)用程序傳送的數(shù)據(jù)隊(duì)列。
14.如權(quán)利要求9所述的方法,其特征在于,所述數(shù)據(jù)項(xiàng)是網(wǎng)絡(luò)請求。
15.如權(quán)利要求9所述的方法,還包括以下步驟通過第二驅(qū)動器接收來自國際互聯(lián)網(wǎng)的網(wǎng)絡(luò)請求;通過第二驅(qū)動器把已接收的網(wǎng)絡(luò)請求存儲到緩存;通過第二驅(qū)動器把緩存中的網(wǎng)絡(luò)請求移動到用于向應(yīng)用程序同步傳送的數(shù)據(jù)隊(duì)列。
16.如權(quán)利要求9所述的方法,其特征在于,所述提高設(shè)備驅(qū)動器進(jìn)程的步驟包括呼叫用來修改計(jì)算機(jī)的進(jìn)程調(diào)度的API功能。
17.一種計(jì)算機(jī)系統(tǒng),其特征在于,所述計(jì)算機(jī)系統(tǒng)包括用于管理計(jì)算系統(tǒng)的進(jìn)程調(diào)度的進(jìn)程管理程序;用于處理數(shù)據(jù)項(xiàng)的應(yīng)用程序;用于存儲已準(zhǔn)備好用于向應(yīng)用程序傳送數(shù)據(jù)項(xiàng)的數(shù)據(jù)隊(duì)列;和用于將數(shù)據(jù)項(xiàng)向應(yīng)用程序傳送的設(shè)備驅(qū)動器,所述設(shè)備驅(qū)動器在數(shù)據(jù)隊(duì)列中存儲已準(zhǔn)備好用于向應(yīng)用程序傳送的數(shù)據(jù)項(xiàng),應(yīng)用程序被編程來檢查數(shù)據(jù)隊(duì)列,如果數(shù)據(jù)隊(duì)列中的數(shù)據(jù)量超過一個(gè)閾值就同步地接收存儲在數(shù)據(jù)隊(duì)列中的數(shù)據(jù)項(xiàng),并且如果數(shù)據(jù)隊(duì)列中的數(shù)據(jù)量低于一個(gè)閾值就促進(jìn)設(shè)備驅(qū)動器的進(jìn)程。
18.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述應(yīng)用程序通過將應(yīng)用程序進(jìn)程讓給另一個(gè)進(jìn)程來促進(jìn)設(shè)備驅(qū)動器進(jìn)程。
19.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述應(yīng)用程序通過提高設(shè)備驅(qū)動器進(jìn)程的優(yōu)先權(quán)來促進(jìn)設(shè)備驅(qū)動器的進(jìn)程。
20.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述應(yīng)用程序通過降低應(yīng)用程序進(jìn)程的優(yōu)先權(quán)來促進(jìn)設(shè)備驅(qū)動器的進(jìn)程。
21.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括用于接收被應(yīng)用程序處理的數(shù)據(jù)項(xiàng)的第二驅(qū)動器,所述第二驅(qū)動器將所接收的數(shù)據(jù)項(xiàng)放置在用來被設(shè)備驅(qū)動器檢索的緩存中。
22.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括用于修改計(jì)算機(jī)系統(tǒng)進(jìn)程調(diào)度的API功能,并且其中應(yīng)用程序呼叫API功能來促進(jìn)設(shè)備驅(qū)動的進(jìn)程。
全文摘要
一種用于從設(shè)備驅(qū)動器向應(yīng)用程序傳送數(shù)據(jù)的系統(tǒng)及其方法,通過進(jìn)程調(diào)度來提高所請求數(shù)據(jù)對于被立即傳送給應(yīng)用程序是可獲得的可能性,從而提高對來自應(yīng)用程序的數(shù)據(jù)請求的同步處理(快速I/O模式)使用率。如果存儲用于傳送的數(shù)據(jù)的數(shù)據(jù)隊(duì)列中的數(shù)據(jù)量較低,修改系統(tǒng)的進(jìn)程調(diào)度來促進(jìn)設(shè)備驅(qū)動器進(jìn)程,給它將更多數(shù)據(jù)放在供應(yīng)用程序消耗的數(shù)據(jù)隊(duì)列中的機(jī)會。設(shè)備驅(qū)動器進(jìn)程的促進(jìn)可以通過將應(yīng)用程序進(jìn)程轉(zhuǎn)換為另一個(gè)進(jìn)程(不必須是設(shè)備驅(qū)動器進(jìn)程),提高設(shè)備驅(qū)動器的優(yōu)先級,和/或降低應(yīng)用程序的優(yōu)先級等等來進(jìn)行。
文檔編號G06F13/12GK1595361SQ20041008551
公開日2005年3月16日 申請日期2004年8月27日 優(yōu)先權(quán)日2003年8月29日
發(fā)明者J·C·弗勒 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
柘城县| 宁远县| 瓦房店市| 宽城| 临颍县| 兰考县| 油尖旺区| 大兴区| 镇赉县| 宁南县| 缙云县| 阿合奇县| 嘉义县| 灌云县| 全南县| 黎城县| 临颍县| 宝坻区| 屯门区| 都昌县| 清徐县| 遂昌县| 佛冈县| 城固县| 合水县| 红安县| 南投市| 临江市| 家居| 宁河县| 康定县| 壤塘县| 建昌县| 台湾省| 阳原县| 江门市| 南召县| 渝中区| 鸡泽县| 许昌县| 巴南区|