一種高效傳送數(shù)據(jù)流的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)化的多媒體服務(wù)器,具體地說,涉及這種系統(tǒng)中高效率地在各裝置之間諸如從一個(gè)磁盤存儲(chǔ)子系統(tǒng)至一個(gè)網(wǎng)絡(luò)或圖像解碼卡傳送數(shù)據(jù)流的技術(shù)。
【背景技術(shù)】
[0002]多媒體系統(tǒng)通常涉及大量表示高密多媒體數(shù)據(jù)的數(shù)據(jù)流,它們必需以非常高的效率傳送通過系統(tǒng)。一個(gè)有代表性的例子是“視頻點(diǎn)播”服務(wù)系統(tǒng)。人們已經(jīng)研宄了各種方法,力圖高效率地使數(shù)據(jù)通過這些系統(tǒng)。這些系統(tǒng)有許多用眾所周知的Unix操作系統(tǒng)或其派生系統(tǒng)作為它們的操作系統(tǒng),正如通常在那些實(shí)現(xiàn)多媒體內(nèi)容投送系統(tǒng)的用戶服務(wù)器環(huán)境中可以看到的那樣。
[0003]但是這種基于Unix的系統(tǒng)的固有嚴(yán)重不足之處是其中傳送數(shù)據(jù)所采用的機(jī)制并沒有如所需的那樣在涉及非常復(fù)雜的多媒體數(shù)據(jù)流的系統(tǒng)中使效率最佳化。
[0004]因此,業(yè)界急需一種高效傳送數(shù)據(jù)流的方法,來使得目前的市場(chǎng)情況加以改善。
【發(fā)明內(nèi)容】
[0005]為了克服上述現(xiàn)有技術(shù)中存在的技術(shù)缺陷,本發(fā)明的目的在于提供一種高效傳送數(shù)據(jù)流的方法。
[0006]為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明的技術(shù)方案如下:
一種高效傳送數(shù)據(jù)流的方法,其用于在多媒體數(shù)據(jù)流系統(tǒng)中用預(yù)先存在的文件系統(tǒng)支持對(duì)一個(gè)數(shù)據(jù)流文件執(zhí)行零拷貝功能,所述的多媒體數(shù)據(jù)流系統(tǒng)包括:多個(gè)各支持一組零拷貝功能接口的不同現(xiàn)有文件系統(tǒng)中的一個(gè)現(xiàn)有文件系統(tǒng)、一個(gè)使一個(gè)產(chǎn)生模塊和一個(gè)用戶模塊連接的VCS、一個(gè)與共享存儲(chǔ)器連接的大容量存儲(chǔ)裝置、一個(gè)用戶裝置、一個(gè)多媒體文件系統(tǒng)后臺(tái)進(jìn)程和一個(gè)配置在所述用戶裝置和用戶模塊之間的裝置驅(qū)動(dòng)器;
所述方法包括下列步驟:建立一個(gè)與所述多個(gè)不同現(xiàn)有文件系統(tǒng)相連的通用文件系統(tǒng)接口 ;以及調(diào)用所述通用文件系統(tǒng)接口,,一控制系統(tǒng),以實(shí)現(xiàn)從所述產(chǎn)生模塊到所述用戶模塊的所述數(shù)據(jù)流的零拷貝傳送。
[0007]進(jìn)一步的,所述方法還包括下列步驟:從所述產(chǎn)生模塊向所述輸出登記服務(wù)發(fā)送一個(gè)功能調(diào)用,以得到所述產(chǎn)生模塊可用來調(diào)用所述內(nèi)核擴(kuò)展的所述功能描述符。
[0008]更進(jìn)一步的,所述方法還包括下列步驟:用所述VCS調(diào)用所述產(chǎn)生模塊,以使所述產(chǎn)生模塊驗(yàn)證所述數(shù)據(jù)流文件是否符合所述零拷貝功能的要求。
[0009]其中,所述驗(yàn)證步驟包括對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化和檢驗(yàn)與所述數(shù)據(jù)流文件相關(guān)的一些參數(shù)。
[0010]優(yōu)選的,所述方法還包括下列步驟:從所述產(chǎn)生模塊調(diào)用所述內(nèi)核服務(wù)擴(kuò)展,以得到支持從中斷語境傳送數(shù)據(jù)的緩存器的標(biāo)識(shí),從而確定所述數(shù)據(jù)流在所述大容量存儲(chǔ)裝置內(nèi)的位置并可在中斷語境加以檢索。
[0011]更優(yōu)選的,所述方法還包括下列步驟:從所述產(chǎn)生模塊向所述內(nèi)核服務(wù)擴(kuò)展傳送一個(gè)指示符,指明所述系統(tǒng)隨時(shí)可以準(zhǔn)備與所述數(shù)據(jù)流文件對(duì)應(yīng)的需從所述大容量存儲(chǔ)裝置傳送經(jīng)所述共享存儲(chǔ)器內(nèi)緩存器的數(shù)據(jù)。
[0012]常規(guī)子系統(tǒng)進(jìn)行高效率傳送多媒體數(shù)據(jù)流信息所出現(xiàn)的其他一些問題,使本發(fā)明采取了相應(yīng)的革新措施,包括:在中斷級(jí)尋找和鎖定緩存器,向后臺(tái)進(jìn)程傳送預(yù)取信息,以在中斷級(jí)需要文件數(shù)據(jù)緩存器前預(yù)先加以領(lǐng)取,用并行寫入器對(duì)文件進(jìn)行串行化,以及更概括地說,提供在VCS框架內(nèi)支持零拷貝的通用文件系統(tǒng)接口,以便使數(shù)據(jù)的傳輸更加高效。
【具體實(shí)施方式】
[0013]下面結(jié)合具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步詳細(xì)的描述說明。
[0014]本實(shí)施例提供了零拷貝或VCS子系統(tǒng),它的功能與一個(gè)更為傳統(tǒng)的系統(tǒng)中的各組成部分的配合情況。數(shù)據(jù)輸出口主要是用來建立磁盤驅(qū)動(dòng)器和文件系統(tǒng)與諸如ADEC那樣的圖像解碼卡之間的連接。概括地說,輸出口提供以流水線方式對(duì)產(chǎn)生器和用戶裝置的互連。一旦連接建立,數(shù)據(jù)輸出口通過控制至VCS提供一個(gè)連接,用來通過VCS直接控制文件系統(tǒng)和通信裝置之間的數(shù)據(jù)流動(dòng)。
圖像連接子系統(tǒng)的總體功能是以最佳方式控制多媒體文件系統(tǒng)(MMFS)、產(chǎn)生模塊和用戶模塊之間的數(shù)據(jù)流動(dòng)。用戶模塊例如可以是一個(gè)包括例如ADECNAR和基本上處于流水線輸出那一側(cè)的相應(yīng)ADEC適配卡的圖像解碼器。產(chǎn)生模塊可以是一個(gè)諸如可以部分體現(xiàn)在多個(gè)常用的磁盤驅(qū)動(dòng)器或一個(gè)RAID陣列中的磁盤驅(qū)動(dòng)系統(tǒng)和文件系統(tǒng)那樣的存儲(chǔ)子系統(tǒng)。產(chǎn)生模塊起著另一個(gè)可以是具有現(xiàn)有常用結(jié)構(gòu)的諸如文件系統(tǒng)那樣的文件系統(tǒng)與VCS之間的中介作用。VCS本身有一組管理數(shù)據(jù)流動(dòng)的接口,因此產(chǎn)生模塊實(shí)質(zhì)上起著響應(yīng)來自VCS的請(qǐng)求對(duì)文件系統(tǒng)進(jìn)行相應(yīng)調(diào)用以獲得所請(qǐng)求的數(shù)據(jù)的中介作用。
[0015]內(nèi)核擴(kuò)展顯然是處于操作系統(tǒng)內(nèi)核之中,而后臺(tái)進(jìn)程在應(yīng)用空間內(nèi)執(zhí)行。這說明了為什么控制流程是從VCS到產(chǎn)生器模塊到內(nèi)核擴(kuò)展再到后臺(tái)進(jìn)程,VCS、產(chǎn)生器模塊和內(nèi)核擴(kuò)展都在內(nèi)核內(nèi),一直通達(dá)由應(yīng)用空間中的后臺(tái)進(jìn)程所代表的用戶級(jí)。
本發(fā)明的基本目的是實(shí)現(xiàn)必需的多媒體數(shù)據(jù)傳送而不需要對(duì)數(shù)據(jù)進(jìn)行拷貝占用開銷。已經(jīng)知道,能夠在不將數(shù)據(jù)取入存儲(chǔ)器的情況下在各裝置之間傳送數(shù)據(jù)。
[0016]在圖像服務(wù)器環(huán)境中,可能感興趣的是將數(shù)據(jù)取入存儲(chǔ)器,因?yàn)槿绻袃蓚€(gè)用戶希望播放同一個(gè)節(jié)目,那么這些多個(gè)請(qǐng)求可以用存儲(chǔ)器中的單個(gè)拷貝來滿足(然而如果在裝置之間直接傳送相同的數(shù)據(jù),那么這數(shù)據(jù)就必需在物理上傳送兩次)。因此,在這個(gè)用戶可以希望接入相同數(shù)據(jù)的圖像服務(wù)器環(huán)境中,能夠利用存儲(chǔ)器的緩沖特性是有意義的。本發(fā)明的模型是基于這樣的設(shè)想:數(shù)據(jù)將取入存儲(chǔ)器和希望得到單個(gè)數(shù)據(jù)拷貝,所選擇的方案基本上是使文件系統(tǒng)提供這單個(gè)拷貝。
文件系統(tǒng)傳統(tǒng)上是在過程語境內(nèi)運(yùn)行的。在這個(gè)語境內(nèi),文件系統(tǒng)中傳送數(shù)據(jù)的傳統(tǒng)方式是從一個(gè)用戶級(jí)程序?qū)?nèi)核進(jìn)行“讀”系統(tǒng)調(diào)用,得到從盤讀入一個(gè)內(nèi)核緩存器的文件的特定數(shù)據(jù)范圍,然后再將它拷貝到用戶緩存器。另一方面,如果需要將數(shù)據(jù)寫到網(wǎng)絡(luò)上,那么就發(fā)出一個(gè)“寫”系統(tǒng)調(diào)用,數(shù)據(jù)從用戶存儲(chǔ)器反向傳送到內(nèi)核,再?gòu)膬?nèi)核緩存器傳送給網(wǎng)絡(luò)裝置。
[0017]本發(fā)明所研宄的一個(gè)問題涉及圖像連接子系統(tǒng)可以支持的模型。具體地說,需要的是這樣的一個(gè)系統(tǒng),它能在Unix或Unix派生的環(huán)境(諸如IBM公司的AIX) TM(操作系統(tǒng))內(nèi)以能限制CPU開銷和拷貝數(shù)據(jù)所占用的開銷的方式進(jìn)行操作。VCS