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

為通過網(wǎng)絡(luò)的數(shù)據(jù)傳輸管理存儲(chǔ)器的方法、系統(tǒng)和程序的制作方法

文檔序號(hào):7597317閱讀:188來源:國知局
專利名稱:為通過網(wǎng)絡(luò)的數(shù)據(jù)傳輸管理存儲(chǔ)器的方法、系統(tǒng)和程序的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及為通過網(wǎng)絡(luò)的數(shù)據(jù)傳輸管理存儲(chǔ)器的方法、系統(tǒng)和程序。
背景技術(shù)
在網(wǎng)絡(luò)環(huán)境中,主機(jī)上的網(wǎng)絡(luò)適配器,諸如以太網(wǎng)控制器、光纖信道控制器等,將接收輸入/輸出(I/O)請(qǐng)求或者從主機(jī)發(fā)起的對(duì)I/O請(qǐng)求的響應(yīng)。主機(jī)操作系統(tǒng)通常包括與網(wǎng)絡(luò)適配器硬件通信的設(shè)備驅(qū)動(dòng)程序,以便管理網(wǎng)絡(luò)上傳送的I/O請(qǐng)求。主機(jī)還包括傳輸協(xié)議驅(qū)動(dòng)程序,它把要通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包裝成數(shù)據(jù)包,其中每個(gè)數(shù)據(jù)包具有目標(biāo)地址以及要傳送的數(shù)據(jù)部分。在網(wǎng)絡(luò)適配器上接收的數(shù)據(jù)包通常存儲(chǔ)在主機(jī)內(nèi)存中可用的所分配的包緩沖器中。傳輸協(xié)議驅(qū)動(dòng)程序處理由網(wǎng)絡(luò)適配器接收的、存儲(chǔ)在包緩沖器中的數(shù)據(jù)包,并存取嵌入數(shù)據(jù)包中的任何I/O命令或數(shù)據(jù)。
例如,傳輸協(xié)議驅(qū)動(dòng)程序可實(shí)現(xiàn)傳輸控制協(xié)議(TCP)和因特網(wǎng)協(xié)議(IP),從而對(duì)要傳送的數(shù)據(jù)進(jìn)行編碼和編址,以及對(duì)網(wǎng)絡(luò)適配器上接收的TCP/IP數(shù)據(jù)包中的凈荷數(shù)據(jù)進(jìn)行解碼和存取。IP指定又稱作數(shù)據(jù)報(bào)的數(shù)據(jù)包的格式以及尋址方案。TCP是高層協(xié)議,它建立目標(biāo)和源之間的連接。
設(shè)備驅(qū)動(dòng)程序可能利用大量主處理器資源來處理送往網(wǎng)絡(luò)適配器的網(wǎng)絡(luò)傳輸請(qǐng)求。減少主處理器上負(fù)荷的一種技術(shù)是使用TCP/IP卸載引擎(TOE),其中TCP/IP協(xié)議相關(guān)操作是在網(wǎng)絡(luò)適配器硬件中實(shí)現(xiàn)的,與設(shè)備驅(qū)動(dòng)程序相反,從而使主處理器不需要執(zhí)行部分或全部TCP/IP協(xié)議相關(guān)操作。傳輸協(xié)議操作包括把數(shù)據(jù)與校驗(yàn)和及其它信息包裝在TCP/IP數(shù)據(jù)包中并發(fā)送該數(shù)據(jù)包。這些發(fā)送操作通過發(fā)送代理來執(zhí)行,發(fā)送代理可通過TOE、網(wǎng)絡(luò)接口卡或集成電路、驅(qū)動(dòng)程序、TCP/IP棧、主處理器或這些單元的組合來實(shí)現(xiàn)。傳輸協(xié)議操作還包括從網(wǎng)絡(luò)上接收TCP/IP數(shù)據(jù)包以及對(duì)TCP/IP數(shù)據(jù)包拆包,以便存取凈荷或數(shù)據(jù)。這些接收操作由接收代理來執(zhí)行,接收代理同樣可通過TOE、驅(qū)動(dòng)程序、主處理器或這些單元的組合來實(shí)現(xiàn)。
圖1說明在TCP連接中由源主機(jī)的發(fā)送代理發(fā)送給目標(biāo)主機(jī)的TCP/IP數(shù)據(jù)包的數(shù)據(jù)流10。在行業(yè)接受的TCP RFC(請(qǐng)求注解)所指定的TCP協(xié)議中,各數(shù)據(jù)包被分配唯一的序列號(hào)。當(dāng)各數(shù)據(jù)包被成功地發(fā)送到目標(biāo)主機(jī)時(shí),目標(biāo)主機(jī)向源主機(jī)發(fā)送確認(rèn),通過該數(shù)據(jù)包成功接收的包序列號(hào)來通知源主機(jī)。因此,流10包含已被發(fā)送和確認(rèn)被目標(biāo)主機(jī)所接收的一部分12數(shù)據(jù)包。流10還包含已被源主機(jī)發(fā)送但未確認(rèn)被目標(biāo)主機(jī)接收的一部分14數(shù)據(jù)包。發(fā)送代理維護(hù)TCP未確認(rèn)數(shù)據(jù)指針16,它指向第一個(gè)未確認(rèn)已發(fā)送數(shù)據(jù)包的序列號(hào)。
用來存儲(chǔ)在目標(biāo)主機(jī)上接收的數(shù)據(jù)包的包緩沖器的容量一般大小有限。根據(jù)TCP協(xié)議,目標(biāo)主機(jī)通過發(fā)送在本文中稱作TCP窗口(在圖1中以20指示)的值,通告它具有的可用緩沖空間的大小。因此,源主機(jī)發(fā)送代理使用TCP窗口值來限制發(fā)送到目標(biāo)主機(jī)的未完成數(shù)據(jù)包的數(shù)量、即源主機(jī)仍未收到確認(rèn)的已發(fā)送數(shù)據(jù)包的數(shù)量。TCP下一個(gè)數(shù)據(jù)指針22指向要發(fā)送到目標(biāo)主機(jī)的下一個(gè)數(shù)據(jù)包的序列號(hào)。數(shù)據(jù)流10在TCP下一個(gè)數(shù)據(jù)指針22與TCP窗口20結(jié)尾之間的部分24表示這樣的數(shù)據(jù)包它們尚未被發(fā)送,但允許在TCP協(xié)議下發(fā)送,而不需要等待任何附加確認(rèn),因?yàn)檫@些數(shù)據(jù)包仍然在TCP窗口20內(nèi),如圖1所示。數(shù)據(jù)流10在TCP窗口20的結(jié)束邊界28之外的部分26不允許在收到附加確認(rèn)之前在TCP協(xié)議下發(fā)送。
當(dāng)目標(biāo)主機(jī)把確認(rèn)發(fā)送到源主機(jī)時(shí),TCP未確認(rèn)數(shù)據(jù)指針16移動(dòng)以指明對(duì)該連接的附加數(shù)據(jù)包的確認(rèn)。TCP窗口20的起始邊界30隨TCP未確認(rèn)數(shù)據(jù)指針16移動(dòng),使得TCP窗口結(jié)束邊界28也移動(dòng),從而可為該連接發(fā)送其它數(shù)據(jù)包。如果數(shù)據(jù)流10的部分14中的數(shù)據(jù)包在一定時(shí)段之后仍未被確認(rèn),則發(fā)送代理通常將重發(fā)未確認(rèn)的數(shù)據(jù)包,直至收到對(duì)那些數(shù)據(jù)包的確認(rèn)。
為了開始發(fā)送數(shù)據(jù),源主機(jī)通常把數(shù)據(jù)流10的數(shù)據(jù)存儲(chǔ)在可由發(fā)送代理存取的緩沖器中。一種這樣的緩沖器稱作“循環(huán)緩沖器”,其中待傳輸?shù)臄?shù)據(jù)被復(fù)制并且通常保留在其中,直到循環(huán)緩沖器10中的所有數(shù)據(jù)已經(jīng)被發(fā)送(以及根據(jù)需要被重傳)并且所有數(shù)據(jù)已經(jīng)被確認(rèn)為成功接收為止。
循環(huán)緩沖器采用通常把數(shù)據(jù)短期存儲(chǔ)在集成電路中的物理存儲(chǔ)器來實(shí)現(xiàn),它的一個(gè)實(shí)例是隨機(jī)存取存儲(chǔ)器、即RAM。通??梢暂^快地從這類物理存儲(chǔ)器中存取數(shù)據(jù)。主機(jī)通常具有諸如硬盤和光盤之類的附加物理存儲(chǔ)器,以便較長(zhǎng)期地存儲(chǔ)數(shù)據(jù)。這些基于非集成電路的存儲(chǔ)器往往比物理存儲(chǔ)器更慢地檢索數(shù)據(jù)。
計(jì)算機(jī)的操作系統(tǒng)通常利用虛擬存儲(chǔ)空間,它往往比計(jì)算機(jī)的短期物理存儲(chǔ)器的存儲(chǔ)空間大得多。圖2表示虛擬存儲(chǔ)空間50和短期物理存儲(chǔ)空間52的一個(gè)實(shí)例。如硬盤之類的長(zhǎng)期存儲(chǔ)器的存儲(chǔ)空間以54表示。數(shù)據(jù)流10中待發(fā)送的數(shù)據(jù)最初可存儲(chǔ)在各種存儲(chǔ)裝置的非鄰接部分、即不連續(xù)的存儲(chǔ)地址中。例如,以10a和10b表示的兩個(gè)部分可以存儲(chǔ)在物理存儲(chǔ)器的物理存儲(chǔ)空間52的非鄰接部分,而以10c表示的另一個(gè)部分可存儲(chǔ)在硬盤驅(qū)動(dòng)器中,如圖2所示。計(jì)算機(jī)的操作系統(tǒng)采用虛擬存儲(chǔ)地址空間50來跟蹤數(shù)據(jù)流10的部分10a、10b和10c的實(shí)際位置。因此,虛擬存儲(chǔ)地址空間50的部分50a被映射到其中存儲(chǔ)數(shù)據(jù)部分10a的物理存儲(chǔ)空間52的物理存儲(chǔ)地址。同樣,虛擬存儲(chǔ)地址空間50的部分50b被映射到其中存儲(chǔ)數(shù)據(jù)部分10b的物理存儲(chǔ)空間52的物理存儲(chǔ)地址。此外,虛擬存儲(chǔ)地址空間50的部分50c被映射到其中存儲(chǔ)數(shù)據(jù)部分10c的長(zhǎng)期硬盤驅(qū)動(dòng)器存儲(chǔ)空間54的物理存儲(chǔ)地址??瞻撞糠?0d表示虛擬存儲(chǔ)地址空間50的未分配或未映射部分。
由于物理存儲(chǔ)器中的存儲(chǔ)空間通常比較有限,因此存儲(chǔ)在物理存儲(chǔ)器中的數(shù)據(jù)的部分可被復(fù)制,即被“交換”到硬盤驅(qū)動(dòng)器或其它長(zhǎng)期存儲(chǔ)器,以便為其它數(shù)據(jù)讓出物理存儲(chǔ)器中的空間。因此,數(shù)據(jù)部分10c可以從物理存儲(chǔ)器交換到硬盤驅(qū)動(dòng)器。當(dāng)數(shù)據(jù)部分10c被交換到硬盤驅(qū)動(dòng)器時(shí),被交換數(shù)據(jù)部分的虛擬存儲(chǔ)地址被映射到如圖2所示的硬盤驅(qū)動(dòng)器存儲(chǔ)空間54而非先前存儲(chǔ)部分10c的物理存儲(chǔ)空間52的新的硬盤驅(qū)動(dòng)器物理存儲(chǔ)地址。
圖3表示用于根據(jù)TCP/IP RFC系列的Berkeley軟件設(shè)計(jì)(BSD)TCP/IP棧來發(fā)送數(shù)據(jù)的先有技術(shù)操作。響應(yīng)發(fā)送數(shù)據(jù)的數(shù)據(jù)流10的請(qǐng)求,可包括計(jì)算機(jī)操作系統(tǒng)或驅(qū)動(dòng)程序或者這兩者的主機(jī)從物理存儲(chǔ)器和長(zhǎng)期存儲(chǔ)裝置的各個(gè)單元收集(框70)數(shù)據(jù)流10的各種數(shù)據(jù)部分10a、10b...10n。如圖4所示,主機(jī)把所收集的數(shù)據(jù)流部分10a、10b...10n存儲(chǔ)在物理存儲(chǔ)空間52的毗連存儲(chǔ)單元中。這樣,數(shù)據(jù)流10的數(shù)據(jù)被組裝,以便傳輸。
另外,主機(jī)通過主機(jī)操作系統(tǒng)“鎖定”(框72)包含數(shù)據(jù)流10的物理存儲(chǔ)單元。鎖定這些存儲(chǔ)單元以防止其它應(yīng)用程序在數(shù)據(jù)流10的傳輸過程中使數(shù)據(jù)流10的數(shù)據(jù)的一些部分被換出到長(zhǎng)期存儲(chǔ)器。主機(jī)向發(fā)送代理發(fā)送(框74)包含數(shù)據(jù)流10的鎖定物理存儲(chǔ)單元的物理存儲(chǔ)地址。進(jìn)行響應(yīng),發(fā)送代理開始從鎖定存儲(chǔ)單元發(fā)送(框76)包含數(shù)據(jù)的數(shù)據(jù)包,并在數(shù)據(jù)包被成功發(fā)送和接收時(shí)開始從目標(biāo)主機(jī)接收(框78)確認(rèn)。發(fā)送代理繼續(xù)發(fā)送(框76)數(shù)據(jù)包以及接收(框78)確認(rèn)。未確認(rèn)數(shù)據(jù)包被重發(fā)(框76),直到它們被確認(rèn)(框78)為止。一旦數(shù)據(jù)流10的所有數(shù)據(jù)包已經(jīng)被成功地發(fā)送和確認(rèn)(框80),主機(jī)釋放(框82)包含數(shù)據(jù)流10的數(shù)據(jù)的物理存儲(chǔ)單元。釋放之后,存儲(chǔ)在釋放物理存儲(chǔ)單元中的數(shù)據(jù)可根據(jù)需要被交換到長(zhǎng)期存儲(chǔ)器。
然而,本領(lǐng)域中一直需要提高數(shù)據(jù)傳輸中存儲(chǔ)器使用的性能。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供一種把數(shù)據(jù)從源發(fā)送到目標(biāo)的方法,包括主機(jī),向源的發(fā)送代理提供待發(fā)送到目標(biāo)的數(shù)據(jù)的虛擬存儲(chǔ)地址,其中數(shù)據(jù)被存儲(chǔ)在源的多個(gè)物理單元中,各單元具有物理地址以及映射到物理地址的虛擬存儲(chǔ)地址;發(fā)送代理向主機(jī)提供待發(fā)送到目標(biāo)的數(shù)據(jù)的至少部分虛擬存儲(chǔ)地址;主機(jī)向發(fā)送代理標(biāo)識(shí)發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的數(shù)據(jù);以及發(fā)送代理向目標(biāo)發(fā)送所標(biāo)識(shí)的數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)標(biāo)識(shí)數(shù)據(jù)包括主機(jī)向發(fā)送代理提供發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù),所述方法還包括發(fā)送代理把從主機(jī)接收的數(shù)據(jù)存儲(chǔ)在發(fā)送代理的緩沖器中。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)標(biāo)識(shí)數(shù)據(jù)包括主機(jī)向發(fā)送代理提供包含發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的數(shù)據(jù)的存儲(chǔ)單元的物理地址。
在本發(fā)明的一個(gè)實(shí)施例中,物理單元包括第一存儲(chǔ)器的單元和第二存儲(chǔ)器的單元,主機(jī)所標(biāo)識(shí)的數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)器中,主機(jī)提供的物理存儲(chǔ)地址是包含發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)的第一存儲(chǔ)器的物理存儲(chǔ)單元,所述方法還包括鎖定主機(jī)向發(fā)送代理提供的第一存儲(chǔ)器的物理存儲(chǔ)單元,以便防止發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)被交換到第二存儲(chǔ)器。
在本發(fā)明的一個(gè)實(shí)施例中,所述方法還包括發(fā)送代理從第一存儲(chǔ)器的鎖定的物理存儲(chǔ)單元中檢索發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù);以及在發(fā)送代理向目標(biāo)發(fā)送發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)之后,釋放第一存儲(chǔ)器的鎖定的物理存儲(chǔ)單元。
在本發(fā)明的一個(gè)實(shí)施例中,所述方法還包括從目標(biāo)接收對(duì)發(fā)送代理成功發(fā)送且目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);其中發(fā)送代理提供給主機(jī)的虛擬存儲(chǔ)地址是發(fā)送代理發(fā)送到目標(biāo)、但未被確認(rèn)為目標(biāo)成功接收的數(shù)據(jù)的虛擬地址。
在本發(fā)明的一個(gè)實(shí)施例中,所述方法還包括從目標(biāo)接收對(duì)發(fā)送代理成功發(fā)送且目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);發(fā)送代理向主機(jī)提供由發(fā)送代理發(fā)送到所述目標(biāo)、但未被確認(rèn)為目標(biāo)成功接收的數(shù)據(jù)的虛擬地址;主機(jī)對(duì)發(fā)送代理標(biāo)識(shí)發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的未確認(rèn)數(shù)據(jù);以及發(fā)送代理向目標(biāo)重發(fā)標(biāo)識(shí)的未確認(rèn)數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)向發(fā)送代理提供虛擬地址包括主機(jī)向發(fā)送代理提供至少一種數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括地址字段,包含存儲(chǔ)待發(fā)送到目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;以及序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)向發(fā)送代理提供虛擬地址包括主機(jī)向發(fā)送代理提供多個(gè)數(shù)據(jù)結(jié)構(gòu),其中各數(shù)據(jù)結(jié)構(gòu)包括地址字段,存儲(chǔ)待發(fā)送到所述目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的所述數(shù)據(jù)包序列號(hào)的值;以及鏈接字段,包含所述多個(gè)數(shù)據(jù)結(jié)構(gòu)中的另一個(gè)數(shù)據(jù)結(jié)構(gòu)的虛擬地址。
在本發(fā)明的一個(gè)實(shí)施例中,所述物理單元包括第一存儲(chǔ)器和第二存儲(chǔ)器的單元,以及待發(fā)送到目標(biāo)的數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)器中,所述方法還包括鎖定存儲(chǔ)待發(fā)送數(shù)據(jù)的第一存儲(chǔ)器的單元,以便防止待發(fā)送數(shù)據(jù)被交換到第二存儲(chǔ)器;除了待發(fā)送數(shù)據(jù)的虛擬存儲(chǔ)地址之外,主機(jī)還向發(fā)送代理提供存儲(chǔ)待發(fā)送數(shù)據(jù)的第一存儲(chǔ)器的單元的物理地址;發(fā)送代理從第一存儲(chǔ)器的鎖定單元中檢索待發(fā)送數(shù)據(jù);以及在發(fā)送代理從存儲(chǔ)待發(fā)送數(shù)據(jù)的第一存儲(chǔ)器的鎖定單元中檢索數(shù)據(jù)之后,釋放存儲(chǔ)待發(fā)送數(shù)據(jù)的第一存儲(chǔ)器的鎖定單元。
根據(jù)本發(fā)明的第二方面,提供一種適合與目標(biāo)通信的系統(tǒng),包括存儲(chǔ)器;耦合到系統(tǒng)存儲(chǔ)器的處理器;可由處理器在存儲(chǔ)器中執(zhí)行的操作系統(tǒng);網(wǎng)絡(luò)適配器;數(shù)據(jù)存儲(chǔ)裝置;適合管理對(duì)數(shù)據(jù)存儲(chǔ)裝置的輸入/輸出(I/O)訪問的數(shù)據(jù)存儲(chǔ)裝置控制器;以及可由處理器在存儲(chǔ)器中執(zhí)行的設(shè)備驅(qū)動(dòng)程序。存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)裝置均包括適合存儲(chǔ)數(shù)據(jù)的物理單元,各單元具有物理地址和映射到物理地址的虛擬地址。操作系統(tǒng)和設(shè)備驅(qū)動(dòng)程序中的至少一個(gè)適合提供主機(jī),以及設(shè)備驅(qū)動(dòng)程序和網(wǎng)絡(luò)適配器中的至少一個(gè)適合提供發(fā)送代理,其中(i)主機(jī)向發(fā)送代理提供待發(fā)送到目標(biāo)的數(shù)據(jù)的虛擬存儲(chǔ)地址;(ii)發(fā)送代理向主機(jī)提供待發(fā)送到目標(biāo)的數(shù)據(jù)的至少部分虛擬存儲(chǔ)地址;(iii)主機(jī)對(duì)發(fā)送代理標(biāo)識(shí)發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的數(shù)據(jù);以及(iv)發(fā)送代理向目標(biāo)發(fā)送標(biāo)識(shí)的數(shù)據(jù),建立適合在系統(tǒng)與目標(biāo)之間發(fā)送數(shù)據(jù)包的有效連接。
在本發(fā)明的一個(gè)實(shí)施例中,所述系統(tǒng)還包括緩沖器,以及主機(jī)標(biāo)識(shí)數(shù)據(jù)包括主機(jī)向發(fā)送代理提供發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù),以及發(fā)送代理還適合把從主機(jī)接收的數(shù)據(jù)存儲(chǔ)在緩沖器中。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)標(biāo)識(shí)數(shù)據(jù)包括主機(jī)向發(fā)送代理提供包含發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的數(shù)據(jù)的存儲(chǔ)單元的物理地址。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)標(biāo)識(shí)的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中,以及主機(jī)所提供的物理地址是包含發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)的存儲(chǔ)器的物理單元,系統(tǒng)還包括鎖定主機(jī)提供給發(fā)送代理的存儲(chǔ)器的物理存儲(chǔ)單元,以便防止發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)被交換到數(shù)據(jù)存儲(chǔ)裝置。
在本發(fā)明的一個(gè)實(shí)施例中,發(fā)送代理還適合從存儲(chǔ)器的鎖定的物理存儲(chǔ)單元中檢索發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù);以及發(fā)送代理和主機(jī)中的至少一個(gè)還適合在發(fā)送代理向目標(biāo)發(fā)送發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)之后,釋放存儲(chǔ)器的鎖定的物理存儲(chǔ)單元。
在本發(fā)明的一個(gè)實(shí)施例中,發(fā)送代理還適合從目標(biāo)接收對(duì)發(fā)送代理成功發(fā)送且目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);以及發(fā)送代理提供給主機(jī)的虛擬存儲(chǔ)地址是發(fā)送代理發(fā)送到目標(biāo)、但未被確認(rèn)為目標(biāo)成功接收的數(shù)據(jù)的虛擬地址。
在本發(fā)明的一個(gè)實(shí)施例中,發(fā)送代理還適合于從目標(biāo)接收對(duì)發(fā)送代理成功發(fā)送且目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);以及向主機(jī)提供由發(fā)送代理發(fā)送到目標(biāo)、但未被確認(rèn)為目標(biāo)成功接收的數(shù)據(jù)的虛擬地址;其中主機(jī)還適合對(duì)發(fā)送代理標(biāo)識(shí)發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的未確認(rèn)數(shù)據(jù);以及發(fā)送代理還適合向目標(biāo)重發(fā)標(biāo)識(shí)的未確認(rèn)數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)向發(fā)送代理提供虛擬地址包括主機(jī)向發(fā)送代理提供至少一種數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)包括地址字段,包含存儲(chǔ)待發(fā)送到目標(biāo)的數(shù)據(jù)塊的多個(gè)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;以及序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)向發(fā)送代理提供虛擬地址包括主機(jī)向發(fā)送代理提供多個(gè)數(shù)據(jù)結(jié)構(gòu),其中各數(shù)據(jù)結(jié)構(gòu)包括地址字段,包含存儲(chǔ)待發(fā)送到目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值;以及鏈接字段,包含所述多個(gè)數(shù)據(jù)結(jié)構(gòu)中的另一個(gè)數(shù)據(jù)結(jié)構(gòu)的虛擬地址。
在本發(fā)明的一個(gè)實(shí)施例中,待發(fā)送到目標(biāo)的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中,以及主機(jī)和發(fā)送代理中的至少一個(gè)適合于鎖定存儲(chǔ)待發(fā)送數(shù)據(jù)的存儲(chǔ)器的單元,以便防止待發(fā)送數(shù)據(jù)被交換到數(shù)據(jù)存儲(chǔ)裝置;其中,除了待發(fā)送數(shù)據(jù)的虛擬存儲(chǔ)地址之外,主機(jī)還適合向發(fā)送代理提供存儲(chǔ)待發(fā)送數(shù)據(jù)的存儲(chǔ)器的單元的物理地址;其中,發(fā)送代理還適合從存儲(chǔ)器的鎖定單元取出待發(fā)送數(shù)據(jù);以及在發(fā)送代理從存儲(chǔ)待發(fā)送數(shù)據(jù)的存儲(chǔ)器的鎖定單元取出數(shù)據(jù)之后,釋放存儲(chǔ)待發(fā)送數(shù)據(jù)的存儲(chǔ)器的鎖定單元。
根據(jù)本發(fā)明的第三方面,提供一種把數(shù)據(jù)從源發(fā)送到目標(biāo)的制造產(chǎn)品,操作包括主機(jī)向源的發(fā)送代理提供待發(fā)送到目標(biāo)的數(shù)據(jù)的虛擬存儲(chǔ)地址,其中數(shù)據(jù)存儲(chǔ)在源的多個(gè)物理單元中,各單元具有物理地址以及映射到物理地址的虛擬存儲(chǔ)地址;發(fā)送代理向主機(jī)提供待發(fā)送到目標(biāo)的數(shù)據(jù)的至少部分虛擬存儲(chǔ)地址;主機(jī)對(duì)發(fā)送代理標(biāo)識(shí)發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的數(shù)據(jù);以及發(fā)送代理向目標(biāo)發(fā)送標(biāo)識(shí)的數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)標(biāo)識(shí)數(shù)據(jù)包括主機(jī)向發(fā)送代理提供發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù),操作還包括發(fā)送代理把從主機(jī)接收的數(shù)據(jù)存儲(chǔ)在發(fā)送代理的緩沖器中。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)標(biāo)識(shí)數(shù)據(jù)包括主機(jī)向發(fā)送代理提供包含發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的數(shù)據(jù)的存儲(chǔ)單元的物理地址。
在本發(fā)明的一個(gè)實(shí)施例中,物理單元包括第一存儲(chǔ)器的單元和第二存儲(chǔ)器的單元,主機(jī)所標(biāo)識(shí)的數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)器中,主機(jī)所提供的物理存儲(chǔ)地址是包含發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)的第一存儲(chǔ)器的物理存儲(chǔ)單元,操作還包括鎖定主機(jī)提供到發(fā)送代理的第一存儲(chǔ)器的物理存儲(chǔ)單元,以便防止發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)被交換到第二存儲(chǔ)器。
在本發(fā)明的一個(gè)實(shí)施例中,操作還包括發(fā)送代理,從第一存儲(chǔ)器的鎖定的物理存儲(chǔ)單元中取出發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù);以及在發(fā)送代理向目標(biāo)發(fā)送發(fā)送代理提供的虛擬地址所尋址的數(shù)據(jù)之后,釋放第一存儲(chǔ)器的鎖定的物理存儲(chǔ)單元。
在本發(fā)明的一個(gè)實(shí)施例中,操作還包括從目標(biāo)接收對(duì)發(fā)送代理成功發(fā)送且目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);以及發(fā)送代理提供給主機(jī)的虛擬存儲(chǔ)地址是發(fā)送代理發(fā)送到目標(biāo)、但未被確認(rèn)為目標(biāo)成功接收的數(shù)據(jù)的虛擬地址。
在本發(fā)明的一個(gè)實(shí)施例中,操作還包括從目標(biāo)接收對(duì)發(fā)送代理成功發(fā)送且目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);發(fā)送代理向主機(jī)提供發(fā)送代理發(fā)送到目標(biāo)、但未被確認(rèn)為目標(biāo)成功接收的數(shù)據(jù)的虛擬地址;主機(jī)對(duì)發(fā)送代理標(biāo)識(shí)發(fā)送代理提供的虛擬存儲(chǔ)地址所尋址的未確認(rèn)數(shù)據(jù);以及發(fā)送代理向目標(biāo)重發(fā)標(biāo)識(shí)的未確認(rèn)數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)向發(fā)送代理提供虛擬地址包括主機(jī)向發(fā)送代理提供至少一種數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)包括地址字段,包含存儲(chǔ)待發(fā)送到目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;以及序列號(hào)字段,包含表示與數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值。
在本發(fā)明的一個(gè)實(shí)施例中,主機(jī)向發(fā)送代理提供虛擬地址包括主機(jī)向發(fā)送代理提供多個(gè)數(shù)據(jù)結(jié)構(gòu),其中各數(shù)據(jù)結(jié)構(gòu)包括地址字段,存儲(chǔ)待發(fā)送到目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示數(shù)據(jù)塊大小的值;序列號(hào)字段,包含表示與數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值;以及鏈接字段,包含多個(gè)數(shù)據(jù)結(jié)構(gòu)中的另一個(gè)數(shù)據(jù)結(jié)構(gòu)的虛擬地址。
在本發(fā)明的一個(gè)實(shí)施例中,物理單元包括第一存儲(chǔ)器和第二存儲(chǔ)器的單元,以及待發(fā)送到目標(biāo)的數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)器中,操作還包括,鎖定存儲(chǔ)待發(fā)送數(shù)據(jù)的第一存儲(chǔ)器的單元,以便防止待發(fā)送數(shù)據(jù)被交換到第二存儲(chǔ)器;除了待發(fā)送數(shù)據(jù)的虛擬存儲(chǔ)地址之外,主機(jī)還向發(fā)送代理提供存儲(chǔ)待發(fā)送數(shù)據(jù)的第一存儲(chǔ)器的單元的物理地址;發(fā)送代理從第一存儲(chǔ)器的鎖定單元中取出待發(fā)送數(shù)據(jù);以及在發(fā)送代理從存儲(chǔ)待發(fā)送數(shù)據(jù)的第一存儲(chǔ)器的鎖定單元中取出數(shù)據(jù)之后,釋放存儲(chǔ)待發(fā)送數(shù)據(jù)的第一存儲(chǔ)器的鎖定單元。


現(xiàn)在參照附圖,其中各圖中類似的參考標(biāo)號(hào)表示相應(yīng)的部分圖1說明根據(jù)先有技術(shù)TCP協(xié)議傳輸?shù)臄?shù)據(jù)流;圖2說明存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)流的數(shù)據(jù)的先有技術(shù)虛擬和物理存儲(chǔ)地址;圖3說明在通過網(wǎng)絡(luò)傳送數(shù)據(jù)時(shí)的先有技術(shù)操作;圖4說明數(shù)據(jù)流的數(shù)據(jù)在物理存儲(chǔ)器中的先有技術(shù)存儲(chǔ);圖5說明其中實(shí)現(xiàn)本發(fā)明的若干方面的計(jì)算環(huán)境的一個(gè)實(shí)施例;圖6說明先有技術(shù)的數(shù)據(jù)包體系結(jié)構(gòu);
圖7說明根據(jù)本發(fā)明的若干方面的實(shí)際毗連數(shù)據(jù)流的數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)施例;圖8說明根據(jù)本發(fā)明的若干方面?zhèn)魉蛿?shù)據(jù)流所執(zhí)行的操作的一個(gè)實(shí)施例;圖9說明根據(jù)本發(fā)明的若干方面重傳數(shù)據(jù)流的數(shù)據(jù)所執(zhí)行的操作的一個(gè)實(shí)施例;圖10說明根據(jù)本發(fā)明的若干方面重傳數(shù)據(jù)流的數(shù)據(jù)所執(zhí)行的操作的另一個(gè)實(shí)施例;圖11說明根據(jù)本發(fā)明的若干方面?zhèn)魉蛿?shù)據(jù)流所執(zhí)行的操作的另一個(gè)實(shí)施例;圖12說明根據(jù)本發(fā)明的若干方面?zhèn)魉蛿?shù)據(jù)流所執(zhí)行的操作的又一個(gè)實(shí)施例;以及圖13說明可與所述實(shí)施例配合使用的一種體系結(jié)構(gòu)。
具體實(shí)施例方式
在以下說明中,參照附圖,附圖構(gòu)成說明的組成部分并說明本發(fā)明的若干實(shí)施例。應(yīng)當(dāng)理解,只要沒有背離本發(fā)明的范圍,可采用其它實(shí)施例,并且可進(jìn)行結(jié)構(gòu)和操作變更。
圖5說明其中可實(shí)現(xiàn)本發(fā)明的若干方面的計(jì)算環(huán)境。計(jì)算機(jī)102包括一個(gè)或多個(gè)中央處理器(CPU)104(僅示出一個(gè))、內(nèi)存106、非易失性存儲(chǔ)裝置108、操作系統(tǒng)110和網(wǎng)絡(luò)適配器112。應(yīng)用程序114還在內(nèi)存106中運(yùn)行,并且能夠從遠(yuǎn)程計(jì)算機(jī)發(fā)送和接收數(shù)據(jù)包。計(jì)算機(jī)102可包括本領(lǐng)域已知的任何計(jì)算裝置,例如大型計(jì)算機(jī)、服務(wù)器、個(gè)人計(jì)算機(jī)、工作站、膝上型電腦、手持計(jì)算機(jī)、電話裝置、網(wǎng)絡(luò)設(shè)備、虛擬化設(shè)備、存儲(chǔ)控制器等等??刹捎帽绢I(lǐng)域已知的任何CPU 104和操作系統(tǒng)110。作為內(nèi)存管理操作的一部分,內(nèi)存106中的程序和數(shù)據(jù)可被交換到存儲(chǔ)裝置108。
網(wǎng)絡(luò)適配器112包括網(wǎng)絡(luò)協(xié)議層116,用于實(shí)現(xiàn)通過網(wǎng)絡(luò)118向遠(yuǎn)程裝置發(fā)送或從遠(yuǎn)程裝置接收網(wǎng)絡(luò)數(shù)據(jù)包的物理通信層。網(wǎng)絡(luò)118可包括局域網(wǎng)(LAN)、因特網(wǎng)、廣域網(wǎng)(WAN)、存儲(chǔ)區(qū)域網(wǎng)(SAN)等。實(shí)施例可配置成通過無線網(wǎng)絡(luò)或連接、如無線LAN、藍(lán)牙等傳送數(shù)據(jù)。在某些實(shí)施例中,網(wǎng)絡(luò)適配器112和網(wǎng)絡(luò)協(xié)議層116可實(shí)現(xiàn)以太網(wǎng)協(xié)議、令牌環(huán)網(wǎng)協(xié)議、光纖信道協(xié)議、Infiniband、串行高技術(shù)配件(SATA)、并行SCSI、串行附加SCSI電纜等,或者本領(lǐng)域已知的其它任何網(wǎng)絡(luò)通信協(xié)議。
設(shè)備驅(qū)動(dòng)程序120在內(nèi)存106中運(yùn)行,并且包括與網(wǎng)絡(luò)適配器112通信的網(wǎng)絡(luò)適配器112專用命令以及操作系統(tǒng)110與網(wǎng)絡(luò)適配器112之間的接口。在某些實(shí)現(xiàn)中,網(wǎng)絡(luò)適配器112包括傳輸協(xié)議層121以及網(wǎng)絡(luò)協(xié)議層116。例如,網(wǎng)絡(luò)適配器112可實(shí)現(xiàn)TCP/IP卸載引擎(TOE),其中傳輸層操作在網(wǎng)絡(luò)適配器112硬件內(nèi)實(shí)現(xiàn)的傳輸協(xié)議層121的卸載引擎中被執(zhí)行,與設(shè)備驅(qū)動(dòng)程序120相反。
網(wǎng)絡(luò)層116處理網(wǎng)絡(luò)通信,以及把所接收的TCP/IP數(shù)據(jù)包提供給傳輸協(xié)議層121,以便在已加密的情況下對(duì)數(shù)據(jù)包進(jìn)行解密。傳輸協(xié)議層121與設(shè)備驅(qū)動(dòng)程序120接口,并執(zhí)行其它傳輸協(xié)議層操作,例如處理在網(wǎng)絡(luò)適配器112上接收的數(shù)據(jù)包中包含的、在傳輸層被包裝的消息的解密內(nèi)容,諸如TCP和/或IP、因特網(wǎng)小計(jì)算機(jī)系統(tǒng)接口(iSCSI)、光纖信道SCSI、并行SCSI傳輸或本領(lǐng)域已知的其它任何傳輸層協(xié)議。傳輸卸載引擎121可從所接收的TCP/IP數(shù)據(jù)包中將凈荷拆包,并把數(shù)據(jù)傳遞到設(shè)備驅(qū)動(dòng)程序120,以便返回給應(yīng)用程序114。
通過網(wǎng)絡(luò)118傳送數(shù)據(jù)的應(yīng)用程序114向設(shè)備驅(qū)動(dòng)程序120提供數(shù)據(jù)。數(shù)據(jù)可被發(fā)送到傳輸協(xié)議層121,從而被封裝成TCP/IP數(shù)據(jù)包。傳輸協(xié)議層121還可在通過網(wǎng)絡(luò)協(xié)議層116在網(wǎng)絡(luò)118上傳送數(shù)據(jù)包之前對(duì)數(shù)據(jù)包進(jìn)行加密。
內(nèi)存106還包括文件對(duì)象124,它又可稱作套接字對(duì)象,包括關(guān)于通過網(wǎng)絡(luò)118到遠(yuǎn)程計(jì)算機(jī)的連接的信息。應(yīng)用程序114采用文件對(duì)象124中的信息來標(biāo)識(shí)該連接。應(yīng)用程序114采用文件對(duì)象124與遠(yuǎn)程系統(tǒng)通信。文件對(duì)象124可指明將被用來與遠(yuǎn)程系統(tǒng)通信的本地端口或套接字、在其中運(yùn)行應(yīng)用程序114的計(jì)算機(jī)102的本地網(wǎng)絡(luò)(IP)地址、應(yīng)用程序114已發(fā)送和接收的數(shù)據(jù)數(shù)量、以及應(yīng)用程序114與其通信的遠(yuǎn)程端口和網(wǎng)絡(luò)地址、如IP地址。上下文信息126包括一種數(shù)據(jù)結(jié)構(gòu),其中包含設(shè)備驅(qū)動(dòng)程序120所維護(hù)的用以管理發(fā)送到網(wǎng)絡(luò)適配器112的請(qǐng)求的信息,如以下所述。
在所述實(shí)施例中,經(jīng)編程、由內(nèi)存106的軟件來操作的CPU 104提供與網(wǎng)絡(luò)適配器112交互的主機(jī)130,其中所述軟件包括一個(gè)或多個(gè)操作系統(tǒng)110、應(yīng)用程序114以及設(shè)備驅(qū)動(dòng)程序120。因此,發(fā)送代理132包括網(wǎng)絡(luò)接口112的傳輸協(xié)議層121和網(wǎng)絡(luò)協(xié)議層116。但是,發(fā)送代理132可通過TOE、網(wǎng)絡(luò)接口卡或集成電路、驅(qū)動(dòng)程序、TCP/IP棧、主處理器或這些單元的組合來實(shí)現(xiàn)。
圖6說明通過網(wǎng)絡(luò)適配器112接收或發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)包150的格式。網(wǎng)絡(luò)數(shù)據(jù)包150以網(wǎng)絡(luò)協(xié)議114所理解的格式來實(shí)現(xiàn),例如封裝在以太網(wǎng)幀中,它包括其它以太網(wǎng)成分、如首標(biāo)和檢錯(cuò)碼(未示出)。傳輸數(shù)據(jù)包152包含在網(wǎng)絡(luò)數(shù)據(jù)包150中。傳輸數(shù)據(jù)包152可包括能夠由傳輸協(xié)議驅(qū)動(dòng)程序121來處理的傳輸層,例如TCP和/或IP協(xié)議、因特網(wǎng)小計(jì)算機(jī)系統(tǒng)接口(iSCSI)協(xié)議、光纖信道SCSI、并行SCSI傳輸?shù)?。傳輸?shù)據(jù)包152包括凈荷數(shù)據(jù)154以及其它傳輸層字段、如首標(biāo)和檢錯(cuò)碼。凈荷數(shù)據(jù)52包括被傳送的基本內(nèi)容,如命令、狀態(tài)和/或數(shù)據(jù)。操作系統(tǒng)110可包括設(shè)備層、如SCSI驅(qū)動(dòng)程序(未示出),以便處理凈荷數(shù)據(jù)154的內(nèi)容以及存取其中的任何狀態(tài)、命令和/或數(shù)據(jù)。
如上所述,當(dāng)發(fā)送數(shù)據(jù)流、如數(shù)據(jù)流10時(shí),主機(jī)通常已經(jīng)預(yù)先把數(shù)據(jù)流的數(shù)據(jù)存儲(chǔ)在物理存儲(chǔ)器中,并且鎖定物理存儲(chǔ)器的那些單元,直到數(shù)據(jù)流的所有數(shù)據(jù)包已經(jīng)由發(fā)送代理成功發(fā)送并被目標(biāo)所確認(rèn)為止。因此,在數(shù)據(jù)傳輸過程中可能占用物理存儲(chǔ)器的大量部分。
根據(jù)可在數(shù)據(jù)傳輸過程中改善內(nèi)存資源管理的一個(gè)實(shí)施例,主機(jī)130向發(fā)送代理132發(fā)送待發(fā)送數(shù)據(jù)的虛擬存儲(chǔ)地址。如上所述,主機(jī)130可包括操作系統(tǒng)或驅(qū)動(dòng)程序或者這兩者。發(fā)送代理132可通過TOE、網(wǎng)絡(luò)接口卡或集成電路、驅(qū)動(dòng)程序、TCP/IP棧、主處理器或這些單元的組合來實(shí)現(xiàn)。當(dāng)發(fā)送代理132準(zhǔn)備在傳送或重傳中發(fā)送數(shù)據(jù)時(shí),發(fā)送代理132向主機(jī)提供它準(zhǔn)備發(fā)送的、可以只是要發(fā)送的整個(gè)數(shù)據(jù)流的一部分的數(shù)據(jù)的虛擬地址。作出響應(yīng),主機(jī)向發(fā)送代理132提供所請(qǐng)求數(shù)據(jù)的物理地址或?qū)嶋H數(shù)據(jù)本身。因此,物理存儲(chǔ)器的鎖定可被減少或消除,如以下更詳細(xì)說明。
圖7表示虛擬存儲(chǔ)空間50的虛擬存儲(chǔ)地址的塊200a。塊200a的各虛擬存儲(chǔ)地址被映射到包含待發(fā)送數(shù)據(jù)流210的數(shù)據(jù)塊210a的多個(gè)物理存儲(chǔ)單元。存儲(chǔ)數(shù)據(jù)塊210a的物理存儲(chǔ)單元可以處于物理存儲(chǔ)單元52或者長(zhǎng)期物理存儲(chǔ)單元54中。虛擬存儲(chǔ)地址的另一個(gè)塊200b被映射到包含待發(fā)送數(shù)據(jù)的另一個(gè)塊210b的另一組多個(gè)物理存儲(chǔ)單元。存儲(chǔ)數(shù)據(jù)塊210b的物理存儲(chǔ)單元也可以處于物理存儲(chǔ)單元52或者長(zhǎng)期物理存儲(chǔ)單元54中,并且不一定處于與塊210a相同類型的存儲(chǔ)器中。虛擬存儲(chǔ)地址的其它塊被映射到包含待發(fā)送數(shù)據(jù)流的其它數(shù)據(jù)塊的物理存儲(chǔ)單元。存儲(chǔ)其它數(shù)據(jù)塊的物理存儲(chǔ)單元同樣可以處于物理存儲(chǔ)單元52或者長(zhǎng)期物理存儲(chǔ)單元54中,并且不一定全部處于相同類型的存儲(chǔ)器中。虛擬存儲(chǔ)地址的塊200n被映射到包含待發(fā)送數(shù)據(jù)流210的最后一個(gè)數(shù)據(jù)塊210n的最后一組物理存儲(chǔ)單元。
可采用各種格式對(duì)發(fā)送代理132標(biāo)識(shí)虛擬存儲(chǔ)地址的各塊200a、200b...200n。圖7說明數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)例,該數(shù)據(jù)結(jié)構(gòu)在本文中稱作“虛擬上下文”,它標(biāo)識(shí)虛擬存儲(chǔ)地址的塊。在本例中,虛擬存儲(chǔ)地址的各塊200a、200b...200n分別由相關(guān)虛擬上下文220a、220b...220n來標(biāo)識(shí)。各虛擬上下文220a、220b...220n具有虛擬地址字段222a、222b...222n,它們可包含相關(guān)數(shù)據(jù)塊210a、210b...210n的數(shù)據(jù)的起始數(shù)據(jù)包的虛擬地址?;蛘?,起始數(shù)據(jù)包的虛擬地址可由與偏移字段224a、224b...224n中所存儲(chǔ)的偏移值組合的虛擬地址字段222a、222b...222n中所存儲(chǔ)的虛擬地址來標(biāo)識(shí)。
各數(shù)據(jù)塊210a、210b...210n的大小在數(shù)據(jù)大小字段226a、226b...226n中標(biāo)識(shí)。因此,在所述實(shí)施例中,各數(shù)據(jù)塊210a、210b...210n的大小對(duì)于不同塊可以不同。或者,固定大小可能對(duì)于一些應(yīng)用是適當(dāng)?shù)摹A硗?,?shù)據(jù)塊210a、210b...210n的第一數(shù)據(jù)包的TCP序列號(hào)或其它發(fā)送協(xié)議序列號(hào)在起始序列號(hào)字段228a、228b...228n中標(biāo)識(shí)。
在所述實(shí)施例中,虛擬上下文220a、220b...220n可通過指針字段230a、230b...230n鏈接在一起,其中指針字段230a、230b...230n指向包含數(shù)據(jù)流210的下一個(gè)虛擬上下文220a、220b...220n的虛擬存儲(chǔ)單元的地址。因此,例如,數(shù)據(jù)塊210a的虛擬存儲(chǔ)地址塊200a的虛擬上下文220a的指針字段230a指向包含數(shù)據(jù)塊210b的虛擬存儲(chǔ)地址塊200b的下一個(gè)虛擬上下文220b的虛擬存儲(chǔ)單元的地址,數(shù)據(jù)塊210b的虛擬存儲(chǔ)地址塊200b的虛擬上下文220b的指針字段230b指向包含數(shù)據(jù)塊210c的虛擬存儲(chǔ)地址塊200c的下一個(gè)虛擬上下文220c的虛擬存儲(chǔ)單元的地址,依此類推。
如上所述,數(shù)據(jù)塊210a、210b...210n的各塊可存儲(chǔ)在不同類型的物理存儲(chǔ)器中。另外,存儲(chǔ)在同一個(gè)存儲(chǔ)器中的數(shù)據(jù)塊210a、210b...210n的那些塊不需要處于鄰接存儲(chǔ)在特定存儲(chǔ)器中的其它數(shù)據(jù)塊的存儲(chǔ)單元的存儲(chǔ)單元中。盡管如此,虛擬上下文220a、220b...220n的鏈接表可被看作是提供數(shù)據(jù)塊210a、210b...210n的虛擬連續(xù)數(shù)據(jù)流210,這些數(shù)據(jù)塊不一定實(shí)際上存儲(chǔ)在毗連存儲(chǔ)器中。
圖8表示在通過網(wǎng)絡(luò)向目標(biāo)發(fā)送數(shù)據(jù)流210時(shí)主機(jī)130和發(fā)送代理132的操作。數(shù)據(jù)流210的傳送通過主機(jī)130向發(fā)送代理132發(fā)送(框250)虛擬上下文220a、220b...220n的鏈接表來發(fā)起,這些虛擬上下文標(biāo)識(shí)數(shù)據(jù)流210的虛擬連續(xù)數(shù)據(jù)的數(shù)據(jù)塊210a、210b...210n的虛擬存儲(chǔ)地址塊200a、200b...200n。這些虛擬地址可采用諸如本領(lǐng)域的技術(shù)人員已知的SO_SEND和SO_SENDMSG等已知套接字函數(shù)發(fā)送到發(fā)送代理132。在本申請(qǐng)中,SO_SEND函數(shù)可用于單個(gè)虛擬地址塊,以及SO_SENDMSG函數(shù)可用于若干虛擬地址塊。
一旦發(fā)送代理準(zhǔn)備發(fā)送數(shù)據(jù)流210的數(shù)據(jù)包塊,發(fā)送代理132向主機(jī)130發(fā)送(框252)該數(shù)據(jù)塊的虛擬地址。例如,發(fā)送代理132可在數(shù)據(jù)包塊進(jìn)入TCP連接的TCP窗口內(nèi)時(shí)準(zhǔn)備發(fā)送那個(gè)塊。在所述實(shí)施例中,發(fā)送代理132首先向主機(jī)130發(fā)送第一數(shù)據(jù)包塊、即數(shù)據(jù)流210的數(shù)據(jù)塊210a的虛擬地址。數(shù)據(jù)塊210a的虛擬地址由虛擬上下文220a標(biāo)識(shí)。
采用發(fā)送代理132所提供的虛擬地址,主機(jī)130在數(shù)據(jù)塊210a沒有在快速存取存儲(chǔ)器、如物理存儲(chǔ)單元52中時(shí)把它存儲(chǔ)(框254)在這類存儲(chǔ)單元中。另外,主機(jī)130鎖定(框256)包含數(shù)據(jù)塊210a的物理存儲(chǔ)單元52,以便防止其它應(yīng)用程序把那些存儲(chǔ)單元交換到長(zhǎng)期存儲(chǔ)器。要注意,在所述實(shí)施例中,主機(jī)130可把鎖定的物理存儲(chǔ)器限制到正被發(fā)送的特定數(shù)據(jù)塊的存儲(chǔ)單元,而不是計(jì)劃傳送的整個(gè)數(shù)據(jù)流的存儲(chǔ)單元。
主機(jī)向發(fā)送代理132發(fā)送(框260)包含數(shù)據(jù)塊210a的鎖定物理存儲(chǔ)單元52的物理存儲(chǔ)地址。發(fā)送代理開始向目標(biāo)主機(jī)發(fā)送(框262)數(shù)據(jù)塊210a的數(shù)據(jù)包。一旦數(shù)據(jù)塊210a的所有數(shù)據(jù)包已經(jīng)被發(fā)送代理132發(fā)出(框264),主機(jī)130可釋放(框266)包含數(shù)據(jù)塊210a的物理存儲(chǔ)單元52。
在成功地收到發(fā)送代理132發(fā)送的數(shù)據(jù)包時(shí),發(fā)送代理將從目標(biāo)主機(jī)接收(框268)確認(rèn),通過數(shù)據(jù)包序列號(hào)來標(biāo)識(shí)目標(biāo)主機(jī)成功接收的每個(gè)數(shù)據(jù)包。要注意,在所述實(shí)施例中,主機(jī)130可在從目標(biāo)主機(jī)接收任何或全部確認(rèn)之前釋放包含數(shù)據(jù)塊210a的物理存儲(chǔ)單元(框266)。如果沒有收到(框270)對(duì)數(shù)據(jù)塊210a的每個(gè)已發(fā)送數(shù)據(jù)包的確認(rèn),則發(fā)送代理132在一定時(shí)段中(框272)將繼續(xù)接收(框268)可能由目標(biāo)主機(jī)發(fā)送的其它任何確認(rèn)。但是,如果已發(fā)送數(shù)據(jù)包在一定時(shí)段內(nèi)(框272)沒有被確認(rèn),則發(fā)送代理132將開始重傳(框274)數(shù)據(jù)塊210a的未確認(rèn)數(shù)據(jù)包,以下會(huì)更詳細(xì)說明。
一旦已經(jīng)收到對(duì)數(shù)據(jù)塊210a的所有數(shù)據(jù)包的確認(rèn)(框270),如果仍未發(fā)送完所有數(shù)據(jù)塊(框276),則發(fā)送代理132可向目標(biāo)主機(jī)發(fā)送數(shù)據(jù)塊210b...210n中的下一個(gè)數(shù)據(jù)塊。因此,發(fā)送代理132向主機(jī)130發(fā)送數(shù)據(jù)流210的下一個(gè)數(shù)據(jù)包塊210b的虛擬地址。
采用發(fā)送代理132所提供的虛擬地址,主機(jī)130在數(shù)據(jù)塊210b沒有在快速存取存儲(chǔ)器52中時(shí)把它存儲(chǔ)(框254)在物理存儲(chǔ)單元52中,并鎖定(框256)包含數(shù)據(jù)塊210b的物理存儲(chǔ)器單元52。
主機(jī)向發(fā)送代理132發(fā)送(框260)包含數(shù)據(jù)塊210b的鎖定物理存儲(chǔ)單元的物理存儲(chǔ)地址。發(fā)送代理開始向目標(biāo)主機(jī)發(fā)送(框262)數(shù)據(jù)塊210b的數(shù)據(jù)包。一旦數(shù)據(jù)塊210b的所有數(shù)據(jù)包已經(jīng)被發(fā)送代理132發(fā)出(框264),主機(jī)130可釋放(框266)包含數(shù)據(jù)塊210b的物理存儲(chǔ)單元。
如果已發(fā)送數(shù)據(jù)包在一定時(shí)段內(nèi)(框272)沒有被確認(rèn),則發(fā)送代理132將開始重傳(框274)數(shù)據(jù)塊210b的未確認(rèn)數(shù)據(jù)包。以這種方式傳送數(shù)據(jù)流210的剩余數(shù)據(jù)塊,直到所有數(shù)據(jù)塊已被成功發(fā)送和確認(rèn)(框276),以及完成數(shù)據(jù)流210的傳送(框278)。
圖9表示在重傳(圖8的框274)通過網(wǎng)絡(luò)向目標(biāo)發(fā)送的數(shù)據(jù)流210的數(shù)據(jù)塊的未確認(rèn)數(shù)據(jù)包時(shí)主機(jī)130和發(fā)送代理132的操作。發(fā)送代理132向主機(jī)130發(fā)送(框282)在圖8的框272的時(shí)段內(nèi)沒有被目標(biāo)主機(jī)確認(rèn)的那些數(shù)據(jù)包的虛擬地址。
采用發(fā)送代理132所提供的虛擬地址,主機(jī)130收集(框284)未確認(rèn)數(shù)據(jù)包,并在未確認(rèn)數(shù)據(jù)包沒有在物理存儲(chǔ)器52中時(shí)將其存儲(chǔ)在物理存儲(chǔ)單元52中。在所述實(shí)施例中,未確認(rèn)數(shù)據(jù)包可以存儲(chǔ)在物理存儲(chǔ)器52的毗連存儲(chǔ)單元中或者存儲(chǔ)在非毗連單元中。另外,主機(jī)130鎖定(框286)包含未確認(rèn)數(shù)據(jù)包的物理存儲(chǔ)單元52,以便防止其它應(yīng)用程序把那些存儲(chǔ)單元交換到長(zhǎng)期存儲(chǔ)器。
主機(jī)130向發(fā)送代理132發(fā)送(框288)包含被發(fā)送數(shù)據(jù)塊的未確認(rèn)數(shù)據(jù)包的數(shù)據(jù)的鎖定物理存儲(chǔ)單元的物理存儲(chǔ)地址。發(fā)送代理開始向目標(biāo)主機(jī)重發(fā)(框290)未確認(rèn)數(shù)據(jù)包。一旦所有未確認(rèn)數(shù)據(jù)包已經(jīng)由發(fā)送代理132重發(fā)(框292),主機(jī)130可釋放包含被重發(fā)數(shù)據(jù)塊的未確認(rèn)數(shù)據(jù)包的物理存儲(chǔ)單元(框294)。
控制返回到(框296)圖8的傳送例程,以便從目標(biāo)主機(jī)接收(框268)確認(rèn)。要注意,在所述實(shí)施例中,主機(jī)130可在從目標(biāo)主機(jī)接收確認(rèn)之前釋放包含未確認(rèn)數(shù)據(jù)包的物理存儲(chǔ)單元(框294)。如果先前未確認(rèn)的數(shù)據(jù)包的已重發(fā)數(shù)據(jù)包在一定時(shí)段內(nèi)(框272)沒有被確認(rèn),則發(fā)送代理132將再次開始按照以上結(jié)合圖9所述的方式重傳(框274)被傳送的數(shù)據(jù)塊的未確認(rèn)數(shù)據(jù)包。
圖10表示根據(jù)一個(gè)備選實(shí)施例、在重傳通過網(wǎng)絡(luò)向目標(biāo)傳送的數(shù)據(jù)流210的數(shù)據(jù)塊的未確認(rèn)數(shù)據(jù)包時(shí)主機(jī)130和發(fā)送代理132的操作。通過與圖9的操作相同的方式,發(fā)送代理132向主機(jī)130發(fā)送(框300)在圖8的框272的時(shí)段內(nèi)沒有被目標(biāo)主機(jī)確認(rèn)的那些數(shù)據(jù)包的虛擬地址。
采用發(fā)送代理132所提供的虛擬地址,主機(jī)130收集未確認(rèn)數(shù)據(jù)包,以及主機(jī)130不是發(fā)送未確認(rèn)數(shù)據(jù)包的物理存儲(chǔ)地址,而是把實(shí)際數(shù)據(jù)發(fā)送(框302)到發(fā)送代理132,發(fā)送代理132把未確認(rèn)數(shù)據(jù)包的數(shù)據(jù)存儲(chǔ)(框304)在網(wǎng)絡(luò)接口112的緩沖存儲(chǔ)器306(圖5)中。
發(fā)送代理開始采用來自緩沖器306的數(shù)據(jù)向目標(biāo)主機(jī)發(fā)送(框308)未確認(rèn)數(shù)據(jù)包??刂品祷氐?框310)圖8的傳輸例程,以便從目標(biāo)主機(jī)接收(框268)確認(rèn)。如果先前未確認(rèn)的數(shù)據(jù)包的已發(fā)送數(shù)據(jù)包在一定時(shí)段內(nèi)(框272)沒有被確認(rèn),則發(fā)送代理132將開始按照以上結(jié)合圖9或圖10所述的一種或多種方式重傳(框274)被傳送的數(shù)據(jù)塊的未確認(rèn)數(shù)據(jù)包。
在上述圖8-10的實(shí)例中,講述了數(shù)據(jù)塊210a、210b...210n的每次傳輸。應(yīng)當(dāng)理解,由發(fā)送代理進(jìn)行的數(shù)據(jù)塊的傳輸不需要被限制為每次僅一個(gè)數(shù)據(jù)塊未完成。隨應(yīng)用而定,幾個(gè)或更多數(shù)據(jù)塊可在沒有收到確認(rèn)的情況下被發(fā)送。因此,在TCP上下文中,發(fā)送代理可發(fā)送達(dá)到TCP窗口(圖1)的數(shù)據(jù),這個(gè)數(shù)據(jù)可包含若干數(shù)據(jù)塊,由不同虛擬上下文來指示,而不需要收到任何確認(rèn)。發(fā)送代理采用TCP下一個(gè)數(shù)據(jù)指針22和TCP發(fā)送窗口20的值來跟蹤在沒有收到確認(rèn)時(shí)可發(fā)送的數(shù)據(jù)數(shù)量,如上所述。
圖11表示根據(jù)一個(gè)備選實(shí)施例、在通過網(wǎng)絡(luò)向目標(biāo)傳送數(shù)據(jù)流210時(shí)主機(jī)130和發(fā)送代理132的操作。通過與圖8的操作相同的方式,數(shù)據(jù)流210的傳輸通過主機(jī)130向發(fā)送代理132發(fā)送(框350)虛擬上下文220a、220b...220n的鏈接表來發(fā)起,鏈接表標(biāo)識(shí)虛擬連續(xù)數(shù)據(jù)流210的數(shù)據(jù)塊210a、210b...210n的虛擬存儲(chǔ)地址塊200a、200b...200n。一旦發(fā)送代理準(zhǔn)備發(fā)送數(shù)據(jù)流210的數(shù)據(jù)包塊,發(fā)送代理132向主機(jī)130發(fā)送(框352)該數(shù)據(jù)塊的虛擬地址。
采用發(fā)送代理132所提供的虛擬地址,主機(jī)130不是發(fā)送數(shù)據(jù)塊的物理存儲(chǔ)地址,而是把該塊的數(shù)據(jù)發(fā)送(框354)到發(fā)送代理132,發(fā)送代理132把該塊的數(shù)據(jù)存儲(chǔ)(框356)在網(wǎng)絡(luò)接口112的緩沖存儲(chǔ)器306中。
發(fā)送代理開始把數(shù)據(jù)塊210a的數(shù)據(jù)包從發(fā)送代理緩沖器306發(fā)送(框362)到目標(biāo)主機(jī),直到數(shù)據(jù)塊210的所有數(shù)據(jù)包已經(jīng)由發(fā)送代理132發(fā)送(框364)為止。在成功地收到發(fā)送代理132發(fā)送的數(shù)據(jù)包時(shí),發(fā)送代理將從目標(biāo)主機(jī)接收(框368)確認(rèn),通過數(shù)據(jù)包序列號(hào)來標(biāo)識(shí)由目標(biāo)主機(jī)成功接收的每個(gè)數(shù)據(jù)包。如果沒有收到對(duì)數(shù)據(jù)塊210的每個(gè)已發(fā)送數(shù)據(jù)包的確認(rèn)(框370),則發(fā)送代理132在一定時(shí)段中(框372)將繼續(xù)接收(框368)可能由目標(biāo)主機(jī)發(fā)送的其它任何確認(rèn)。但是,如果已發(fā)送數(shù)據(jù)包在該時(shí)段內(nèi)(框372)沒有被確認(rèn),則發(fā)送代理132將開始按照重傳程序、如以上結(jié)合圖9和圖10所述的一個(gè)或多個(gè)重傳操作來重傳(框374)數(shù)據(jù)塊210的未確認(rèn)數(shù)據(jù)包。
一旦已經(jīng)收到對(duì)數(shù)據(jù)塊210a的所有數(shù)據(jù)包的確認(rèn)(框370),如果仍未發(fā)送完所有數(shù)據(jù)塊(框376),則發(fā)送代理132可向目標(biāo)主機(jī)發(fā)送數(shù)據(jù)塊210b...210n中的下一個(gè)數(shù)據(jù)塊。如果不是,則發(fā)送代理132向主機(jī)130發(fā)送(框352)數(shù)據(jù)流210的下一個(gè)數(shù)據(jù)包塊的虛擬地址。一旦所有數(shù)據(jù)塊210a、210b...210n已經(jīng)被成功發(fā)送和確認(rèn)(框376),則數(shù)據(jù)流10已經(jīng)被成功發(fā)送(框378)。
應(yīng)當(dāng)理解,響應(yīng)發(fā)送代理所提供的虛擬地址,主機(jī)130可通過各種方式對(duì)發(fā)送代理標(biāo)識(shí)那些虛擬地址所尋址的數(shù)據(jù)包。例如,圖8和圖9描述傳輸和重傳操作,其中,主機(jī)130采用發(fā)送代理132所提供的虛擬地址來鎖定包含由虛擬地址尋址的數(shù)據(jù)包的物理存儲(chǔ)單元52,并向發(fā)送代理132發(fā)送包含數(shù)據(jù)包的鎖定物理存儲(chǔ)單元的物理存儲(chǔ)地址。通過比較,圖11和圖10描述傳輸和重傳操作,其中,主機(jī)130采用發(fā)送代理132所提供的虛擬地址、通過向發(fā)送代理132發(fā)送虛擬地址尋址的實(shí)際數(shù)據(jù)而存儲(chǔ)在發(fā)送代理緩沖器中來標(biāo)識(shí)數(shù)據(jù)。應(yīng)當(dāng)理解,主機(jī)130可通過其它技術(shù)來標(biāo)識(shí)由發(fā)送代理所提供的虛擬地址尋址的數(shù)據(jù)包。
圖12表示根據(jù)又一個(gè)實(shí)施例、在通過網(wǎng)絡(luò)向目標(biāo)傳送數(shù)據(jù)流210時(shí)主機(jī)130和發(fā)送代理132的操作。數(shù)據(jù)流210的傳送通過主機(jī)130收集(框450)數(shù)據(jù)流210的數(shù)據(jù)包并在它們沒有被存儲(chǔ)在物理存儲(chǔ)器中時(shí)將其存儲(chǔ)在物理存儲(chǔ)單元52中來發(fā)起。在所述實(shí)施例中,數(shù)據(jù)流210可以存儲(chǔ)在物理存儲(chǔ)單元52的毗連存儲(chǔ)單元中或者非毗連單元中。另外,主機(jī)130鎖定(框452)包含數(shù)據(jù)流210的物理存儲(chǔ)單元52,以便防止其它應(yīng)用程序把那些存儲(chǔ)單元交換到長(zhǎng)期存儲(chǔ)器。
主機(jī)130向發(fā)送代理132發(fā)送(框454)包含被發(fā)送數(shù)據(jù)流210b的鎖定物理存儲(chǔ)單元的物理存儲(chǔ)地址。另外,主機(jī)130向發(fā)送代理132發(fā)送虛擬上下文220a、220b...220n的鏈接表,虛擬上下文標(biāo)識(shí)虛擬連續(xù)數(shù)據(jù)流210的數(shù)據(jù)塊210a、210b...210n的虛擬存儲(chǔ)地址塊200a、200b...200n。
發(fā)送代理132開始采用來自快速存取存儲(chǔ)單元52的鎖定物理存儲(chǔ)單元的數(shù)據(jù)向目標(biāo)主機(jī)發(fā)送(框456)數(shù)據(jù)流210的數(shù)據(jù)包。一旦數(shù)據(jù)流的所有數(shù)據(jù)包已經(jīng)被發(fā)送代理132發(fā)出(框464),主機(jī)130可釋放(框466)包含數(shù)據(jù)流210的物理存儲(chǔ)單元。
在成功地收到發(fā)送代理132發(fā)送的數(shù)據(jù)包時(shí),發(fā)送代理將從目標(biāo)主機(jī)接收(框468)確認(rèn),通過數(shù)據(jù)包序列號(hào)來標(biāo)識(shí)由目標(biāo)主機(jī)成功接收的每個(gè)數(shù)據(jù)包。如果沒有收到(框470)對(duì)數(shù)據(jù)流210的每個(gè)已發(fā)送數(shù)據(jù)包的確認(rèn),則發(fā)送代理132在一定時(shí)段中(框472)將繼續(xù)接收(框468)可能由目標(biāo)主機(jī)發(fā)送的其它任何確認(rèn)。但是,如果已發(fā)送數(shù)據(jù)包在該時(shí)段內(nèi)(框472)沒有被確認(rèn),則發(fā)送代理132將開始按照重傳程序、如圖9或圖10所述的操作來重傳(框474)數(shù)據(jù)流210的未確認(rèn)數(shù)據(jù)包。一旦已經(jīng)收到對(duì)數(shù)據(jù)流210的所有數(shù)據(jù)包的確認(rèn)(框470),數(shù)據(jù)流10已經(jīng)被成功發(fā)送(框476)。
其它實(shí)施例詳細(xì)說明為通過網(wǎng)絡(luò)的數(shù)據(jù)傳輸管理存儲(chǔ)器的所述技術(shù)可利用標(biāo)準(zhǔn)編程和/或工程技術(shù)以產(chǎn)生軟件、固件、硬件或其任意組合,作為方法、設(shè)備或制造產(chǎn)品來實(shí)現(xiàn)。術(shù)語“制造產(chǎn)品”在本文中用來表示以硬件邏輯(如集成電路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等)或者計(jì)算機(jī)可讀媒體、如磁存儲(chǔ)媒體(如硬盤驅(qū)動(dòng)器、軟盤、磁帶等)、光存儲(chǔ)裝置(CD-ROM、光盤等)、易失性和非易失性存儲(chǔ)裝置(如EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可編程邏輯等)來實(shí)現(xiàn)的代碼或邏輯。計(jì)算機(jī)可讀媒體中的代碼由處理器存取和執(zhí)行。實(shí)現(xiàn)優(yōu)先實(shí)施例所用的代碼也可以是通過傳輸媒體可存取的或者是通過網(wǎng)絡(luò)從文件服務(wù)器可存取的。在這些情況下,其中實(shí)現(xiàn)代碼的制造產(chǎn)品可包括傳輸媒體,諸如網(wǎng)絡(luò)傳輸線、無線傳輸媒體、經(jīng)空間傳播的信號(hào)、無線電波、紅外信號(hào)等等。因此,“制造產(chǎn)品”可包括其中包含代碼的媒體。另外,“制造產(chǎn)品”可包括其中包含、處理和執(zhí)行代碼的硬件和軟件部件的組合。本領(lǐng)域的技術(shù)人員當(dāng)然知道,可對(duì)本配置進(jìn)行許多修改,只要沒有背離本發(fā)明的范圍,以及制造產(chǎn)品可包括本領(lǐng)域已知的任何信息承載媒體。
在所述實(shí)施例中,某些操作被描述成通過操作系統(tǒng)110、設(shè)備驅(qū)動(dòng)程序120或網(wǎng)絡(luò)接口112來執(zhí)行。在備選實(shí)施例中,描述為通過其中之一執(zhí)行的操作可通過操作系統(tǒng)110、設(shè)備驅(qū)動(dòng)程序120或網(wǎng)絡(luò)接口112中的一個(gè)或多個(gè)來執(zhí)行。例如,描述為通過主機(jī)130執(zhí)行的鎖定和釋放操作可由發(fā)送代理132來執(zhí)行。
在所述實(shí)現(xiàn)中,傳輸協(xié)議層121以網(wǎng)絡(luò)適配器112硬件來實(shí)現(xiàn)。在備選實(shí)現(xiàn)中,傳輸協(xié)議層可通過設(shè)備驅(qū)動(dòng)程序或主機(jī)內(nèi)存106來實(shí)現(xiàn)。
在所述實(shí)施例中,數(shù)據(jù)包通過網(wǎng)絡(luò)從網(wǎng)絡(luò)適配卡傳送到遠(yuǎn)程計(jì)算機(jī)。在備選實(shí)施例中,由協(xié)議層或設(shè)備驅(qū)動(dòng)程序所處理的發(fā)送和接收數(shù)據(jù)包可被傳送到設(shè)備驅(qū)動(dòng)程序和傳輸協(xié)議驅(qū)動(dòng)程序在其中執(zhí)行的同一個(gè)計(jì)算機(jī)中執(zhí)行的獨(dú)立進(jìn)程。在這些實(shí)施例中,沒有使用網(wǎng)卡,因?yàn)閿?shù)據(jù)包在同一個(gè)計(jì)算機(jī)和/或操作系統(tǒng)中的進(jìn)程之間傳遞。
在某些實(shí)現(xiàn)中,設(shè)備驅(qū)動(dòng)程序和網(wǎng)絡(luò)適配器實(shí)施例可包含在計(jì)算機(jī)系統(tǒng)中,該系統(tǒng)包括存儲(chǔ)控制器,諸如SCSI、集成驅(qū)動(dòng)電路(IDE)、冗余獨(dú)立磁盤陣列(RAID)等控制器,管理對(duì)例如磁盤驅(qū)動(dòng)器、磁帶媒體、光盤等非易失性存儲(chǔ)裝置的存取。在備選實(shí)現(xiàn)中,網(wǎng)絡(luò)適配器實(shí)施例可包括在沒有包含存儲(chǔ)控制器的系統(tǒng)中,例如某些集線器和交換機(jī)。
在某些實(shí)現(xiàn)中,設(shè)備驅(qū)動(dòng)程序和網(wǎng)絡(luò)適配器實(shí)施例可以在一種計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn),這種系統(tǒng)包括呈現(xiàn)在耦合到包含設(shè)備驅(qū)動(dòng)程序和網(wǎng)絡(luò)適配器的計(jì)算機(jī)系統(tǒng)的監(jiān)視器上顯示的信息的視頻控制器,例如包括臺(tái)式電腦、工作站、服務(wù)器、大型計(jì)算機(jī)、膝上型電腦、手持計(jì)算機(jī)等在內(nèi)的計(jì)算機(jī)系統(tǒng)。或者,網(wǎng)絡(luò)適配器和設(shè)備驅(qū)動(dòng)程序?qū)嵤├稍跊]有包含視頻控制器的計(jì)算裝置中實(shí)現(xiàn),如交換機(jī)、路由器等。
在某些實(shí)現(xiàn)中,網(wǎng)絡(luò)適配器可配置成通過連接到網(wǎng)絡(luò)適配器的端口的電纜來傳送數(shù)據(jù)。或者,網(wǎng)絡(luò)適配器實(shí)施例可配置成通過無線網(wǎng)絡(luò)或連接、如無線LAN、藍(lán)牙等傳送數(shù)據(jù)。
圖8-12的所示邏輯表示以某個(gè)順序發(fā)生的某些事件。在備選實(shí)施例中,某些操作可按照不同的順序來執(zhí)行或修改或取消。此外,可對(duì)上述邏輯增加步驟,并且仍然符合所述實(shí)施例。另外,本文所述操作可依次發(fā)生,或者某些操作可并行處理。此外,操作可由單個(gè)處理單元來執(zhí)行或者由分布式處理單元來執(zhí)行。
圖7說明用來標(biāo)識(shí)虛擬地址的信息。在備選實(shí)現(xiàn)中,這些數(shù)據(jù)結(jié)構(gòu)可包括附圖所述之外的其它或不同信息。
圖13說明諸如圖5所示的主機(jī)和存儲(chǔ)裝置之類的網(wǎng)絡(luò)組件的計(jì)算機(jī)體系結(jié)構(gòu)500的一個(gè)實(shí)現(xiàn)。體系結(jié)構(gòu)500可包括處理器502(例如微處理器)、內(nèi)存504(例如易失性存儲(chǔ)裝置)以及存儲(chǔ)裝置506(例如非易失性存儲(chǔ)裝置,諸如磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器等)。存儲(chǔ)裝置506可包括內(nèi)部存儲(chǔ)裝置或者附加或網(wǎng)絡(luò)可存取存儲(chǔ)裝置。存儲(chǔ)裝置506中的程序被裝入內(nèi)存504,并由處理器502以本領(lǐng)域已知的方式來執(zhí)行。該體系結(jié)構(gòu)還包括實(shí)現(xiàn)與網(wǎng)絡(luò)通信的網(wǎng)卡508,如以太網(wǎng)、光纖信道仲裁環(huán)路等。此外,在某些實(shí)施例中,該體系結(jié)構(gòu)還可包括在顯示監(jiān)視器上呈現(xiàn)信息的視頻控制器509,其中視頻控制器509可在視頻卡上實(shí)現(xiàn)或者在安裝到主板上的集成電路組件上集成。如上所述,某些網(wǎng)絡(luò)裝置可具有多個(gè)網(wǎng)卡。輸入裝置510用來向處理器502提供用戶輸入,并且可包括鍵盤、鼠標(biāo)、指示筆、話筒、觸摸顯示屏或者本領(lǐng)域已知的其它任何激活或輸入機(jī)構(gòu)。輸出裝置512能夠呈現(xiàn)從處理器502或其它部件傳送的信息,諸如顯示監(jiān)視器、打印機(jī)、存儲(chǔ)裝置等。
網(wǎng)絡(luò)適配器508可以在網(wǎng)卡、如外設(shè)部件互連(PCI)卡或其它某種I/O卡、或者安裝在主板上的集成電路部件中實(shí)現(xiàn)。
本發(fā)明的各種實(shí)施例的以上描述是為了說明和描述而提供的。它不是意在涵蓋本發(fā)明的各個(gè)方面或?qū)⒈景l(fā)明限定在所公開的形式。根據(jù)以上理論,許多修改和變更都是可行的。本發(fā)明的范圍不是由本詳細(xì)描述來限制,而是由所附權(quán)利要求來限制。以上說明、實(shí)例和數(shù)據(jù)提供了對(duì)本發(fā)明的構(gòu)成的制造和使用的完整描述。由于在不背離本發(fā)明的精神和范圍的前提下可實(shí)現(xiàn)本發(fā)明的許多實(shí)施例,因此本發(fā)明在于以下所附權(quán)利要求。
權(quán)利要求
1.一種把數(shù)據(jù)從源發(fā)送到目標(biāo)的方法,包括主機(jī),向所述源的發(fā)送代理提供待發(fā)送到目標(biāo)的數(shù)據(jù)的虛擬存儲(chǔ)地址,其中所述數(shù)據(jù)被存儲(chǔ)在所述源的多個(gè)物理單元中,各單元具有物理地址以及映射到所述物理地址的虛擬存儲(chǔ)地址;所述發(fā)送代理向所述主機(jī)提供待發(fā)送到所述目標(biāo)的所述數(shù)據(jù)的至少部分所述虛擬存儲(chǔ)地址;所述主機(jī)向所述發(fā)送代理標(biāo)識(shí)所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的數(shù)據(jù);以及所述發(fā)送代理向所述目標(biāo)發(fā)送所標(biāo)識(shí)的數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述主機(jī)標(biāo)識(shí)數(shù)據(jù)包括所述主機(jī)向所述發(fā)送代理提供所述發(fā)送代理提供的所述虛擬地址所尋址的數(shù)據(jù),所述方法還包括所述發(fā)送代理把從所述主機(jī)接收的數(shù)據(jù)存儲(chǔ)在所述發(fā)送代理的緩沖器中。
3.如權(quán)利要求1所述的方法,其特征在于,所述主機(jī)標(biāo)識(shí)數(shù)據(jù)包括所述主機(jī)向所述發(fā)送代理提供包含所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的所述數(shù)據(jù)的存儲(chǔ)單元的物理地址。
4.如權(quán)利要求3所述的方法,其特征在于,所述物理單元包括第一存儲(chǔ)器的單元和第二存儲(chǔ)器的單元,所述主機(jī)所標(biāo)識(shí)的所述數(shù)據(jù)存儲(chǔ)在所述第一存儲(chǔ)器中,所述主機(jī)提供的所述物理存儲(chǔ)地址是包含所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)的所述第一存儲(chǔ)器的物理存儲(chǔ)單元,所述方法還包括鎖定所述主機(jī)向所述發(fā)送代理提供的所述第一存儲(chǔ)器的所述物理存儲(chǔ)單元,以便防止所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)被交換到所述第二存儲(chǔ)器。
5.如權(quán)利要求4所述的方法,其特征在于還包括所述發(fā)送代理從所述第一存儲(chǔ)器的所述鎖定的物理存儲(chǔ)單元中檢索所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù);以及在所述發(fā)送代理向所述目標(biāo)發(fā)送所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)之后,釋放所述第一存儲(chǔ)器的所述鎖定的物理存儲(chǔ)單元。
6.如權(quán)利要求1所述的方法,其特征在于還包括從所述目標(biāo)接收對(duì)所述發(fā)送代理成功發(fā)送且所述目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);其中所述發(fā)送代理提供給所述主機(jī)的所述虛擬存儲(chǔ)地址是所述發(fā)送代理發(fā)送到所述目標(biāo)、但未被確認(rèn)為所述目標(biāo)成功接收的數(shù)據(jù)的虛擬地址。
7.如權(quán)利要求1所述的方法,其特征在于還包括從所述目標(biāo)接收對(duì)所述發(fā)送代理成功發(fā)送且所述目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);所述發(fā)送代理向所述主機(jī)提供由所述發(fā)送代理發(fā)送到所述目標(biāo)、但未被確認(rèn)為所述目標(biāo)成功接收的數(shù)據(jù)的虛擬地址;所述主機(jī)對(duì)所述發(fā)送代理標(biāo)識(shí)所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的所述未確認(rèn)數(shù)據(jù);以及所述發(fā)送代理向所述目標(biāo)重發(fā)所述標(biāo)識(shí)的未確認(rèn)數(shù)據(jù)。
8.如權(quán)利要求1所述的方法,其特征在于,所述主機(jī)向所述發(fā)送代理提供虛擬地址包括所述主機(jī)向所述發(fā)送代理提供至少一種數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括地址字段,包含存儲(chǔ)待發(fā)送到所述目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;以及序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值。
9.如權(quán)利要求1所述的方法,其特征在于,所述主機(jī)向所述發(fā)送代理提供虛擬地址包括所述主機(jī)向所述發(fā)送代理提供多個(gè)數(shù)據(jù)結(jié)構(gòu),其中各數(shù)據(jù)結(jié)構(gòu)包括地址字段,存儲(chǔ)待發(fā)送到所述目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的所述數(shù)據(jù)包序列號(hào)的值;以及鏈接字段,包含所述多個(gè)數(shù)據(jù)結(jié)構(gòu)中的另一個(gè)數(shù)據(jù)結(jié)構(gòu)的虛擬地址。
10.如權(quán)利要求1所述的方法,其特征在于,所述物理單元包括第一存儲(chǔ)器和第二存儲(chǔ)器的單元,以及待發(fā)送到所述目標(biāo)的所述數(shù)據(jù)存儲(chǔ)在所述第一存儲(chǔ)器中,所述方法還包括,鎖定存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述第一存儲(chǔ)器的單元,以便防止所述待發(fā)送數(shù)據(jù)被交換到所述第二存儲(chǔ)器;除了所述待發(fā)送數(shù)據(jù)的所述虛擬存儲(chǔ)地址之外,所述主機(jī)還向所述發(fā)送代理提供存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述第一存儲(chǔ)器的所述單元的物理地址;所述發(fā)送代理從所述第一存儲(chǔ)器的所述鎖定單元中檢索所述待發(fā)送數(shù)據(jù);以及在所述發(fā)送代理從存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述第一存儲(chǔ)器的所述鎖定單元中檢索所述數(shù)據(jù)之后,釋放存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述第一存儲(chǔ)器的所述鎖定單元。
11.一種適合與目標(biāo)通信的系統(tǒng),包括存儲(chǔ)器;耦合到所述系統(tǒng)存儲(chǔ)器的處理器;可由所述處理器在存儲(chǔ)器中執(zhí)行的操作系統(tǒng);網(wǎng)絡(luò)適配器;數(shù)據(jù)存儲(chǔ)裝置;適合管理對(duì)所述數(shù)據(jù)存儲(chǔ)裝置的輸入/輸出(I/O)訪問的數(shù)據(jù)存儲(chǔ)裝置控制器;以及可由所述處理器在所述存儲(chǔ)器中執(zhí)行的設(shè)備驅(qū)動(dòng)程序;其中所述存儲(chǔ)器和所述數(shù)據(jù)存儲(chǔ)裝置均包括適合存儲(chǔ)數(shù)據(jù)的物理單元,各單元具有物理地址和映射到所述物理地址的虛擬地址;以及其中所述操作系統(tǒng)和設(shè)備驅(qū)動(dòng)程序中的至少一個(gè)適合提供主機(jī),以及所述設(shè)備驅(qū)動(dòng)程序和所述網(wǎng)絡(luò)適配器中的至少一個(gè)適合提供發(fā)送代理,其中(i)所述主機(jī)向所述發(fā)送代理提供待發(fā)送到目標(biāo)的數(shù)據(jù)的虛擬存儲(chǔ)地址;(ii)所述發(fā)送代理向所述主機(jī)提供待發(fā)送到所述目標(biāo)的所述數(shù)據(jù)的至少部分所述虛擬存儲(chǔ)地址;(iii)所述主機(jī)對(duì)所述發(fā)送代理標(biāo)識(shí)所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的數(shù)據(jù);以及(iv)所述發(fā)送代理向所述目標(biāo)發(fā)送所述標(biāo)識(shí)的數(shù)據(jù),建立適合在所述系統(tǒng)與目標(biāo)之間發(fā)送數(shù)據(jù)包的有效連接。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括緩沖器,以及所述主機(jī)標(biāo)識(shí)數(shù)據(jù)包括所述主機(jī)向所述發(fā)送代理提供所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù),以及所述發(fā)送代理還適合把從所述主機(jī)接收的所述數(shù)據(jù)存儲(chǔ)在所述緩沖器中。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述主機(jī)標(biāo)識(shí)數(shù)據(jù)包括所述主機(jī)向所述發(fā)送代理提供包含所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的所述數(shù)據(jù)的存儲(chǔ)單元的物理地址。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述主機(jī)標(biāo)識(shí)的所述數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)器中,以及所述主機(jī)所提供的所述物理地址是包含所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)的所述存儲(chǔ)器的物理單元,所述系統(tǒng)還包括鎖定所述主機(jī)提供給所述發(fā)送代理的所述存儲(chǔ)器的所述物理存儲(chǔ)單元,以便防止所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)被交換到所述數(shù)據(jù)存儲(chǔ)裝置。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述發(fā)送代理還適合從所述存儲(chǔ)器的所述鎖定的物理存儲(chǔ)單元中檢索所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù);以及所述發(fā)送代理和所述主機(jī)中的至少一個(gè)還適合在所述發(fā)送代理向所述目標(biāo)發(fā)送所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)之后,釋放所述存儲(chǔ)器的所述鎖定的物理存儲(chǔ)單元。
16.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述發(fā)送代理還適合從所述目標(biāo)接收對(duì)所述發(fā)送代理成功發(fā)送且所述目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);以及所述發(fā)送代理提供給所述主機(jī)的所述虛擬存儲(chǔ)地址是所述發(fā)送代理發(fā)送到所述目標(biāo)、但未被確認(rèn)為所述目標(biāo)成功接收的數(shù)據(jù)的虛擬地址。
17.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述發(fā)送代理還適合于從所述目標(biāo)接收對(duì)所述發(fā)送代理成功發(fā)送且所述目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);以及向所述主機(jī)提供由所述發(fā)送代理發(fā)送到所述目標(biāo)、但未被確認(rèn)為所述目標(biāo)成功接收的所述數(shù)據(jù)的所述虛擬地址;其中所述主機(jī)還適合對(duì)所述發(fā)送代理標(biāo)識(shí)所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的所述未確認(rèn)數(shù)據(jù);以及所述發(fā)送代理還適合向所述目標(biāo)重發(fā)所述標(biāo)識(shí)的未確認(rèn)數(shù)據(jù)。
18.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述主機(jī)向所述發(fā)送代理提供虛擬地址包括所述主機(jī)向所述發(fā)送代理提供至少一種數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括地址字段,包含存儲(chǔ)待發(fā)送到所述目標(biāo)的數(shù)據(jù)塊的多個(gè)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;以及序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值。
19.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述主機(jī)向所述發(fā)送代理提供虛擬地址包括所述主機(jī)向所述發(fā)送代理提供多個(gè)數(shù)據(jù)結(jié)構(gòu),其中各數(shù)據(jù)結(jié)構(gòu)包括地址字段,包含存儲(chǔ)待發(fā)送到所述目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值;以及鏈接字段,包含所述多個(gè)數(shù)據(jù)結(jié)構(gòu)中的另一個(gè)數(shù)據(jù)結(jié)構(gòu)的虛擬地址。
20.如權(quán)利要求11所述的系統(tǒng),其特征在于,待發(fā)送到所述目標(biāo)的所述數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)器中,以及所述主機(jī)和所述發(fā)送代理中的至少一個(gè)適合于鎖定存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述存儲(chǔ)器的所述單元,以便防止所述待發(fā)送數(shù)據(jù)被交換到所述數(shù)據(jù)存儲(chǔ)裝置;其中,除了所述待發(fā)送數(shù)據(jù)的所述虛擬存儲(chǔ)地址之外,所述主機(jī)還適合向所述發(fā)送代理提供存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述存儲(chǔ)器的所述單元的物理地址;其中,所述發(fā)送代理還適合從所述存儲(chǔ)器的所述鎖定單元取出所述待發(fā)送數(shù)據(jù);以及在所述發(fā)送代理從存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述存儲(chǔ)器的所述鎖定單元取出所述數(shù)據(jù)之后,釋放存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述存儲(chǔ)器的所述鎖定單元。
21.一種把數(shù)據(jù)從源發(fā)送到目標(biāo)的制造產(chǎn)品,所述操作包括主機(jī)向所述源的發(fā)送代理提供待發(fā)送到目標(biāo)的數(shù)據(jù)的虛擬存儲(chǔ)地址,其中所述數(shù)據(jù)存儲(chǔ)在所述源的多個(gè)物理單元中,各單元具有物理地址以及映射到所述物理地址的虛擬存儲(chǔ)地址;所述發(fā)送代理向所述主機(jī)提供待發(fā)送到所述目標(biāo)的所述數(shù)據(jù)的至少部分所述虛擬存儲(chǔ)地址;所述主機(jī)對(duì)所述發(fā)送代理標(biāo)識(shí)所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的數(shù)據(jù);以及所述發(fā)送代理向所述目標(biāo)發(fā)送所述標(biāo)識(shí)的數(shù)據(jù)。
22.如權(quán)利要求21所述的制造產(chǎn)品,其特征在于,所述主機(jī)標(biāo)識(shí)數(shù)據(jù)包括所述主機(jī)向所述發(fā)送代理提供所述發(fā)送代理提供的所述虛擬地址所尋址的數(shù)據(jù),所述操作還包括所述發(fā)送代理把從所述主機(jī)接收的所述數(shù)據(jù)存儲(chǔ)在所述發(fā)送代理的緩沖器中。
23.如權(quán)利要求21所述的制造產(chǎn)品,其特征在于,所述主機(jī)標(biāo)識(shí)數(shù)據(jù)包括所述主機(jī)向所述發(fā)送代理提供包含所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的所述數(shù)據(jù)的存儲(chǔ)單元的物理地址。
24.如權(quán)利要求23所述的制造產(chǎn)品,其特征在于,所述物理單元包括第一存儲(chǔ)器的單元和第二存儲(chǔ)器的單元,所述主機(jī)所標(biāo)識(shí)的所述數(shù)據(jù)存儲(chǔ)在所述第一存儲(chǔ)器中,所述主機(jī)所提供的所述物理存儲(chǔ)地址是包含所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)的所述第一存儲(chǔ)器的物理存儲(chǔ)單元,所述操作還包括鎖定所述主機(jī)提供到所述發(fā)送代理的所述第一存儲(chǔ)器的所述物理存儲(chǔ)單元,以便防止所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)被交換到所述第二存儲(chǔ)器。
25.如權(quán)利要求24所述的制造產(chǎn)品,其特征在于,所述操作還包括所述發(fā)送代理,從所述第一存儲(chǔ)器的所述鎖定的物理存儲(chǔ)單元中取出所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù);以及在所述發(fā)送代理向所述目標(biāo)發(fā)送所述發(fā)送代理提供的所述虛擬地址所尋址的所述數(shù)據(jù)之后,釋放所述第一存儲(chǔ)器的所述鎖定的物理存儲(chǔ)單元。
26.如權(quán)利要求21所述的制造產(chǎn)品,其特征在于,所述操作還包括從所述目標(biāo)接收對(duì)所述發(fā)送代理成功發(fā)送且所述目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);以及所述發(fā)送代理提供給所述主機(jī)的所述虛擬存儲(chǔ)地址是所述發(fā)送代理發(fā)送到所述目標(biāo)、但未被確認(rèn)為所述目標(biāo)成功接收的數(shù)據(jù)的虛擬地址。
27.如權(quán)利要求21所述的制造產(chǎn)品,其特征在于,所述操作還包括從所述目標(biāo)接收對(duì)所述發(fā)送代理成功發(fā)送且所述目標(biāo)成功接收的數(shù)據(jù)的確認(rèn);所述發(fā)送代理向所述主機(jī)提供所述發(fā)送代理發(fā)送到所述目標(biāo)、但未被確認(rèn)為所述目標(biāo)成功接收的數(shù)據(jù)的虛擬地址;所述主機(jī)對(duì)所述發(fā)送代理標(biāo)識(shí)所述發(fā)送代理提供的所述虛擬存儲(chǔ)地址所尋址的所述未確認(rèn)數(shù)據(jù);以及所述發(fā)送代理向所述目標(biāo)重發(fā)所述標(biāo)識(shí)的未確認(rèn)數(shù)據(jù)。
28.如權(quán)利要求21所述的制造產(chǎn)品,其特征在于,所述主機(jī)向所述發(fā)送代理提供虛擬地址包括所述主機(jī)向所述發(fā)送代理提供至少一種數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括地址字段,包含存儲(chǔ)待發(fā)送到所述目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;以及序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值。
29.如權(quán)利要求21所述的制造產(chǎn)品,其特征在于,所述主機(jī)向所述發(fā)送代理提供虛擬地址包括所述主機(jī)向所述發(fā)送代理提供多個(gè)數(shù)據(jù)結(jié)構(gòu),其中各數(shù)據(jù)結(jié)構(gòu)包括地址字段,存儲(chǔ)待發(fā)送到所述目標(biāo)的數(shù)據(jù)塊的多個(gè)存儲(chǔ)單元其中之一的虛擬地址;大小字段,包含表示所述數(shù)據(jù)塊大小的值;序列號(hào)字段,包含表示與所述數(shù)據(jù)塊中的數(shù)據(jù)相關(guān)的數(shù)據(jù)包序列號(hào)的值;以及鏈接字段,包含所述多個(gè)數(shù)據(jù)結(jié)構(gòu)中的另一個(gè)數(shù)據(jù)結(jié)構(gòu)的虛擬地址。
30.如權(quán)利要求21所述的制造產(chǎn)品,其特征在于,所述物理單元包括第一存儲(chǔ)器和第二存儲(chǔ)器的單元,以及待發(fā)送到所述目標(biāo)的所述數(shù)據(jù)存儲(chǔ)在所述第一存儲(chǔ)器中,所述操作還包括,鎖定存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述第一存儲(chǔ)器的所述單元,以便防止所述待發(fā)送數(shù)據(jù)被交換到所述第二存儲(chǔ)器;除了所述待發(fā)送數(shù)據(jù)的所述虛擬存儲(chǔ)地址之外,所述主機(jī)還向所述發(fā)送代理提供存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述第一存儲(chǔ)器的所述單元的物理地址;所述發(fā)送代理從所述第一存儲(chǔ)器的所述鎖定單元中取出所述待發(fā)送數(shù)據(jù);以及在所述發(fā)送代理從存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述第一存儲(chǔ)器的所述鎖定單元中取出所述數(shù)據(jù)之后,釋放存儲(chǔ)所述待發(fā)送數(shù)據(jù)的所述第一存儲(chǔ)器的所述鎖定單元。
全文摘要
提供一種為通過網(wǎng)絡(luò)的數(shù)據(jù)傳輸管理存儲(chǔ)器的方法、系統(tǒng)和程序。待發(fā)送數(shù)據(jù)的虛擬存儲(chǔ)地址被提供給發(fā)送代理。發(fā)送代理向主機(jī)提供所請(qǐng)求數(shù)據(jù)的虛擬地址。作出響應(yīng),通過所請(qǐng)求數(shù)據(jù)的虛擬地址或物理存儲(chǔ)單元來尋址的所請(qǐng)求數(shù)據(jù)被提供給發(fā)送代理,以便發(fā)送到目標(biāo)。
文檔編號(hào)H04L12/56GK1606290SQ20041007718
公開日2005年4月13日 申請(qǐng)日期2004年9月9日 優(yōu)先權(quán)日2003年10月9日
發(fā)明者H·T·貝弗利, C·T·福爾茲 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
吕梁市| 南平市| 邛崃市| 武山县| 东乌| 乐山市| 龙口市| 清远市| 眉山市| 海宁市| 平度市| 鹿邑县| 黄平县| 漯河市| 化隆| 鄂托克旗| 元阳县| 利津县| 安多县| 巴中市| 商洛市| 柘荣县| 吴桥县| 阿鲁科尔沁旗| 中阳县| 株洲县| 广安市| 大丰市| 嵊州市| 资兴市| 洪泽县| 蕉岭县| 昆山市| 锡林浩特市| 澄江县| 田阳县| 闽侯县| 台南市| 临清市| 永和县| 西宁市|