專利名稱:具有可變邏輯存儲塊大小的文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及在計算機、嵌入式控制器、處理系統(tǒng)等中使用的 文件系統(tǒng)。更特別地,本發(fā)明涉及將數(shù)據(jù)存儲空間組織成不同大小的 邏輯存儲塊的文件系統(tǒng)。
背景技術(shù):
典型地,計算機、嵌入式控制器及其它基于微處理器的系統(tǒng)是由各種不同的硬件組件構(gòu)成的。硬件組件可包括處理器、1/0設(shè)備、人機接口設(shè)備等。另外,這類系統(tǒng)使用存儲器存儲單元來保存系統(tǒng)中使用 的數(shù)據(jù)。存儲器存儲單元可采用各種不同的形式,包括,但不限于, 硬盤驅(qū)動器、軟盤驅(qū)動器、隨機存取存儲器、閃存等。在這類系統(tǒng)中執(zhí)行的高級應(yīng)用程序通常必須與這些硬件組件(包 括存儲器存儲單元)無縫地相互作用。所以,很多系統(tǒng)運行操作系統(tǒng) 來作為應(yīng)用程序與系統(tǒng)硬件的接口 。文件系統(tǒng)軟件可作為操作系統(tǒng)的 一部分包括在操作系統(tǒng)中,也可以被設(shè)置為與操作系統(tǒng)交互的輔助軟 件組件。在任一種情況下,文件系統(tǒng)軟件將存儲器存儲單元內(nèi)的數(shù)據(jù) 組織起來,以準(zhǔn)備好供處理器和由處理器執(zhí)行的高級應(yīng)用程序來存取。文件系統(tǒng)軟件可使用文件/目錄層,該層將文件和目錄的內(nèi)容組織 成在存儲設(shè)備上的連續(xù)數(shù)據(jù)的大小相等的邏輯存儲塊。每個邏輯存儲 塊與實際保存數(shù)據(jù)的存儲設(shè)備上的一個或多個相應(yīng)的物理塊相關(guān)聯(lián)。 文件/目錄層可通過識別出每個響應(yīng)請求而需要被更新的邏輯存儲塊, 并重寫每個這種邏輯存儲塊的全部內(nèi)容,來執(zhí)行對文件系統(tǒng)的更新。文件/目錄層可通過讀取每個存儲有要讀取的數(shù)據(jù)區(qū)的一部分的邏輯存 儲塊的全部內(nèi)容,來讀取文件或目錄的內(nèi)容。文件系統(tǒng)還可包括存儲層,該層將文件系統(tǒng)內(nèi)容的虛擬地址映射 到數(shù)據(jù)存儲設(shè)備上的物理數(shù)據(jù)塊。通過確定與請求相關(guān)聯(lián)的正確物理 塊和從數(shù)據(jù)存儲設(shè)備中讀出其內(nèi)容,存儲層可執(zhí)行來自文件/目錄層的 邏輯塊讀取請求。類似地,存儲層可通過以下兩種方式之一來執(zhí)行寫 請求通過更新現(xiàn)有物理塊的內(nèi)容,或者通過從數(shù)據(jù)存儲設(shè)備中分配 未使用的物理塊給邏輯存儲塊,然后更新該物理塊的內(nèi)容。由于所有邏輯塊具有相同的大小,并且所有物理塊也具有相同的 大小,所以現(xiàn)有的文件系統(tǒng)對于遇到的各類文件數(shù)據(jù)并不是最佳的。 在這些現(xiàn)有的系統(tǒng)中,所有數(shù)據(jù)類型都使用固定的邏輯存儲塊大小, 這表示在與長存取流相關(guān)聯(lián)的文件類型和與短存取流相關(guān)聯(lián)的文件類 型之間的折衷。因此,需要一種對現(xiàn)有文件系統(tǒng)的組織的替代方案。發(fā)明內(nèi)容本發(fā)明提出了一種系統(tǒng),該系統(tǒng)包括處理器、可由處理器進行存 取的數(shù)據(jù)存儲設(shè)備、可被處理器執(zhí)行以在數(shù)據(jù)存儲設(shè)備上組織文件的 文件系統(tǒng)軟件。文件系統(tǒng)軟件可被執(zhí)行,以在數(shù)據(jù)存儲設(shè)備上將文件 根據(jù)文件類型組織到具有不同邏輯存儲塊大小的存儲區(qū)中。在一種實 現(xiàn)中,文件系統(tǒng)軟件可被執(zhí)行用來生成與數(shù)據(jù)存儲設(shè)備相關(guān)聯(lián)的孔圖 (hole map)??讏D包括表示數(shù)據(jù)存儲設(shè)備的多個存儲區(qū)中的每一個存 儲區(qū)對應(yīng)的邏輯存儲塊大小的數(shù)據(jù),并且可選地,孔圖可以包括表示 多個存儲區(qū)中的每一個存儲區(qū)的使用程度的數(shù)據(jù)。文件系統(tǒng)可使用文 件的文件名和/或嵌入的文件信息來識別文件類型。在研究后面的附圖和詳細說明之后,具備本領(lǐng)域?qū)I(yè)技術(shù)的人員 將會清楚本發(fā)明的其它系統(tǒng)、方法、特征和優(yōu)點。所有這種另外的系 統(tǒng)、方法、特征和優(yōu)點應(yīng)被包括在該說明內(nèi),并應(yīng)包括在本發(fā)明的保 護范圍內(nèi),并且受到后面的權(quán)利要求的保護。
參考后面的附圖和說明可以更好地理解本發(fā)明。附圖中的組件并 不一定是按比例的、強調(diào)的,而是用于說明本發(fā)明的原理。此外,在 附圖中,在不同的示圖中使用相同的附圖標(biāo)記來表示對應(yīng)的部分。圖1是可實現(xiàn)具有可變邏輯存儲塊存儲大小的文件系統(tǒng)的處理系 統(tǒng)的框圖;圖2是孔圖和對應(yīng)存儲區(qū)的框圖,示出了文件系統(tǒng)可以用來在圖1
的數(shù)據(jù)存儲設(shè)備上組織文件數(shù)據(jù)的一種方式;圖3是顯示可用在圖2的孔圖的孔上以標(biāo)識對應(yīng)的區(qū)域類型的位 設(shè)置的示例表;圖4是顯示圖3中提及的區(qū)域類型與邏輯存儲塊大小之間的相關(guān) 性的示例表;圖5是顯示可用在圖2的孔圖的孔上以表示對應(yīng)的存儲區(qū)的使用 程度的位設(shè)置的示例表;圖6是顯示可由圖1的文件系統(tǒng)使用的文件類型和對應(yīng)的區(qū)域類 型的示例表;圖7是顯示當(dāng)文件系統(tǒng)中正在增長或擴展文件時可使用的多個相 互關(guān)聯(lián)的操作的流程圖;圖8是顯示可用在圖7的可替代存儲處理操作中的多個相互關(guān)聯(lián) 的操作的流程圖;圖9是顯示可用以實現(xiàn)圖8的方框825所示的較大的邏輯存儲塊 行為的多個相互關(guān)聯(lián)的操作的流程圖。
具體實施方式
圖1示出了可用在示例的處理系統(tǒng)100中的組件。如圖所示,示 例系統(tǒng)100包括處理器105、只讀存儲器110和數(shù)據(jù)存儲器115。處理 系統(tǒng)100還包括隨機存取存儲器120、 I/O接口 125和用戶接口 130。 在處理系統(tǒng)100中使用的具體組件可根據(jù)處理系統(tǒng)100要執(zhí)行的特定 功能來設(shè)計。因此, 一個組件的有無是根據(jù)處理系統(tǒng)100所用的設(shè)計 標(biāo)準(zhǔn)而定的。數(shù)據(jù)存儲器115可包括操作系統(tǒng)代碼135,操作系統(tǒng)代碼135用于 控制由處理器105執(zhí)行的高級應(yīng)用程序和各硬件組件(包括存儲器110 和120、數(shù)據(jù)存儲器115和接口設(shè)備125和130)之間的交互。操作系 統(tǒng)代碼135可包括用于組織存儲在數(shù)據(jù)存儲器115上的文件的文件系 統(tǒng)軟件。可替代地,文件系統(tǒng)軟件可被設(shè)置為獨立的軟件組件,其僅 與操作系統(tǒng)代碼135進行交互。在后面的情況下,對應(yīng)于文件系統(tǒng)軟 件的代碼可被存儲在只讀存儲器110、數(shù)據(jù)存儲器115等中。當(dāng)處理系 統(tǒng)100通過I/O接口 125與其它計算機和/或存儲設(shè)備互連時,文件系
統(tǒng)軟件可被遠程存儲并在需要時下載到處理系統(tǒng)100。然而,圖1示出 了文件系統(tǒng)軟件140存儲在數(shù)據(jù)存儲器115中的情況。數(shù)據(jù)存儲器115可采取任意種不同的形式。例如,數(shù)據(jù)存儲器115 可采取硬盤驅(qū)動器、軟盤驅(qū)動器等形式。它還可以采取非旋轉(zhuǎn)的介質(zhì) 設(shè)備的形式,諸如,以集成電路形式實現(xiàn)的非易失性存儲器(例如, 閃存等)。此外,數(shù)據(jù)存儲器115不需被限制為單一的存儲結(jié)構(gòu)。相反, 數(shù)據(jù)存儲器115可包括多個相同類型的獨立存儲設(shè)備(例如,均為閃 存)和/或不同類型的獨立存儲設(shè)備(例如, 一個或多個閃存單元和一 個或多個硬盤驅(qū)動器)。保存在數(shù)據(jù)存儲器115中的文件包括,根據(jù)應(yīng)用程序或操作系統(tǒng) 代碼135所使用的預(yù)定格式而被解釋的數(shù)據(jù)。例如,保存在文件內(nèi)的 數(shù)據(jù)可構(gòu)成可執(zhí)行程序的軟件代碼、數(shù)據(jù)庫記錄的ASCII文本、音頻 媒體文件、視頻媒體文件等。文件系統(tǒng)軟件140可以由處理器105來 執(zhí)行,以基于所保存的數(shù)據(jù)的類型來分配數(shù)據(jù)存儲器115上的物理數(shù) 據(jù)存儲。通過文件系統(tǒng)軟件140,以便于優(yōu)化讀寫數(shù)據(jù)速度同時不犧牲 有效存儲小文件的能力的方式,將文件數(shù)據(jù)組織在數(shù)據(jù)存儲器115上。圖2示出了文件系統(tǒng)軟件140可用來在數(shù)據(jù)存儲器115上組織文 件的一種方式。為了便于說明,數(shù)據(jù)存儲器115將被稱作硬盤系統(tǒng)。 然而,文件系統(tǒng)軟件140的操作可方便地被擴展到其它類型的數(shù)據(jù)存 儲器。當(dāng)最初執(zhí)行文件系統(tǒng)軟件140時,它分配至少一個孔圖205用作 數(shù)據(jù)存儲器115的存儲區(qū)的位圖表示??梢栽跀?shù)據(jù)存儲器115的磁盤 驅(qū)動器巻的起始位置創(chuàng)建孔圖205,并將其初始化為零(0)。孔圖205 中的每個孔可包括與單個存儲區(qū)對應(yīng)的4位。如圖2所示,孔210對 應(yīng)存儲區(qū)215???20對應(yīng)存儲區(qū)225???30對應(yīng)存儲區(qū)235,并且 孔240對應(yīng)存儲區(qū)245。孔圖205中的其它孔對應(yīng)數(shù)據(jù)存儲器115的另 外的存儲區(qū)。存儲區(qū)215、 225、 235和245在數(shù)據(jù)存儲器115上可具有相同的 物理大小。例如,數(shù)據(jù)存儲器115的每個存儲區(qū)可包括128MB的總存 儲區(qū)。然而,文件系統(tǒng)軟件140使用邏輯存儲塊大小將文件組織到存 儲區(qū)中,其中的邏輯存儲塊大小取決于每個存儲區(qū)中的數(shù)據(jù)類型。如
圖3所示,每個孔的兩位表示對應(yīng)存儲區(qū)的區(qū)域類型。在該實例中, 位設(shè)置(00)將對應(yīng)存儲區(qū)標(biāo)識為Cluster區(qū)域類型。位設(shè)置(01)將 對應(yīng)存儲區(qū)標(biāo)識為Bundle區(qū)域類型。位設(shè)置(10)將對應(yīng)存儲區(qū)標(biāo)識 為Wad區(qū)域類型。位設(shè)置(11)識別對應(yīng)存儲區(qū)為Throng區(qū)域類型。圖4是顯示每個存儲區(qū)類型的邏輯存儲塊大小的示例表。因此, 文件系統(tǒng)軟件140把被標(biāo)識為cluster區(qū)域類型的存儲區(qū)組織到大小均 為4K的邏輯存儲塊中。文件系統(tǒng)軟件140使用大小均為64K的邏輯 存儲塊來組織被標(biāo)識為bundle區(qū)域類型的存儲區(qū)。文件系統(tǒng)軟件140 使用大小均為256K的邏輯存儲塊來組織被標(biāo)識為wad區(qū)域類型的存 儲區(qū)。文件系統(tǒng)軟件140使用大小均為1024K的邏輯存儲塊來組織被 標(biāo)識為throng區(qū)域類型的存儲區(qū)。分配給存儲區(qū)的邏輯存儲塊大小與文件系統(tǒng)用來將文件數(shù)據(jù)存儲 在存儲區(qū)中的內(nèi)存中的高速緩沖區(qū)的大小相對應(yīng)。例如,保存在被指 定為cluster區(qū)域類型的存儲區(qū)中的數(shù)據(jù),將被文件系統(tǒng)軟件140使用 一個或多個4K存儲緩沖器來高速緩存在內(nèi)存中。保存在被指定為 bundle區(qū)域類型的存儲區(qū)中的數(shù)據(jù)將被文件系統(tǒng)軟件140使用一個或 多個64K存儲緩沖器來高速緩存在內(nèi)存中。相同的數(shù)據(jù)高速緩存操作 可擴展到被指定為wad區(qū)域類型(256K高速緩存存儲緩沖器),以及 被指定為throng區(qū)域類型(1024K高速緩存存儲緩沖器)的存儲區(qū)??讏D205中的每個孔可包括表示在相應(yīng)的存儲區(qū)中的文件數(shù)據(jù)使 用的空間量的信息。因此,每個孔的剩余兩位可被用于編碼使用信息。 圖5是顯示對存儲區(qū)使用進行編碼的一種方式的表。在該實例中,位 設(shè)置(00)被用于表示對應(yīng)存儲區(qū)為空。位設(shè)置(10)被用于表示對 應(yīng)存儲區(qū)部分地填充有文件數(shù)據(jù)。位設(shè)置(11)被用于表示對應(yīng)存儲 區(qū)完全填滿文件數(shù)據(jù),從而禁止文^t^系統(tǒng)軟件140將更多數(shù)據(jù)存儲在 該對應(yīng)存儲區(qū)中。還可以使用其它位設(shè)置來表示特定存儲區(qū)在特定值 之上或之下。特定存儲區(qū)被指定為cluster、 bundle、 wad還是throng取決于存儲 在存儲區(qū)中的數(shù)據(jù)的文件類型。由于應(yīng)用程序趨于使用不同的方式來 存取不同的文件類型,所以可變邏輯存儲塊大小允許優(yōu)化每個存儲區(qū) 的對不同類型的文件的讀和寫。例如,與視頻媒體文件相關(guān)聯(lián)的數(shù)據(jù)
可一次性進行大段的存取。這樣,文件系統(tǒng)軟件140可以更加有效地 使用很大的邏輯存儲塊大小(諸如,wad或throng)來組織這種視頻媒 體數(shù)據(jù),以用于后續(xù)的例如被視頻播放器應(yīng)用軟件存取。同樣,盡管 這種音頻媒體段可能比對應(yīng)的視頻媒體數(shù)據(jù)段小,但是與音頻媒體文 件相關(guān)聯(lián)的數(shù)據(jù)可一次性進行大段的存取。因此,文件系統(tǒng)軟件140 可以有效地使用中等大小的邏輯存儲塊結(jié)構(gòu)(諸如,bundle或wad) 來組織音頻媒體數(shù)據(jù)。文件系統(tǒng)軟件140可以使用duster-大小的邏輯 存儲塊來有效地處理與其它文件類型相關(guān)聯(lián)的數(shù)據(jù)。另外,duster-大 小的邏輯存儲塊可被用于組織不確定的文件類型。圖6的表格示出了各種文件類型和文件系統(tǒng)軟件140可分配給包 含該文件類型的數(shù)據(jù)的存儲區(qū)的區(qū)域類型的實例。這種表格可被結(jié)合 到文件系統(tǒng)軟件140中,用于指定與給定文件類型相關(guān)聯(lián)的各個區(qū)域 類型。這種關(guān)聯(lián)可以是可由用戶基于,例如,提供給系統(tǒng)100的初始 化參數(shù)來選擇的。以這種方式,系統(tǒng)100可由用戶來進行優(yōu)化,以處 理文件系統(tǒng)軟件140最可能遇到的文件類型。對于與正被使用的第一 文件類型相關(guān)聯(lián)的區(qū)域類型的匹配,文件系統(tǒng)軟件可使用按照所示順 序的這些映射。這些關(guān)系也可以由使用者/開發(fā)者來重寫。圖7是表示在文件增長或擴展時可被執(zhí)行的多個相互關(guān)聯(lián)的操作 的流程圖。如圖所示,在方框705,請求文件增長或擴展。在方框710, 文件系統(tǒng)軟件140試圖識別文件的內(nèi)容類型。對內(nèi)容類型的識別可以 通過多種不同方式來進行。例如,文件系統(tǒng)軟件140可將文件擴展與 圖6所示的各文件擴展進行比較,以確定文件類型。可替代地,或附 加地,文件系統(tǒng)軟件140可查看嵌入文件中的內(nèi)容,以識別文件類型。 一旦知道文件類型,在方框715,進行搜索以確定是否存在任何適于儲 文件數(shù)據(jù)的區(qū)域類型的存儲區(qū)。如果在方框720,存在有存儲空間的適 當(dāng)類型的(一個或多個)區(qū)域,在方框725,文件系統(tǒng)軟件140將該區(qū) 域分配給文件,并在必要時更新對應(yīng)存儲區(qū)的孔圖??梢酝ㄟ^檢査孔 圖205中與存儲區(qū)對應(yīng)的區(qū)域使用位,來確定存儲區(qū)是否有保存文件 數(shù)據(jù)的空間。如果區(qū)域使用位設(shè)置表示該區(qū)域為空,則文件系統(tǒng)軟件 140可使用該存儲區(qū)來存儲文件數(shù)據(jù)。如果位設(shè)置表示區(qū)域被部分填 充,則文件系統(tǒng)軟件140可通過,例如,計算空間中的已使用的位數(shù),來確定存儲區(qū)中的空閑空間的準(zhǔn)確量??墒褂么鎯^(qū)中的部分或全部 空閑空間來存儲部分或全部文件數(shù)據(jù)。
一旦知道空閑空間的量,就可以將其保存在例如RAM120中的表格中,以備后續(xù)使用。存儲區(qū)的空 閑空間的量的進一步改變可以被反映在該表格的更新中。 一旦文件系 統(tǒng)140識別出適當(dāng)區(qū)域類型的并且具有空閑空間的存儲區(qū),在方框730 所示的操作中,文件數(shù)據(jù)被保存在存儲區(qū)中。如果在方框720執(zhí)行的 操作未能為文件數(shù)據(jù)找到具有空閑存儲空間的適當(dāng)區(qū)域類型的存儲 區(qū),則在方框735可執(zhí)行一個或多個可替代存儲處理。圖8是顯示可以作為圖7的方框735所示的可替代存儲處理的一 部分來執(zhí)行的多個相互關(guān)聯(lián)的操作的流程圖。在方框805,文件系統(tǒng)軟 件140檢查孔圖205,以確定是否存在任何未分配區(qū)域類型的空存儲 區(qū)。如果存在這種空閑存儲區(qū),則文件系統(tǒng)軟件140通過,例如,更 新對應(yīng)存儲區(qū)的孔圖205,在方框810,將與文件類型對應(yīng)的區(qū)域類型 分配給空閑存儲區(qū)。在方框815所示的操作中,文件的數(shù)據(jù)被保存在 該存儲區(qū)中。如果在方框805沒有空閑存儲區(qū),則數(shù)據(jù)存儲器115的所有存儲 區(qū)都被分配了區(qū)域類型并可能包含數(shù)據(jù)。文件系統(tǒng)軟件140可以通過 多種不同方式來處理這種情況。在圖8所示的示例操作中,在方框820, 文件系統(tǒng)軟件140進行檢查,以確定是否存在向系統(tǒng)、文件類型,和/ 或特定文件進行分配的區(qū)域類型分配行為。這樣,區(qū)域類型分配行為 可以在系統(tǒng)級(通過文件類型)和/或單個文件級上實現(xiàn)。該行為可由 用戶在系統(tǒng)100的幵發(fā)過程中和/或在系統(tǒng)初始化過程中進行選擇。圖8中示出了兩個區(qū)域類型分配行為。它們被標(biāo)記為"較大邏輯 存儲塊"行為和"較小邏輯存儲塊"行為。如果方框820的操作表示 將表現(xiàn)出"較大邏輯存儲塊"行為,則在方框825,文件系統(tǒng)軟件140 繼續(xù)執(zhí)行對應(yīng)的較大邏輯存儲塊處理。如果方框820的操作表示將表 現(xiàn)出"較小邏輯存儲塊"行為,則在方框835,文件系統(tǒng)軟件140搜索 孔圖205,以找出具有更小一級的邏輯存儲塊大小且有一些空閑空間來 存儲文件數(shù)據(jù)的區(qū)域類型的存儲區(qū)。例如,如果要存儲的文件數(shù)據(jù)原 本是與wad區(qū)域類型相關(guān)聯(lián)的,則文件系統(tǒng)軟件140將搜索孔圖205, 以找出具有bundle區(qū)域類型且有一些可用來保存文件數(shù)據(jù)的空間的一
個或多個存儲區(qū)。如果更小一級的邏輯存儲塊大小的一個或多個存儲區(qū)可用來存儲文件數(shù)據(jù),則在方框855,文件系統(tǒng)軟件140將文件數(shù)據(jù) 保存在該存儲區(qū)中,并可以相應(yīng)地(即,部分、全部,等)更新孔圖 205。重復(fù)執(zhí)行一個或多個上述操作,直到可被保存在該區(qū)域類型級上 的文件的所有數(shù)據(jù)都被保存為止。如果在方框835的操作未能分配適當(dāng)?shù)膮^(qū)域用于保存文件數(shù)據(jù), 或者在先前的操作中已經(jīng)存儲了一些數(shù)據(jù)之后還有剩余的數(shù)據(jù)要存 儲,則在方框840進行檢查,以確定在方框835搜索的最后一個區(qū)域 類型是否與文件系統(tǒng)中可用的最小邏輯存儲塊大小區(qū)域相對應(yīng)。如果 它不對應(yīng)于最小區(qū)域類型,則文件系統(tǒng)軟件140將繼續(xù)搜索具有更小 一級的邏輯存儲塊大小相關(guān)聯(lián)的區(qū)域類型的存儲區(qū),并將文件數(shù)據(jù)存 儲到該存儲區(qū)中。使用前述實例,文件系統(tǒng)軟件140將搜索孔圖205, 以找出具有cluster區(qū)域類型且具有可用于保存文件數(shù)據(jù)的可用空間的 一個或多個存儲區(qū)。如果找到這種區(qū)域,則方框845的操作將被執(zhí)行。 如果文件系統(tǒng)軟件140使用"較小邏輯存儲塊"行為未能查找到適當(dāng) 區(qū)域用于存儲文件數(shù)據(jù),則在方框850可以進行檢査,以確定是否存 在任何具有較大邏輯存儲塊大小的并且具有用來保存文件數(shù)據(jù)的空間 的存儲區(qū)。在已經(jīng)實施較大邏輯存儲塊行為的那種情況下,在方框850 的操作中,僅需考慮具有尚未被搜索過的邏輯存儲塊大小的存儲區(qū)。 如果文件系統(tǒng)軟件140不能分配具有較大邏輯存儲塊大小的適當(dāng)區(qū)域 來存儲文件數(shù)據(jù),則在方框855將宣布磁盤已滿錯誤。否則,在方框 850識別出的存儲區(qū)可以在方框860被降級為較小值的區(qū)域類型,諸如 duster區(qū)域類型或與文件類型對應(yīng)的區(qū)域類型。在方框865,將數(shù)據(jù)保 存在存儲區(qū)中。同樣,重復(fù)一個或多個前述操作,直到可被保存在給 定區(qū)域類型等級上的文件的所有數(shù)據(jù)都被保存為止。圖9是顯示用于實現(xiàn)圖8的方框825所示的較大邏輯存儲塊行為 的多個相互關(guān)聯(lián)的操作的流程圖。如圖所示,在方框905,文件系統(tǒng)軟 件140搜索孔屈205以找出具有更大一級的邏輯存儲塊大小且有用以 保存文件數(shù)據(jù)的空閑空間的區(qū)域類型的存儲區(qū)。例如,如果要存儲的 文件數(shù)據(jù)原本是與bundle區(qū)域類型相關(guān)聯(lián)的,則文件系統(tǒng)軟件140將 搜索孔圖205以找出具有wad區(qū)域類型且有用以保存文件數(shù)據(jù)的可用
空間的一個或多個存儲區(qū)。如果更大一級的邏輯存儲塊大小的一個或多個存儲區(qū)可用于存儲文件數(shù)據(jù),則在方框910,文件系統(tǒng)軟件140 將文件數(shù)據(jù)存儲在該存儲區(qū)中。如果在方框905的操作未能查找到適當(dāng)?shù)膮^(qū)域用于保存文件數(shù)據(jù), 則在方框915進行檢査,以確定在方框905搜索的最后一個區(qū)域類型 是否與要搜索的最大邏輯存儲塊大小的區(qū)域相對應(yīng)。要搜索的最大邏 輯存儲塊大小的區(qū)域可以由用戶通過編程來進行選擇。如果它不對應(yīng) 于最大邏輯存儲塊大小,則在方框905,文件系統(tǒng)軟件140將繼續(xù)搜索 具有與更大一級的邏輯存儲塊大小相關(guān)聯(lián)的區(qū)域類型的存儲區(qū)。使用 前述實例,文件系統(tǒng)軟件140將搜索孔圖205以找出具有throng區(qū)域 類型且有用以保存文件數(shù)據(jù)的可用空間的一個或多個存儲區(qū)。如果找 到這種區(qū)域,則方框910的操作將被執(zhí)行。如果在搜索了所有允許的 較大邏輯存儲塊大小之后,文件系統(tǒng)軟件140未能查找到適當(dāng)區(qū)域用 于存儲文件數(shù)據(jù),則文件系統(tǒng)軟件140可以在方框920開始執(zhí)行較小 邏輯存儲塊行為。在圖8中示出了這種較小邏輯存儲塊行為。在圖7、 8和9所示的操作中,文件數(shù)據(jù)的特定存儲區(qū)的選擇可以 按多種不同方式進行。例如,可以選擇具有最大空閑空間量的存儲區(qū) 來存儲文件數(shù)據(jù)??商娲兀梢赃x擇具有最小空閑空間量的存儲區(qū) 來存儲文件數(shù)據(jù)。此外,文件系統(tǒng)軟件140可以將其識別出的滿足區(qū) 域類型和空間標(biāo)準(zhǔn)的第 一存儲區(qū)分配用來存儲文件數(shù)據(jù)。雖然本文描述了本發(fā)明的各實施例,但對于那些具備本領(lǐng)域的普 通技術(shù)的人員來說,顯然在本發(fā)明的范圍內(nèi)可以有很多種實施方式和 具體實現(xiàn)。因此,本發(fā)明并不局限于此,而是以所附的權(quán)利要求及其 等效體為準(zhǔn)。
權(quán)利要求
1.一種系統(tǒng),包括處理器;可由所述處理器進行存取的數(shù)據(jù)存儲設(shè)備;可由所述處理器執(zhí)行以在所述數(shù)據(jù)存儲設(shè)備上組織文件的文件系統(tǒng)軟件,其中所述文件系統(tǒng)軟件可被執(zhí)行用于在所述數(shù)據(jù)存儲設(shè)備上將文件組織到具有不同邏輯存儲塊大小的存儲區(qū)中,所述邏輯存儲塊大小取決于文件類型。
2. 如權(quán)利要求l所述的系統(tǒng),其中,所述文件類型包括視頻數(shù)據(jù) 文件、音頻數(shù)據(jù)文件和可執(zhí)行文件。
3. 如權(quán)利要求2所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于以比音頻數(shù)據(jù)文件大的邏輯存儲塊來組織視頻數(shù)據(jù)文件。
4. 如權(quán)利要求3所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于以比可執(zhí)行文件大的邏輯存儲塊來組織音頻數(shù)據(jù)文件。
5. 如權(quán)利要求l所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于生成與所述數(shù)據(jù)存儲設(shè)備相關(guān)聯(lián)的孔圖,并且其中,所述孔圖包 括表示所述數(shù)據(jù)存儲設(shè)備的多個存儲區(qū)中的每一個的邏輯存儲塊大小 的數(shù)據(jù)。
6. 如權(quán)利要求5所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于在所述數(shù)據(jù)存儲設(shè)備上的接近巻的起始部分處生成所述孔圖。
7. 如權(quán)利要求5所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于將表示所述存儲設(shè)備的被映射的存儲區(qū)的使用程度的數(shù)據(jù)存儲在 所述孔圖中。
8. 如權(quán)利要求l所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于使用文件的文件名來識別文件的文件類型。
9. 如權(quán)利要求l所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于使用嵌入的文件信息來識別文件的文件類型。
10. 如權(quán)利要求1所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于在與所述文件類型對應(yīng)的邏輯存儲塊大小的區(qū)域不可用時,將文 件數(shù)據(jù)存儲在具有較小的邏輯存儲塊大小的區(qū)域中。
11. 如權(quán)利要求l所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí)行 用于在與所述文件類型對應(yīng)的邏輯存儲塊大小的區(qū)域不可用時,將文 件數(shù)據(jù)存儲在存儲器的降級的區(qū)域中。
12. —種系統(tǒng),包括 處理器;可由所述處理器進行存取的數(shù)據(jù)存儲設(shè)備;可由所述處理器執(zhí)行以在所述數(shù)據(jù)存儲設(shè)備上組織文件的文件系 統(tǒng)軟件,其中所述文件系統(tǒng)軟件可被執(zhí)行用于在所述數(shù)據(jù)存儲設(shè)備上 使用具有第一邏輯存儲塊大小的第一區(qū)域類型和具有第二邏輯存儲塊 大小的第二區(qū)域類型來組織文件,所述第二邏輯存儲塊大小不同于所 述第一邏輯存儲塊大小,并且其中,所述文件系統(tǒng)軟件還可被執(zhí)行用 于將第一文件類型的文件數(shù)據(jù)存儲在所述第一區(qū)域類型的存儲區(qū)中, 和將第二文件類型的文件數(shù)據(jù)存儲在所述第二區(qū)域類型的存儲區(qū)中。
13. 如權(quán)利要求12所述的系統(tǒng),其中,所述第一文件類型包括視 頻數(shù)據(jù)文件,并且所述第二文件類型包括音頻數(shù)據(jù)文件。
14. 如權(quán)利要求13所述的系統(tǒng),其中,所述第一邏輯存儲塊大小 大于所述第二邏輯存儲塊大小。
15. 如權(quán)利要求12所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí) 行用于生成與所述數(shù)據(jù)存儲設(shè)備的存儲區(qū)對應(yīng)的孔圖,其中所述孔圖 包括表示一個區(qū)域?qū)儆谒龅谝换蛘叩诙^(qū)域類型的數(shù)據(jù)。
16. 如權(quán)利要求15所述的系統(tǒng),其中,通過所述文件系統(tǒng)軟件的 執(zhí)行而生成的所述孔圖被存儲在所述數(shù)據(jù)存儲設(shè)備上接近巻的起始部 分處。
17. 如權(quán)利要求15所述的系統(tǒng),其中,所述孔圖包括表示被映射 到所述孔圖中的存儲設(shè)備的存儲區(qū)的使用程度的數(shù)據(jù)。
18. 如權(quán)利要求12所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí) 行用于使用文件的文件名來識別文件的文件類型。
19. 如權(quán)利要求12所述的系統(tǒng),其中,所述文件系統(tǒng)軟件可被執(zhí) 行用以使用嵌入的文件信息來識別文件的文件類型。
20. —種數(shù)據(jù)存儲設(shè)備,包括 多個大小相等的存儲區(qū);孔圖,其具有標(biāo)識與所述多個大小相等的存儲區(qū)中的每一個相關(guān) 聯(lián)的邏輯存儲塊大小的數(shù)據(jù),其中所述多個大小相等的存儲區(qū)中的至 少兩個具有不同的邏輯存儲塊大小。
21. 如權(quán)利要求20所述的數(shù)據(jù)存儲設(shè)備,其中,與所述多個大小 相等的存儲區(qū)中的給定存儲區(qū)相關(guān)聯(lián)的邏輯存儲塊大小取決于存儲在 該給定存儲區(qū)中的數(shù)據(jù)的文件類型。
22. —種數(shù)據(jù)存儲設(shè)備,包括可由所述處理器執(zhí)行用于在所述數(shù)據(jù)存儲設(shè)備上組織文件的文件 系統(tǒng)軟件;存儲第一文件類型的數(shù)據(jù)并具有第一邏輯存儲塊大小的第一存儲 區(qū);禾口 具有與所述第一邏輯存儲塊大小不同的第二邏輯存儲塊大小的第 二存儲區(qū),其中第二文件類型的數(shù)據(jù)被保存在所述第二存儲區(qū)中。
全文摘要
本文提出了一種系統(tǒng),該系統(tǒng)包括處理器、可由處理器存取的數(shù)據(jù)存儲設(shè)備,和可由處理器執(zhí)行以在數(shù)據(jù)存儲設(shè)備上組織文件的文件系統(tǒng)軟件。文件系統(tǒng)軟件可被執(zhí)行用于在數(shù)據(jù)存儲設(shè)備上將文件組織到具有不同邏輯存儲塊大小的存儲區(qū)中,其中的邏輯存儲塊大小取決于文件類型。在一種實現(xiàn)中,文件系統(tǒng)軟件可被執(zhí)行用于生成與數(shù)據(jù)存儲設(shè)備相關(guān)聯(lián)的孔圖。孔圖包括表示數(shù)據(jù)存儲設(shè)備的多個存儲區(qū)中的每一個存儲區(qū)的邏輯存儲塊大小的數(shù)據(jù),可選地,孔圖可以包括表示多個存儲區(qū)中的每一個存儲區(qū)的使用程度的數(shù)據(jù)。文件系統(tǒng)可使用文件的文件名和/或嵌入的文件信息來識別文件類型。
文檔編號G06F17/30GK101131672SQ200710141910
公開日2008年2月27日 申請日期2007年8月16日 優(yōu)先權(quán)日2006年8月25日
發(fā)明者D·道奇, P·范·德·費恩 申請人:Qnx軟件操作系統(tǒng)德國有限公司