亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

通過推測優(yōu)化同步寫入的制作方法

文檔序號:12512753閱讀:220來源:國知局
通過推測優(yōu)化同步寫入的制作方法與工藝

本發(fā)明要求于2015年1月27日遞交的發(fā)明名稱為“通過推測優(yōu)化同步寫入”的第14/606,803號美國非臨時專利申請案的在先申請優(yōu)先權(quán),該在先申請的內(nèi)容以引入的方式并入本文。



背景技術(shù):

在計算中,輸入/輸出(input/output,簡稱IO)是數(shù)據(jù)處理系統(tǒng)或者信息系統(tǒng)(例如計算機和外部設(shè)備)之間的通信。所述外部設(shè)備可以包括存儲設(shè)備(例如磁盤驅(qū)動程序)、用戶接口設(shè)備(例如鍵盤、鼠標(biāo)和顯示器)、打印機,以及任何其他數(shù)據(jù)處理系統(tǒng)。在計算機系統(tǒng)中,中央處理器(central processing unit,簡稱CPU)處理數(shù)據(jù),并將所述數(shù)據(jù)傳送進和傳送出所述系統(tǒng)。接收所述數(shù)據(jù)處理系統(tǒng)輸出或者向所述數(shù)據(jù)處理系統(tǒng)提供輸入的外部設(shè)備被稱為IO。一些數(shù)據(jù)密集應(yīng)用可以在多個外部存儲設(shè)備中存儲大量的數(shù)據(jù)。不同的IO設(shè)備在特征上會有相當(dāng)大的區(qū)別。由于IO設(shè)備的物理性質(zhì),一些IO設(shè)備的運行速度大大低于CPU的運行速度。因此,IO讀取請求隊列和/或?qū)懭胝埱箨犃锌赡軙^長。如此一來,針對IO寫入和/或讀取的平均完成時間可能會很長。



技術(shù)實現(xiàn)要素:

在一實施例中,本發(fā)明包括在數(shù)據(jù)處理系統(tǒng)中實施的方法,其包括:從處理線程接收IO寫入請求,以將數(shù)據(jù)從所述數(shù)據(jù)處理系統(tǒng)的存儲器傳送至IO設(shè)備;將所述存儲器設(shè)置為只讀存儲器,以保護所述數(shù)據(jù)在所述數(shù)據(jù)被傳送至所述IO設(shè)備之前免于覆蓋;為響應(yīng)所述IO寫入請求,將推測IO寫入完成響應(yīng)發(fā)送至所述處理線程,以使得所述處理線程能夠繼續(xù)執(zhí)行,而不用等待所述數(shù)據(jù)被傳送至所述IO設(shè)備。

在另一實施例中,本發(fā)明包括計算機程序產(chǎn)品,其包括存儲在非瞬時性計算機可讀介質(zhì)中的針對文件處理程序以及異常處理程序的計算機可執(zhí)行指令,以便當(dāng)被計算設(shè)備執(zhí)行時,所述指令使得所述文件處理程序:從處理線程處接收包括IO寫入請求的第一消息,以將數(shù)據(jù)從所述計算設(shè)備的存儲器傳送至IO設(shè)備;配置所述異常處理程序,以保護所述數(shù)據(jù)在所述數(shù)據(jù)被完全傳送至所述IO設(shè)備之前免于覆蓋;將包括推測IO寫入完成響應(yīng)的第二消息發(fā)送至所述處理線程而不用等待所述數(shù)據(jù)被完全傳送至所述IO設(shè)備,其中所述推測IO寫入完成響應(yīng)使得所述處理線程繼續(xù)執(zhí)行。

在再一實施例中,本發(fā)明包括一種裝置,其包括用于與IO設(shè)備進行通信的IO接口端口,耦合至所述IO接口端口的存儲器,以及耦合至所述存儲器和所述IO接口端口的處理器,其中所述處理器用于:從處理線程接收第一消息,其中所述第一消息包括IO寫入請求,以將數(shù)據(jù)從所述存儲器傳送至所述IO設(shè)備;為響應(yīng)所述IO寫入請求,將包括推測寫入完成響應(yīng)的第二消息發(fā)送至所述處理線程,以使得所述處理線程在所述數(shù)據(jù)被傳送至所述IO設(shè)備之前繼續(xù)執(zhí)行;接收包括IO讀取請求的第三消息,以從所述IO設(shè)備讀取所述數(shù)據(jù),其中所述第三消息在所述數(shù)據(jù)被傳送至所述IO設(shè)備之前被接收;為響應(yīng)所述IO讀取請求,直接從所述存儲器讀取所述數(shù)據(jù)。

這些和其他特征將會通過下面的具體說明并結(jié)合附圖和權(quán)利要求書變得更加容易理解。

附圖說明

為了更透徹地理解本發(fā)明,現(xiàn)參閱結(jié)合附圖和具體實施方式而描述的以下簡要說明,其中的相同參考標(biāo)號表示相同部分。

圖1是一實施例中IO系統(tǒng)的示意圖。

圖2是一實施例中同步IO方法的時序圖。

圖3是一實施例中異步IO方法的時序圖。

圖4是示出了一實施例中IO系統(tǒng)中的同步IO寫入操作的示意圖。

圖5是示出了一實施例中IO系統(tǒng)中的同步IO讀取/寫入操作示意圖。

圖6是一實施例中的IO節(jié)點的示意圖。

圖7是示出了一實施例中推測同步IO寫入方法的時序圖。

圖8是示出了一實施例中IO系統(tǒng)中的推測同步IO寫入操作的示意圖。

圖9是示出了一實施例中IO系統(tǒng)中推測同步IO寫入操作以及IO預(yù)讀取操作的示意圖。

圖10是一實施例中執(zhí)行推測同步IO寫入的方法的流程圖。

圖11是一實施例中執(zhí)行IO預(yù)讀取操作的方法的流程圖。

圖12是一實施例中在推測同步IO寫入過程中處理異常的方法的協(xié)議圖。

圖13是一實施例中在推測同步IO寫入過程中執(zhí)行存儲器保護的方法的流程圖。

具體實施方式

首先應(yīng)理解,盡管下文提供一項或多項實施例的說明性實施方案,但所公開的系統(tǒng)和/或方法可使用任何數(shù)目的技術(shù)來實施,無論該技術(shù)是當(dāng)前已知還是現(xiàn)有的。本發(fā)明決不應(yīng)限于下文所說明的說明性實施方案、附圖和技術(shù),包括本文所說明并描述的示例性設(shè)計和實施方案,而是可在所附權(quán)利要求書的范圍以及其等效物的完整范圍內(nèi)修改。

圖1是一實施例中IO系統(tǒng)100的示意圖。所述IO系統(tǒng)100包括數(shù)據(jù)處理系統(tǒng)110以及多個IO設(shè)備120。所述數(shù)據(jù)處理系統(tǒng)110包括多個處理線程111以及文件處理程序(file hander,簡稱FH)112。如圖1所示,所述處理線程111的數(shù)目是N,所述設(shè)備120的數(shù)目是K,其中,所述處理線程111表示為P1至Pn,所述IO設(shè)備120表示為D1至Dk。所述IO設(shè)備120是用于通過將數(shù)據(jù)傳送進和傳送出所述數(shù)據(jù)處理系統(tǒng)110來與所述數(shù)據(jù)處理系統(tǒng)110進行通信的任何裝置。例如,所述IO設(shè)備120可以為存儲設(shè)備、網(wǎng)絡(luò)設(shè)備、用戶接口設(shè)備和/或其他與所述數(shù)據(jù)處理系統(tǒng)110大體類似的數(shù)據(jù)處理系統(tǒng)。

所述處理線程111和所述FH 112是所述數(shù)據(jù)處理系統(tǒng)110中執(zhí)行的軟件組件。所述處理線程111和所述FH 112可以在所述數(shù)據(jù)處理系統(tǒng)110中的一個或多個處理器上執(zhí)行。所述處理線程111可以對應(yīng)一個或者多個應(yīng)用程序。所述FH 112用于與所述處理線程111和所述IO設(shè)備120對接。所述FH 112處理在所述數(shù)據(jù)處理系統(tǒng)110和所述IO設(shè)備120之間傳送的IO數(shù)據(jù)。在一實施例中,處理線程111可以確定從IO設(shè)備120處讀取數(shù)據(jù)。所述處理線程111調(diào)用所述FH 112來請求IO讀取操作,例如,通過發(fā)送IO讀取請求至所述FH 112。在接收到所述IO讀取請求時,所述FH 112和所述IO設(shè)備120發(fā)起讀取操作,然后從所述IO設(shè)備120接收所述被請求數(shù)據(jù)。在接收到所述被請求數(shù)據(jù)之后,所述FH 112發(fā)送IO讀取完成至所述處理線程111,以指示所述被請求數(shù)據(jù)是從所述IO設(shè)備120處讀取的。例如,所述被請求數(shù)據(jù)可以存儲在存儲器位置或由所述處理線程111或所述FH 112提供的緩沖區(qū)。

在另一實施例中,處理線程111可以確定寫入數(shù)據(jù)至IO設(shè)備120。所述處理線程111調(diào)用所述FH 112去請求IO寫入操作,例如,通過發(fā)送IO寫入請求至所述FH 112。在接收到所述IO寫入請求時,所述FH 112和所述IO設(shè)備120發(fā)起寫入操作,然后將所述數(shù)據(jù)傳送至所述IO設(shè)備120。在完成所述傳送之后,所述FH 112發(fā)送寫入完成至所述處理線程111,以指示所述數(shù)據(jù)已經(jīng)被成功寫入至所述設(shè)備120。在一實施例中,所述FH 112將所述數(shù)據(jù)直接從所述處理線程111提供的所述存儲器位置傳送至所述IO設(shè)備120。在另一實施例中,所述FH 112將所述數(shù)據(jù)拷貝至內(nèi)部存儲器,并將執(zhí)行返回至所述調(diào)用方或請求所述IO寫入的所述處理線程111。在一些實施例中,所述數(shù)據(jù)處理系統(tǒng)110包括一個或多個將所述FH 112交互至所述IO設(shè)備120的設(shè)備驅(qū)動軟件組件。

IO讀取和/或?qū)懭肟梢酝交虍惒竭M行。同步IO寫入操作直到數(shù)據(jù)被寫入至IO設(shè)備才返回。例如所述IO設(shè)備120和同步IO讀取操作直到數(shù)據(jù)被從所述IO設(shè)備120處讀取出并存儲至所述系統(tǒng)的存儲器(例如所述數(shù)據(jù)處理系統(tǒng)110)時才返回。因此,IO寫入的完成時間取決于IO設(shè)備的響應(yīng)時間。許多IO設(shè)備是慢設(shè)備,因此同步IO可能延遲應(yīng)用處理以及降低系統(tǒng)性能。相反,異步寫入操作可以在將數(shù)據(jù)寫入至IO設(shè)備之前返回。異步讀取操作可以在數(shù)據(jù)被從所述IO設(shè)備120處讀取出前返回。異步讀取和/或?qū)懭胧沟盟稣{(diào)用方或所述處理線程(例如所述處理線程111)在所述IO傳送在執(zhí)行時切換到其他作業(yè)。然而,所述調(diào)用方或所述處理線程負責(zé)并確定所述被請求的IO操作的完成,使得數(shù)據(jù)在IO傳送時可以不被過早覆蓋或讀取。所述IO傳送完成的管理可以是復(fù)雜的。所述調(diào)用方只可以在所述IO傳送完成之后切換回處理所述IO數(shù)據(jù)的作業(yè)。因此,與所述同步IO類似,異步IO可能延遲應(yīng)用處理以及降低系統(tǒng)性能。

此處公開的實施例是推測同步IO寫入和IO預(yù)讀取機制,其提供的IO操作比同步IO操作、異步IO操作更有效。當(dāng)?shù)谝惶幚砭€程P1請求FH將數(shù)據(jù)從存儲器M的區(qū)塊寫入至IO設(shè)備時,所述FH將所述存儲器M標(biāo)記為只讀(例如通過設(shè)置只讀標(biāo)志),發(fā)送推測寫入完成至所述第一處理線程P1,并將異常處理程序動態(tài)鏈接至所述第一處理線程P1。所述推測寫入完成是所述存儲器M在所述數(shù)據(jù)被全部寫入至所述IO設(shè)備前都不改變的推測或假設(shè)。所述推測寫入完成使得所述第一處理線程P1繼續(xù)進行而不用等待將所述數(shù)據(jù)寫入至所述IO設(shè)備的完成。所述異常處理程序保護所述存儲器M在所述IO寫入操作完成之前免于覆蓋。例如,當(dāng)所述異常處理程序檢測到針對所述存儲器M的寫入嘗試時,所述異常處理程序可以通過通知所述FH和/或中斷所述第一處理線程P1來停止所述寫入嘗試的繼續(xù)進行。在完成所述IO寫入操作之后,所述FH清除所述只讀標(biāo)志并與所述異常處理程序斷開鏈接。另外,當(dāng)不同于所述第一處理線程P1的第二處理線程P2請求在所述數(shù)據(jù)被寫入至所述IO設(shè)備之前向所述IO設(shè)備讀取所述數(shù)據(jù),所述FH執(zhí)行IO預(yù)讀取操作。所述IO預(yù)讀取操作包括重定向所述IO讀取請求,以直接從所述存儲器M處讀取所述數(shù)據(jù)而不用等待所述IO寫入操作的完成。在一實施例中,所述FH為IO寫入使用了內(nèi)部緩沖區(qū)B,其中所述內(nèi)部緩沖區(qū)B位于不同于所述存儲器M的存儲器。所述FH將所述數(shù)據(jù)從存儲器M拷貝至所述內(nèi)部緩沖區(qū)B,在將所述數(shù)據(jù)拷貝至所述內(nèi)部緩沖區(qū)B之后清除所述只讀標(biāo)志,并將數(shù)據(jù)從所述內(nèi)部緩沖區(qū)B傳送至所述IO設(shè)備。在一實施例中,所述只讀存取應(yīng)用于包括所述存儲器M的整個存儲頁。在此類實施例中,所述異常處理程序阻止存儲器寫入至所述存儲器M,但是在IO寫入操作在所述存儲器M的中操作時,所述異常處理程序允許存儲器寫入至所述存儲頁的其他存儲器位置。所述公開的推測同步IO寫入以及IO預(yù)讀取機制通過將所述IO設(shè)備傳送時間從讀取處理時間清除來優(yōu)化IO處理效率。

圖2是一實施例中同步IO方法200的時序圖。方法200在數(shù)據(jù)處理系統(tǒng)(例如所述數(shù)據(jù)處理系統(tǒng)110)中實施。所述時序圖示出了處理線程(例如所述處理線程111)以及文件處理程序(例如所述FH 112)在同步IO操作期間的活動。在表示為T1的時間210,所述處理線程開始調(diào)用IO操作(例如IO讀取或至IO設(shè)備120的IO寫入)的執(zhí)行251。在表示為T2的時間220,所述處理線程發(fā)送請求252至所述文件處理程序,以執(zhí)行所述IO操作并進入線程等待狀態(tài)(顯示為針對所述處理線程的處理線程活動的間隙)。在接收到所述請求252時,所述文件處理程序執(zhí)行所述處理線程要求的IO數(shù)據(jù)傳送261。在表示為T3的時間230,所述文件處理程序完成所述被請求的IO操作并發(fā)送IO完成通知262至所述處理線程。在接收到所述IO完成通知262時,所述處理線程退出所述線程等待狀態(tài)并繼續(xù)所述執(zhí)行251。如方法200所示,在繼續(xù)進行之前,同步IO一直等到所述被請求的IO操作完成,因此應(yīng)用處理和/或響應(yīng)時間會被延遲。

圖3是一實施例中異步IO方法300的時序圖。方法300在數(shù)據(jù)處理系統(tǒng)(例如所述數(shù)據(jù)處理系統(tǒng)110)中實施。所述時序圖示出了處理線程(例如所述處理線程111)以及文件處理程序(例如所述FH 112)在異步IO操作期間的活動。在表示為T1的時間310,所述處理線程開始執(zhí)行,例如作為調(diào)用IO操作(例如IO讀取或針對IO設(shè)備(例如所述IO設(shè)備120)的IO寫入)的第一作業(yè)351的一部分。在表示為T2的時間320,所述處理線程發(fā)送請求352至所述文件處理程序,以執(zhí)行所述IO操作并繼續(xù)執(zhí)行處理第二作業(yè)353。在接收到所述請求352時,所述文件處理程序執(zhí)行所述處理線程請求的IO傳送361。在表示為T3的時間330,所述文件處理程序完成所述IO傳送361并發(fā)送IO完成通知362至所述處理線程,以指示所述被請求的IO操作的完成。在接收到所述IO完成通知362時,所述處理線程中斷所述第二作業(yè)353并繼續(xù)執(zhí)行所述第一作業(yè)351。如方法300所示,異步IO在所述IO傳送361在執(zhí)行時從所述第一作業(yè)351切換至所述第二作業(yè)353并在所述被請求的IO操作完成之后切換回所述第一作業(yè)351。因為在所述IO完成前,所述線程請求IO可能不會向前移動,所以,調(diào)用IO處理的線程會很慢,所述處理和/或響應(yīng)時間可以取決于所述IO設(shè)備的速度。

圖4是示出了實施例中IO系統(tǒng)400中的同步IO寫入操作的示意圖。所述IO系統(tǒng)400大體與所述IO系統(tǒng)100類似,并使用了與方法200中描述的大體類似的IO機制,但是提供了在同步寫入操作期間的IO系統(tǒng)400的組件之間的交互順序的更詳細的圖。所述IO系統(tǒng)400包括與所述數(shù)據(jù)處理系統(tǒng)110類似的數(shù)據(jù)處理系統(tǒng)410,以及與所述IO設(shè)備120類似的IO設(shè)備420。所述數(shù)據(jù)處理系統(tǒng)410包括表示為Px的與所述處理線程111類似的處理線程411、與所述FH 112類似的FH 412,以及表示為M的存儲區(qū)413。所述存儲區(qū)413可以位于所述數(shù)據(jù)處理系統(tǒng)410的存儲器存儲單元(例如隨機存取存儲器(RAM))并用于存儲數(shù)據(jù)內(nèi)容。所述存儲器存儲單元可以被稱為所述數(shù)據(jù)處理系統(tǒng)的主存儲器。在一些實施例中,可以將所述主存儲器的一部分分配給所述處理線程411,其中所述處理線程411可以在執(zhí)行時讀取和/或?qū)懭胫了鲋鞔鎯ζ鞯囊徊糠帧R虼?,所述存儲區(qū)413位于所述分配的存儲器之中。

在圖4中,同步寫入操作開始于步驟431,這時候所述處理線程411請求(例如通過功能調(diào)用或發(fā)送消息)所述FH 412將存儲在所述存儲區(qū)413中的數(shù)據(jù)寫入至所述IO設(shè)備420(例如通過功能調(diào)用或者發(fā)送消息)。在請求所述IO寫入之后,所述處理線程411等待所述IO寫入的完成。例如,所述處理線程411可以進入線程等待狀態(tài)。在步驟432,在接收到所述請求時,所述FH 412與所述IO設(shè)備420對接,以將所述數(shù)據(jù)從所述存儲區(qū)413傳送至所述IO設(shè)備420。在步驟433,所述IO設(shè)備420發(fā)送通知至所述FH 412,以指示所述數(shù)據(jù)被完全寫入至所述IO設(shè)備420。在步驟434,所述FH 412返回至所述處理線程411,以通知所述處理線程411所述存儲區(qū)413的數(shù)據(jù)被寫入至所述IO設(shè)備420。在接收到所述通知時,所述處理線程411退出所述線程等待狀態(tài)并繼續(xù)執(zhí)行。需要說明的是,所述步驟432和433可以包括一個或多個事務(wù),并會根據(jù)所述IO設(shè)備420和所述數(shù)據(jù)處理系統(tǒng)410的硬件特點和實施有變化。另外,步驟431和434上的所述處理線程411、所述存儲器413和所述FH 412之間的所述程序間或線程間通信機制可以根據(jù)所述數(shù)據(jù)處理系統(tǒng)410的軟件架構(gòu)或?qū)嵤┒兓?。然而,不考慮所述硬件實施和/或程序間通信機制,所述處理線程411停止并在執(zhí)行之前等待所述數(shù)據(jù)被完全寫入至所述IO設(shè)備420。

圖5是示出了實施例中IO系統(tǒng)500中的同步IO讀取/寫入操作的示意圖。所述IO系統(tǒng)500大體與所述IO系統(tǒng)100類似。所述IO系統(tǒng)500使用與方法200中描述的大體類似的IO機制,但是提供了緊接同步讀取操作的在同步寫入操作期間的IO系統(tǒng)500的組件之間的交互順序的更詳細的圖。所述IO系統(tǒng)500包括與所述數(shù)據(jù)處理系統(tǒng)110類似的數(shù)據(jù)處理系統(tǒng)510以及與所述IO設(shè)備120類似的IO設(shè)備520。所述數(shù)據(jù)處理系統(tǒng)510包括表示為Px的第一處理線程511、表示為Py的第二處理線程514、FH 512、表示為M1的第一存儲區(qū)513,以及表示為M2的第二存儲區(qū)515。所述第一處理線程511和所述第二處理線程512與所述處理線程111類似。所述FH 512與所述FH 112類似。所述存儲區(qū)513和515大體與所述存儲區(qū)413類似。所述存儲區(qū)513和515位于所述數(shù)據(jù)處理系統(tǒng)510的主存儲器中。在一些實施例中,所述主存儲器中的不同的存儲器空間被分配給所述第一處理線程511和所述第二處理線程514。因此,所述第一存儲區(qū)513可以位于所述第一處理線程511的存儲器空間內(nèi),所述第二存儲區(qū)515可以位于所述第二處理線程514的存儲器空間內(nèi)。

在圖5中,所述同步寫入操作與所述IO系統(tǒng)400中描述的所述同步寫入操作類似。在步驟531中,所述第一處理線程511發(fā)送同步寫入請求至所述FH 512,以將存儲在所述第一存儲區(qū)513的數(shù)據(jù)寫入至所述IO設(shè)備520。在發(fā)送所述同步寫入請求之后,所述第一處理線程511等待所述IO寫入的完成。在步驟532,所述FH 512開始將數(shù)據(jù)從所述第一存儲區(qū)513寫入至所述IO設(shè)備520。

在步驟533,在完成將所述數(shù)據(jù)寫入至所述IO設(shè)備520之前,所述FH 512從所述第二處理線程514處接收同步讀取請求,以從所述IO設(shè)備520讀取數(shù)據(jù)塊,其中所述數(shù)據(jù)對應(yīng)所述FH 512寫入至所述IO設(shè)備520的數(shù)據(jù)。在步驟534,所述IO設(shè)備520通知所述FH 512所述數(shù)據(jù)被寫入至所述IO設(shè)備520。

在步驟535,在所述數(shù)據(jù)被寫入至所述IO設(shè)備520之后,所述FH 512和所述IO設(shè)備520發(fā)起讀取操作,以獲取數(shù)據(jù),以響應(yīng)接收自所述第二處理線程514的所述IO讀取請求。在步驟536,所述FH 512將所述數(shù)據(jù)從所述IO設(shè)備520傳送至所述第二存儲區(qū)515。所述步驟536可以在所述步驟535完成之后執(zhí)行或與所述步驟535并行執(zhí)行(例如,根據(jù)所述數(shù)據(jù)處理系統(tǒng)510和所述IO設(shè)備520的軟件和/或硬件實施)。需要說明的是,所述步驟532和534–536中的每個可以包括一個或多個事務(wù)且可以以根據(jù)所述數(shù)據(jù)處理系統(tǒng)510和所述IO設(shè)備520的硬件特點和/或?qū)嵤┒兓?。另外,在步驟531和533中的所述處理線程511和514、所述存儲區(qū)513和515,以及所述FH 512之間的程序間或線程間通信機制可以根據(jù)所述數(shù)據(jù)處理系統(tǒng)510的軟件架構(gòu)和實施而變化。然而,不考慮所述硬件實施和/或程序間通信機制,在所述IO系統(tǒng)500中,所述第一處理線程511在所述IO寫入在執(zhí)行時停止,所述FH 512在繼續(xù)執(zhí)行所述IO讀取操作之前等待IO寫入完成。

圖6是一實施例中IO節(jié)點600的示意圖,其中IO節(jié)點600可以作為數(shù)據(jù)網(wǎng)絡(luò)中的網(wǎng)絡(luò)節(jié)點或數(shù)據(jù)處理系統(tǒng)的一部分(例如所述數(shù)據(jù)處理系統(tǒng)110)。所述IO節(jié)點600可用于執(zhí)行下面將進行更為全面描述的推測IO寫入和/或IO預(yù)讀取操作。在本發(fā)明中包括所述IO節(jié)點600的目的是用來方便清楚地討論,而不是用來將本發(fā)明的應(yīng)用限制為一個或一類特定的系統(tǒng)實施例。本發(fā)明中所描述的至少部分特征/方法可以在計算裝置或組件(例如所述IO節(jié)點600)中實施。例如本發(fā)明中的特征/方法可以使用硬件、固件和/或在硬件上安裝并運行的軟件來實施。如圖所示6,所述IO節(jié)點600可以包括耦合至一個或多個存儲器設(shè)備632的處理器630、一個或多個IO接口端口640,以及一個或多個網(wǎng)絡(luò)接口端口650。所述處理器630可以包括一個或多個多核處理器。在一些實施例中,所述存儲器設(shè)備632可以是所述處理器630的一部分,其中所述存儲器設(shè)備632可以用作數(shù)據(jù)存儲、緩沖區(qū)等。所述處理器630可以實施為通用處理器或可以為一個或多個專用集成電路(application specific integrated circuit,簡稱ASIC)和/或數(shù)字信號處理器(digital signal processor,簡稱DSP)中的一部分。所述處理器630可以包括IO讀取/寫入模塊633,其可以實施將在下面更全面描述的系統(tǒng)800和900中描述的方法700、1000、1100、1200、1300和/或IO機制。因此,包括所述IO讀取/寫入模塊633以及相關(guān)方法和系統(tǒng)改善了所述IO節(jié)點600的功能。進一步地,通過改變所述存儲器設(shè)備632,所述IO讀取/寫入模塊633將特定的物體(例如存儲器設(shè)備632)轉(zhuǎn)型為不同狀態(tài)。在可選實施例中,所述IO讀取/寫入模塊633可以實施未存儲在所述存儲器設(shè)備632中的指令,這些可以由處理器630執(zhí)行。所述存儲器設(shè)備632可以包括針對臨時存儲內(nèi)容(例如RAM)的高速緩存。另外,所述存儲器設(shè)備632可以包括用于將內(nèi)容存儲相對較長時間的長期存儲(例如只讀存儲器(read-only memory,簡稱ROM))。例如,所述高速緩存以及所述長期存儲可以包括動態(tài)隨機存取存儲器(dynamic random access memory,簡稱DRAM)。所述IO接口端口640可以耦合至IO設(shè)備(例如所述IO設(shè)備120),還可以包括硬件邏輯和/或用于從所述IO設(shè)備處讀取數(shù)據(jù)和/或?qū)懭霐?shù)據(jù)至所述IO設(shè)備的組件。所述網(wǎng)絡(luò)接口端口650可以耦合至計算機數(shù)據(jù)網(wǎng)絡(luò),還可以包括硬件邏輯和/或用于在網(wǎng)絡(luò)中從其他網(wǎng)絡(luò)節(jié)點接收的數(shù)據(jù)幀的組件和/或傳輸數(shù)據(jù)幀至網(wǎng)絡(luò)節(jié)點的組件。

應(yīng)當(dāng)理解的是,通過編程和/或加載可執(zhí)行指令到IO節(jié)點600,處理器630和/或存儲裝置632中的至少一個被改變。將部分IO節(jié)點600轉(zhuǎn)換成一臺特定的機器或裝置(例如多核轉(zhuǎn)發(fā)架構(gòu)),具有由本發(fā)明所教導(dǎo)的新穎功能。這對電氣工程和軟件工程技術(shù)是基礎(chǔ)的:可以通過加載可執(zhí)行軟件到計算機中來實施的功能可通過公知的設(shè)計規(guī)則轉(zhuǎn)換成硬件實施。使用軟件還是硬件來實施概念的確定通常取決于設(shè)計的穩(wěn)定性以及要生產(chǎn)的單元的個數(shù),而不是涉及從軟件域轉(zhuǎn)換到硬件域的任何問題。通常,易頻繁變動的設(shè)計優(yōu)選在軟件中實施,因為重新開發(fā)硬件實施比重新進行軟件設(shè)計成本更高。通常,穩(wěn)定且將要大量生成的設(shè)計優(yōu)選用硬件來實施。例如在ASIC中,因為對于大批量生產(chǎn)來說,硬件實施會比軟件來實施成本更低。設(shè)計通??梢砸攒浖问介_發(fā)并測試,并在之后通過公知的設(shè)計規(guī)則轉(zhuǎn)換通過硬線傳輸軟件指令的ASIC中的等效硬件實施。與使用新的ASIC控制的機器是一臺特定的機器或裝置這個方式一樣,同樣地,已經(jīng)編程和/或加載有可執(zhí)行指令的計算機可以被看作是一臺特定的機器或裝置。

圖7是示出了推測同步IO寫入方法700的時序圖。所述方法700在數(shù)據(jù)處理系統(tǒng)(例如所述數(shù)據(jù)處理系統(tǒng)110和所述IO節(jié)點600)中實施。所述時序圖示出了處理線程(例如所述處理線程111)以及在推測同步IO寫入操作期間與所述FH 112類似文件處理程序的活動。所述方法700在表示為T1的時間710開始。這時所述處理線程開始調(diào)用IO寫入操作至IO設(shè)備(例如所述IO設(shè)備120)的執(zhí)行751。在表示為T2的時間720,所述處理線程發(fā)送IO寫入請求752至所述文件處理程序并等待所述文件處理程序返回。例如,所述IO寫入請求752以表示將數(shù)據(jù)從位于所述數(shù)據(jù)處理系統(tǒng)的主存儲器(例如所述存儲器設(shè)備632)的存儲區(qū)M寫入至所述IO設(shè)備的請求。接收到所述IO寫入請求752時,所述文件處理程序?qū)⒅蛔x存取許可761應(yīng)用至所述存儲區(qū)M(例如通過設(shè)置只讀標(biāo)志)來保護所述存儲區(qū)M免于覆蓋。在表示為T3的時間730,所述文件處理程序返回至所述處理線程,以指示推測寫入完成762,并執(zhí)行IO傳送763,以將數(shù)據(jù)從所述存儲區(qū)M寫入至所述IO設(shè)備。所述推測寫入完成762是在所述存儲區(qū)M的數(shù)據(jù)可以在IO傳送在執(zhí)行中的時不被覆蓋的假設(shè)。推測寫入完成762的信令使得所述處理線程推測地繼續(xù)執(zhí)行所述執(zhí)行751。

因為所述推測寫入完成762是在所述IO傳送763的完成之前發(fā)送的,使用糾錯機制來防止在所述IO傳送763期間的存儲區(qū)M的覆蓋。例如,所述文件處理程序配置異常處理程序來將任何寫入嘗試捕獲至所述存儲區(qū)M。所述文件處理程序為所述異常處理程序提供所述存儲區(qū)M的所述存儲器位置(例如存儲器地址范圍),并將所述異常處理程序動態(tài)地鏈接到所述處理線程。當(dāng)所述異常處理程序檢測到針對所述存儲區(qū)M的寫入嘗試時,所述異常處理程序通知所述文件處理程序以及所述文件處理程序阻止所述處理線程去繼續(xù)執(zhí)行存儲器寫入。需要說明的是,在時間730返回至所述處理線程之前,所述文件處理程序除了將所述只讀存取許可761應(yīng)用到所述存儲區(qū)外,還可以配置所述異常處理程序,并將所述異常處理程序鏈接至所述處理線程。

在表示為T4的時間740,所述文件處理程序完成所述IO寫入操作,將所述存儲區(qū)M的存取許可恢復(fù)為可以讀取可寫入(例如,通過清除所述只讀標(biāo)志,將所述異常處理程序從所述處理線程處斷開鏈接,并發(fā)送IO寫入完成764至所述處理線程以指示所述數(shù)據(jù)已經(jīng)完全寫入或保存至所述IO設(shè)備)。在接收到所述IO寫入完成764時,所述處理線程繼續(xù)非推測地進行所述執(zhí)行751。與方法200中描述的同步IO機制相反的是,方法700使得所述處理線程在所述IO寫入期間繼續(xù)推測地執(zhí)行而不是等待所述IO寫入的完成。與方法300中描述的異步IO機制相反,方法700使得所述處理線程推測地處理作業(yè)而不是在IO寫入期間切換到其他作業(yè)。因此,所述方法700能夠提升IO效率。

圖8是示出了實施例中IO系統(tǒng)800中的推測同步IO寫入操作的示意圖。所述IO系統(tǒng)800包括與所述IO系統(tǒng)100和400中大體類似的組件,但是與所述方法700類似的,其通過執(zhí)行推測同步IO寫入優(yōu)化了IO寫入。所述IO系統(tǒng)800包括與所述數(shù)據(jù)處理系統(tǒng)110類似的數(shù)據(jù)處理系統(tǒng)810以及與所述IO設(shè)備120類似的IO設(shè)備820。所述數(shù)據(jù)處理系統(tǒng)810包括與所述處理線程111類似的表示為Px的處理線程811、與所述FH 112類似的FH 812,以及與所述存儲區(qū)413類似的表示為M的存儲區(qū)813。所述存儲區(qū)813可以位于分配給所述處理線程811存儲器空間。

如圖8所示,在步驟831,所述處理線程811發(fā)送請求(例如通過IO寫入功能調(diào)用)至所述FH 812,以將位于所述存儲區(qū)813的數(shù)據(jù)寫入至所述IO設(shè)備820。在接收到所述請求時,所述FH 812將所述存儲區(qū)813標(biāo)記為只讀,為異常處理程序配置所述存儲器位置或所述存儲區(qū)813的地址,并將所述異常處理程序動態(tài)地鏈接至所述處理線程811。在步驟832,所述FH 812返回至所述處理線程811,以指示推測IO寫入完成。在接收所述推測IO寫入完成之后,所述處理線程811繼續(xù)推測地處理。在步驟833,在發(fā)送所述推測IO寫入完成之后,所述FH 812與所述IO設(shè)備820對接,以將所述數(shù)據(jù)從所述存儲區(qū)813寫入至所述IO設(shè)備820。在步驟834,在所述IO寫入完成時,所述IO設(shè)備820發(fā)送通知至所述FH 812,以指示所述數(shù)據(jù)已經(jīng)被完全寫入至所述IO設(shè)備820。在所述IO寫入完成之后,所述FH 812將所述存儲區(qū)813的許可存取恢復(fù)為讀取和/或?qū)懭氪嫒。⑺霎惓L幚沓绦驈乃鎏幚砭€程811處斷開鏈接。所述FH 812可以選擇性地發(fā)送通知至所述處理線程811,以指示所述IO寫入完成。所述處理線程811可以如方法700中所述地非推測性地繼續(xù)。在一些實施例中,所述步驟832可以在所述步驟833之后、但是在所述步驟834之前執(zhí)行。需要說明的是,所述步驟833和834可以包括一個或多個事務(wù),并可以根據(jù)所述硬件特點或所述IO設(shè)備820和所述數(shù)據(jù)處理系統(tǒng)810的實施而變化。另外,步驟831和832中的所述處理線程811、所述存儲區(qū)813和所述FH 812之間的程序間或線程間通信機制可以根據(jù)所述軟件架構(gòu)和所述數(shù)據(jù)處理系統(tǒng)810的實施而變化。然而,不考慮所述硬件實施和/或程序間通信機制,所述處理線程811在數(shù)據(jù)被傳送至所述IO設(shè)備820期間繼續(xù)推測地執(zhí)行。

在一些實施例中,在步驟831,當(dāng)所述FH 812從所述處理線程811接收所述IO寫入請求時,所述FH 812將數(shù)據(jù)從存儲區(qū)813拷貝至內(nèi)部緩沖區(qū)B(例如位于所述FH 812的存儲器空間)。在此類實施例中,在拷貝所述數(shù)據(jù)至所述內(nèi)部緩沖區(qū)B之后,所述FH 812將所述存儲區(qū)813的存取許可恢復(fù)為可讀取可寫入,并將所述異常處理程序從所述處理線程811處斷開鏈接而不是一直等到所述數(shù)據(jù)被物理寫入至所述IO設(shè)備820。然后,所述FH 812將數(shù)據(jù)從所述內(nèi)部緩沖區(qū)B傳送至所述IO設(shè)備820。另外,所述FH 812可以將所述數(shù)據(jù)寫入至所述IO設(shè)備820并同時將所述數(shù)據(jù)拷貝至所述內(nèi)部緩沖區(qū)B,其中所述FH 812可以在所述IO傳送和所述數(shù)據(jù)拷貝之間執(zhí)行額外的同步。

在一示例實施例中,IO系統(tǒng)800包括:請求模塊,用于從處理線程811接收輸入/輸出(IO)寫入請求,以將數(shù)據(jù)從所述數(shù)據(jù)處理系統(tǒng)810的存儲器813傳送至IO設(shè)備820;存儲器保護模塊,用于設(shè)置所述存儲器813為只讀存儲器,以保護所述數(shù)據(jù)在所述數(shù)據(jù)被傳送至所述IO設(shè)備820之前免于覆蓋;響應(yīng)模塊,用于為響應(yīng)所述IO寫入請求,將推測IO寫入完成響應(yīng)發(fā)送至所述處理線程811,以使得所述處理線程811繼續(xù)執(zhí)行,而不用等待所述數(shù)據(jù)被傳送至所述IO設(shè)備820。在一些實施例中,所述IO系統(tǒng)800可以包括其他或額外的模塊來執(zhí)行上述實施例中描述的步驟的任意一個或其組合。

圖9是示出了實施例中IO系統(tǒng)900中推測同步IO寫入操作和IO預(yù)讀取操作的示意圖。所述系統(tǒng)900包括與IO系統(tǒng)100和500中大體類似的系統(tǒng)組件,通過進行與方法700類似的推測同步IO和IO預(yù)讀取操作寫入來優(yōu)化IO寫入和IO讀取。所述系統(tǒng)900包括與所述數(shù)據(jù)處理系統(tǒng)110、410、510、與810類似的數(shù)據(jù)處理系統(tǒng)910,以及與所述IO設(shè)備120、420、520和與820類似的IO設(shè)備920。所述數(shù)據(jù)處理系統(tǒng)910包括表示為Px的第一處理線程911、表示為Py的第二處理線程914、FH 912、表示為M1的第一存儲區(qū)913,以及表示為M2的第二存儲區(qū)915。所述第一處理線程911和所述第二處理線程914與所述處理線程111、411、511、514和811類似。所述FH 912與所述FH 112和812類似。所述存儲區(qū)913和915可以與所述存儲區(qū)413、513、515和813類似,并且可以位于所述數(shù)據(jù)處理系統(tǒng)910的主存儲器。與所述IO系統(tǒng)500類似,所述第一存儲區(qū)913可以位于所述第一處理線程911的存儲器空間之內(nèi),所述第二存儲區(qū)915可以位于所述第二處理線程914的存儲器空間之內(nèi)。

如圖9所示,所述同步寫入操與所述推測同步IO寫入操作中描述的所述IO系統(tǒng)800類似。例如,在步驟931,所述第一處理線程911請求所述FH 912來將數(shù)據(jù)從所述第一存儲區(qū)913寫入至所述IO設(shè)備920。在步驟932,在接收到所述請求時,所述FH 912將所述第一存儲區(qū)913的存取許可設(shè)置為只讀,將異常處理程序動態(tài)地鏈接至所述第一處理線程911,并信令推測寫入完成至所述第一處理線程911。在步驟933,在信令所述推測寫入完成之后,所述FH 912將IO數(shù)據(jù)從所述第一存儲區(qū)913傳送至所述IO設(shè)備920。

在步驟934,在完成所述IO數(shù)據(jù)傳送之前,所述FH 912從所述第二處理線程914處接收IO讀取請求并從所述IO設(shè)備920處讀取數(shù)據(jù),其中所述數(shù)據(jù)對應(yīng)所述FH 912正寫入至所述IO設(shè)備920的數(shù)據(jù)。在步驟935,所述FH 912重新定向所述IO讀取請求,以將數(shù)據(jù)從所述第一存儲區(qū)913拷貝至所述第二存儲區(qū)915。從所述第一存儲區(qū)913而不是從IO設(shè)備920讀取數(shù)據(jù)被稱作所述IO預(yù)讀取操作。在步驟936,完成所述數(shù)據(jù)復(fù)制后,所述FH 912發(fā)送IO讀入完成至所述第二處理線程914。在一些實施例中,所述FH 912可以將數(shù)據(jù)從所述第一存儲區(qū)913拷貝至內(nèi)部緩沖區(qū)B并將所述數(shù)據(jù)從所述緩沖區(qū)B傳送至所述IO設(shè)備920。在此類實施例中,所述FH 912可以重定向IO讀取請求,以在所述數(shù)據(jù)被完全傳送至所述IO設(shè)備920之前從所述緩沖區(qū)B讀取所述數(shù)據(jù)。

在步驟937,所述IO設(shè)備920通知所述FH 912所述數(shù)據(jù)被寫入至所述IO設(shè)備920。在完成將所述數(shù)據(jù)保存至所述IO設(shè)備920時,所述FH 912清除所述第一存儲區(qū)913的只讀存取,并將所述異常處理程序從所述第一處理線程911處斷開鏈接。在所述數(shù)據(jù)被從所述第一存儲區(qū)913拷貝至所述第二存儲區(qū)915期間,所述FH 912可以在所述IO寫入完成時協(xié)作所述只讀存取的清除以及所述異常處理程序與所述IO讀取請求的鏈接斷開。在一些實施例中,步驟932可以在步驟933之后,但是在步驟937之前執(zhí)行。需要說明的是,所述步驟931、933、936和937可以包括一個或多個事務(wù),并可以根據(jù)所述硬件特點和/或所述IO設(shè)備920和所述數(shù)據(jù)處理系統(tǒng)910的實施而變化。另外,所述處理線程911和914、所述存儲區(qū)913和915,以及所述FH 912之間的程序間或線程間通信機制可以根據(jù)所述軟件所述數(shù)據(jù)處理系統(tǒng)910的架構(gòu)和實施變化。然而,所述第一處理線程911在所述IO寫入期間推測地繼續(xù)。不管所述硬件和/或所述程序間通信機制,所述FH 912重定向IO讀取,以在寫入數(shù)據(jù)至所述IO設(shè)備920期間從所述第一存儲區(qū)913讀取數(shù)據(jù)。

圖10是一實施例中執(zhí)行推測同步IO寫入的方法1000的流程圖。所述方法1000在數(shù)據(jù)處理系統(tǒng)(例如所述數(shù)據(jù)處理系統(tǒng)110、810、910以及所述IO節(jié)點600)中實施。例如,方法1000在所述數(shù)據(jù)處理系統(tǒng)的文件處理程序中實施。方法1000與所述方法700類似,所述IO系統(tǒng)800和900中描述的推測IO寫入機制在接收IO寫入請求時使用。在步驟1010,從處理線程(例如所述處理線程811和911)接收將數(shù)據(jù)從存儲器M(例如所述存儲區(qū)813和913)傳送至IO設(shè)備(例如所述IO設(shè)備820和920)的請求。在步驟1020,所述存儲器M被設(shè)置為只讀存儲器(例如通過設(shè)置只讀標(biāo)志)。在步驟1030,異常處理程序被動態(tài)地鏈接至所述處理線程。例如,所述異常處理程序設(shè)置有所述存儲器M的存儲器位置或所述數(shù)據(jù)的所述存儲器地址范圍。所述異常處理程序用于檢測任何針對所述存儲器M的寫入嘗試并在將數(shù)據(jù)從所述存儲器M完全傳送至所述IO設(shè)備之前阻止所述存儲器M被覆蓋。

在步驟1040,推測寫入完成被發(fā)送至所述處理線程,以使得所述處理線程繼續(xù)推測地執(zhí)行,而不用等待所述數(shù)據(jù)被傳送至所述IO設(shè)備。在步驟1050,所述數(shù)據(jù)被從所述存儲器M傳送至所述IO設(shè)備。在步驟1060,等待所述IO傳送完成。在步驟1070,在完成所述傳送之后,所述異常處理程序鏈接從所述處理線程移除。在步驟1080,所述存儲器M從只讀存儲器恢復(fù)為可讀取/寫入存取的存儲器,例如通過清除所述只讀標(biāo)志。

圖11是一實施例中執(zhí)行IO預(yù)讀取操作的方法1100的流程圖。所述方法1100在數(shù)據(jù)處理系統(tǒng)(例如所述數(shù)據(jù)處理系統(tǒng)110、810、910以及所述IO節(jié)點600)中實施。所述方法1100與所述IO系統(tǒng)900中描述的所述IO預(yù)讀取機制類似,并在接收IO讀取請求的使用。在步驟1110,從處理線程(例如所述處理線程914)接收從IO設(shè)備(例如所述IO設(shè)備120、420、520、820和920)讀取數(shù)據(jù)的請求。在步驟1120,判斷所述數(shù)據(jù)是否被完全傳送至所述IO設(shè)備。如果所述數(shù)據(jù)傳送在進行中,例如從存儲器M(例如所述存儲區(qū)813和913)至所述IO設(shè)備,接下來在步驟1130,所述IO讀取請求被重定向至從所述存儲器M讀取,其中所述IO讀取請求的重定向被稱為IO預(yù)讀取操作。在步驟1140,發(fā)送讀取完成指示至所述處理線程。

如果在步驟1120所述數(shù)據(jù)被寫入至所述IO設(shè)備,接下來在步驟1125,進行IO讀取,以從所述IO設(shè)備獲取數(shù)據(jù)并將所述數(shù)據(jù)保存至所述處理線程的存儲器位置。在步驟1140,在完成所述IO讀取之后,發(fā)送讀取完成至所述處理線程。

圖12是一實施例中在推測同步IO寫入過程中處理異常的方法1200的協(xié)議圖。所述方法1200在數(shù)據(jù)處理系統(tǒng)(例如所述數(shù)據(jù)處理系統(tǒng)110,810,和910和所述IO節(jié)點600)中實施。所述方法1200提供了對所述處理線程(例如所述處理線程811和911)、文件處理程序(例如所述FH 812和912)、異常處理程序和IO設(shè)備(例如所述IO設(shè)備120、420、520、820和920)之間的交互的詳細的介紹。方法1200在所述處理線程請求的IO寫入在進行中時開始。例如,所述IO寫入將數(shù)據(jù)從與所述存儲區(qū)813和913類似的存儲器M的區(qū)傳送至所述IO設(shè)備。所述存儲器M被標(biāo)記為只讀。所述異常處理程序被鏈接至所述處理線程。在步驟1210,所述文件處理程序和所述IO設(shè)備進行IO寫入,以將數(shù)據(jù)從存儲器M傳送至所述IO設(shè)備。在步驟1220,所述處理線程推測地執(zhí)行并在所述存儲器M中的數(shù)據(jù)被完全寫入至所述IO設(shè)備之前確定寫入至所述存儲器M。在步驟1230,所述異常處理程序檢測處理線程在步驟1220發(fā)起的針對所述存儲器M的寫入嘗試。在步驟1240,所述異常處理程序通知所述文件處理程序所述處理線程正嘗試寫入至所述存儲器M并將控制返回至所述文件處理程序。在步驟1250,所述文件處理程序停止所述處理線程寫入至所述存儲器M(例如,通過發(fā)送中斷至所述處理線程),以指示所述處理線程等待所述IO寫入的完成,或通過將所述處理線程放入線程等待狀態(tài)來阻止所述處理線程。

圖13是一實施例中在推測同步IO寫入過程中執(zhí)行存儲器保護的方法1300的流程圖。方法1300在數(shù)據(jù)處理系統(tǒng)(例如所述數(shù)據(jù)處理系統(tǒng)110、810、910以及所述IO節(jié)點600)中實施。例如,所述方法1300由文件處理程序中實施。在一些系統(tǒng)中,所述存儲器(例如所述存儲器設(shè)備632)被分為多個存儲頁。存取許可可以就存儲頁而言來被設(shè)置或清除。然而,所述存儲頁的尺寸相對較大,例如約4千字節(jié),且IO寫入可以傳送所述存儲頁的一部分。在將數(shù)據(jù)從所述存儲器M傳送至所述IO設(shè)備時,方法1300允許存儲器寫入至所述存儲器的其他部分。所述方法1300在異常處理程序設(shè)置有由于IO寫入在進行中所以被標(biāo)記為只讀的存儲器的一個特定的區(qū)塊的存儲器位置或存儲器地址范圍時開始。例如,所述存儲器的特定的區(qū)塊于存儲頁P,所述存儲頁P被設(shè)置為只讀。

在步驟1310,檢測到通過處理線程至所述可只讀的存儲頁P的存儲區(qū)M的寫入存取。在步驟1320,判斷IO傳送是否在存儲區(qū)M進行操作。如果IO傳送在所述存儲區(qū)M操作,接下來在步驟1325,發(fā)送信號至文件處理程序(例如所述FH 812和912),以指示在IO傳送在所述存儲區(qū)M操作時的通過所述處理線程至所述存儲區(qū)M的寫入嘗試,其中所述文件處理程序然后可以將所述處理線程設(shè)置為方法1200中描述的線程等待狀態(tài)。

如果在步驟1320中的IO傳送沒有在所述存儲區(qū)M中操作,接下來在步驟1330,所述可只讀的存儲頁P被從所述只讀存取清除,以使得所述存儲器寫入繼續(xù)進行。在步驟1340,判斷所述數(shù)據(jù)寫入至所述存儲區(qū)M是否成功以及所述存儲區(qū)是否被更新。如果所述數(shù)據(jù)寫入沒有完成,重復(fù)所述步驟1340以檢測數(shù)據(jù)寫入完成。如果所述數(shù)據(jù)寫入完成,接下來在步驟1350,所述存儲頁P被重新設(shè)置為只讀存取。

所述公開的實施例使得處理線程(例如所述處理線程111、811、911和914)發(fā)起IO寫入,以將數(shù)據(jù)藏存儲區(qū)M(例如所述存儲區(qū)813和913)傳送至IO設(shè)備(例如所述IO設(shè)備120、420、520、820和920),并在IO寫入期間繼續(xù)推測地執(zhí)行。另外,所述公開的實施例為其他處理線程提供IO預(yù)讀取機制,以在將數(shù)據(jù)完全寫入至IO設(shè)備之前從所述存儲區(qū)M讀取數(shù)據(jù)。因此,所述公開的實施例大大提升了IO效率。在很多系統(tǒng)和/或應(yīng)用中,在所述數(shù)據(jù)被寫入至所述IO設(shè)備期間通過所述處理線程寫入所述存儲區(qū)M的概率是較低的。所述公開的實施例使得在繁忙的數(shù)據(jù)中心的低優(yōu)先級的應(yīng)用在發(fā)起IO寫入之后繼續(xù)執(zhí)行而不是等待高優(yōu)先級的IO寫入完成。

雖然本發(fā)明中已提供若干實施例,但應(yīng)理解,在不脫離本發(fā)明的精神或范圍的情況下,本發(fā)明所公開的系統(tǒng)和方法可以以許多其他特定形式來體現(xiàn)。本發(fā)明的實例應(yīng)被視為說明性而非限制性的,且本發(fā)明并不限于本文本所給出的細節(jié)。例如,所述各種元件或部件可以在另一系統(tǒng)中組合或合并,或者某些特征可以省略或不實施。

此外,在不脫離本發(fā)明的范圍的情況下,各種實施例中描述和說明為離散或單獨的技術(shù)、系統(tǒng)、子系統(tǒng)和方法可以與其它系統(tǒng)、模塊、技術(shù)或方法進行組合或合并。展示或論述為彼此耦合或直接耦合或通信的其它項也可以采用電方式、機械方式或其它方式通過某一接口、設(shè)備或中間部件間接地耦合或通信。其他變化、替代和改變的示例可以由本領(lǐng)域的技術(shù)人員在不脫離本文精神和所公開的范圍的情況下確定。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1