專利名稱:用于實現(xiàn)命令同步以支持多線程非易失性存儲器文件系統(tǒng)的方法
用于實現(xiàn)命令同步以支持多線程非易失性存儲器文件系統(tǒng)的方法背景技術(shù)可以將非易失性存儲器的文件系統(tǒng)組織成目錄-文件結(jié)構(gòu),如樹形 結(jié)構(gòu)。樹根可以是根目錄。遍歷該樹,根目錄可以與一個或多個目錄 關(guān)聯(lián),然后各目錄可以與一個或多個文件關(guān)聯(lián)。每個目錄或文件可以 具有可以在非易失性存儲器中的不同位置動態(tài)分配的一個或多個扇 區(qū)。這些扇區(qū)可以通過諸如序列表的數(shù)據(jù)結(jié)構(gòu)來鏈接。如果對相同的 文件或目錄存在多個并發(fā)的讀取/寫入命令,那么高優(yōu)先級的寫入可以 搶先于低優(yōu)先級的讀取/寫入。在高優(yōu)先級寫入完成之后,高優(yōu)先級寫 入可能將序列表移到新的物理位置(如替換)。但是,低優(yōu)先級的讀 取/寫入命令可能不知道序列表的新位置。對不同文件的多次寫入可能 導(dǎo)致父目錄位置改變,會出現(xiàn)類似的情形。
附圖中通過舉例而非限制性地示出本文所述的發(fā)明。為簡單、清 楚地說明,圖中所示的元件不一定按比例繪制。例如,為清楚起見, 某些元件的尺寸可能相對于其它元件有所夸大。此外,在認(rèn)為適當(dāng)時, 各圖中重復(fù)使用附圖標(biāo)記來指示對應(yīng)或類似的元件。圖1示出非易失性存儲器的文件系統(tǒng)的一個實施例。圖2示出非易失性存儲器的文件系統(tǒng)中的信息片段的一個實施例。圖3示出非易失性存儲器的文件系統(tǒng)中的序列表的一個實施例。 圖4示出諸如跟蹤表和附接到(attachedto)該跟蹤表的對應(yīng)列表的 數(shù)據(jù)結(jié)構(gòu)的一個實施例。圖5示出本發(fā)明的系統(tǒng)的一個實施例。圖6是示出可用于讀取非易失性存儲器的文件或目錄的方法的一 個實施例的流程圖。圖7是示出可用于寫入非易失性存儲器的文件或目錄的方法的一 個實施例的流程圖。
具體實施方式
以下說明描述了用于實現(xiàn)命令同步以支持諸如多線程閃存文件 系統(tǒng)的非易失性存儲器文件系統(tǒng)的技術(shù)。在以下描述中,闡述了眾多 具體細(xì)節(jié),如邏輯實現(xiàn)、操作代碼、指定操作數(shù)的方式、資源劃分/ 共享/復(fù)制實現(xiàn)、系統(tǒng)組件的類型和相互關(guān)系、以及邏輯劃分/集成選 擇等,以便更充分地了解本發(fā)明。但是,在沒有這些具體細(xì)節(jié)的情況 下,也可以實現(xiàn)本發(fā)明。說明書中提到"一個實施例"、"實施例"、"示例實施例"等 時是指示,所描述的實施例可以包括特定的特征、結(jié)構(gòu)或特性,但是 不是每個實施例都一定要包括該特定的特征、結(jié)構(gòu)或特性。而且,這 些短語不一定是指同一個實施例。另外,當(dāng)結(jié)合一個實施例來描述特 定特征、結(jié)構(gòu)或特性時,認(rèn)為不管是否有明確描述,結(jié)合其它實施例 來實現(xiàn)該特征、結(jié)構(gòu)或特性均屬于本領(lǐng)域的技術(shù)人員應(yīng)知的。現(xiàn)在參照圖1,非易失性存儲器的文件系統(tǒng)100可以包括例如樹 形目錄-文件結(jié)構(gòu)。在一個實施例中,文件系統(tǒng)100可以包括根目錄 110。根目錄110可以包括根目錄信息片段112。在另一個實施例中, 文件系統(tǒng)100還可包括目錄120;但是,其它實施例可以包括不同數(shù) 量的目錄。在另一個實施例中,文件系統(tǒng)IOO可以包括更多層級的目 錄。目錄120可以包括目錄信息片段122。在一個實施例中,根目錄 信息片段112可以包括一個或多個項,每個項可以與目錄信息片段關(guān) 聯(lián)。例如,項114可以包括指向目錄信息片段122的指針。在一個實 施例中,該指針可以指向目錄信息片段122的第一扇區(qū)。在一個實施例中,文件系統(tǒng)IOO還可包括文件130;但是,其它實施例可以包括不同數(shù)量的文件。例如,文件130可以包括文件信息 片段140。目錄信息片段122可以包括與文件信息片段140關(guān)聯(lián)的項 124;《旦是,其它實施例可以包括不同數(shù)量的項。例如,項124可以 包括指向文件信息片段140 (如文件信息片段140的第一扇區(qū))的指 針。在一個實施例中,文件130還可包括零個或更多個序列表,例如 序列表可以利用諸如列表、陣列等的各種數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)。在一個實 施例中,文件130可以包括具有零個或更多個子序列表的根序列表, 以便適應(yīng)不同數(shù)量的文件數(shù)據(jù)片段。例如,圖1示出,文件130包括 具有兩個子序列表160a和160b的根序列表150。在一個實施例中, 序列表可以包括一個或多個扇區(qū)。參照圖1,在一個實施例中,文件信息片段140可以包括與根序 列表150關(guān)聯(lián)的項141。例如,項141可以包括指示根序列表150的 位置(例如,根序列表150的第一扇區(qū))的指針。在另一個實施例中, 文件信息片段140可以包括一個或多個項(如指針),如果因為文件 信息片段140中的項數(shù)不少于文件130中的文件數(shù)據(jù)片段的數(shù)目而不 需要序列表,那么這個或這些項可以各自直接指向?qū)?yīng)的文件數(shù)據(jù)片 段(如文件數(shù)據(jù)片段171-176)。在另一個實施例中,根序列表150可以包括各自與子序列表關(guān)聯(lián) 的一個或多個項。例如,根序列表150可以包括分別與子序列表160a 和160b關(guān)聯(lián)的項151和152。在另一個實施例中,根序列表150可以 包括一個或多個項,如果因為根序列表150中的項數(shù)不少于文件130 中的文件數(shù)據(jù)片段的數(shù)目而不需要子序列表,那么這個或這些項可以 各自與對應(yīng)的文件數(shù)據(jù)片段關(guān)聯(lián)。在又一個實施例中,每個項151和 152可以包括可以分別指示子序列表160a和160b的位置的指針。例 如,指針可以指向子序列表的第一扇區(qū)。參照圖1,文件130可以包括一個或多個文件數(shù)據(jù)片段,如文件 數(shù)據(jù)片段171-176。在一個實施例中,子序列表160a和160b可以包 括多個各自分別與文件數(shù)據(jù)片段171-176關(guān)聯(lián)的項。例如,子序列表160a和160b可以包括多個各自指示文件數(shù)據(jù)片段171-176中對應(yīng)一 個文件數(shù)據(jù)片段的位置的指針。盡管圖1示出,文件130可以包括一 個根序列表和兩個子序列表,但在其它實施例中,文件系統(tǒng)100可以 為根目錄或目錄分別包括一個根序列表和一個或多個子序列表以適 應(yīng)更多的目錄和文件。在另 一個實施例中,文件系統(tǒng)100可以包括多 個層級的子序列表?,F(xiàn)在參照圖2,示出信息片段200的一個實施例。例如,信息片 段200可以包括根目錄信息片段、目錄信息片段或文件信息片段。在 一個實施例中,信息片段200可以包括可以是連續(xù)的 一個或多個扇區(qū)。 在另 一個實施例中,信息片段200可以包括一個或多個項230的數(shù)據(jù) 結(jié)構(gòu),這個或這些項230各自指示鏈接到信息片段200的對應(yīng)片段的 位置。例如,每個項212、 214和216可以包括指向附接到信息片段 200的片段或根序列表(如其第一扇區(qū))的指針;但是,在其它實施 例中,信息片段200可以包括不同數(shù)量的項。例如,圖l中的根目錄 信息片段112可以包括與目錄信息片段122關(guān)聯(lián)的項114 (如指針)。 在另一個實施例中,信息片段200可以包括為將來的項保留的一個或 多個空白項。例如,空白項可以跟在已有項之后。在又一個實施例中, 信息片段200可以包括具有相同的索引或序號的一個或多個項。例如, 項212、 218和222可以具有相同的序號,如'T,。這三個項的最后 一個項222可以;現(xiàn)為是最新的有效項,并且項212和218可以;見為無 效。類似地,項214和220可以具有相同的序號"2"。最后一個項 220可以視為是最新的有效項,且項214可以視為無效。參照圖3,示出序列表300的一個實施例。例如,序列表300可 以包括根序列表或子序列表。在一個實施例中,序列表300可以包括 可以是連續(xù)的一個或多個扇區(qū)。在另一個實施例中,序列表300可以 包括諸如列表、陣列等的數(shù)據(jù)結(jié)構(gòu)。例如,序列表可以包括用于指示 片段間的鏈接的第一字段310和第二字段320。例如,參照圖1,文 件數(shù)據(jù)片段171-176可以經(jīng)由根序列表150及子序列表160a和160b鏈接到文件信息片段140,其中根序列表150是父序列表。在一個實施例中,第一字段310可以包括替換指針字段,而第二 字段320可以包括位置指針字段。在另一個實施例中,第二字段320 可以指示附接到序列表300的片段或子序列表的位置。第一字段310 可以表示用于更新笫二字段320的已有項的新項的位置。例如,第二 字段320的項321可以包括與已有片段關(guān)聯(lián)的位置指針1。如果用新 片段替換該已有片段或?qū)⒃撘延衅我频叫挛恢?,那么第一字?10 的項312可以包括指向項324的第一替換指針,其中項324可以包括 用于替換項321的第一位置指針的指向新片段或新位置的第一新位置 指針。此外,第二字段320的項322和323可以分別包括第二和第三 位置指針,它們可以各自指向一個片段。第一字段310的項314可以 包括指向項325的第三替換指針,其中項325可以包括用于替換項323 的第三位置指針的第三新位置指針?,F(xiàn)在參照圖4,示出數(shù)據(jù)結(jié)構(gòu)400的一個實施例。數(shù)據(jù)結(jié)構(gòu)400 可以存儲關(guān)于并發(fā)操作的 一個或多個文件和/或一個或多個目錄的信 息或主要信息。數(shù)據(jù)結(jié)構(gòu)400可以用諸如列表、陣列等各種形式來實 現(xiàn)。在一個實施例中,可以利用該信息來標(biāo)識一個或多個文件或目錄。 參照圖4,第一元素416可以與文件相關(guān),而第二元素418可以與目 錄相關(guān)。在一個實施例中,數(shù)據(jù)結(jié)構(gòu)400可以包括跟蹤表。在另一個 實施例中,數(shù)據(jù)結(jié)構(gòu)400可以包括一個或多個字段,如字段411-415。 例如,對于每個元素,第一字段411可以包括可標(biāo)識由并發(fā)操作之一 操作的文件或目錄的標(biāo)識符;第二字段412可以指示與該文件或目錄 關(guān)聯(lián)的位置,如該文件或目錄的根扇區(qū)或第一扇區(qū)的位置;第三字段 413可以包括可指示該文件或目錄的類型的屬性;第四字段414可以 指示與該文件或目錄關(guān)聯(lián)的列表(如420或430)中的元素的數(shù)量, 如對該文件或目錄的并發(fā)操作的數(shù)量;第五字段415可以包括到該列 表的鏈接,如到列表中的第一元素的地址或指針。但是,其它實施例 可以包括不同的字段以適應(yīng)不同的主要信息。在另一個實施例中,數(shù)據(jù)結(jié)構(gòu)400可以在易失性存儲器中動態(tài)地分配。數(shù)據(jù)結(jié)構(gòu)400中的元 素數(shù)量可以取決于同時操作(如讀取或?qū)懭?的文件或目錄的數(shù)量。圖4還示出分別對應(yīng)于第一元素416和第二元素418的第一列表 420和第二列表430的一個實施例。在一個實施例中,第一和第二列 表420或430可以包括各種類型的數(shù)據(jù)結(jié)構(gòu),如信號鏈接列表、雙向 鏈接列表、陣列、向量等。第一列表420可以包括用于跟蹤對由元素 416指示的同一個文件的所有并發(fā)操作的進(jìn)度的一個或多個元素。在 一個實施例中,第一列表420可以包括分別與操作READ 1、 READ 2 和WRITE 1關(guān)聯(lián)的元素421-423;但是,其它實施例可以包括不同數(shù) 量的元素以便適應(yīng)不同數(shù)量的操作,并且可以適用于不同的操作。在 另一個實施例中,第一列表420可以動態(tài)地存儲在易失性存儲器中, 并且元素421-423可以在易失性存儲器的不同地址處動態(tài)地分配。參照圖4,在一個實施例中,第一列表420中的每個元素可以包 括進(jìn)度信息(progress information)或數(shù)據(jù)字段424,該進(jìn)度信息或數(shù)據(jù) 字段424可以包括關(guān)于并發(fā)操作之一的進(jìn)度信息或進(jìn)度數(shù)據(jù),例如操 作中正在才喿作的扇區(qū)的位置或指針。例如,所述扇區(qū)可以屬于一個或 多個信息片段或序列表。在另一個實施例中,所述扇區(qū)可以包括一個 或多個信息片段或序列表的第一扇區(qū)。第一列表420中的每個元素還 可包括鏈接信息或數(shù)據(jù)字段或下一個元素位置字段426,鏈接信息或 數(shù)據(jù)字段或下一個元素位置字段426可鏈接與同一個文件或目錄有關(guān) 的一個或多個元素(如421-423 )。例如,下一個元素位置字,殳426 可以包括到第一列表420中的下一個元素的地址或指針。例如,下一 個元素指針字段426可以指示其中存儲了有關(guān)下一個操作的元素在易 失性存儲器中的地址。例如,第一列表420中的第一元素421可以包 括READ 1中正在讀取的扇區(qū)的位置和與下一個操作READ2關(guān)聯(lián)的 地址1 。在另 一個實施例中,最后一個元素423可以包括WRITE 1中 正在寫入的扇區(qū)的位置和空的下一個元素位置字段,這是因為第一列 表420中不存在任何下一個操作。類似地,與元素418指示的目錄關(guān)聯(lián)的第二列表430可以包括對該目錄的操作信息。對第二列表430的 描述可以參照對列表420的描述,因此這里不再贅述。盡管將第一和 第二列表420和430示為與數(shù)據(jù)結(jié)構(gòu)400分開,但在其它實施例中, 每個列表的元素可以包含在數(shù)據(jù)結(jié)構(gòu)400中?,F(xiàn)在參照圖5,示出根據(jù)本發(fā)明的一個實施例的系統(tǒng)級和無述的圖。 如圖5所示,系統(tǒng)500包括處理器510、非易失性存儲器520和易失 性存儲器530。處理器510可以是適于執(zhí)行非易失性存儲器520或易 失性存儲器530中的操作的任何類型的處理器。例如,處理器510可 以是微處理器、數(shù)字信號處理器、微控制器等。非易失性存儲器520可以包括非易失性存儲器等。處理器510和 非易失性存儲器520可以通過總線515耦合。易失性存儲器530可以 包括RAM等。處理器510和易失性存儲器530可以通過總線525耦 合。在一個實施例中,處理器510、非易失性存儲器裝置520和易失 性存儲器530可以包含在集成電路板上,并且總線515和525可以利 用電路板上的跡線來實現(xiàn)。在另一個實施例中,處理器510、非易失 性存儲器520和易失性存儲器530可以包含在同一個集成電路內(nèi),并 且總線515和525可以利用集成電if各內(nèi)的互連來實現(xiàn)。處理器510可以執(zhí)行非易失性存儲器520或易失性存儲器530中 的操作。在一個實施例中,處理器510可以執(zhí)行將在以下段落中描述 的如圖6和7所示的方法中的才喿作。在一個實施例中,處理器510可 以不是專用于非易失性存儲器520,并且處理器510可以在執(zhí)行其它 系統(tǒng)功能的同時執(zhí)行非易失性存儲器520或易失性存儲器530中的操 作。圖6中示出一種示例方法,處理器510可以使用該方法從非易失 性存儲器520中讀取文件或目錄。在一個實施例中,處理器510可以 在易失性存儲器530中建立數(shù)據(jù)結(jié)構(gòu)(如400),該數(shù)據(jù)結(jié)構(gòu)可以包 括一個或多個元素,其中每個元素可以記錄關(guān)于正在操作的文件或目 錄的主要信息。在另一個實施例中,處理器510可以在易失性存儲器中建立一個或多個列表(如420和430),這個或這些列表可以附接 到數(shù)據(jù)結(jié)構(gòu)400的每個元素,并且可以包括關(guān)于對每個元素標(biāo)識的文 件或目錄的所有并發(fā)操作的進(jìn)度信息。在又一個實施例中,取代使用 一個或多個列表,處理器510可以為所有并發(fā)操作在數(shù)據(jù)結(jié)構(gòu)400中 組合列表420和430中的元素。以下對圖6中的方法的描述可以參照 圖4中的實施例;但是,其它實施例可以采用不同的數(shù)據(jù)結(jié)構(gòu)來跟蹤關(guān)于每個并發(fā)操作的信息。在方框602,處理器510可以為諸如READ 1的READ操作創(chuàng)建 新元素。參照圖4中的實施例,處理器510可以響應(yīng)確定數(shù)據(jù)結(jié)構(gòu)400 不包含關(guān)于READ1中正在操作的文件(如文件A)的元素而在數(shù)據(jù) 結(jié)構(gòu)400中創(chuàng)建新元素416,該新元素416可以包括關(guān)于文件A的信 息。在另一個實施例中,處理器510可以在第一列表420中為讀取文 件A的一個或多個扇區(qū)的READ 1創(chuàng)建新元素421 。元素421可以附 接到數(shù)據(jù)結(jié)構(gòu)400的元素416。在又一個實施例中,處理器510可以 在同一個數(shù)據(jù)結(jié)構(gòu)400中組合元素416和421。在方框604,處理器 510可以將元素421中的進(jìn)度信息初始化。在一個實施例中,處理器 510可以存儲READ1中正在讀取的文件A的扇區(qū)的位置。在另一個 實施例中,處理器510可以將元素421的地址添加到第一列表420的 前一個元素(未示出)中。在方框606,處理器510可以在元素421中^r索關(guān)于文件A的片 段(如片段X)的進(jìn)度信息。在一個實施例中,處理器510可以獲得 對應(yīng)于屬于片段X的一個或多個扇區(qū)的一個或多個位置。處理器510 可以根據(jù)在方框606中獲得的位置讀取片段X (方框608)。在一個 實施例中,處理器510可以找到在方框606獲得的位置,并由此讀取 片段X。在方框610,處理器510可以響應(yīng)確定片段X的讀取已完成 而更新元素421中的進(jìn)度信息或數(shù)據(jù)。在一個實施例中,處理器510 可以從元素421中刪除與片段X關(guān)聯(lián)的位置。在方框612,處理器510 可以確定是否存在READ 1中正在讀取的任何其它片段。在一個實施例中,處理器510可以響應(yīng)確定元素421不包含正在讀取的4壬^T扇區(qū) 的位置而確定已經(jīng)讀取完文件A的所有片段,并且處理器510可以從 笫一列表420中移除READ l的元素421 (方框614)。在另一個實 施例中,處理器510還可以在沒有更多關(guān)于文件A的操作時通過移除 元素416來更新數(shù)據(jù)結(jié)構(gòu)400。反之,處理器510可以響應(yīng)確定存在 READ 1中正在讀取的一個或多個片段而繼續(xù)執(zhí)行方框606、 608、 610 和612。在一個實施例中,處理器510可以基于元素421的進(jìn)度信息 或數(shù)據(jù)來確定是否存在READ1中正在讀取的一個或多個片段。盡管 特定參照圖4描述了圖6中的方法,但其它實施例可以適用于對不同 的文件或目錄的不同操作。圖7中示出一種示例方法,處理器510可以使用該方法將文件或 目錄寫入到非易失性存儲器520中。在一個實施例中,處理器510可 以在易失性存儲器530中建立數(shù)據(jù)結(jié)構(gòu)(如400),該數(shù)據(jù)結(jié)構(gòu)可以 包括一個或多個元素,其中每個元素可以記錄關(guān)于正在操作的文件或 目錄的主要信息。在另一個實施例中,處理器510可以在易失性存儲 器中建立一個或多個列表(如420和430),這個或這些列表可以附 接到數(shù)據(jù)結(jié)構(gòu)400的每個元素,并且可以包括關(guān)于對由每個元素標(biāo)識 的文件或目錄的所有并發(fā)操作的進(jìn)度信息。在又一個實施例中,不是 使用 一個或多個列表,而是處理器510可以為所有并發(fā)操作在數(shù)據(jù)結(jié) 構(gòu)400中組合列表420和430中的元素。以下對圖7中的方法的描述 可以參照圖4中的實施例;但是,其它實施例可以采用不同的數(shù)據(jù)結(jié) 構(gòu)來跟蹤關(guān)于每個并發(fā)操作的信息。在方框702,處理器510可以為諸如WRITE 1的WRITE操作創(chuàng) 建新元素。參照圖4中的實施例,處理器510可以響應(yīng)確定數(shù)據(jù)結(jié)構(gòu) 400不包含關(guān)于WRITE 1中正在操作的文件(如文件A)的元素而在 數(shù)據(jù)結(jié)構(gòu)400中創(chuàng)建新元素416,該新元素416可以包括關(guān)于文件A 的信息。在另一個實施例中,處理器510可以在第一列表420中為寫 入文件A的一個或多個扇區(qū)的WRITE 1創(chuàng)建新元素423。元素423可以附接到數(shù)據(jù)結(jié)構(gòu)400的元素416。在又一個實施例中,處理器510 可以在同一個數(shù)據(jù)結(jié)構(gòu)400中組合元素416和423。在方框704,處 理器510可以將元素423中的進(jìn)度信息初始化。在一個實施例中,處 理器510可以存儲WRITE 1中正在寫入的文件A的扇區(qū)的位置。在 另一個實施例中,處理器510可以將元素423的地址添加到第一列表 420的前一個元素(未示出)中。
在方框706,處理器510可以在元素423中;f全索關(guān)于文件A的片 段(如片段X)的進(jìn)度信息。在一個實施例中,處理器510可以獲得 對應(yīng)于屬于片段X的一個或多個扇區(qū)的一個或多個位置。處理器510 可以根據(jù)在方框706中獲得的位置寫入片段X (方框708)。在方框 710,處理器510可以確定在寫入片段X期間是否發(fā)生任何扇區(qū)或非 片段單元或片段替換。例如,響應(yīng)確定與片段X關(guān)聯(lián)的一個或多個序 列表和/或片段X ^皮移到一個或多個新物理位置(如扇區(qū)位置或非片 段單元位置),處理器510可以用一個或多個新位置更新與位置替換 有關(guān)的笫一列表420中的文件A的所有元素(方框712)。在一個實 施例中,處理器510可以根據(jù)位置移動用對應(yīng)的新位置替^:第一列表 420中的一個或多個原始扇區(qū)位置。在方框714,處理器510可以響 應(yīng)確定片段X的寫入已經(jīng)完成而更新元素423中的進(jìn)度信息或數(shù)據(jù)。 在一個實施例中,處理器510可以從元素423中刪除與片段X關(guān)聯(lián)的 位置。
在方框716,處理器510可以確定是否存在WRITE 1中正在寫入 的任何其它片段。在一個實施例中,處理器510可以響應(yīng)確定元素423 不包含正在寫入的任何扇區(qū)的位置而確定已經(jīng)寫完文件A的所有片 段,并且處理器510可以從第一列表420中移除WRITE 1的元素423 (方框718)。在另一個實施例中,處理器510還可以在沒有更多關(guān) 于文件A的操作時通過移除元素416來更新數(shù)據(jù)結(jié)構(gòu)400。反之,處 理器510可以響應(yīng)確定存在WRITE l正在中寫入的一個或多個片段而 繼續(xù)執(zhí)行方框706、 708、 710、 712、 714和716。在一個實施例中,處理器510可以基于元素423的進(jìn)度信息/數(shù)據(jù)確定是否有WRITE 1 中正在寫入的一個或多個片段。盡管特定參照圖4描述了圖7中的方
盡管將圖6和圖7的方法示為一系列操作,但在一些實施例中,
中,處理器510可以根據(jù)圖6和/或圖7同時執(zhí)行一個或多個并發(fā)操作。 在另一個實施例中,根據(jù)數(shù)據(jù)結(jié)構(gòu)400,處理器510可以在執(zhí)行任何 并發(fā)操作之前檢測在對一個文件或目錄的所有并發(fā)操作中是否存在 對該文件或目錄的高優(yōu)先級操作。如果處理器510檢測到存在這樣的 高優(yōu)先級操作,那么處理器510可以首先根據(jù)圖6或圖7執(zhí)行高優(yōu)先 級操作。在完成高優(yōu)先級操作之后,處理器510可以執(zhí)行其它并發(fā)操 作。在另一個實施例中,處理器510可以在執(zhí)行并發(fā)操作之一期間執(zhí) 行該檢測。響應(yīng)檢測到這樣的高優(yōu)先級操作,處理器510可以在對該 文件或目錄的一個片段完成這個并發(fā)操作之后執(zhí)行高優(yōu)先級操作,并 且在完成高優(yōu)先級操作之后,處理器510可以繼續(xù)對文件或目錄的剩 余片段^l行這個并發(fā)操作。
在一個實施例中,處理器510可以在執(zhí)行任何一個并發(fā)操作之前 為每個并發(fā)操作在數(shù)據(jù)結(jié)構(gòu)400中生成一個新元素。例如,可以分別 在圖6和圖7中省去方框602和702。例如,新元素可以包括關(guān)于將 由并發(fā)操作操作的文件或目錄的信息以及關(guān)于該并發(fā)操作的進(jìn)度信 息/數(shù)據(jù)。此外,數(shù)據(jù)結(jié)構(gòu)400還可包括鏈接與同一個文件或目錄有關(guān) 的元素的鏈"J妻信息/數(shù)據(jù)。在另一個實施例中,處理器510可以增加一 個或多個元素,這個或這些元素可以各自標(biāo)識由并發(fā)操作正在操作的 文件或目錄。在另一個實施例中,處理器510可以在數(shù)據(jù)結(jié)構(gòu)400的 對應(yīng)元素中記錄每個并發(fā)操作的進(jìn)度信息/數(shù)據(jù)。在又一個實施例中, 處理器510可以將每個操作的進(jìn)度信息/數(shù)據(jù)記錄為列表等。在一個實 施例中,處理器510可以在執(zhí)行任何一個并發(fā)操作之前將進(jìn)度信息/ 數(shù)據(jù)初始化。例如,可以在圖6和圖7中分別省去方框604和704。盡管參照實施例描述了本發(fā)明的某些特征,一f旦不希望以限制含義 解釋該描述。對于本發(fā)明所屬領(lǐng)域的技術(shù)人員顯而易見的對本發(fā)明的 實施例以及其它實施例的各種修改:故視為是在本發(fā)明的精神和范圍 內(nèi)。
權(quán)利要求
1.一種方法,包括創(chuàng)建數(shù)據(jù)結(jié)構(gòu)來存儲關(guān)于訪問非易失性存儲器的文件系統(tǒng)的一個或多個并發(fā)操作的進(jìn)度信息;以及基于所述進(jìn)度信息執(zhí)行所述一個或多個并發(fā)操作。
2. 如權(quán)利要求l所述的方法,還包括將所述進(jìn)度信息初始化,以便包含每個并發(fā)操作中正在操作的所 述文件系統(tǒng)的非片段單元的一個或多個位置。
3. 如權(quán)利要求l所述的方法,還包括檢索所述進(jìn)度信息以便獲得與每個并發(fā)操作關(guān)聯(lián)的所述文件系 統(tǒng)的非片段單元的一個或多個位置。
4. 如權(quán)利要求l所述的方法,還包括根據(jù)每個并發(fā)操作對如所述進(jìn)度信息所指示的所述文件系統(tǒng)的 片段進(jìn)行操作。
5. 如權(quán)利要求l所述的方法,還包括響應(yīng)對所述文件系統(tǒng)的片段的并發(fā)操作的完成,更新與所述并發(fā) 操作關(guān)聯(lián)的進(jìn)度信息。
6. 如權(quán)利要求5所述的方法,還包括從與所述并發(fā)操作關(guān)聯(lián)的進(jìn)度信息中,刪除與所述片段關(guān)聯(lián)的所 述文件系統(tǒng)的非片段單元的一個或多個位置。
7. 如權(quán)利要求1所述的方法,還包括響應(yīng)確定與所述并發(fā)操作關(guān)聯(lián)的所述進(jìn)度信息包括與一個或多 個片段關(guān)聯(lián)的所述文件系統(tǒng)的非片段單元的一個或多個位置,繼續(xù)對 所述文件系統(tǒng)的所述一個或多個片段執(zhí)行每個并發(fā)操作。
8. 如權(quán)利要求l所述的方法,還包括響應(yīng)確定對所述文件系統(tǒng)的所述并發(fā)操作已完成,移除每個并發(fā) 操作的所述進(jìn)度信息。
9. 如權(quán)利要求l所述的方法,還包括響應(yīng)確定一個并發(fā)操作將所述文件系統(tǒng)的非片段單元的一個或 多個位置移到一個或多個新位置,用所述一個或多個新位置更新與所 述一個或多個位置有關(guān)的所述進(jìn)度信息。
10. 如權(quán)利要求l所述的方法,還包括響應(yīng)確定寫入操作用 一個或多個新序列表替換所述文件系統(tǒng)的 一個或多個序列表,用關(guān)于所述一個或多個新序列表的進(jìn)度信息更新 關(guān)于所述一個或多個序列表的進(jìn)度信息。
11. 如權(quán)利要求l所迷的方法,還包括在對如所述進(jìn)度信息標(biāo)識的所述文件系統(tǒng)的片段執(zhí)行每個并發(fā) 操作期間,檢測所述一個或多個并發(fā)操作中是否存在一個或多個高優(yōu) 先級操作。
12. 如權(quán)利要求11所述的方法,還包括響應(yīng)檢測到一個或多個高優(yōu)先級操作,在對所述片段完成所述并 發(fā)操作之后,執(zhí)行所述一個或多個高優(yōu)先級操作。
13. —種系統(tǒng),包括 非易失性存儲器; 易失性存儲器;以及處理器,用于將包含與訪問所述非易失性存儲器的文件系統(tǒng)的一 個或多個并發(fā)操作關(guān)聯(lián)的位置數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)存儲在所述易失性存 儲器中,并根據(jù)所述位置數(shù)據(jù)執(zhí)行所述一個或多個并發(fā)操作。
14. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述處理器還將所 述位置數(shù)據(jù)初始化,以1更包含所述文件系統(tǒng)中的一個或多個扇區(qū)的4立 置數(shù)據(jù),其中所述一個或多個扇區(qū)由所述并發(fā)操作操作。
15. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述處理器還從所 述位置數(shù)據(jù)獲得每個并發(fā)操作正在操作的 一個或多個扇區(qū)的地址。
16. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述處理器還對如 所述位置數(shù)據(jù)指示的所述文件系統(tǒng)的片段^執(zhí)行每個并發(fā)操作。
17. 如權(quán)利要求13所述的系統(tǒng),其特征在于,響應(yīng)確定對所述文 件系統(tǒng)的片段的并發(fā)操作已完成,所述處理器還刪除與對所述片段的 所述并發(fā)操作關(guān)聯(lián)的位置數(shù)據(jù)。
18. 如權(quán)利要求17所述的系統(tǒng),其特征在于,響應(yīng)確定在所述刪 除之后所述數(shù)據(jù)結(jié)構(gòu)包含與對所述文件系統(tǒng)的 一個或多個片段的并 發(fā)操作關(guān)聯(lián)的位置數(shù)據(jù),所述處理器還繼續(xù)對所述一個或多個片段4丸 行所述并發(fā)操作。
19. 如權(quán)利要求13所述的系統(tǒng),其特征在于,響應(yīng)確定并發(fā)操作 已完成,所述處理器還從所述數(shù)據(jù)結(jié)構(gòu)中移除關(guān)于所述并發(fā)操作的位 置數(shù)據(jù)。
20. 如權(quán)利要求13所述的系統(tǒng),其特征在于,響應(yīng)對所述文件系 統(tǒng)的片段的并發(fā)操作替換關(guān)于所述文件系統(tǒng)的 一個或多個扇區(qū)的已 有位置數(shù)據(jù),所述處理器還根據(jù)所述替換更新與對所述一個或多個扇 區(qū)的一個或多個其它并發(fā)操作關(guān)聯(lián)的位置數(shù)據(jù)。
21. 如權(quán)利要求20所述的系統(tǒng),其特征在于,響應(yīng)確定所述并發(fā) 操作用新位置數(shù)據(jù)替換所述已有位置數(shù)據(jù),所述處理器還用所述新位 置數(shù)據(jù)更新與所迷一個或多個其它并發(fā)操作關(guān)聯(lián)的位置數(shù)據(jù)。
22. 如權(quán)利要求13所述的系統(tǒng),其特征在于,響應(yīng)對所述文件系 統(tǒng)的片段的寫入操作用 一個或多個新扇區(qū)位置替換所述文件系統(tǒng)的 一個或多個已有扇區(qū)位置,所述處理器還用所述一個或多個新扇區(qū)位 置更新關(guān)于一個或多個其它并發(fā)操作的位置數(shù)據(jù)中的所述一個或多 個已有扇區(qū)位置。
23. 如權(quán)利要求13所述的系統(tǒng),其特征在于,響應(yīng)確定在并發(fā)操 作期間;險測到一個或多個高優(yōu)先級操作,所述處理器還在對如所述位 置數(shù)據(jù)標(biāo)識的所述文件系統(tǒng)的片段完成所述并發(fā)操作之后,執(zhí)行所述 一個或多個高優(yōu)先級操作。
24. —種包括多個指令的機(jī)器可讀介質(zhì),所述指令在執(zhí)行時使計 算裝置存儲跟蹤表,其中所述跟蹤表中的每個項包括一個或多個并發(fā)操作正在操作的非易失性存儲器的文件系統(tǒng)的一個或多個扇區(qū)位置;以 及對所述一個或多個扇區(qū)位置執(zhí)行所述一個或多個并發(fā)操作。
25. 如權(quán)利要求24所述的機(jī)器可讀介質(zhì),還包括多個指令,所述 指令在執(zhí)行時使計算裝置將所述跟蹤表初始化,以便進(jìn)一步包括用于標(biāo)識所述并發(fā)操作中 的一個或多個并發(fā)操作正在操作的所述文件系統(tǒng)中的文件和目錄中 至少之一的信息。
26. 如權(quán)利要求24所述的機(jī)器可讀介質(zhì),還包括多個指令,所述 指令在執(zhí)行時使計算裝置對由與所述并發(fā)操作關(guān)聯(lián)的一個或多個扇區(qū)位置指示的所述文 件系統(tǒng)的對應(yīng)片段執(zhí)行每個并發(fā)操作。
27. 如權(quán)利要求24所述的機(jī)器可讀介質(zhì),還包括多個指令,所述 指令在執(zhí)行時使計算裝置響應(yīng)確定對所述文件系統(tǒng)的片段的并發(fā)操作已完成,從所述跟蹤 表中刪除與對所述片段的所述并發(fā)操作關(guān)聯(lián)的一個或多個扇區(qū)位置。
28. 如權(quán)利要求27所述的機(jī)器可讀介質(zhì),還包括多個指令,所述 指令在執(zhí)行時使計算裝置響應(yīng)確定在所述刪除之后所述跟蹤表包括與所述并發(fā)操作關(guān)聯(lián) 的一個或多個扇區(qū)位置,繼續(xù)對由所述一個或多個扇區(qū)位置標(biāo)識的片 段執(zhí)行所述并發(fā)操作。
29. 如權(quán)利要求24所述的機(jī)器可讀介質(zhì),還包括多個指令,所述 指令在執(zhí)行時使計算裝置響應(yīng)確定所述并發(fā)操作已完成,從所述跟蹤表中移除與所述并發(fā) 操作關(guān)聯(lián)的項。
30. 如權(quán)利要求24所述的機(jī)器可讀介質(zhì),還包括多個指令,所述 指令在執(zhí)行時使計算裝置響應(yīng)確定并發(fā)操作將扇區(qū)位置移到新扇區(qū)位置,用所述新扇區(qū)位 置更新所述跟蹤表中與所述扇區(qū)位置有關(guān)的一個或多個項。
31.如權(quán)利要求24所述的機(jī)器可讀介質(zhì),還包括多個指令,所述 指令在執(zhí)行時使計算裝置響應(yīng)確定對片段的并發(fā)操作用新序列表替換序列表,用所述一個 或多個新序列表的扇區(qū)位置更新所述跟蹤表中包括所述一個或多個 序列表的扇區(qū)位置的一個或多個項。
全文摘要
可以在多線程非易失性存儲器文件系統(tǒng)中使用一種方法。該方法包括創(chuàng)建數(shù)據(jù)結(jié)構(gòu)來存儲關(guān)于訪問非易失性存儲器的文件系統(tǒng)的一個或多個并發(fā)操作的進(jìn)度信息;以及基于進(jìn)度信息執(zhí)行上述一個或多個并發(fā)操作。
文檔編號G06F12/00GK101297274SQ200580051907
公開日2008年10月29日 申請日期2005年10月24日 優(yōu)先權(quán)日2005年10月24日
發(fā)明者H·王 申請人:英特爾公司