專利名稱:無(wú)限存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)設(shè)備,尤其涉及用于存儲(chǔ)設(shè)備控制器的方法和系統(tǒng),所述方法和·系統(tǒng)用以從此種存儲(chǔ)設(shè)備的存儲(chǔ)媒體中刪除內(nèi)容以便為新內(nèi)容提供空閑存儲(chǔ)空間而不用主機(jī)設(shè)備的顯式協(xié)調(diào)。
背景技術(shù):
如靜態(tài)數(shù)字照相機(jī)(“DSCs”)的設(shè)備依賴于可移除存儲(chǔ)卡及非易失存儲(chǔ)卡來(lái)儲(chǔ)存圖像和其它數(shù)據(jù)(例如,和圖像數(shù)據(jù)相關(guān)的元數(shù)據(jù))。如錄音機(jī)/錄像機(jī)和音頻播放器/視頻播放器(例如移動(dòng)電話、個(gè)人數(shù)字助理、MP3播放器、數(shù)字?jǐn)z影機(jī)、便攜式計(jì)算機(jī)等)的其它數(shù)字媒體設(shè)備也使用這些存儲(chǔ)卡來(lái)儲(chǔ)存各種數(shù)字媒體(例如圖像、電影、音頻等)。存在各種存儲(chǔ)卡格式,包括安全數(shù)字卡(SD)、多媒體卡(MMC)、壓縮閃存卡(CF) I和II、記憶棒(MS)和xD圖像卡(xD)。如本文中所使用,不管物理格式為何,術(shù)語(yǔ)存儲(chǔ)卡意在指代所有這些數(shù)字媒體存儲(chǔ)設(shè)備。一般來(lái)說(shuō),從這些存儲(chǔ)卡中提取圖像或其它數(shù)據(jù)需要帶纜連接到個(gè)人計(jì)算機(jī)(或類似設(shè)備)或打印機(jī)。舉例來(lái)說(shuō),可直接下載圖像以使用支持與存儲(chǔ)卡相兼容的物理接口的打印機(jī)進(jìn)行硬拷貝?;蛘?,可通過(guò)讀卡器或托管存儲(chǔ)卡的相機(jī)和計(jì)算機(jī)之間的有線連接將圖像上傳到個(gè)人計(jì)算機(jī)。最近,具有無(wú)線網(wǎng)絡(luò)連接性的數(shù)字相機(jī)已面市。這些相機(jī)允許與無(wú)線網(wǎng)絡(luò)(通常,如與IEEE 802.11a / b/g等標(biāo)準(zhǔn)相兼容的網(wǎng)絡(luò))的連接性以將圖像數(shù)據(jù)從存儲(chǔ)卡中傳送到個(gè)人計(jì)算機(jī)或打印機(jī)。然而,這些相機(jī)通常比支持非無(wú)線網(wǎng)絡(luò)功能的DSC更為昂貴,并考慮到支持非無(wú)線網(wǎng)絡(luò)功能的DSC的現(xiàn)有安裝基礎(chǔ),這些相機(jī)僅代表現(xiàn)今可用的DSC總數(shù)的很小一部分。
發(fā)明內(nèi)容
本文所描述的是用于存儲(chǔ)設(shè)備控制器的方法和系統(tǒng),所述方法和系統(tǒng)用以從此類存儲(chǔ)設(shè)備中刪除內(nèi)容以便為新內(nèi)容提供空閑的存儲(chǔ)空間而不用主機(jī)設(shè)備的顯式協(xié)調(diào)。在一個(gè)實(shí)施方式中,包括主機(jī)設(shè)備接口和存儲(chǔ)媒體的存儲(chǔ)設(shè)備的控制器經(jīng)配置以進(jìn)行以下操作在檢測(cè)到觸發(fā)事件后,枚舉文件清單,所述文件為從存儲(chǔ)媒體中刪除的候選者;及記錄用來(lái)儲(chǔ)存候選文件的存儲(chǔ)媒體的扇區(qū)清單;將所枚舉文件的清單的存儲(chǔ)設(shè)備文件系統(tǒng)目錄條目標(biāo)記為已刪除同時(shí)鎖定耦接到主機(jī)設(shè)備接口的主機(jī)設(shè)備以便無(wú)法訪問(wèn)存儲(chǔ)媒體,并執(zhí)行保持目錄條目的存儲(chǔ)媒體的所述扇區(qū)的讀取/修改/寫入順序;等待第一主機(jī)設(shè)備同步事件,并在識(shí)別第一主機(jī)設(shè)備同步事件后,檢查用于刪除的候選文件清單,并決定候選文件的相應(yīng)目錄條目是否標(biāo)記為已刪除;如果候選文件的目錄條目未標(biāo)記為已刪除,那么重復(fù)將目錄條目標(biāo)記為已刪除的操作,執(zhí)行保持目錄條目的存儲(chǔ)媒體的扇區(qū)的讀取/修改/寫入,并等待另外的第一主機(jī)設(shè)備同步事件;或者,如果候選文件的目錄條目標(biāo)記為已刪除,那么標(biāo) 記孤立扇區(qū)以防止數(shù)據(jù)儲(chǔ)存到存儲(chǔ)媒體中的相應(yīng)數(shù)據(jù)存儲(chǔ)單元但將孤立扇區(qū)維持在扇區(qū)清單中,其中孤立扇區(qū)為具有標(biāo)記為已刪除的相應(yīng)目錄條目但具有仍分配在存儲(chǔ)媒體中的相應(yīng)數(shù)據(jù)存儲(chǔ)單元的所述扇區(qū);等待其它主機(jī)設(shè)備同步事件,并在識(shí)別所述事件后,循環(huán)訪問(wèn)孤立扇區(qū)以決定主機(jī)設(shè)備隨后是否改寫讀取/修改/寫入動(dòng)作;且如果孤立扇區(qū)已恢復(fù)到先前值,那么重復(fù)標(biāo)記孤立扇區(qū),等待其它主機(jī)設(shè)備同步事件并決定主機(jī)設(shè)備隨后是否改寫讀取/修改/寫入動(dòng)作,否則,如果孤立扇區(qū)仍被標(biāo)記,那么將扇區(qū)清單分配為可用來(lái)儲(chǔ)存新數(shù)據(jù),并且清除候選文件清單。在下文中參閱附隨圖式來(lái)更詳細(xì)論述本發(fā)明的這些實(shí)施方式和其它實(shí)施方式。
在附隨圖式中通過(guò)實(shí)例說(shuō)明本發(fā)明,且并非限制,其中圖I圖示呈存儲(chǔ)卡格式的數(shù)字媒體存儲(chǔ)設(shè)備的實(shí)例,所述存儲(chǔ)卡根據(jù)本發(fā)明的實(shí)施方式而配置。圖2圖示根據(jù)本發(fā)明的替代實(shí)施方式配置的存儲(chǔ)卡。圖3圖示根據(jù)本發(fā)明實(shí)施方式的格式化存儲(chǔ)設(shè)備的結(jié)構(gòu)。圖4圖示根據(jù)本發(fā)明實(shí)施方式的存儲(chǔ)設(shè)備的文件系統(tǒng)中的目錄表的實(shí)例。圖5圖示根據(jù)本發(fā)明實(shí)施方式的具有指向文件分配表的指針的目錄表的實(shí)例。圖6圖示根據(jù)本發(fā)明實(shí)施方式的程序的實(shí)例,所述程序用于從存儲(chǔ)設(shè)備的文件系統(tǒng)中刪除一或多個(gè)文件以便為新文件(例如圖像)騰出空位。圖7A和圖7B圖示根據(jù)本發(fā)明實(shí)施方式的回應(yīng)于觸發(fā)事件而從存儲(chǔ)設(shè)備刪除內(nèi)容的實(shí)例。
具體實(shí)施例方式在美國(guó)專利申請(qǐng)公開(kāi)案第2007/0073937號(hào)中,描述了能夠替換或取代傳統(tǒng)設(shè)備中的傳統(tǒng)存儲(chǔ)卡的內(nèi)容識(shí)別數(shù)字媒體存儲(chǔ)設(shè)備,如DSC和其它數(shù)字媒體設(shè)備。所述數(shù)字媒體存儲(chǔ)設(shè)備包括射頻電路系統(tǒng)以允許數(shù)字媒體存儲(chǔ)設(shè)備和可兼容發(fā)射器/接收器/收發(fā)器之間的無(wú)線通信。存儲(chǔ)設(shè)備還包括閃存陣列和控制器,所述控制器經(jīng)配置以用面向閃存陣列和面向主機(jī)的物理層接口邏輯來(lái)執(zhí)行計(jì)算機(jī)可讀指令。在此背景下,被稱為“主機(jī)”的是將使用數(shù)字媒體存儲(chǔ)設(shè)備作為數(shù)字?jǐn)?shù)據(jù)(例如圖像、音頻文件等等)的存儲(chǔ)庫(kù)的設(shè)備(例如,相機(jī)、音頻播放器或其它主機(jī)設(shè)備)。控制器執(zhí)行計(jì)算機(jī)可讀指令以從存儲(chǔ)設(shè)備的面向主機(jī)的物理層接口(即與DSC或其它數(shù)字設(shè)備的接口)代理對(duì)閃存陣列的訪問(wèn)并將儲(chǔ)存在閃存陣列中的數(shù)字?jǐn)?shù)據(jù)卸載到遠(yuǎn)程計(jì)算機(jī)系統(tǒng),在后一情況中通過(guò)RF電路系統(tǒng)卸載數(shù)字?jǐn)?shù)據(jù)。這樣,數(shù)字圖像及數(shù)字圖像相關(guān)聯(lián)的元數(shù)據(jù)可從存儲(chǔ)設(shè)備無(wú)線傳送到數(shù)字相冊(cè)等等而無(wú)須從主機(jī)相機(jī)移除存儲(chǔ)設(shè)備或無(wú)須使用主機(jī)相機(jī)和計(jì)算機(jī)系統(tǒng)之間的有線通信鏈接。還應(yīng)注意,所儲(chǔ)存的圖像一旦已成功地傳送到數(shù)字相冊(cè)或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)就可從存儲(chǔ)卡中自動(dòng)刪除。本文所描述的是促進(jìn)此種自主刪除的方法和系統(tǒng)。注意,盡管余下的論述將涉及具有閃存存儲(chǔ)媒體的存儲(chǔ)卡,但本發(fā)明可適用于具有任何形式的存儲(chǔ)媒體(例如,磁盤或光盤、固態(tài)存儲(chǔ)媒體或其它形式的存儲(chǔ)媒體)的任何存儲(chǔ)設(shè)備。因此,本文提供的閃存實(shí)例不欲限制本發(fā)明的范圍。圖I圖示呈存儲(chǔ)卡10格式的數(shù)字媒體存儲(chǔ)設(shè)備的實(shí)例,所述存儲(chǔ)卡10根據(jù)本發(fā)明的實(shí)施方式而配置。如圖所示,存儲(chǔ)卡10包括用于與主機(jī)(例如DSC或其它數(shù)字設(shè)備)通信的接口 12。接口 12的物理和電氣組成將取決于所使用的存儲(chǔ)卡的類型(例如,SD、MMC、CFI、CFII、MS、xD等),而此種接口在業(yè)內(nèi)眾所周知且不需要詳細(xì)描述。換句話說(shuō),根據(jù)所使用的存儲(chǔ)卡的類型,此種接口本質(zhì)上是完全傳統(tǒng)的且符合相關(guān)產(chǎn)業(yè)規(guī)范。主機(jī)接口 12耦接到用于在存儲(chǔ)卡10內(nèi)傳送電氣信號(hào)的總線14。在一些情況下,總線14可為接口 12和中央處理單元(CPU)16之間的專用總線,而在其它情況下,總線14也 可為用于CPU及其它組件之間通信的較為普遍的總線。就接口 12來(lái)說(shuō),CPU 16 (通信耦接到總線14)為此種存儲(chǔ)卡的傳統(tǒng)特性。在一些實(shí)施方式中,可使用讀/寫存儲(chǔ)器(如SRAM)
18。此讀/寫存儲(chǔ)器在執(zhí)行計(jì)算等時(shí)為CPU 16提供方便的儲(chǔ)存位置。SRAM 18可通信耦接到總線14 (如圖所示)或可通過(guò)專用接口(例如獨(dú)立的存儲(chǔ)器總線)直接通信耦接到CPU16。還存在存儲(chǔ)器控制器20和相關(guān)聯(lián)的存儲(chǔ)器陣列22,且控制器20通信耦接到總線14和陣列22。在圖解中,圖示了閃存陣列和閃存控制器,然而,可使用其它存儲(chǔ)媒體和相關(guān)聯(lián)的控制器。舉例來(lái)說(shuō),相對(duì)較新形式的存儲(chǔ)設(shè)備并入了與傳統(tǒng)CF-II存儲(chǔ)卡相兼容的物理格式的迷你硬盤驅(qū)動(dòng)器及相關(guān)聯(lián)的控制器。可結(jié)合本發(fā)明使用此種存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備與儲(chǔ)存格式無(wú)關(guān)。同樣,無(wú)線電收發(fā)器24包括在存儲(chǔ)卡10中,所述無(wú)線電收發(fā)器24可通信耦接到總線14以便與CPU 16通信。無(wú)線電臺(tái)24為上文所論述的外圍設(shè)備的實(shí)例,且在此實(shí)施方式中,所述無(wú)線電臺(tái)24優(yōu)選地符合IEEE 802. Ila / b/g等規(guī)范,但在其它實(shí)施方式中,可使用其它形式的無(wú)線電臺(tái)或甚至可使用其它外圍設(shè)備。例如,可使用符合BluetoothTM及/或GPS規(guī)范的無(wú)線電臺(tái)?;蛘?,或另外,可使用符合IEEE 802. 16標(biāo)準(zhǔn)的無(wú)線電臺(tái)。盡管在下文所描述的數(shù)個(gè)應(yīng)用中,需要為存儲(chǔ)卡10提供無(wú)線通信的外圍設(shè)備,但外圍端口的確切性質(zhì)對(duì)本發(fā)明來(lái)說(shuō)并不重要。在此實(shí)例中,存儲(chǔ)卡10的物理尺寸與各種主機(jī)(如DSC等)的現(xiàn)有存儲(chǔ)卡接口相兼容。在過(guò)去,具有無(wú)線網(wǎng)絡(luò)功能的存儲(chǔ)卡一直比存儲(chǔ)卡的支持非無(wú)線功能的對(duì)應(yīng)體大。DSC(及其它數(shù)字設(shè)備)一般(或通常)將存儲(chǔ)卡裝入主機(jī)設(shè)備的主體中。因此,較大的支持無(wú)線功能的存儲(chǔ)卡與許多現(xiàn)有主機(jī)設(shè)備兼容。然而,在各種實(shí)施方式中,現(xiàn)有的存儲(chǔ)卡10經(jīng)調(diào)整大小以安裝在傳統(tǒng)主機(jī)存儲(chǔ)卡殼體內(nèi)。甚至更加難以克服的是防止具有無(wú)線功能的存儲(chǔ)卡與各種主機(jī)一起使用的其它不兼容問(wèn)題。舉例來(lái)說(shuō),已并入具有無(wú)線網(wǎng)絡(luò)功能的閃存的先前的存儲(chǔ)卡需要主機(jī)設(shè)備用適當(dāng)?shù)能浖?qū)動(dòng)器來(lái)支持,使得所述存儲(chǔ)卡與現(xiàn)有主機(jī)及傳統(tǒng)主機(jī)不兼容。換句話說(shuō),現(xiàn)有的主機(jī)根本不含需要用具有這些功能的先前可用的存儲(chǔ)卡來(lái)操作的固件。相比之下,現(xiàn)有存儲(chǔ)卡為“自托管”,意味著所述存儲(chǔ)卡不需要來(lái)自主機(jī)設(shè)備的固件支持。相反,現(xiàn)有存儲(chǔ)卡本身充當(dāng)具有機(jī)載網(wǎng)絡(luò)接口的主機(jī)設(shè)備而出現(xiàn)在相機(jī)或其它數(shù)字設(shè)備中,通過(guò)所述相機(jī)或其它數(shù)字設(shè)備,卡用作傳統(tǒng)區(qū)塊存儲(chǔ)設(shè)備。這種情況意味著不需要改變現(xiàn)有主機(jī)設(shè)備及傳統(tǒng)主機(jī)設(shè)備使用的固件來(lái)將圖像、音頻文件或其它數(shù)字內(nèi)容及元數(shù)據(jù)寫入現(xiàn)有存儲(chǔ)卡或從現(xiàn)有存儲(chǔ)卡中讀取以上數(shù)據(jù)。另外,可保留存儲(chǔ)器陣列22的一部分用于儲(chǔ)存從存儲(chǔ)卡中傳送出來(lái)的圖像的上傳狀態(tài)信息。例如,在結(jié)合上傳的數(shù)字圖像使用的具有無(wú)線電臺(tái)的存儲(chǔ)卡的情況下,有關(guān)通過(guò)無(wú)線網(wǎng)絡(luò)的任何此種上傳的狀態(tài)的維持信息可能是很重要的,以使得在中斷此種傳送的情況下,一旦已重建與無(wú)線網(wǎng)絡(luò)的通信,就可從適當(dāng)?shù)钠鹗键c(diǎn)重新開(kāi)始傳送。進(jìn)一步,維持此種狀態(tài)的信息還將向存儲(chǔ)卡提供決定原始圖像何時(shí)可從存儲(chǔ)卡存儲(chǔ)器陣列安全移除的能力。當(dāng)然,除了或代替儲(chǔ)存在存儲(chǔ)卡上之外,上傳狀態(tài)還可儲(chǔ)存在網(wǎng)絡(luò)側(cè)。將信息儲(chǔ)存在“卡上”且存儲(chǔ)在遠(yuǎn)程計(jì)算機(jī)系統(tǒng)可允許平穩(wěn)處理傳輸中斷。圖2圖示根據(jù)本發(fā)明的替代實(shí)施方式配置的存儲(chǔ)卡26。在此存儲(chǔ)卡26中,閃存控·制器28包括主機(jī)接口 30,例如SD或CF- I /CF-II接口??刂破?8還包括可通信地連接到閃存陣列34的閃速陣列接口 32。在此實(shí)例中,使用NAND閃存陣列,然而,在其它實(shí)施方式中,可使用NOR閃存陣列。存儲(chǔ)卡26還包括無(wú)線電臺(tái)36,所述無(wú)線電臺(tái)36可通信地耦接到閃速控制器28和存儲(chǔ)器陣列34。無(wú)線電臺(tái)36可為獨(dú)立的802. Ila / b/g等兼容的通信設(shè)備,所述兼容的通信設(shè)備包括媒體訪問(wèn)控制器、RISC處理器(伴隨讀/寫存儲(chǔ)器和閃存用于分別儲(chǔ)存中間結(jié)果和計(jì)算機(jī)可讀指令)及無(wú)線電臺(tái)前端。次要接口的無(wú)線特性(主機(jī)設(shè)備的接口被認(rèn)為是存儲(chǔ)卡的主要接口)在存儲(chǔ)卡仍封閉在主機(jī)的存儲(chǔ)卡插槽內(nèi)時(shí)允許數(shù)字內(nèi)容(例如圖像)傳送到存儲(chǔ)卡或從存儲(chǔ)卡中傳送出來(lái)。從媒體插槽內(nèi)部工作允許存儲(chǔ)卡從主機(jī)設(shè)備汲取動(dòng)力,從而消除對(duì)一體電池的需求。假設(shè)通過(guò)主機(jī)接口(12,30)供應(yīng)動(dòng)力,或者在電池集成在存儲(chǔ)卡上的實(shí)施方式中,在主機(jī)外操作存儲(chǔ)卡及存儲(chǔ)卡的無(wú)線接口也是可能的。如上文所指出,為啟用無(wú)線傳輸功能,現(xiàn)有存儲(chǔ)卡添加無(wú)線電臺(tái)(例如,IEEE802. Ila / b/g等電臺(tái)或藍(lán)牙電臺(tái)等)、媒體訪問(wèn)控制器(MAC)或嵌入式主機(jī)CPU到傳統(tǒng)閃速控制器功能。包括全部軟件組件以便嵌入式主機(jī)CPU使用,所述軟件組件用于解譯主機(jī)的文件系統(tǒng)和儲(chǔ)存在存儲(chǔ)器陣列中的數(shù)據(jù)、連接到局域網(wǎng)及/或其它網(wǎng)絡(luò)(例如,通過(guò)TCP/IP協(xié)議)及管理無(wú)線接口硬件的低級(jí)別驅(qū)動(dòng)器任務(wù)。如所論述,可結(jié)合各種設(shè)備(如DSC、數(shù)字?jǐn)z影機(jī)、移動(dòng)電話、個(gè)人計(jì)算機(jī)、個(gè)人數(shù)字助理及類似設(shè)備)來(lái)使用根據(jù)本發(fā)明配置的存儲(chǔ)卡。下文大部分論述將著重于此種存儲(chǔ)卡與DSC的使用,且針對(duì)將圖像數(shù)據(jù)寫入根據(jù)本發(fā)明配置的數(shù)字媒體存儲(chǔ)設(shè)備的DSC的特定實(shí)例,在下文中呈現(xiàn)固件操作的其它細(xì)節(jié)。然而,應(yīng)謹(jǐn)記,僅僅為了提供本發(fā)明的實(shí)例而進(jìn)行所述操作。本發(fā)明的整體范圍反映在此描述之后的權(quán)利要求書中且鑒于本文所呈現(xiàn)的DSC實(shí)例,所述范圍不應(yīng)受到不必要的限制。根據(jù)本發(fā)明的將存儲(chǔ)設(shè)備與無(wú)線通信系統(tǒng)集成在一起的存儲(chǔ)卡可符合任何現(xiàn)有的存儲(chǔ)卡格式(例如,SD、MMC, CF、MS或xD)以便與更多的DSC和其它主機(jī)兼容。就相機(jī)主機(jī)來(lái)說(shuō),具有集成的無(wú)線通信設(shè)備允許用戶捕捉圖像時(shí)(如果無(wú)線通信可用)或在稍后時(shí)間,從相機(jī)(即存儲(chǔ)卡)中上傳圖像(或其它數(shù)據(jù))到替代設(shè)備(例如個(gè)人計(jì)算機(jī)、服務(wù)器或與局域網(wǎng)相關(guān)聯(lián)的儲(chǔ)存位置,或基于互聯(lián)網(wǎng)的計(jì)算機(jī)/存儲(chǔ)資源等)而無(wú)須將相機(jī)或存儲(chǔ)卡帶纜連接到物理接口(例如,通用串行總線(USB)電纜或其它接口)。在圖像上傳到基于互聯(lián)網(wǎng)的計(jì)算機(jī)/存儲(chǔ)資源的情況下,可通過(guò)任何傳統(tǒng)網(wǎng)頁(yè)瀏覽器,或使用個(gè)人計(jì)算機(jī)、電視機(jī)及機(jī)頂盒的組合、移動(dòng)電話或類似通信設(shè)備來(lái)管理所述圖像。因此已描述根據(jù)本發(fā)明配置的各種存儲(chǔ)卡,現(xiàn)轉(zhuǎn)到對(duì)如何將數(shù)字?jǐn)?shù)據(jù)寫入存儲(chǔ)媒體及如何從存儲(chǔ)媒體中刪除數(shù)字?jǐn)?shù)據(jù)的論述。 不同于傳統(tǒng)的閃速控制器,現(xiàn)有控制器和相關(guān)聯(lián)的固件使根據(jù)本發(fā)明配置的數(shù)字媒體存儲(chǔ)設(shè)備能夠解譯和處理儲(chǔ)存在閃速陣列中的數(shù)據(jù)。現(xiàn)有固件使用寫入到閃速陣列的文件系統(tǒng)結(jié)構(gòu)以“安裝”設(shè)備(在計(jì)算機(jī)可使用任何種類的存儲(chǔ)媒體之前,操作系統(tǒng)必須使得所述媒體可通過(guò)計(jì)算機(jī)的文件系統(tǒng)訪問(wèn)(即稱為安裝的程序))、獲得儲(chǔ)存在所述固件上的文件庫(kù)、讀取所述文件的內(nèi)容,并(若需要)對(duì)文件系統(tǒng)做出修改。此種修改包括(但不限于)移除及重命名文件、更新文件屬性及創(chuàng)建新文件。這與傳統(tǒng)的閃速陣列控制器截然不同,所述傳統(tǒng)的閃速陣列控制器僅僅展現(xiàn)正以不透明數(shù)據(jù)的固定大小區(qū)塊形式寫入存儲(chǔ)陣列的信息,并且所述傳統(tǒng)閃存陣列控制器采取適當(dāng)?shù)男袆?dòng)來(lái)將區(qū)塊寫入陣列。然后,在一個(gè)實(shí)施方式中,現(xiàn)有的數(shù)字媒體存儲(chǔ)設(shè)備中斷外部主機(jī)直接定址閃速陣列。相反,在解析為閃速陣列中的數(shù)據(jù)的特定區(qū)塊之前,通過(guò)固件代理并轉(zhuǎn)換主機(jī)設(shè)備進(jìn)行的所有訪問(wèn)。通過(guò)首先格式化設(shè)備(例如以傳統(tǒng)方式),(若需要)接著初始化內(nèi)部映射表以直接映射在格式操作期間已寫入的全部區(qū)塊,及取消映射陣列中的全部其它區(qū)塊,數(shù)字媒體存儲(chǔ)設(shè)備可準(zhǔn)備用于此種活動(dòng)。因此,在完成操作后,只有含有文件系統(tǒng)元數(shù)據(jù)的數(shù)據(jù)區(qū)塊(如文件分配表(FAT)、根目錄結(jié)構(gòu)及分區(qū)啟動(dòng)記錄)在數(shù)字媒體存儲(chǔ)設(shè)備內(nèi)具有從呈現(xiàn)在主機(jī)接口處的邏輯區(qū)塊地址到物理地址的有效轉(zhuǎn)換。全部其它區(qū)塊被認(rèn)為未使用及未分配,且所述全部其他區(qū)塊不可通過(guò)主機(jī)設(shè)備直接訪問(wèn)。此種格式化的存儲(chǔ)設(shè)備的結(jié)構(gòu)圖示于圖3中。如圖所示,F(xiàn)AT文件系統(tǒng)40具有四個(gè)部分。第一部分為若干個(gè)保留扇區(qū)42,包括啟動(dòng)扇區(qū)(又名分區(qū)啟動(dòng)記錄)。保留扇區(qū)包括用于基本文件系統(tǒng)信息的區(qū)域及指向其它部分的位置的指針。下一部分為FAT扇區(qū)46,所述FAT扇區(qū)46含有實(shí)際文件分配表54。此部分基本上為數(shù)據(jù)區(qū)域的映射,指示文件和目錄使用了哪些集群。接著,根目錄區(qū)域48提供目錄表,所述目錄表儲(chǔ)存有關(guān)位于根目錄的文件和目錄的信息。在一些情況下,根目錄區(qū)域與文件及其它目錄一起儲(chǔ)存在數(shù)據(jù)區(qū)域50,從而允許根目錄區(qū)域在沒(méi)有這一約束的情況下擴(kuò)展。最終,數(shù)據(jù)區(qū)域儲(chǔ)存實(shí)際文件和目錄數(shù)據(jù)(且,在一些情況下,儲(chǔ)存子目錄數(shù)據(jù))??赏ㄟ^(guò)在FAT中簡(jiǎn)單添加更多的鏈接56到文件鏈來(lái)隨意增加文件和目錄的大小(只要存在空閑集群)。然而應(yīng)注意,文件分配在集群52的單元中。根據(jù)此初始化狀態(tài),數(shù)字媒體存儲(chǔ)設(shè)備維持閃速陣列內(nèi)的空閑物理區(qū)塊的持久性數(shù)據(jù)庫(kù)及所分配區(qū)塊的邏輯到物理映射。在一個(gè)實(shí)施方式中,來(lái)自外部主機(jī)的區(qū)塊訪問(wèn)可通過(guò)以下方式攔截I)如果外部主機(jī)請(qǐng)求塊讀,且存在所述區(qū)塊地址的邏輯到物理映射,那么從閃速陣列讀取數(shù)據(jù)的相應(yīng)區(qū)塊并將所述相應(yīng)區(qū)塊返回到主機(jī)。2)如果外部主機(jī)請(qǐng)求塊讀,但不存在所述區(qū)塊地址的邏輯到物理映射,那么數(shù)字媒體存儲(chǔ)設(shè)備創(chuàng)造全部為零的區(qū)塊數(shù)據(jù)讀取響應(yīng)(或其它響應(yīng))并將數(shù)據(jù)返回到外部主機(jī)。未訪問(wèn)閃速陣列,也未分配任何新存儲(chǔ)器或映射。3)如果外部主機(jī)請(qǐng)求區(qū)塊寫入,且存在所述區(qū)塊地址的邏輯到物理映射,那么將主機(jī)所提供的數(shù)據(jù)寫入到在相應(yīng)物理地址處的閃速陣列中。4)如果外部主機(jī)請(qǐng)求區(qū)塊寫入,但不存在所述區(qū)塊地址的現(xiàn)有邏輯到物理映射,那么從空閑物理塊的數(shù)字媒體存儲(chǔ)設(shè)備的內(nèi)部持久性數(shù)據(jù)庫(kù)取出當(dāng)前取消映射的物理塊,且創(chuàng)建從主機(jī)所提供的區(qū)塊地址到所分配的區(qū)塊的物理地址的新映射。然后,將主機(jī)所提供的數(shù)據(jù)寫入到在所述物理地址處的閃速陣列,如果沒(méi)有空閑的物理塊可用,那么將塊級(jí)設(shè)備訪問(wèn)錯(cuò)誤返回到主機(jī)。這種動(dòng)態(tài)分配的邏輯到物理區(qū)塊地址映射模式允許現(xiàn)有的數(shù)字媒體存儲(chǔ)設(shè)備在閃存陣列中重組數(shù)據(jù)而沒(méi)有外部主機(jī)可見(jiàn)的副作用。而且,通過(guò)固件對(duì)更高級(jí)FAT文件系統(tǒng)語(yǔ)義的理解來(lái)進(jìn)行補(bǔ)充,在沒(méi)有來(lái)自外部主機(jī)設(shè)備的軟件的任何確切協(xié)作或同步的情況 下,允許現(xiàn)有的存儲(chǔ)設(shè)備處理儲(chǔ)存在閃速陣列中的文件或文件夾的內(nèi)容。換句話說(shuō),本發(fā)明的優(yōu)點(diǎn)(例如,處理儲(chǔ)存在閃速陣列中的數(shù)據(jù)的能力)不需要改變物理主機(jī)的現(xiàn)有固件或應(yīng)用級(jí)軟件。為更好理解根據(jù)本發(fā)明的實(shí)施方式提供的訪問(wèn)控制,回顧傳統(tǒng)可移除媒體設(shè)備和主機(jī)設(shè)備的一些潛在特征是適當(dāng)?shù)摹,F(xiàn)今可用的多數(shù)DSC采用插入DSC的“數(shù)字膠片”插槽中的非易失性存儲(chǔ)設(shè)備。這些非易失性存儲(chǔ)設(shè)備使用“FAT”或文件分配表格式來(lái)儲(chǔ)存由DSC捕捉的圖像。FAT文件系統(tǒng)在MS-DOS具有起源,且數(shù)個(gè)變量在使用中(例如,F(xiàn)AT-16及FAT-32)。指定FAT在數(shù)字相機(jī)作為JEITA CP-3461標(biāo)準(zhǔn)的部分而使用,被更多地稱為DCF2.0。除了文件系統(tǒng)外,DCF 2.0 (部分3. 2及部分5)指定目錄層次結(jié)構(gòu)及目錄以及文件命名規(guī)范,所述文件命名規(guī)范是FAT的8+3命名模式的子集。在將圖像儲(chǔ)存到存儲(chǔ)設(shè)備(例如,存儲(chǔ)卡的閃存)中之前,DSC將判定設(shè)備是否已根據(jù)DCF規(guī)范而格式化。如果沒(méi)有,那么相機(jī)將使存儲(chǔ)器設(shè)備準(zhǔn)備好通過(guò)稱為“格式化”的程序以有組織的方式來(lái)儲(chǔ)存數(shù)據(jù)。格式化邏輯上抹除儲(chǔ)存于存儲(chǔ)器設(shè)備中的全部現(xiàn)有數(shù)據(jù)并以FAT格式寫入空文件系統(tǒng)結(jié)構(gòu)。相機(jī)的FAT軟件寫入空的文件分配表,所述空的文件分配表將所有的數(shù)據(jù)集群標(biāo)記為可用于儲(chǔ)存新文件。通過(guò)初始化空的根目錄結(jié)構(gòu)來(lái)寫入空文件夾結(jié)構(gòu)。根據(jù)DCF規(guī)范中概述的程序,相機(jī)隨后將創(chuàng)建新文件夾以提供儲(chǔ)存于存儲(chǔ)器設(shè)備中的圖像的邏輯分離(例如,針對(duì)不同相機(jī)的文件夾(存儲(chǔ)器設(shè)備可同時(shí)使用于所述不同相機(jī)中)、針對(duì)用戶拍攝圖片的不同日期的文件夾等)。JEITA CP-3451 “靜態(tài)數(shù)字相機(jī)的可交換圖像文件格式”,更多被稱為EXIF,是與DCF規(guī)范一起的。EXIF指定圖像格式、聲音格式和標(biāo)記格式以儲(chǔ)存在DCF托管的文件系統(tǒng)結(jié)構(gòu)內(nèi)。舉例來(lái)說(shuō),并如上文所提到,可使用“藝術(shù)家”(即攝影師)信息及/或日期/時(shí)間信息的EXIF標(biāo)記??蓮挠脩籼峁┑膸粜畔⒅惺占瘮z影師信息。另外,可根據(jù)本發(fā)明通過(guò)使用GPS數(shù)據(jù)來(lái)決定相應(yīng)時(shí)區(qū)并通過(guò)將此種信息及/或絕對(duì)時(shí)間寫入U(xiǎn)TC相關(guān)的GPSDateStamp字段來(lái)添加時(shí)區(qū)基準(zhǔn)。另外,關(guān)于對(duì)等體(例如在具有根據(jù)本發(fā)明配置的存儲(chǔ)卡的DSC的位置處或附近的其它用戶/ DSC)的信息可寫入MakerNote標(biāo)記。就位置元數(shù)據(jù)而言,可在存儲(chǔ)卡中、在服務(wù)器層中或在這些設(shè)備的組合中執(zhí)行對(duì)此種信息的處理。EXIF指定JPEG的用途,通常稱為用于壓縮圖像的IS0-IEC 10918-1/ITU-TRecommendation Τ· 81和用于未壓縮圖像的Adobe TIFF 6.0。任一格式的圖像標(biāo)注有TIFF式標(biāo)記,從而記錄相機(jī)參數(shù)和圖像參數(shù)。WAV格式被指定用于語(yǔ)音注釋,所述語(yǔ)音注釋將與所捕捉的圖像相關(guān)聯(lián)。為了利用非易失性存儲(chǔ)介質(zhì),希望相機(jī)將在每個(gè)操作結(jié)束時(shí)清空元數(shù)據(jù)以及對(duì)閃速的數(shù)據(jù)塊更新。但是,根據(jù)使閃存保持同步的直寫式高速緩存規(guī)則,相機(jī)執(zhí)行可能高速緩存一些或全部FAT文件系統(tǒng)元數(shù)據(jù)。因此,可不觀測(cè)存儲(chǔ)卡所執(zhí)行的對(duì)元數(shù)據(jù)的更新,直到相機(jī)接著通電或每當(dāng)更新元數(shù)據(jù)高速緩存。FAT文件屬性可用來(lái)標(biāo)記文件為只讀。DCF 2.0 (部分5. 2. 2. 4)指定對(duì)只讀屬性的支持以防止意外刪除(然而一些DSC可不遵守此屬性)。一些相機(jī)允許切換只讀屬性(通常表示為預(yù)覽屏幕上的鑰匙圖標(biāo))。提取圖像時(shí),相機(jī)在文件系統(tǒng)內(nèi)創(chuàng)建文件,文件創(chuàng)建后,編碼圖像的數(shù)字?jǐn)?shù)據(jù)的序列儲(chǔ)存在文件中(注意,在一些情況下顛倒這個(gè)序列,且任一情況都是可接受的)。通常以傳統(tǒng)的壓縮圖像格式(如JPEG)來(lái)格式化數(shù)據(jù),如DCF所指定。為了完成創(chuàng)建文件及儲(chǔ)存圖像 數(shù)據(jù)的動(dòng)作,相機(jī)必須經(jīng)過(guò)以下動(dòng)作集合(假設(shè)設(shè)備上有空閑的空間),然而未必是以此具體順序I)從文件系統(tǒng)的根目錄區(qū)域開(kāi)始,遍歷代表儲(chǔ)存在設(shè)備上的目錄層次結(jié)構(gòu)的文件系統(tǒng)區(qū)塊來(lái)尋找目錄(文件夾)的目錄表區(qū)塊,新圖像將儲(chǔ)存在所述目錄表區(qū)塊中。2)添加條目到描述正創(chuàng)建的新文件的所述目錄表區(qū)塊。此條目含有關(guān)于文件名稱及所述文件的數(shù)據(jù)的起點(diǎn)(即第一數(shù)據(jù)塊)在文件系統(tǒng)內(nèi)所處位置的信息。3)基于儲(chǔ)存在文件分配表中的信息尋找空閑的數(shù)據(jù)集群。將所述數(shù)據(jù)集群標(biāo)記為正在使用中并將圖像數(shù)據(jù)的集群值儲(chǔ)存在代表集群的區(qū)塊的連續(xù)范圍中(FAT允許在創(chuàng)建文件系統(tǒng)時(shí)設(shè)置集群大小,且FAT在文件分配表結(jié)構(gòu)中指示2KB和32KB之間的這一大小)。4)按需要重復(fù)步驟3直到圖像數(shù)據(jù)的所有字節(jié)寫入文件系統(tǒng)。當(dāng)數(shù)據(jù)的每一新集群寫入時(shí),從先前的集群?jiǎn)为?dú)鏈接所述新集群以使得可以邏輯上連續(xù)的方式來(lái)讀取圖像文件,即使數(shù)據(jù)集群分散在儲(chǔ)存文件系統(tǒng)的媒體周圍。數(shù)字相機(jī)主機(jī)執(zhí)行的所有文件系統(tǒng)更新表現(xiàn)為對(duì)存儲(chǔ)卡存儲(chǔ)設(shè)備代理的閃存的寫入訪問(wèn)。存儲(chǔ)卡固件可在數(shù)字靜態(tài)相機(jī)中使用與文件系統(tǒng)操作的大范圍實(shí)施兼容的一系列探試程序來(lái)檢測(cè)這些操作集合的完成I)在主機(jī)設(shè)備最后一次對(duì)閃存的寫入訪問(wèn)后,等待預(yù)定時(shí)間到期。如果更多的寫入訪問(wèn)在超時(shí)期間發(fā)生,那么假定主機(jī)設(shè)備繼續(xù)更新文件系統(tǒng)、重置計(jì)時(shí)器并繼續(xù)等待。2)—旦發(fā)生超時(shí)到期,就掃描文件系統(tǒng)的目錄結(jié)構(gòu),并通過(guò)對(duì)比目錄結(jié)構(gòu)與在最后一次掃描期間保存的副本來(lái)檢測(cè)自最后一次掃描以來(lái)是否已創(chuàng)建任何新文件。3)對(duì)所檢測(cè)的每個(gè)新文件來(lái)說(shuō),遍歷數(shù)據(jù)集群的單獨(dú)鏈接清單直到清單末尾,在所述遍歷時(shí)刻,儲(chǔ)存在數(shù)據(jù)集群中的數(shù)據(jù)字節(jié)的數(shù)量應(yīng)匹配文件的目錄表?xiàng)l目中所指出文件的大小。如果提早終止掃描,假定步驟I期間的逾期超時(shí)過(guò)短,那么使掃描結(jié)果無(wú)效、增加超時(shí)時(shí)間并返回步驟I以允許主機(jī)設(shè)備完成更新文件系統(tǒng)。如果用戶選擇刪除任一圖像,相機(jī)需要更新存儲(chǔ)設(shè)備上的文件系統(tǒng)信息。具體地,相機(jī)進(jìn)行以下操作I)寫入到含有待刪除圖像的文件夾的目錄表區(qū)塊,從表中移除對(duì)應(yīng)于圖像的文件的名稱和文件系統(tǒng)信息。2)更新文件分配表區(qū)塊以將所刪除文件使用的數(shù)據(jù)集群區(qū)塊標(biāo)記為空閑。由于數(shù)字相機(jī)主機(jī)執(zhí)行的全部文件系統(tǒng)更新(包括文件刪除)表現(xiàn)為對(duì)閃存的寫入訪問(wèn),較早描述的文件系統(tǒng)更新檢測(cè)機(jī)制也檢測(cè)這些操作。在經(jīng)過(guò)更新檢測(cè)之后的目錄結(jié)構(gòu)掃描后,如果存儲(chǔ)卡固件察覺(jué)到此刻所更新的掃描結(jié)果中缺少一些文件,那么推斷出所述文件已從文件系統(tǒng)中刪除。固件將物理數(shù)據(jù)塊定位在對(duì)應(yīng)于所刪除的文件的閃存中,并且所述固件將所述區(qū)塊返回到持久性數(shù)據(jù)庫(kù)中的空閑物理區(qū)塊池。除主機(jī)相機(jī)能夠讀取和寫入存儲(chǔ)設(shè)備外,控制器可執(zhí)行自主讀取和寫入以將數(shù)字?jǐn)?shù)據(jù)上傳到遠(yuǎn)程計(jì)算機(jī)系統(tǒng)并刪除圖像或其它數(shù)據(jù)。在不了解的情況下通過(guò)主機(jī)相機(jī)或主 機(jī)相機(jī)的配合以排除文件系統(tǒng)一致性問(wèn)題或數(shù)據(jù)損壞的方式來(lái)執(zhí)行此操作。舉例來(lái)說(shuō),在本發(fā)明的一個(gè)實(shí)施方式中,在檢測(cè)到預(yù)先設(shè)定的標(biāo)準(zhǔn)(如達(dá)到的存儲(chǔ)器利用率閾值、程控動(dòng)作或用戶進(jìn)行的人工干預(yù))后,控制器執(zhí)行以下活動(dòng)第一,控制器枚舉用于刪除的候選者的文件清單,并且所述控制器記錄用來(lái)儲(chǔ)存這些文件的扇區(qū)分配范圍(集群)的清單。可根據(jù)各種標(biāo)準(zhǔn)中的任一標(biāo)準(zhǔn)來(lái)選擇候選者,例如,候選者可能是最舊的文件或所儲(chǔ)存的最近最少訪問(wèn)或最不經(jīng)常訪問(wèn)的文件。集群信息可儲(chǔ)存在存儲(chǔ)卡中的存儲(chǔ)器的保留區(qū)中。第二,在鎖定主機(jī)(例如相機(jī))以防止訪問(wèn)存儲(chǔ)陣列時(shí),控制器為所枚舉的文件標(biāo)記目錄條目并設(shè)置所述目錄條目各自的刪除標(biāo)記,并且所述控制器執(zhí)行保持目錄條目的扇區(qū)的讀取/修改/寫入順序。此時(shí),當(dāng)存儲(chǔ)陣列處于修改狀態(tài)時(shí),主機(jī)可能正在儲(chǔ)存修改的扇區(qū)的緩沖副本且隨后可能由于相關(guān)或無(wú)關(guān)的目錄操作而重寫控制器做出的改變。同樣,文件的數(shù)據(jù)存儲(chǔ)保持為被分配和未修改(即圖像自身仍存在于存儲(chǔ)陣列中)。第三,控制器等待主機(jī)設(shè)備斷電及隨后再次通電??赏ㄟ^(guò)主機(jī)讀取分區(qū)表(或主啟動(dòng)記錄)和FAT啟動(dòng)塊來(lái)檢測(cè)新的通電循環(huán)(由于假設(shè)主機(jī)將需要在斷電-通電循環(huán)后完全補(bǔ)充主機(jī)的高速緩存)。如下文所論述,由于存在與文件系統(tǒng)安裝操作一致的主機(jī)進(jìn)行的扇區(qū)訪問(wèn),主機(jī)和存儲(chǔ)卡的動(dòng)力循環(huán)可能與僅為存儲(chǔ)卡的動(dòng)力循環(huán)加以區(qū)分。第四,控制器檢查用于刪除的候選文件的清單并檢查看看相應(yīng)的目錄條目是否標(biāo)記為已刪除。若如此,此種情況指示主機(jī)并未重寫上文做出的改變,并且主機(jī)現(xiàn)已讀取(高速緩存)目錄條目的最新版本。已恢復(fù)到未刪除的任何文件由于從主機(jī)相機(jī)的高速緩存寫入而會(huì)丟失刪除標(biāo)記的讀取/修改/寫入。如果存在此種文件(即,如果文件已恢復(fù)到非刪除狀態(tài)),那么程序返回到上述步驟2,且重復(fù)所述程序以便設(shè)定刪除標(biāo)記。然后程序從步驟2繼續(xù)進(jìn)行。第五,在沒(méi)有主機(jī)參與的情況下,具有通過(guò)控制器標(biāo)記為已刪除的目錄條目的文件現(xiàn)不再存在于所枚舉的文件系統(tǒng)中,但仍分配相應(yīng)的數(shù)據(jù)存儲(chǔ)單元(例如,F(xiàn)AT中的集群)。這些數(shù)據(jù)存儲(chǔ)單元被有效地“孤立”是因?yàn)闆](méi)有指向數(shù)據(jù)存儲(chǔ)單元的目錄條目,但由于這些數(shù)據(jù)存儲(chǔ)單元在步驟I中記錄因而被稱為到控制器的范圍(集群)清單。第六,在步驟I和步驟5中追蹤孤立數(shù)據(jù)存儲(chǔ)單元并標(biāo)記為“不良”,但所述孤立數(shù)據(jù)存儲(chǔ)單元維持在來(lái)自步驟I的追蹤清單中??墒褂萌绮襟E2中所用的類似讀取/修改/寫入語(yǔ)義(同時(shí)鎖定主機(jī)相機(jī))來(lái)執(zhí)行標(biāo)記。然而,直到下一動(dòng)力循環(huán)才會(huì)了解這些修改是否免于主機(jī)的進(jìn)一步寫入。
第七,控制器等待主機(jī)的另一斷電通電循環(huán)。第八,控制器循環(huán)訪問(wèn)步驟6中修改的孤立數(shù)據(jù)存儲(chǔ)單元以判定修改是否變?yōu)橛谰眯缘?即,判定主機(jī)隨后是否改寫修改)。如果數(shù)據(jù)存儲(chǔ)單元仍被標(biāo)記為已刪除或現(xiàn)為新文件而分配,那么不同于最初在步驟I中追蹤的數(shù)據(jù)存儲(chǔ)單元,刪除候選被永久刪除。然而,如果數(shù)據(jù)存儲(chǔ)單元分配已恢復(fù)到先前值,那么程序返回到步驟5并重復(fù)程序。第九,一旦已根據(jù)上文充分處理步驟I中編譯的文件清單,那么清除(刪除)清單和任何其它追蹤結(jié)構(gòu),且自動(dòng)文件刪除程序可能再次從新候選清單開(kāi)始。為更好理解使用上述程序的原因,首先考慮,在主機(jī)設(shè)備利用可移除存儲(chǔ)卡或其它存儲(chǔ)設(shè)備的系統(tǒng)(如DSC)中,期望主機(jī)是唯一的“主控器”;即,期望主機(jī)是唯一能對(duì)數(shù)據(jù)及/或存儲(chǔ)設(shè)備所儲(chǔ)存的數(shù)據(jù)的結(jié)構(gòu)做出改變的設(shè)備。因此,由于性能、用戶體驗(yàn)等原因,主機(jī)將高速緩存數(shù)據(jù)和構(gòu)成存儲(chǔ)設(shè)備的文件系統(tǒng)結(jié)構(gòu)的元數(shù)據(jù)的部分(通常為絕大部分)。但在系統(tǒng)(如由現(xiàn)有可移除存儲(chǔ)卡所呈現(xiàn)的系統(tǒng))中,其中主機(jī)DSC未注意到的第二控制器也能對(duì)存儲(chǔ)設(shè)備所儲(chǔ)存的數(shù)據(jù)和元數(shù)據(jù)做出改變(例如,刪除所述數(shù)據(jù)和元數(shù)據(jù)的部分以為新數(shù)據(jù)(圖像)及/或元數(shù)據(jù)騰出空位),在由主機(jī)所高速緩存的信息與由存儲(chǔ)設(shè)備所儲(chǔ)存的信息之間產(chǎn)生沖突存在內(nèi)在風(fēng)險(xiǎn),且使其它控制器做出主機(jī)重寫改變也存在內(nèi)在風(fēng)險(xiǎn)。本發(fā)明提供用于解決此種沖突和重寫情況的方法。如上文所指出,可移除存儲(chǔ)卡或其它存儲(chǔ)設(shè)備具有文件系統(tǒng)。文件系統(tǒng)為設(shè)備整理儲(chǔ)存在實(shí)際存儲(chǔ)媒體(即,閃存陣列或硬盤等)中的信息的構(gòu)件。一般來(lái)說(shuō),文件系統(tǒng)定義儲(chǔ)存和組織文件和文件所包含的數(shù)據(jù)的方法以允許主機(jī)或其它控制器定位并訪問(wèn)所述文件和數(shù)據(jù)。為此,文件系統(tǒng)將存儲(chǔ)媒體的固定大小的扇區(qū)整理成文件和目錄并保持追蹤哪一扇區(qū)屬于哪一文件及哪些扇區(qū)未使用。多數(shù)文件系統(tǒng)(包括FAT、exFAT及其它)將數(shù)據(jù)定址在由存儲(chǔ)媒體的指定數(shù)量的扇區(qū)組成的稱為集群的固定大小單元(或區(qū)塊)中。然后,此為可經(jīng)分配以儲(chǔ)存文件的最小的物理存儲(chǔ)空間。文件系統(tǒng)還包括目錄(如文件分配表)以將文件名稱與儲(chǔ)存在存儲(chǔ)媒體中的文件聯(lián)系起來(lái)。本發(fā)明適用于采用各種文件系統(tǒng)中的任一 種的存儲(chǔ)設(shè)備,所述文件系統(tǒng)包括(但不限于)FAT和exFAT。圖3圖示FAT文件系統(tǒng)40的實(shí)例,但圖3僅為說(shuō)明性的且不應(yīng)視為對(duì)本發(fā)明范圍的限制。參閱圖3,文件系統(tǒng)的數(shù)據(jù)區(qū)域50劃分為集群52,如上文所指出,所述集群52為文件系統(tǒng)中的可分配的最小儲(chǔ)存單元(例如,4kB)。集群可為任一整數(shù)的扇區(qū),通常為1、2、
4、8等。儲(chǔ)存在由集群代表的存儲(chǔ)媒體位置中的將是實(shí)際用戶數(shù)據(jù),例如,關(guān)于DSC的圖像數(shù)據(jù)。FAT扇區(qū)46包括識(shí)別數(shù)據(jù)區(qū)域中的集群分配的映射。圖像或其它數(shù)據(jù)分配有用于JPEG圖像的文件名稱,例如,DSC_0001. jpg。文件系統(tǒng)將此文件儲(chǔ)存在由文件名稱(如/ DSIM/100NCD70 / DSC_0001. jpg)所識(shí)別的位置。此識(shí)別(例如,記錄在根目錄區(qū)域,或在一些情況下,如果不存在獨(dú)立根目錄區(qū)域,那么記錄在數(shù)據(jù)區(qū)域)為到文件DSC_0001. jpg的位置的映射。映射識(shí)別根級(jí)目錄,在此實(shí)例中,DSM又指向子目錄,100NCD70自身指向文件DSC_100. jpg。映射被稱為目錄結(jié)構(gòu),且所述映射基本上為具有指向集群的條目的一系列鏈接表,在所述集群處,可找到下一表或儲(chǔ)存用戶數(shù)據(jù)的實(shí)際文件。在目錄結(jié)構(gòu)內(nèi),單個(gè)條目包括將條目識(shí)別為文件或目錄表的屬性、識(shí)別是否已刪除條目的指示符和另一屬性。當(dāng)然,就實(shí)際存儲(chǔ)空間來(lái)說(shuō),單個(gè)集群相對(duì)較小,因此通常為相對(duì)較大文件的圖像將占據(jù)許多此種集群。在FAT扇區(qū)中的文件分配表中追蹤集群到文件的此種分配。從代表第一集群的條目開(kāi)始,所述第一集群儲(chǔ)存DSC_0001. jpg的圖像數(shù)據(jù),文件分配表中的每個(gè)條目包括指向儲(chǔ)存所述文件的圖像數(shù)據(jù)的下一集群的指針或?qū)⑾嚓P(guān)聯(lián)集群識(shí)別為鏈中的最后一個(gè)集群的指示符,所述最后一個(gè)集群儲(chǔ)存此種數(shù)據(jù)。當(dāng)相機(jī)加載圖像時(shí),文件系統(tǒng)讀取文件分配表中對(duì)應(yīng)于所選圖像的條目,使得可從相應(yīng)集群位置擷取圖像數(shù)據(jù)。同樣,當(dāng)將新圖像儲(chǔ)存到存儲(chǔ)設(shè)備時(shí),更新FAT扇區(qū)以反映集群的分配到新圖像的存儲(chǔ)。此情況完全暗示文件必須如何從文件系統(tǒng)刪除。必須做兩件事。第一,文件分配表中的集群鏈中的每個(gè)集群必須標(biāo)記為“未使用”(或指示所述集群可再次使用的一些其它指示),所述集群識(shí)別儲(chǔ)存主題文件(以上實(shí)例中的DSC_0001. jpg)的位置。第二,主題文件的目錄表?xiàng)l目必須標(biāo)記為已刪除。這些操作必須自動(dòng)完成以便存在操作完成的保證。通常,文件系統(tǒng)將首先從目錄表(所述目錄表基本上使得文件(即圖像)對(duì)主機(jī)不可用)中刪除文件條目,且接著文件系統(tǒng)將文件分配表?xiàng)l目標(biāo)記為可用。注意,此程序不涉及用戶數(shù)據(jù)本身,所述用戶數(shù)據(jù)通常將保持儲(chǔ)存在物理存儲(chǔ)媒體中一段時(shí)間,直到物理抹除或重寫所述存儲(chǔ)媒體位置。同樣,如果未執(zhí)行將文件分配表?xiàng)l目標(biāo)記為“可用”的第二操作,那么集群將保持為被分配,但儲(chǔ)存在集群中的信息將不可用,且因此將導(dǎo)致存儲(chǔ)設(shè)備中的存儲(chǔ)空間·的凈損失(從主機(jī)的角度來(lái)看)。在本發(fā)明的背景下,在一些情況下,在傾向“一次寫入”格式的存儲(chǔ)設(shè)備的情況下,這種凈損失可能是合意的。在本發(fā)明的背景下,上述操作較復(fù)雜,因?yàn)椴粌H主機(jī)相機(jī)讀取和寫入存儲(chǔ)設(shè)備,存儲(chǔ)設(shè)備控制器也讀取和寫入存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備控制器負(fù)責(zé)上傳圖像數(shù)據(jù)到遠(yuǎn)程計(jì)算機(jī)系統(tǒng)等等,并且所述存儲(chǔ)設(shè)備控制器還負(fù)責(zé)自動(dòng)刪除圖像以確保存儲(chǔ)空間總是對(duì)新圖像可用(即,負(fù)責(zé)從主機(jī)相機(jī)的立場(chǎng)提供“無(wú)限存儲(chǔ)器”)。在不了解主機(jī)相機(jī)的情況下進(jìn)行存儲(chǔ)設(shè)備控制器的這些操作,這導(dǎo)致了相機(jī)和存儲(chǔ)設(shè)備控制器的對(duì)于如何分配存儲(chǔ)空間和將哪些信息儲(chǔ)存在存儲(chǔ)空間的概念之間的潛在沖突。參閱圖4,假設(shè)存儲(chǔ)設(shè)備的文件系統(tǒng)中的目錄表58,100NCD70包括對(duì)各種文件(代表11張照片的DSC_0001. jpg、DSC_0002. jpg…DSC_0011. jpg)的引用。進(jìn)一步假設(shè)相機(jī)的高速緩存60 (假定所述高速緩存60為同步直寫式高速緩存)儲(chǔ)存此目錄表的副本。缺少回收與此區(qū)塊相關(guān)聯(lián)的存儲(chǔ)空間的一些理由,相機(jī)將假定此目錄表保持不變。如果拍攝了新照片(DSC_0012. jpg),相機(jī)將在目錄表的高速緩存版本中創(chuàng)建新條目并將修改的目錄表寫入存儲(chǔ)設(shè)備。然而,因?yàn)橄鄼C(jī)假定存儲(chǔ)設(shè)備為對(duì)相機(jī)做出修改的唯一設(shè)備,所以只要目錄表維持高速緩存版本,相機(jī)就不需要從存儲(chǔ)設(shè)備重讀取目錄表。當(dāng)然,情況并非如此?,F(xiàn)有的存儲(chǔ)設(shè)備包括控制器,所述控制器自主上傳圖像到遠(yuǎn)程計(jì)算機(jī)系統(tǒng)及/或電子相冊(cè),且所述控制器還從存儲(chǔ)中刪除圖像以便為新圖像騰出空位。這些刪除操作影響目錄表,但如果相機(jī)保持所述表的先前高速緩存版本,那么將避免對(duì)相機(jī)的所述影響。因此,例如,如果存儲(chǔ)設(shè)備控制器在相機(jī)高速緩存100NCD70目錄表時(shí)刪除文件DSC_0002. jpg,那么目錄表的所述高速緩存版本(所述目錄表保持對(duì)刪除文件的引用)將不同于處于存儲(chǔ)設(shè)備上的目錄表的版本,但相機(jī)不會(huì)了解差異也不會(huì)從存儲(chǔ)設(shè)備重讀取目錄表的版本來(lái)判定存在差異。然后,如果相機(jī)試圖從存儲(chǔ)設(shè)備擷取圖像文件DSC_0002. jpg (注意,僅僅因?yàn)橄鄼C(jī)已高速緩存引用的此圖像的目錄表并不意味相機(jī)也高速緩存了圖像本身),那么將發(fā)生文件系統(tǒng)錯(cuò)誤,因?yàn)閺拇鎯?chǔ)設(shè)備的角度來(lái)看不存在指向圖像的目錄表?xiàng)l目或文件分配表?xiàng)l目(不管圖像數(shù)據(jù)是否仍存在于存儲(chǔ)媒體中)。只有在相機(jī)經(jīng)歷斷電通電循環(huán)且因此更新相機(jī)的高速緩存時(shí),將再次同步目錄表的兩個(gè)版本。或者,在上述場(chǎng)景中,如果相機(jī)確實(shí)含有DSC_0002. jpg的高速緩存版本,用戶可能被誤導(dǎo)而相信圖像存在(因?yàn)橛脩艨稍谙鄼C(jī)上觀看圖片),但當(dāng)用戶試圖從存儲(chǔ)設(shè)備恢復(fù)圖像時(shí),圖像不見(jiàn)了。其它錯(cuò)誤也是可能的。例如,假定相機(jī)已儲(chǔ)存DSC_0012. jpg并已將修改的目錄表寫入存儲(chǔ)設(shè)備,且存儲(chǔ)設(shè)備控制器隨后已刪除DSC_0002. jpg?,F(xiàn)假定相機(jī)捕捉新圖像DSC_0013. jpg。正如以前,這種情況導(dǎo)致目錄表的高速緩存版本得到更新以包括對(duì)新圖像文件的引用,且目錄表的此修改版本將寫入存儲(chǔ)設(shè)備。但目錄表的此種版本包括對(duì)DSC_0002. jpg的引用,所述DSC_0002. jpg恰好為存儲(chǔ)設(shè)備控制器刪除的文件。相機(jī)的動(dòng)作已重寫所述存儲(chǔ)設(shè)備控制器。進(jìn)一步,如果相機(jī)也并未高速緩存關(guān)于DSC_0002. jpg的文件分配表部分,那么結(jié)果將為存儲(chǔ)設(shè)備將含有DSC_0002. jpg的目錄表?xiàng)l目但不含DSC_0002. jpg的文件分配表?xiàng)l目(可能已修改先前版本以指示與DSC_0002. jpg相關(guān)聯(lián)的集群可用),且再次導(dǎo)致文件系統(tǒng)錯(cuò)誤。當(dāng)然,如果相機(jī)高速緩存文件分配表?xiàng)l目且存儲(chǔ)設(shè)備正在刪除文件,那么可能導(dǎo)致相似類型的錯(cuò)誤。事實(shí)上,這種情況可能導(dǎo)致相機(jī)重寫文 件分配以指出數(shù)據(jù)區(qū)域中的所述集群被分配的情況,但因?yàn)榇鎯?chǔ)設(shè)備控制器已刪除實(shí)際文件,所以不存在實(shí)際文件。換句話說(shuō),分配了存儲(chǔ)空間但并未實(shí)際使用存儲(chǔ)空間,且因此減少了設(shè)備的有效存儲(chǔ)空間。為解決如上文所論述的所述問(wèn)題,本發(fā)明依賴于同步“障礙”,通過(guò)所述同步“障礙”,存儲(chǔ)設(shè)備控制器可保證主機(jī)相機(jī)對(duì)存儲(chǔ)設(shè)備的文件系統(tǒng)(例如,如相機(jī)的高速緩存中所代表的文件系統(tǒng))的理解與存儲(chǔ)設(shè)備控制器對(duì)文件系統(tǒng)的理解相同(即同步)(即,兩個(gè)設(shè)備關(guān)于存儲(chǔ)設(shè)備文件系統(tǒng)的狀態(tài)相同)。名義上,此為相機(jī)動(dòng)力循環(huán)(即主機(jī)相機(jī)的斷電、通電),盡管對(duì)一些相機(jī)來(lái)說(shuō),高速緩存的狀態(tài)可能在整個(gè)動(dòng)力循環(huán)中持續(xù),且因此在一些實(shí)施中,等待動(dòng)力循環(huán)連同主啟動(dòng)記錄的(由存儲(chǔ)設(shè)備控制器)觀測(cè)的讀取(由主機(jī)相機(jī)讀取)以及文件系統(tǒng)信息,來(lái)確保相機(jī)的高速緩存內(nèi)容正在被完全重新初始化可能是必要的。在其它實(shí)施中,不同的觀測(cè)標(biāo)準(zhǔn)可用于決定文件系統(tǒng)何時(shí)由主機(jī)安裝,且所述不同觀測(cè)標(biāo)準(zhǔn)可用作同步障礙條件。參閱圖5,指示具有指向文件分配表62的指針的目錄表58的實(shí)例。文件分配表包括在數(shù)據(jù)區(qū)域中建立儲(chǔ)存實(shí)施圖像數(shù)據(jù)之處的條目的鏈接清單。目錄表58儲(chǔ)存在集群中,例如,儲(chǔ)存在文件系統(tǒng)的數(shù)據(jù)區(qū)域中。假定存儲(chǔ)設(shè)備控制器已決定應(yīng)刪除文件DSC_0003.jpg以使為新圖像騰出空位(例如,因?yàn)橐堰_(dá)到所使用的存儲(chǔ)空間量的閾值或已滿足一些其它刪除標(biāo)準(zhǔn))。程序66 (圖6中所示)中的第一步驟是用于存儲(chǔ)設(shè)備控制器保存主題文件(DSC_0003. jpg)的目錄條目(例如,在文件系統(tǒng)外并可訪問(wèn)存儲(chǔ)設(shè)備控制器的存儲(chǔ)器64的區(qū)域)、所述主題文件的一些屬性(例如在目錄條目?jī)?chǔ)存在文件系統(tǒng)的情況下),和在文件分配表中識(shí)別的集群的清單,所述主題文件的目錄條目、所述主題文件的一些屬性及所述集群的清單分配到主題文件的存儲(chǔ)(步驟68)。在這個(gè)實(shí)例中,所述集群為集群C0-C9。此存儲(chǔ)將允許稍后檢查同步障礙內(nèi)的一致性(為了解釋,在本實(shí)例中,此存儲(chǔ)將為主機(jī)的動(dòng)力循環(huán)但在其它情況下為其它事件,如上文所論述)。一旦已記錄此信息,主題文件的目錄條目就標(biāo)記為“已刪除”(步驟70),且程序等待同步障礙(例如主機(jī)斷電、通電)(步驟72)。一旦觀測(cè)到同步障礙,存儲(chǔ)設(shè)備控制器從存儲(chǔ)器存儲(chǔ)區(qū)域讀取獲得主題文件的目錄條目的文件系統(tǒng)地址(步驟74)且,存儲(chǔ)設(shè)備控制器使用所述信息讀取在文件系統(tǒng)中所述地址處的目錄條目。如果所讀取的內(nèi)容指示文件未刪除,那么指示主機(jī)重寫存儲(chǔ)設(shè)備控制器做出的改變,并且控制器因此重新開(kāi)始程序(步驟68)。然而,如果來(lái)自文件系統(tǒng)的目錄條目標(biāo)記為已刪除(步驟76),那么指示相機(jī)并未重寫修改,且因?yàn)樵竭^(guò)了同步障礙(表示相機(jī)重新安裝文件系統(tǒng)),所以存儲(chǔ)設(shè)備控制器可保證相機(jī)的高速緩存將不含有主題文件的目錄表?xiàng)l目。此刻,文件分配表仍含有為主題文件分配的集群,但在文件系統(tǒng)中不存在指向此 集群集合的目錄條目。因此,存儲(chǔ)設(shè)備控制器從存儲(chǔ)器讀取分配給主題文件的集群的先前所存儲(chǔ)的清單,并且存儲(chǔ)設(shè)備控制器在文件系統(tǒng)文件分配表中將所述集群標(biāo)記為“不良”(步驟78)。此為指示文件系統(tǒng)的比特編碼(且因此指示主機(jī)這些集群不應(yīng)用于儲(chǔ)存信息)。然后存儲(chǔ)設(shè)備控制器等待另一同步障礙(步驟80)。注意,集群在此刻不只標(biāo)記為“空閑”是因?yàn)榕c主機(jī)的高速緩沖沖突可能導(dǎo)致一些修改生效(在同步障礙范圍內(nèi))及另一些修改不生效(由于通過(guò)從相機(jī)的高速緩存寫入而重寫),此行為將產(chǎn)生文件系統(tǒng)錯(cuò)誤(例如,集群可能被分配,但沒(méi)有目錄條目會(huì)指向所述集群;或更嚴(yán)重的是,在缺少對(duì)整個(gè)文件系統(tǒng)進(jìn)行全面掃描以尋找指向分配給“新”圖像的集群的目錄條目的情況下,相機(jī)可能已經(jīng)將新圖像數(shù)據(jù)寫入到“空閑”集群,且存儲(chǔ)設(shè)備控制器將不能區(qū)分“舊”圖像數(shù)據(jù)和“新”圖像數(shù)據(jù))。為避免這些難題,集群標(biāo)記為“不良”且存儲(chǔ)設(shè)備控制器等待另一同步障礙。在檢測(cè)到所述同步障礙(步驟80)后,存儲(chǔ)設(shè)備控制器再次從存儲(chǔ)器獲得主題文件的集群清單并檢查每一個(gè)此種集群以決定所述集群當(dāng)前是否標(biāo)記為“不良”(步驟82)。如果集群中的任何一個(gè)集群未標(biāo)記為“不良”(步驟84)(指示與主機(jī)相機(jī)的高速緩存沖突),那么程序恢復(fù)到先前步驟(步驟78),且存儲(chǔ)設(shè)備控制器標(biāo)記集群為“不良”。可選地,可再次標(biāo)記所有原始集群或僅標(biāo)記狀態(tài)改變并不再標(biāo)記為“不良”的集群。然而,如果先前分配給主題文件的所有集群標(biāo)記為“不良”,那么指示來(lái)自先前步驟的修改已生效,且因?yàn)橹鳈C(jī)已重新安裝文件系統(tǒng),所以主機(jī)的高速緩存的狀態(tài)保證與存儲(chǔ)設(shè)備控制器所觀測(cè)的文件系統(tǒng)同步。相應(yīng)地,存儲(chǔ)設(shè)備控制器現(xiàn)將主題集群標(biāo)記為“空閑”或“可用”(步驟86 ),意味著所述主題集群可用于儲(chǔ)存新數(shù)據(jù)。存儲(chǔ)設(shè)備控制器現(xiàn)需要核實(shí)此改變已生效,因此存儲(chǔ)設(shè)備控制器再次等待另一同步障礙(步驟88)。在檢測(cè)到所述同步障礙后,存儲(chǔ)設(shè)備控制器再次從存儲(chǔ)器獲得主題文件的集群的清單并檢查每一個(gè)此種集群(步驟90)以決定所述集群當(dāng)前是否標(biāo)記為“不良”(步驟92)。如果集群中的任何一個(gè)集群標(biāo)記為“不良”(指示與主機(jī)相機(jī)的高速緩存沖突),那么程序恢復(fù)到先前步驟(步驟86),且存儲(chǔ)設(shè)備控制器將集群標(biāo)記為“空閑”??蛇x地,可再次標(biāo)記所有原始集群或僅標(biāo)記狀態(tài)改變并標(biāo)記為“不良”的集群。然而,如果先前分配給主題文件的所有集群未標(biāo)記為“不良”,那么指示來(lái)自先前步驟的修改已生效,且因?yàn)橹鳈C(jī)已重新安裝文件系統(tǒng),所以主機(jī)的高速緩存的狀態(tài)保證與存儲(chǔ)設(shè)備控制器所觀測(cè)的文件系統(tǒng)同步。相應(yīng)地,存儲(chǔ)設(shè)備控制器已成功地完成主題文件的刪除,并且存儲(chǔ)設(shè)備控制器可從存儲(chǔ)器刪除集群的先前所保存清單和目錄表信息(以防止重復(fù)關(guān)于此文件的刪除循環(huán))(步驟94)。注意,可針對(duì)多個(gè)文件并行執(zhí)行此程序,且甚至可針對(duì)處于刪除程序的不同狀態(tài)下的文件執(zhí)行此程序。結(jié)合以上描述,應(yīng)認(rèn)識(shí)到,存儲(chǔ)設(shè)備控制器具有非常小的高速緩存且因此當(dāng)控制器做出上文所論述的任一修改時(shí),通常將涉及讀取-修改-寫入循環(huán)(因?yàn)樾畔⒖赡懿淮嬖谟诳刂破鞯母咚倬彺嬷?。必須讀取、隨后修改、隨后回寫扇區(qū)數(shù)據(jù)。這些操作花費(fèi)時(shí)間,所以為了防止這些操作與相機(jī)可能參與的操作(例如,將新圖像數(shù)據(jù)寫入存儲(chǔ)設(shè)備)沖突,在存儲(chǔ)設(shè)備控制器直寫到文件系統(tǒng)時(shí),所述操作將被重寫,存儲(chǔ)設(shè)備控制器短期鎖定主機(jī)使得控制器參與讀取-修改-寫入操作。因此保證相機(jī)操作在任何控制器寫入前進(jìn)行(在這種情況下,控制器高速緩存將加載與相機(jī)高速緩存所儲(chǔ)存的相同的文件系統(tǒng)信息版本),或保證相機(jī)操作在控制器寫入后(因此重寫控制器的修改,但重寫上述程序旨在適應(yīng))但不在控制器操作期間進(jìn)行。為確保不丟失相機(jī)數(shù)據(jù),控制器緩沖在此鎖定期間來(lái)自相機(jī)的任何寫入。上文所提及的是控制器可回應(yīng)于觸發(fā)事件發(fā)起上述程序。觸發(fā)事件可為圖像數(shù)據(jù)從存儲(chǔ)設(shè)備成功傳送到遠(yuǎn)程計(jì)算機(jī)系統(tǒng)或電子相冊(cè)的確認(rèn),或者觸發(fā)事件可為結(jié)合所達(dá)到的存儲(chǔ)設(shè)備空間的閾值級(jí)的此種確認(rèn)。閾值級(jí)可為用戶可定義的(例如,如在指定用于·控制器的其它設(shè)定(如無(wú)線網(wǎng)絡(luò)參數(shù)、賬戶名稱及電子相冊(cè)的密碼等)時(shí),由用戶進(jìn)行的設(shè)定),或所述閾值級(jí)可為預(yù)先設(shè)定的閾值。可繼續(xù)刪除內(nèi)容,直到使得指定量的存儲(chǔ)空間可用(所述指定量可為與用來(lái)觸發(fā)刪除程序的閾值不同的閾值)。然而,刪除應(yīng)不涉及未從存儲(chǔ)設(shè)備上傳的文件,除非用戶肯定地指出應(yīng)刪除此種文件,以便防止圖像丟失等。圖7A和圖7B圖示以上實(shí)例。在圖7A中,即使所述圖像數(shù)據(jù)已經(jīng)上傳到存儲(chǔ)設(shè)備,圖像數(shù)據(jù)保存在存儲(chǔ)設(shè)備56上,直到由于新內(nèi)容的儲(chǔ)存而超過(guò)閾值96。此時(shí),從存儲(chǔ)設(shè)備刪除足夠量的先前卸載的內(nèi)容(使用上文所論述的程序66),以使得儲(chǔ)存于存儲(chǔ)設(shè)備上的信息的總量小于閾值量。在圖7B中,可見(jiàn)在儲(chǔ)存于存儲(chǔ)設(shè)備上的新內(nèi)容的量超過(guò)閾值96的情況下,仍然儲(chǔ)存內(nèi)容,直到所述內(nèi)容可從存儲(chǔ)設(shè)備卸載。文件可以先進(jìn)先出的順序或其它形式(例如用戶可定義的形式或最近最少觀看的方式等)來(lái)刪除文件,且在一些情況下,可繼續(xù)刪除直到已達(dá)到存儲(chǔ)設(shè)備的刪除閾值、已刪除儲(chǔ)存于存儲(chǔ)設(shè)備的固定數(shù)目或固定百分比的文件或已使得存儲(chǔ)設(shè)備中的指定百分比的存儲(chǔ)空間可用于儲(chǔ)存新文件等。因此,已描述從存儲(chǔ)設(shè)備的存儲(chǔ)媒體自主刪除內(nèi)容的方法和系統(tǒng)。盡管在與主機(jī)聯(lián)用的存儲(chǔ)設(shè)備的背景下論述,但本發(fā)明適用于任何主機(jī)-存儲(chǔ)設(shè)備組合。而且,用于從存儲(chǔ)設(shè)備刪除內(nèi)容的上述程序可以倒序操作以通過(guò)存儲(chǔ)設(shè)備控制器安全地將內(nèi)容移到存儲(chǔ)設(shè)備上而不干擾外部主機(jī)的操作。例如,控制器可搜出儲(chǔ)存新信息的足夠量的空閑集群、標(biāo)記所述扇區(qū)為“不良”并等待同步障礙。一旦確認(rèn)這些修改,存儲(chǔ)設(shè)備控制器就可在集群之間創(chuàng)建文件分配表鏈接并等待進(jìn)一步同步障礙。隨后,假定在同步障礙中驗(yàn)證鏈接,新內(nèi)容可下載到存儲(chǔ)設(shè)備上并儲(chǔ)存在對(duì)應(yīng)于相反集群的存儲(chǔ)空間中。當(dāng)然,因?yàn)閮?nèi)容將需要在同步障礙中驗(yàn)證,所以對(duì)于大文件,此舉動(dòng)可能在數(shù)個(gè)同步障礙中花費(fèi)時(shí)間。一旦所有數(shù)據(jù)驗(yàn)證為儲(chǔ)存在相反集群中,存儲(chǔ)設(shè)備控制器將創(chuàng)建目錄表?xiàng)l目以指向新集群分配的開(kāi)端。在進(jìn)一步實(shí)施方式中,在通電后可能有一段時(shí)間相機(jī)未安裝存儲(chǔ)設(shè)備的文件系統(tǒng),且因此存儲(chǔ)設(shè)備控制器可自由地讀取和寫入文件系統(tǒng)而無(wú)須確保相機(jī)高速緩存被同步。此時(shí)段將在控制器觀測(cè)到主機(jī)安裝存儲(chǔ)設(shè)備的文件系統(tǒng)時(shí)結(jié)束。
當(dāng)然,本發(fā)明不限于FAT文件系統(tǒng)或exFAT文件系統(tǒng),且本發(fā)明可結(jié)合任何文件系統(tǒng)使用,所述任何文件系統(tǒng) 維持類似于FAT和exFAT的結(jié)構(gòu)的結(jié)構(gòu)。
權(quán)利要求
1.一種自主操作存儲(chǔ)設(shè)備控制器的方法,所述方法包含以下步驟 在檢測(cè)到觸發(fā)事件后,存儲(chǔ)設(shè)備的控制器枚舉文件清單,所述文件為從所述存儲(chǔ)設(shè)備的存儲(chǔ)媒體中刪除的候選者,所述存儲(chǔ)媒體通信耦接到所述控制器,及記錄用來(lái)儲(chǔ)存所述候選文件的所述存儲(chǔ)媒體的扇區(qū)清單; 將所述枚舉文件清單的存儲(chǔ)設(shè)備文件系統(tǒng)目錄條目標(biāo)記為已刪除同時(shí)將所述存儲(chǔ)設(shè)備的主機(jī)設(shè)備鎖定以便無(wú)法訪問(wèn)所述存儲(chǔ)媒體,并執(zhí)行保持所述目錄條目的所述存儲(chǔ)媒體的所述扇區(qū)的讀取/修改/寫入順序; 等待第一主機(jī)設(shè)備同步事件; 在識(shí)別所述第一主機(jī)設(shè)備同步事件后,檢查用于刪除的所述候選文件清單,并決定是否將所述候選文件的相應(yīng)目錄條目標(biāo)記為已刪除; 如果所述候選文件的所述目錄條目未標(biāo)記為已刪除,那么重復(fù)將目錄條目標(biāo)記為已刪除的步驟,執(zhí)行保持所述目錄條目的所述存儲(chǔ)媒體的所述扇區(qū)的所述讀取/修改/寫入,并等待另外的第一主機(jī)設(shè)備同步事件;或者,如果所述候選文件的所述目錄條目標(biāo)記為已刪除,那么標(biāo)記孤立扇區(qū)以防止數(shù)據(jù)儲(chǔ)存到所述存儲(chǔ)媒體中的相應(yīng)數(shù)據(jù)存儲(chǔ)單元而將所述孤立扇區(qū)維持在所述扇區(qū)清單中,其中所述孤立扇區(qū)為具有標(biāo)記為已刪除的相應(yīng)目錄條目但具有仍然分配在所述存儲(chǔ)媒體中的相應(yīng)數(shù)據(jù)存儲(chǔ)單元的所述扇區(qū); 等待其它的主機(jī)設(shè)備同步事件,并在識(shí)別所述事件后,循環(huán)訪問(wèn)所述孤立扇區(qū)以決定所述主機(jī)設(shè)備隨后是否改寫所述讀取/修改/寫入動(dòng)作;及 如果所述孤立扇區(qū)已恢復(fù)到先前值,那么重復(fù)對(duì)所述孤立扇區(qū)的所述標(biāo)記,等待所述其它主機(jī)設(shè)備同步事件并決定所述主機(jī)設(shè)備隨后是否改寫所述讀取/修改/寫入動(dòng)作,或者,如果所述孤立扇區(qū)仍被標(biāo)記,那么將所述扇區(qū)清單分配為可用來(lái)儲(chǔ)存新數(shù)據(jù),及清除所述候選文件清單。
2.如權(quán)利要求I所述的方法,其中所述觸發(fā)事件包含已達(dá)到或已超過(guò)存儲(chǔ)媒體利用率閾值的指示。
3.如權(quán)利要求I所述的方法,其中所述觸發(fā)事件包含程控動(dòng)作。
4.如權(quán)利要求I所述的方法,其中所述觸發(fā)事件包含所述主機(jī)設(shè)備的用戶進(jìn)行的人工干預(yù)。
5.如權(quán)利要求I所述的方法,其中所述候選文件為儲(chǔ)存在所述存儲(chǔ)媒體中的最舊的文件。
6.如權(quán)利要求I所述的方法,其中所述候選文件為儲(chǔ)存在所述存儲(chǔ)媒體中的最近最少訪問(wèn)的文件。
7.如權(quán)利要求I所述的方法,其中所述候選文件為儲(chǔ)存在所述存儲(chǔ)媒體中的最不經(jīng)常訪問(wèn)的文件。
8.如權(quán)利要求I所述的方法,其中所述扇區(qū)信息儲(chǔ)存在所述存儲(chǔ)媒體的保留區(qū)。
9.如權(quán)利要求I所述的方法,其中所述第一主機(jī)設(shè)備同步事件包含所述主機(jī)設(shè)備的斷電隨后通電循環(huán)。
10.如權(quán)利要求9所述的方法,其中所述第一主機(jī)設(shè)備同步事件是由所述控制器檢測(cè)到所述主機(jī)設(shè)備讀取分區(qū)表或主啟動(dòng)記錄和文件分配表(FAT)啟動(dòng)塊來(lái)決定的。
11.如權(quán)利要求9所述的方法,其中所述第一主機(jī)設(shè)備同步事件通過(guò)所述控制器識(shí)別與文件系統(tǒng)安裝操作一致的所述存儲(chǔ)設(shè)備的文件系統(tǒng)的主機(jī)設(shè)備訪問(wèn)而與另一事件區(qū)分開(kāi)來(lái)。
12.如權(quán)利要求I所述的方法,其中使用讀取/修改/寫入語(yǔ)義標(biāo)記所述孤立扇區(qū),同時(shí)鎖定所述主機(jī)設(shè)備以便無(wú)法訪問(wèn)所述存儲(chǔ)設(shè)備。
13.如權(quán)利要求I所述的方法,其中重復(fù)刪除程序直到滿足以下條件中的至少一個(gè)條件已達(dá)到所述存儲(chǔ)設(shè)備的刪除閾值;已刪除儲(chǔ)存在所述存儲(chǔ)設(shè)備中的固定數(shù)目或百分比的文件;或已使儲(chǔ)存在所述存儲(chǔ)設(shè)備中的指定百分比的存儲(chǔ)空間可用于儲(chǔ)存新文件。
14.一種存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包含控制器和存儲(chǔ)媒體,所述控制器通信耦接到主機(jī)設(shè)備接口,所述控制器經(jīng)配置以進(jìn)行以下操作在檢測(cè)到觸發(fā)事件后,枚舉文件清單,所述文件為從所述存儲(chǔ)媒體中刪除的候選者,并記錄用于儲(chǔ)存所述候選文件的所述存儲(chǔ)媒體的扇區(qū)清單;將所述枚舉文件清單的存儲(chǔ)設(shè)備文件系統(tǒng)目錄條目標(biāo)記為已刪除同時(shí)鎖定耦接到所述主機(jī)設(shè)備接口的主機(jī)設(shè)備以便無(wú)法訪問(wèn)所述存儲(chǔ)媒體,并執(zhí)行保持所述目錄條目的所述存儲(chǔ)媒體的所述扇區(qū)的讀取/修改/寫入順序;等待第一主機(jī)設(shè)備同步事件,并在識(shí)別所述第一主機(jī)設(shè)備同步事件后,檢查用于刪除的所述候選文件清單并決定是否將所述候選文件的相應(yīng)目錄條目標(biāo)記為已刪除;如果所述候選文件的所述目錄條目未標(biāo)記為已刪除,那么重復(fù)將目錄條目標(biāo)記為已刪除的操作,執(zhí)行保持所述目錄條目的所述存儲(chǔ)媒體的所述扇區(qū)的所述讀取/修改/寫入,并等待另外的第一主機(jī)設(shè)備同步事件;或者,如果所述候選文件的所述目錄條目標(biāo)記為已刪除,那么標(biāo)記孤立扇區(qū)以防止數(shù)據(jù)儲(chǔ)存到所述存儲(chǔ)媒體中的相應(yīng)數(shù)據(jù)存儲(chǔ)單元而將所述孤立扇區(qū)維持在所述扇區(qū)清單中,其中所述孤立扇區(qū)為具有標(biāo)記為已刪除的相應(yīng)目錄條目但具有仍然分配在所述存儲(chǔ)媒體中的相應(yīng)數(shù)據(jù)存儲(chǔ)單元的所述扇區(qū);等待其它主機(jī)設(shè)備同步事件,并在識(shí)別所述事件后,循環(huán)訪問(wèn)所述孤立扇區(qū)以決定所述主機(jī)設(shè)備隨后是否改寫所述讀取/修改/寫入動(dòng)作;且如果所述孤立扇區(qū)已恢復(fù)到先前值,那么重復(fù)對(duì)所述孤立扇區(qū)的所述標(biāo)記,等待所述其它主機(jī)設(shè)備同步事件并決定所述主機(jī)設(shè)備隨后是否改寫所述讀取/修改/寫入動(dòng)作,或者,如果所述獨(dú)立扇區(qū)仍被標(biāo)記,那么將所述扇區(qū)清單分配為可用來(lái)儲(chǔ)存新數(shù)據(jù),并且清除所述候選文件清單。
15.如權(quán)利要求14所述的存儲(chǔ)設(shè)備,其中所述存儲(chǔ)設(shè)備包括存儲(chǔ)卡,且所述主機(jī)接口包含數(shù)字相機(jī)接口。
16.如權(quán)利要求14所述的存儲(chǔ)設(shè)備,其中所述觸發(fā)事件包含以下各事件中的一個(gè)事件已達(dá)到或已超過(guò)存儲(chǔ)媒體利用率閾值的指示、程控動(dòng)作,或所述主機(jī)設(shè)備的用戶進(jìn)行的人工干預(yù)。
17.如權(quán)利要求14所述的存儲(chǔ)設(shè)備,其中所述候選文件為以下文件中的一個(gè)文件儲(chǔ)存在所述存儲(chǔ)媒體中的最舊的文件、儲(chǔ)存在所述存儲(chǔ)媒體中的最近最少訪問(wèn)文件,或儲(chǔ)存在所述存儲(chǔ)媒體中的最不經(jīng)常訪問(wèn)的文件。
18.如權(quán)利要求14所述的存儲(chǔ)設(shè)備,其中所述第一主機(jī)設(shè)備同步事件包含所述主機(jī)設(shè)備的斷電隨后通電循環(huán)。
19.如權(quán)利要求14所述的存儲(chǔ)設(shè)備,其中所述控制器經(jīng)配置以通過(guò)識(shí)別與文件系統(tǒng)安裝操作一致的所述存儲(chǔ)設(shè)備的文件系統(tǒng)的主機(jī)設(shè)備訪問(wèn)來(lái)識(shí)別所述第一主機(jī)設(shè)備同步事件。
20.如權(quán)利要求14所述的存儲(chǔ)設(shè)備,其中所述控制器經(jīng)配置以執(zhí)行刪除程序直到滿足以下條件中的至少一個(gè)條件已達(dá)到所述存儲(chǔ)設(shè)備的刪除閾值;已刪除儲(chǔ)存在所述存儲(chǔ)設(shè)備的固定數(shù)目或百分比的文件,或已使儲(chǔ)存在所述存儲(chǔ)設(shè)備中的指定百分比的存儲(chǔ)空間可用于儲(chǔ) 存新文件。
全文摘要
一種存儲(chǔ)設(shè)備包括控制器,所述控制器經(jīng)配置以執(zhí)行安全刪除操作以便回應(yīng)于觸發(fā)事件而釋放設(shè)備上的存儲(chǔ)空間。安全刪除操作確保使用存儲(chǔ)設(shè)備的主機(jī)設(shè)備的數(shù)據(jù)狀態(tài)和存儲(chǔ)設(shè)備本身同步,以便防止數(shù)據(jù)在卸載到另一存儲(chǔ)平臺(tái)前從存儲(chǔ)設(shè)備中刪除。
文檔編號(hào)G06F12/02GK102939593SQ201180016205
公開(kāi)日2013年2月20日 申請(qǐng)日期2011年3月4日 優(yōu)先權(quán)日2010年3月5日
發(fā)明者貝倫德·奧茲卡里, 尤金·M·范伯格 申請(qǐng)人:艾菲股份有限公司