專利名稱:用于在文件系統(tǒng)中創(chuàng)建文件的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及存儲(chǔ)設(shè)備領(lǐng)域,例如個(gè)人視頻錄像機(jī)(PVR),具體而言,本發(fā)明涉及一種用于在文件系統(tǒng)中創(chuàng)建文件的方法和裝置。
背景技術(shù):
目前PVR產(chǎn)品使用硬盤作為存儲(chǔ)設(shè)備。隨著硬盤價(jià)格急劇下降,在PVR產(chǎn)品中使用了具有較大容量的硬盤。當(dāng)PVR錄像機(jī)創(chuàng)建一個(gè)記錄時(shí),其需要在硬盤上創(chuàng)建數(shù)個(gè)文件, 然后用戶才能把流數(shù)據(jù)寫入其中。這個(gè)文件創(chuàng)建可能需要1秒多時(shí)間。在最差的情況下可能需要4或5秒。圖1是現(xiàn)有技術(shù)的文件系統(tǒng)中如何管理文件的圖示。文件系統(tǒng)是目錄的層級(jí)結(jié)構(gòu) (也稱為文件樹),用于組織PVR、計(jì)算機(jī)或存儲(chǔ)介質(zhì)上的文件和數(shù)據(jù)以便于尋找和存取。如圖1所示,在文件系統(tǒng)中具有一個(gè)根目錄,其下有文件4和兩個(gè)目錄-目錄1和目錄2。在目錄1下面具有文件1和2,而在目錄2下面具有文件N和子目錄3。當(dāng)所述文件系統(tǒng)創(chuàng)建文件時(shí),其首先需要為文件頭分配一些空間,然后將信息寫入硬盤上用于此文件的所述文件頭中。所述文件創(chuàng)建過(guò)程消耗的大部分時(shí)間用于為所述文件頭分配空間。文件頭空間分配所需時(shí)間取決于存儲(chǔ)介質(zhì)的分區(qū)尺寸、分區(qū)碎片狀態(tài)等。 例如,如果分區(qū)尺寸很大并且在存儲(chǔ)介質(zhì)中有很多碎片,上述過(guò)程將消耗幾百毫秒。不幸的是,在PVR運(yùn)轉(zhuǎn)將幾次之后,磁盤上的碎片很難避免。這將對(duì)PVR產(chǎn)品用戶產(chǎn)生負(fù)面影響。當(dāng)用戶觀看直播電視并找到某些感興趣的內(nèi)容時(shí),他按下“REC”按鍵以開始記錄。在上述情況下,用戶可能需要等待幾秒鐘才能真正記錄數(shù)據(jù),這將導(dǎo)致幾秒鐘的數(shù)據(jù)丟失。另外,記錄的開始時(shí)間也是無(wú)法預(yù)測(cè)的。已經(jīng)進(jìn)行了某些研究以提高開始記錄的效率。其中一個(gè)方案是在創(chuàng)建記錄文件時(shí)采用流緩沖器來(lái)保持?jǐn)?shù)據(jù)。由于流緩沖器需要比較大,該緩沖器將在硬盤而非RAM上實(shí)現(xiàn),這將增加硬盤的使用并從而增加功率需求。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一個(gè)方面,提供了一種包括文件系統(tǒng)的設(shè)備。所述設(shè)備包括存儲(chǔ)模塊,用于存儲(chǔ)多個(gè)預(yù)先創(chuàng)建的文件頭,其中在請(qǐng)求創(chuàng)建文件之前創(chuàng)建所述文件頭,每個(gè)文件頭包括用于將存儲(chǔ)在所述文件系統(tǒng)中的文件的預(yù)先分配的描述符;和處理器,用于當(dāng)文件存儲(chǔ)或者將存儲(chǔ)在所述存儲(chǔ)模塊中時(shí)更新給定文件頭的預(yù)先分配的描述符。所述設(shè)備還包括多個(gè)指針(pointer),其中每個(gè)指針指向預(yù)先創(chuàng)建的可用文件頭的位置。另外,所述設(shè)備中的所述多個(gè)文件頭包括刪除文件的文件頭可以用于以后的文件。另外,在所述裝置中具有最大和最小數(shù)量的預(yù)先創(chuàng)建的文件頭。另外,只有當(dāng)所述文件頭的數(shù)量處于所述最大數(shù)量與最小數(shù)量之間時(shí)所述刪除文件的文件頭才能再次使用。根據(jù)本發(fā)明的第二個(gè)方面,提供了一種用于在文件系統(tǒng)中創(chuàng)建文件的方法。所述方法包括存儲(chǔ)多個(gè)預(yù)先創(chuàng)建的文件頭,其中在請(qǐng)求創(chuàng)建文件之前創(chuàng)建所述文件頭,每個(gè)文件頭包括預(yù)先分配的描述符;并且當(dāng)給定文件頭與文件相關(guān)聯(lián)時(shí)更新所述給定文件頭的預(yù)先分配的描述符。
圖1是現(xiàn)有技術(shù)的文件系統(tǒng)中的文件夾和文件結(jié)構(gòu)的實(shí)例的圖示;圖2是顯示了包括文件頭和文件主體的文件結(jié)構(gòu)的圖示;圖3是根據(jù)本發(fā)明一個(gè)實(shí)施方式的具有文件頭庫(kù)的文件系統(tǒng)的圖示;圖4是根據(jù)本發(fā)明一個(gè)實(shí)施方式的文件頭庫(kù)的位置的圖示;圖5是示出了示例性文件頭中包含的信息的表;圖6是示出了當(dāng)要記錄文件時(shí)采用的示例性文件頭中包含的信息的表;圖7是當(dāng)要記錄文件時(shí)的示例性文件頭的總體圖示;和圖8是根據(jù)本發(fā)明的實(shí)施方式的處理器進(jìn)行的處理過(guò)程的流程圖。
具體實(shí)施例方式圖2是顯示了文件系統(tǒng)中包括文件頭和文件主體的文件結(jié)構(gòu)的圖示。所述文件主體在不同的文件系統(tǒng)中表現(xiàn)形式不同。基本上,所述文件主體包括文件的數(shù)據(jù)并占用了大部分的文件大小。文件頭通常只占用很小空間。但是,由于文件頭包括指向文件主體的入口指針(entry pointer)File Body Entry,因此文件頭非常重要。沒有文件頭中的信息,則將無(wú)法讀出文件主體中的數(shù)據(jù)。圖3是顯示了根據(jù)本發(fā)明實(shí)施方式的包括具有文件頭庫(kù)310的文件系統(tǒng)的電子設(shè)備300。例如,所述電子設(shè)備300可以是PVR。在本實(shí)施方式中,由處理器330在用于文件系統(tǒng)的存儲(chǔ)設(shè)備320上創(chuàng)建所述文件頭庫(kù)。所述存儲(chǔ)設(shè)備可以是硬盤。文件頭庫(kù)310包括多個(gè)文件頭并且是在所述文件系統(tǒng)首次安裝(例如文件系統(tǒng)首次連接至PVR的當(dāng)前可存取文件系統(tǒng))時(shí)創(chuàng)建。還可以將安裝操作考慮為讀取硬盤中的數(shù)據(jù)、在存儲(chǔ)器中構(gòu)建文件系統(tǒng)結(jié)構(gòu)等。在本實(shí)施方式中,處理器330將文件頭庫(kù)310分配至在硬盤分區(qū)中具有固定地址的存儲(chǔ)設(shè)備的區(qū)域。當(dāng)創(chuàng)建所述文件系統(tǒng)時(shí)定義所述固定地址。圖4示出了一個(gè)實(shí)例, 其中文件頭庫(kù)310位于“超級(jí)塊(super block)”之后的塊。所述“超級(jí)塊”是存儲(chǔ)設(shè)備上最初的一個(gè)或多個(gè)塊并包含關(guān)于文件系統(tǒng)的信息。當(dāng)在一個(gè)目錄(例如目錄1)下創(chuàng)建文件時(shí),可以從文件頭庫(kù)選擇文件頭以進(jìn)行使用。圖5是示出了當(dāng)文件系統(tǒng)首次安裝時(shí)示例性文件頭中包含的信息的表。在文件頭庫(kù)中具有指向文件頭自身的索引。這些索引是文件頭的地址,即指針。例如,文件頭1具有索引8000,其指向存儲(chǔ)介質(zhì)上的塊8000,文件頭1位于其中。在文件頭1中,處理器330預(yù)先分配了某些元數(shù)據(jù),這些元數(shù)據(jù)文件由處理器330設(shè)置初始值。“地址”示出了文件頭在存儲(chǔ)設(shè)備上的物理位置。所述存儲(chǔ)設(shè)備被分為具有相同大小(例如IOM字節(jié))的多個(gè)塊。 在所述實(shí)例中,為文件頭分配的地址是編號(hào)為8000的塊?!拔募敝赋鏊鑫募^關(guān)聯(lián)的文件的名稱。在圖4中,所述文件名被賦值為“Null”,因?yàn)檫€沒有文件與該文件頭關(guān)聯(lián)。字段“創(chuàng)建時(shí)間”顯示與該文件頭相關(guān)聯(lián)的文件是何時(shí)創(chuàng)建的?!靶薷臅r(shí)間”顯示與該文件頭相關(guān)聯(lián)的文件最后一次修改是何時(shí)?!按笮 敝赋雠c該文件頭關(guān)聯(lián)的文件的大小?!坝脩?ID”表示誰(shuí)創(chuàng)建了該文件。由于沒有相關(guān)文件,“修改時(shí)間”、“大小”和“用戶ID”都具有初始值“0”。對(duì)文件中包含的數(shù)據(jù)信息,通??梢杂涗洝皵?shù)據(jù)起始地址”和“長(zhǎng)度”?!皵?shù)據(jù)起始地址”指明數(shù)據(jù)從哪個(gè)塊開始寫入,“長(zhǎng)度”顯示數(shù)據(jù)占據(jù)了多少塊。由于沒有特定文件與所述文件頭關(guān)聯(lián),數(shù)據(jù)如入口 1、2. . . N的“數(shù)據(jù)起始地址”和“長(zhǎng)度”都設(shè)置為“0”。圖6是示出了示例性文件頭在被文件使用時(shí)包含信息的表。當(dāng)創(chuàng)建一文件(例如用戶開始記錄PVR視頻文件)時(shí),處理器將在文件頭庫(kù)310中進(jìn)行搜索以尋找未使用的文件頭并將該尋找到的文件頭分配給將創(chuàng)建的文件。在將文件頭與特定文件相關(guān)聯(lián)后,由處理器330對(duì)初始設(shè)置值進(jìn)行再分配或更新。例如,在圖6中,當(dāng)記錄過(guò)程開始時(shí)所述文件沒有名稱,文件創(chuàng)建時(shí)間是“1/12/2008,12 :pm”,修改時(shí)間也是“1/12/2008,12 :pm,,(因?yàn)檫@是第一次編輯該文件),用戶ID是500 (表示ID為500的用戶創(chuàng)建此文件)。在此時(shí)該文件中沒有數(shù)據(jù)。在向存儲(chǔ)介質(zhì)上的所述文件中寫入數(shù)據(jù)之后,數(shù)據(jù)入口 1、2...N將得到更新,即將數(shù)據(jù)起始地址和長(zhǎng)度寫入上述表中。當(dāng)文件頭庫(kù)中的文件頭被文件使用時(shí),其相應(yīng)的地址將從文件頭庫(kù)中除去。例如,當(dāng)使用文件頭1時(shí),地址8000將被除去。圖7是示出了文件頭最終如何在文件系統(tǒng)中組織的總體圖示。在記錄了文件之后,圖6中缺少的某些信息將被寫入。文件名現(xiàn)在為“文件1”,記錄的文件大小為10M00 字節(jié)。對(duì)于第一塊數(shù)據(jù),物理地址為8100并且長(zhǎng)度為1塊。對(duì)于第二塊數(shù)據(jù),物理地址為 8300并且長(zhǎng)度為10塊(從塊8300至8309)。提前確定預(yù)創(chuàng)建的文件頭的數(shù)量。當(dāng)文件頭庫(kù)中的某些文件頭已經(jīng)被使用并且文件頭的數(shù)量小于最小閾值時(shí),創(chuàng)建新的文件頭直至文件頭的數(shù)量等于最大閾值。因此,保持文件頭庫(kù)中文件頭的數(shù)量,從而確保當(dāng)創(chuàng)建新文件時(shí),可以立即從文件頭庫(kù)中使用文件頭。隨后,當(dāng)再次安裝文件系統(tǒng)時(shí),文件系統(tǒng)將探測(cè)在文件頭庫(kù)中是否具有充足的文件頭,即文件頭庫(kù)中的文件頭數(shù)量是否大于最小閾值。如果否,文件系統(tǒng)將創(chuàng)建某些額外的文件頭。在另外的實(shí)例中,具有較低優(yōu)先級(jí)的程序探測(cè)文件頭庫(kù)狀態(tài)以保證在文件頭庫(kù)中具有特定數(shù)量的文件頭。如果在文件頭庫(kù)中不具有足夠的文件頭,該程序?qū)?chuàng)建特定數(shù)量的文件頭。圖8是根據(jù)本發(fā)明的實(shí)施方式的處理器330進(jìn)行的處理過(guò)程的流程圖。所述過(guò)程 800開始于步驟810。當(dāng)首次安裝一文件系統(tǒng)時(shí),在步驟820,處理器330創(chuàng)建具有多個(gè)文件頭的文件頭庫(kù)310。在所述文件頭中包含數(shù)個(gè)元數(shù)據(jù)字段,包括“地址”字段,顯示文件頭在所述存儲(chǔ)設(shè)備上的物理位置;“文件名稱”,指示與文件頭相關(guān)聯(lián)的文件的名稱;“創(chuàng)建時(shí)間”,顯示與文件頭相關(guān)聯(lián)的文件何時(shí)創(chuàng)建;“修改時(shí)間”,顯示與文件頭相關(guān)聯(lián)的文件何時(shí)修改;“大小”,指示與文件頭相關(guān)聯(lián)的文件的大小;“用戶ID”,標(biāo)明進(jìn)行記錄的用戶;“數(shù)據(jù)起始地址”,指明從那個(gè)塊開始寫入文件數(shù)據(jù);“長(zhǎng)度”,顯示文件數(shù)據(jù)占據(jù)多少塊。在步驟 830處理器330將每個(gè)字段初始化為初始值。當(dāng)用戶希望記錄PVR節(jié)目(例如電視節(jié)目、 電影、體育節(jié)目等)并按下“記錄”按鈕時(shí),處理器330從現(xiàn)有文件頭庫(kù)中采用文件頭,如步驟840所示。然后在步驟850修改文件頭中的元數(shù)據(jù)。例如,將文件頭中的“創(chuàng)建時(shí)間”字段改為當(dāng)前時(shí)間,根據(jù)PVR節(jié)目的要求將“文件名稱”字段改為實(shí)際名稱,等等。根據(jù)本實(shí)施方式,PVR記錄將包括一個(gè)以上的文件,例如流文件、元數(shù)據(jù)文件、索引文件、統(tǒng)計(jì)文件等。這些文件將具有不同名稱。然后分配新空間用于寫入該文件,并且采用的文件頭中的“數(shù)據(jù)入口”將指向分配的空間,即如步驟860所示更新所選文件頭中的“數(shù)據(jù)入口”。此后,過(guò)程在步驟870結(jié)束。作為選擇,當(dāng)從文件系統(tǒng)中刪除文件時(shí),如果文件頭庫(kù)中的文件頭數(shù)量小于閾值, 其刪除文件的文件頭將被放回文件頭庫(kù)中。當(dāng)文件被刪除時(shí),文件主體將被首先釋放。艮口, PVR的存儲(chǔ)器上由所述文件數(shù)據(jù)占據(jù)的空間將被交還至文件系統(tǒng)并由其他文件使用。隨后將所述文件的文件頭插入至現(xiàn)有文件頭庫(kù)中,這意味著該文件頭的地址將在文件頭庫(kù)中注冊(cè)。因?yàn)橛虚撝祦?lái)限制文件頭的最大數(shù)量,只有文件頭庫(kù)未滿時(shí),才將所述刪除文件的文件頭插入文件頭庫(kù)中。根據(jù)該方式,所述文件頭將在未來(lái)的文件記錄中使用,不必對(duì)文件頭進(jìn)行新的空間分配。根據(jù)本發(fā)明的實(shí)施方式,文件頭包括下列字段“文件名稱”、“創(chuàng)建時(shí)間”、“修改時(shí)間”、“大小”、“用戶ID”。還可以增加其他字段,例如顯示對(duì)文件的訪問(wèn)權(quán)限的字段等。上面對(duì)本發(fā)明的幾個(gè)實(shí)施方式進(jìn)行了說(shuō)明。但是可以理解,能夠進(jìn)行多種修改。另外,本領(lǐng)域普通技術(shù)人員可以理解,說(shuō)明中的結(jié)構(gòu)和過(guò)程可以用以大體相同的方式、執(zhí)行大體相同的功能、獲得大體相同的結(jié)果的其他結(jié)構(gòu)和過(guò)程來(lái)替代。因此,說(shuō)明書中的說(shuō)明只是用于說(shuō)明的目的,本領(lǐng)域普通技術(shù)人員可以理解,在不脫離由所附權(quán)利要求限定的本發(fā)明的原理和范圍的情況下,可以對(duì)所述實(shí)施方式進(jìn)行各種修改和改變。因此,這些實(shí)施方式都可以根據(jù)本發(fā)明的說(shuō)明獲得并屬于所附權(quán)利要求的范圍。
權(quán)利要求
1.一種設(shè)備(300),包括文件系統(tǒng),其特征在于,還包括存儲(chǔ)模塊(320),用于存儲(chǔ)多個(gè)預(yù)先創(chuàng)建的文件頭,其中在請(qǐng)求創(chuàng)建文件之前創(chuàng)建所述文件頭,每個(gè)文件頭包括用于將存儲(chǔ)在所述文件系統(tǒng)中的文件的預(yù)先分配的描述符;和處理器(330),用于當(dāng)文件存儲(chǔ)或者將存儲(chǔ)在所述存儲(chǔ)模塊中時(shí)更新給定文件頭的預(yù)先分配的描述符。
2.根據(jù)權(quán)利要求1所述設(shè)備(300),還包括多個(gè)指針,其中每個(gè)指針指向預(yù)先創(chuàng)建的可用文件頭的位置
3.根據(jù)權(quán)利要求1或2所述設(shè)備(300),其中所述多個(gè)文件頭包括刪除文件的文件頭可以用于以后的文件。
4.根據(jù)權(quán)利要求3所述設(shè)備(300),其中具有最大和最小數(shù)量的預(yù)先創(chuàng)建的文件頭。
5.根據(jù)權(quán)利要求4所述設(shè)備(300),其中只有當(dāng)所述文件頭的數(shù)量處于所述最大數(shù)量與最小數(shù)量之間時(shí)所述刪除文件的文件頭才能再次使用。
6.一種用于在文件系統(tǒng)中創(chuàng)建文件的方法,包括存儲(chǔ)多個(gè)預(yù)先創(chuàng)建的文件頭,其中在請(qǐng)求創(chuàng)建文件之前創(chuàng)建所述文件頭,每個(gè)文件頭包括預(yù)先分配的描述符(820,830);并且當(dāng)給定文件頭與文件相關(guān)聯(lián)時(shí)更新所述給定文件頭的預(yù)先分配的描述符(850, 860)。
全文摘要
本發(fā)明提供了一種用于在文件系統(tǒng)中創(chuàng)建文件的方法和裝置。在所述文件系統(tǒng)中具有文件頭庫(kù),可以在安裝所述文件系統(tǒng)時(shí)建立所述文件頭庫(kù)。當(dāng)將要?jiǎng)?chuàng)建新文件時(shí),從所述文件頭庫(kù)采用文件頭,需要做的是根據(jù)當(dāng)前文件中的現(xiàn)實(shí)信息改變采用的文件頭中的信息。
文檔編號(hào)G06F3/06GK102272710SQ201080004026
公開日2011年12月7日 申請(qǐng)日期2010年1月5日 優(yōu)先權(quán)日2009年1月6日
發(fā)明者屈冬生, 張曉龍 申請(qǐng)人:湯姆森特許公司