專利名稱:文件記錄裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于將文件記錄在半導(dǎo)體存儲(chǔ)器中的文件記錄裝置。
背景技術(shù):
非易失性半導(dǎo)體存儲(chǔ)器是一類即使當(dāng)電源被切斷時(shí)也保持已存內(nèi)容的存儲(chǔ)器。盡管在記錄新數(shù)據(jù)之前需要進(jìn)行擦除,但是這類半導(dǎo)體存儲(chǔ)器由于它不是機(jī)械驅(qū)動(dòng)或旋轉(zhuǎn)的,因而非常耐振動(dòng)并且安靜。另外,近來記錄密度的增加帶來了半導(dǎo)體存儲(chǔ)器的容量的增加。由于這些優(yōu)點(diǎn),非易失性半導(dǎo)體存儲(chǔ)器變得越來越普遍地與CD(壓縮盤)、DVD(數(shù)字通用盤)等等一起作為合適的信息記錄介質(zhì)。
在各種類型的半導(dǎo)體存儲(chǔ)器中,閃存是必須按字節(jié)方式擦除的EEPROM(電可擦可編程只讀存儲(chǔ)器)的較近的形式。由于它可以按塊一次性全部擦除,因而現(xiàn)在閃存以市場上可買到的產(chǎn)品的形式(比如SD存儲(chǔ)卡)被廣泛使用,以存儲(chǔ)數(shù)字照相機(jī)拍攝的圖像。
利用文件系統(tǒng)來管理包括閃存在內(nèi)的各種類型的記錄介質(zhì)上的數(shù)據(jù)。一些公用的文件系統(tǒng)是FAT(文件分配表、標(biāo)準(zhǔn)ECMA-107用于信息交換的盒式磁盤的容積與文件結(jié)構(gòu));NTFS(新技術(shù)文件系統(tǒng));以及UDF(通用盤格式)。通過使用文件系統(tǒng),組織為文件的視頻和音頻數(shù)據(jù)被同時(shí)記錄或再現(xiàn)。
根據(jù)FAT文件系統(tǒng),采用稱為簇的單元執(zhí)行存儲(chǔ)器分配和文件管理。
應(yīng)當(dāng)注意的是不論文件數(shù)據(jù)如何小,所述文件占據(jù)至少一個(gè)簇。因此,簇大小越大,存儲(chǔ)器的容量效率就變得越低。另一方面,塊大小越大,存儲(chǔ)密度就變得越高。鑒于以上所述,塊大小通常大于簇大小。
另外,在一個(gè)簇跨兩個(gè)塊擴(kuò)展的情況下,在將數(shù)據(jù)記錄到所述簇中之前,這兩塊都需要被擦除。在日本專利申請公開No.2001-188701中,公開了一種用于避免這類事件發(fā)生的技術(shù)。根據(jù)所述公開內(nèi)容,如果屬于閃存的一個(gè)塊的簇全部都是空閑的話,則允許文件系統(tǒng)僅僅擦除該塊,然后執(zhí)行數(shù)據(jù)寫入。
然而,令人遺憾的是,如果所述塊包括任何存儲(chǔ)現(xiàn)有文件的數(shù)據(jù)的簇,則需要執(zhí)行一系列的操作(正確地稱為讀取-修改-寫入操作,在下文中稱為″RMW操作″)。所述RMW操作包括在擦除塊之前,將存儲(chǔ)在該塊中的數(shù)據(jù)讀取到主存儲(chǔ)器上的臨時(shí)存儲(chǔ)器中;刪除該塊的內(nèi)容;修改該臨時(shí)存儲(chǔ)器上的數(shù)據(jù)以反映對該文件做出的變化;以及回寫臨時(shí)存儲(chǔ)器的內(nèi)容。即,RMW操作包含讀取和修改的額外操作。
另外,每次將數(shù)據(jù)寫入到相同的塊中時(shí),都需要一系列操作。假設(shè)諸如視頻和音頻數(shù)據(jù)之類的大量連續(xù)數(shù)據(jù)將被寫入。在這種情況下,需要對同一塊重復(fù)一系列的操作,并由此反復(fù)讀出以及回寫相同的數(shù)據(jù)集合,這需要長處理時(shí)間。
發(fā)明內(nèi)容
本發(fā)明就是鑒于上述問題而提出的,并且本發(fā)明的第一個(gè)目是提供一種文件記錄裝置,其用于有效且無浪費(fèi)地將數(shù)據(jù)記錄到一類需要批量擦除的記錄介質(zhì)上。本發(fā)明的第二個(gè)目是提供一種可在常規(guī)文件系統(tǒng)下執(zhí)行的程序,用于有效且無浪費(fèi)地將數(shù)據(jù)記錄到上述類型的記錄介質(zhì)上。
上述目的是通過文件記錄裝置來實(shí)現(xiàn)的,所述文件記錄裝置用于將數(shù)據(jù)記錄到按簇寫入和按塊擦除的記錄介質(zhì)上,其中每一個(gè)塊都由預(yù)定數(shù)目的連續(xù)簇組成。所述文件記錄裝置包括接收單元,用于接收將多個(gè)文件中的一個(gè)指定文件的數(shù)據(jù)寫入到記錄介質(zhì)上的請求;多個(gè)文件緩沖器,每一個(gè)文件緩沖器用于所述文件中的一個(gè)不同的文件;數(shù)據(jù)累積單元,用于在與指定文件相對應(yīng)的所述文件緩沖器中的一個(gè)文件緩沖器中,累積被請求寫入的數(shù)據(jù);判斷單元,用于判斷數(shù)據(jù)累積單元已經(jīng)累積的數(shù)據(jù)是否不小于塊大?。灰约皩懭雴卧?,用于如果判斷單元作出肯定判斷,則從所累積的數(shù)據(jù)中提取一塊數(shù)據(jù)并將所提取的數(shù)據(jù)寫入到記錄介質(zhì)的空閑塊中。
利用上述結(jié)構(gòu),當(dāng)發(fā)出一個(gè)或多個(gè)請求來將文件數(shù)據(jù)寫入到需要在數(shù)據(jù)寫入之前按塊擦除的記錄介質(zhì)上時(shí),僅僅一次一塊地執(zhí)行數(shù)據(jù)寫入。與每次發(fā)出數(shù)據(jù)請求時(shí)執(zhí)行數(shù)據(jù)寫入的情況相比,這是有效且無浪費(fèi)的。在這種情況下,在對一個(gè)塊執(zhí)行所請求的數(shù)據(jù)寫入之前,需要讀取和重寫當(dāng)前存儲(chǔ)在該塊中的數(shù)據(jù)。
在此,如果一個(gè)數(shù)據(jù)累積單元最近累積數(shù)據(jù)的文件緩沖器中的一個(gè)指定文件緩沖器中已經(jīng)累積的數(shù)據(jù)不小于塊大小,則判斷單元可以作出肯定判斷。寫入單元可以從該指定文件緩沖器的頂部提取一塊數(shù)據(jù),并將所提取的數(shù)據(jù)寫入到記錄介質(zhì)的空閑塊中。
利用上述結(jié)構(gòu),以塊為單元執(zhí)行數(shù)據(jù)寫入,每一個(gè)所述塊都由單個(gè)文件的數(shù)據(jù)組成。
在此,當(dāng)用各個(gè)文件緩沖器中累積的數(shù)據(jù)的大小除以簇大小所計(jì)算出的每個(gè)商的總和不小于預(yù)定數(shù)目時(shí),判斷單元可以作出肯定判斷。寫入單元可以從各個(gè)文件緩沖器中逐簇地提取數(shù)據(jù),直到達(dá)到預(yù)定數(shù)目的簇為止,并將所提取的數(shù)據(jù)寫入到記錄介質(zhì)的空閑塊中。
利用上述結(jié)構(gòu),以塊為單元執(zhí)行數(shù)據(jù)寫入,每一個(gè)所述塊都由與被請求寫入到各個(gè)文件的數(shù)據(jù)量成比例的多個(gè)文件的數(shù)據(jù)組成。
在此,文件記錄裝置還可以包括擦除單元,用于在寫入單元將所提取的數(shù)據(jù)寫入到空閑塊中之前擦除空閑塊。
利用上述結(jié)構(gòu),在執(zhí)行對塊進(jìn)行數(shù)據(jù)寫入之前擦除該塊。
在另一個(gè)方面中,上述目的是通過用于文件記錄裝置的控制方法來實(shí)現(xiàn)的,所述文件記錄裝置包括多個(gè)文件緩沖器,每一個(gè)文件緩沖器用于多個(gè)文件中的一個(gè)不同文件,并且所述文件記錄裝置將數(shù)據(jù)記錄到記錄介質(zhì)上。所述記錄介質(zhì)按簇寫入并按塊擦除,每一個(gè)塊都由預(yù)定數(shù)目的連續(xù)簇組成。所述方法包括接收步驟,接收用于將多個(gè)文件中一個(gè)指定文件的數(shù)據(jù)寫入到記錄介質(zhì)上的請求;數(shù)據(jù)累積步驟,在與該指定文件相對應(yīng)的所述文件緩沖器中的一個(gè)文件緩沖器中累積被請求寫入的數(shù)據(jù);判斷步驟,判斷在數(shù)據(jù)累積步驟中已經(jīng)累積的數(shù)據(jù)是否不小于塊大??;以及寫入步驟,用于如果判斷步驟作出肯定判斷,則從所累積的數(shù)據(jù)中提取一塊數(shù)據(jù)并將所提取的數(shù)據(jù)寫入到記錄介質(zhì)的空閑塊中。
利用上述方法,當(dāng)發(fā)出一個(gè)或多個(gè)請求來將文件數(shù)據(jù)寫入到需要在數(shù)據(jù)寫入之前按塊擦除的記錄介質(zhì)上時(shí),僅僅一次一塊地執(zhí)行數(shù)據(jù)寫入。與每次發(fā)出數(shù)據(jù)請求時(shí)執(zhí)行數(shù)據(jù)寫入的情況相比,這是有效且無浪費(fèi)的。在這種情況下,在對塊執(zhí)行所請求的數(shù)據(jù)寫入之前,需要讀取和重寫當(dāng)前存儲(chǔ)在該塊中的數(shù)據(jù)。
在另一個(gè)方面中,上述目的是通過由文件記錄裝置執(zhí)行的程序來實(shí)現(xiàn)的,所述文件記錄裝置包括多個(gè)文件緩沖器,每一個(gè)文件緩沖器用于多個(gè)文件中的一個(gè)不同文件,并且將數(shù)據(jù)記錄到記錄介質(zhì)上。所述記錄介質(zhì)按簇寫入并按塊擦除,每一個(gè)塊都由預(yù)定數(shù)目的連續(xù)簇組成。所述程序包括用于使所述文件記錄裝置執(zhí)行下列操作的代碼接收步驟,接收將多個(gè)文件中的一個(gè)指定文件的數(shù)據(jù)寫入到記錄介質(zhì)上的請求;數(shù)據(jù)累積步驟,在與該指定文件相對應(yīng)的所述文件緩沖器中的一個(gè)文件緩沖器中累積被請求寫入的數(shù)據(jù);判斷步驟,判斷在數(shù)據(jù)累積步驟中已經(jīng)累積的數(shù)據(jù)是否不小于塊大小;以及寫入步驟,用于如果判斷步驟作出肯定判斷,則從累積的數(shù)據(jù)中提取一塊數(shù)據(jù)并將所提取的數(shù)據(jù)寫入到記錄介質(zhì)的空閑塊中。
通過將上述程序應(yīng)用于文件記錄裝置,當(dāng)發(fā)出一個(gè)或多個(gè)請求來將文件數(shù)據(jù)寫入到需要在數(shù)據(jù)寫入之前按塊擦除的記錄介質(zhì)上時(shí),僅僅一次一塊地執(zhí)行數(shù)據(jù)寫入。與每次發(fā)出數(shù)據(jù)請求時(shí)執(zhí)行數(shù)據(jù)寫入的情況相比,這是有效且無浪費(fèi)的。在這種情況下,在對塊執(zhí)行所請求的數(shù)據(jù)寫入之前,需要讀取和重寫當(dāng)前存儲(chǔ)在該塊中的數(shù)據(jù)。
在另一個(gè)方面中,上述目的是通過用于由文件記錄裝置執(zhí)行的程序來實(shí)現(xiàn)的,所述文件記錄裝置包括驅(qū)動(dòng)器數(shù)據(jù)緩沖器,并且將數(shù)據(jù)記錄到記錄介質(zhì)上。所述記錄介質(zhì)按簇寫入并按塊擦除,每一個(gè)塊都由預(yù)定數(shù)目的連續(xù)簇組成。所述程序包括用于使文件記錄裝置執(zhí)行下列操作的代碼接收步驟,接收寫入請求,其指定記錄介質(zhì)上的寫入地址,數(shù)據(jù)被請求寫入到該寫入地址上;第一判斷步驟,用于如果驅(qū)動(dòng)器數(shù)據(jù)緩沖器不是空的,則判斷為被請求寫入的數(shù)據(jù)所指定的寫入地址是否鄰接于為存儲(chǔ)在驅(qū)動(dòng)器數(shù)據(jù)緩沖器上的數(shù)據(jù)所指定的寫入地址;數(shù)據(jù)累積步驟,如果第一判斷步驟作出肯定判斷,則在驅(qū)動(dòng)器數(shù)據(jù)緩沖器中累積被請求寫入的數(shù)據(jù);第二判斷步驟,用于判斷為驅(qū)動(dòng)器數(shù)據(jù)緩沖器中累積的數(shù)據(jù)所指定的寫入地址是否落在記錄介質(zhì)的塊邊界上;以及寫入步驟,用于如果第二判斷步驟作出肯定判斷,則將從驅(qū)動(dòng)器數(shù)據(jù)緩沖器頂部到與所述塊邊界對應(yīng)的點(diǎn)的部分所累積的數(shù)據(jù)寫入到記錄介質(zhì)上。
通過將上述程序應(yīng)用于文件記錄裝置,當(dāng)發(fā)出一個(gè)或多個(gè)請求來將文件數(shù)據(jù)寫入到需要在數(shù)據(jù)寫入之前按塊擦除的記錄介質(zhì)的指定地址上時(shí),僅僅一次一塊地執(zhí)行數(shù)據(jù)寫入。與每次發(fā)出數(shù)據(jù)請求時(shí)執(zhí)行數(shù)據(jù)寫入的情況相比,這是有效且無浪費(fèi)的。在這種情況下,在對塊執(zhí)行所請求的數(shù)據(jù)寫入之前,需要讀取和重寫先前存儲(chǔ)在該塊中的數(shù)據(jù)。
在此,上述程序可以是記錄介質(zhì)的過濾驅(qū)動(dòng)器。
利用上述結(jié)構(gòu),將過濾驅(qū)動(dòng)器添加到現(xiàn)有文件系統(tǒng)保證了有效的文件記錄。
附圖簡述
圖1是示出根據(jù)本發(fā)明第一實(shí)施例的文件記錄裝置的結(jié)構(gòu)的視圖;圖2示出了存儲(chǔ)卡的結(jié)構(gòu);圖3示出了閃存的示例性格式;圖4示出了根據(jù)第一實(shí)施例,如何在文件緩沖器中累積數(shù)據(jù)并將其寫入到閃存中的例子;圖5示出了根據(jù)第一實(shí)施例的整個(gè)文件記錄處理的處理步驟的流程圖;圖6A和6B示出了根據(jù)第一實(shí)施例的文件打開處理和文件關(guān)閉處理的流程圖;
圖7示出了根據(jù)第一實(shí)施例,響應(yīng)于數(shù)據(jù)寫入請求而執(zhí)行的數(shù)據(jù)寫入處理的流程圖;圖8示出了根據(jù)本發(fā)明第二實(shí)施例,如何在文件緩沖器中累積數(shù)據(jù)并將其寫入到閃存中的例子;圖9示出了根據(jù)第二實(shí)施例,響應(yīng)于數(shù)據(jù)寫入請求而執(zhí)行的數(shù)據(jù)寫入處理的流程圖;圖10示出了在根據(jù)本發(fā)明第三實(shí)施例的文件記錄裝置中運(yùn)行的軟件的分級(jí)結(jié)構(gòu);圖11示出了由根據(jù)第三實(shí)施例的過濾驅(qū)動(dòng)器執(zhí)行的處理步驟的流程圖;和圖12示出了根據(jù)第三實(shí)施例,驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201上的數(shù)據(jù)與閃存的塊之間的對應(yīng)關(guān)系。
具體實(shí)施例方式
在下文中,參照附圖對根據(jù)本發(fā)明的文件記錄裝置的實(shí)施例給出描述。
第一實(shí)施例在第一實(shí)施例中,文件系統(tǒng)保證了文件的有效記錄。
圖1示出了根據(jù)第一實(shí)施例的文件記錄裝置的結(jié)構(gòu)。
所述文件記錄裝置包括存儲(chǔ)卡110、文件緩沖器120、寫入緩沖器125、I/O(輸入和輸出)請求接收單元130、數(shù)據(jù)累積單元140、文件寫入單元160以及文件管理單元190。
所述文件記錄裝置另外還具有CPU和存儲(chǔ)器,這在圖中未示出。上述的每一個(gè)組成單元都由程序或存儲(chǔ)區(qū)組成。將包括組成單元的程序加載到存儲(chǔ)器中并由CPU執(zhí)行。
文件記錄裝置接收對一個(gè)或多個(gè)文件的I/O請求。I/O請求的源是,例如運(yùn)行在該文件記錄裝置上的應(yīng)用程序和經(jīng)由網(wǎng)絡(luò)連接的裝置。這樣的I/O請求源可以同時(shí)請求文件記錄裝置記錄多個(gè)文件上的數(shù)據(jù)。
此外,可能存在多個(gè)不同類型的I/O請求源,例如應(yīng)用程序和網(wǎng)絡(luò)上的裝置?;蛘?,可能存在同樣類型的多個(gè)I/O請求源,例如應(yīng)用程序A、B和C。然而,為了簡單起見,在下文的描述中假定存在單個(gè)I/O請求源。
接下來,對所述文件記錄裝置的每一個(gè)組成單元給出描述。
存儲(chǔ)卡110根據(jù)來自I/O請求源的請求記錄文件。
圖2示出了存儲(chǔ)卡110的結(jié)構(gòu)。如圖所示,存儲(chǔ)卡110包括命令執(zhí)行單元201、數(shù)據(jù)緩沖器202和閃存205。
命令執(zhí)行單元201從文件寫入單元160接收可在存儲(chǔ)卡110上執(zhí)行的命令,并且執(zhí)行所接收的命令??捎擅顖?zhí)行單元201執(zhí)行的命令是將要在閃存205上執(zhí)行的寫入命令、讀取命令和塊擦除命令。
寫入命令包含用于指定扇區(qū)號(hào)和扇區(qū)數(shù)量的信息。前者用作在閃存205上的數(shù)據(jù)寫入的起始地址,而后者用作將要被寫入的數(shù)據(jù)的大小。在接收到寫入命令時(shí),命令執(zhí)行單元201就從具有所指定的扇區(qū)號(hào)的扇區(qū)開始,將保持在數(shù)據(jù)緩沖器202中的、具有等于所指定的扇區(qū)數(shù)量的大小的數(shù)據(jù)寫入到閃存205??梢灾付閱蝹€(gè)寫入命令中的數(shù)據(jù)大小的最大扇區(qū)數(shù)量為128,其等于塊大小。
數(shù)據(jù)緩沖器202的大小與塊大小相等,并且響應(yīng)寫入命令,臨時(shí)保持將要被寫入的數(shù)據(jù)。更具體而言,數(shù)據(jù)緩沖器202臨時(shí)保持從文件寫入單元160轉(zhuǎn)送來的數(shù)據(jù)。當(dāng)接收到寫入命令時(shí),命令執(zhí)行單元201將保持在數(shù)據(jù)緩沖器202中的數(shù)據(jù)寫入到閃存205中。同樣,數(shù)據(jù)緩沖器202響應(yīng)讀取命令,臨時(shí)保持從閃存205中讀取的數(shù)據(jù)。
讀取命令包含用于指定扇區(qū)號(hào)和扇區(qū)數(shù)量的信息。前者用作在閃存205上數(shù)據(jù)讀取的起始地址,后者用作將要被讀取的數(shù)據(jù)的大小。與寫入命令類似,在單個(gè)讀取命令中可以指定的最大扇區(qū)數(shù)量為128。
如上所述,閃存205需要在執(zhí)行數(shù)據(jù)寫入之前按塊擦除。更具體而言,需要擦除包括將對其執(zhí)行數(shù)據(jù)寫入的扇區(qū)(將在稍后描述)或簇(將在稍后描述)的每一個(gè)塊。閃存205存儲(chǔ)由命令執(zhí)行單元201寫入的文件數(shù)據(jù)。
擦除命令包含用于表示將要擦除的塊的塊號(hào)的信息。在接收到擦除命令時(shí),命令執(zhí)行單元201擦除具有指定塊號(hào)的閃存205的塊。
圖3示出了閃存205的示例性格式。在圖中,閃存205被分成稱為塊311、簇312和扇區(qū)313的分級(jí)分區(qū)。
塊311是通常在記錄新數(shù)據(jù)之前執(zhí)行的擦除的單元。在寫入文件數(shù)據(jù)時(shí),將至少一個(gè)空閑或未使用的塊分配給該文件數(shù)據(jù)。需要注意的是存在充當(dāng)備用的塊,其具有塊號(hào)4001到4192。塊4001-4192在圖3中未示出。
簇312是可分配給文件數(shù)據(jù)的最小單元。所述簇為FAT335所涉及,稍后將對其進(jìn)行描述。
扇區(qū)313是數(shù)據(jù)輸入和輸出的最小單元。扇區(qū)313被連續(xù)地分配扇區(qū)號(hào),所述扇區(qū)號(hào)是從″1″開始的整數(shù)。扇區(qū)號(hào)用作閃存上的地址。將要通過數(shù)據(jù)寫入而寫入到閃存205中的數(shù)據(jù)大小是利用扇區(qū)數(shù)量而不是字節(jié)數(shù)量來表示的。圖3中由它們的扇區(qū)號(hào)所示出的扇區(qū)313是每一個(gè)塊和簇中的第一扇區(qū)。
閃存205具有粗略地劃分為系統(tǒng)區(qū)321和用戶區(qū)331的存儲(chǔ)區(qū)314。
系統(tǒng)區(qū)321存儲(chǔ)管理信息,還被劃分成保留區(qū)322、FAT區(qū)323和根目錄條目324。
保留區(qū)322存儲(chǔ)關(guān)于閃存205的引導(dǎo)信息和參數(shù),所述閃存是記錄介質(zhì)。圖3示出了存儲(chǔ)在閃存205中的內(nèi)容的示例316。在示例316中,參數(shù)表明扇區(qū)大小為512B(字節(jié)),每簇的扇區(qū)數(shù)量為32,而每塊的簇?cái)?shù)量為4。因此,簇大小為16KB,塊大小為64KB,而閃存205的存儲(chǔ)容量為256MB。然而,應(yīng)當(dāng)指出的是,簇和塊大小不限于這里所提到的指定數(shù)值。對于一些類型的閃存,塊大小可以是128KB或256KB并且簇大小可以是8KB或32KB。
FAT區(qū)323存儲(chǔ)FAT335。FAT335是示出哪些簇存儲(chǔ)文件數(shù)據(jù)的表。
根目錄條目324是包含文件管理信息的目錄的存儲(chǔ)區(qū)。對于每一個(gè)文件,目錄表明文件名、記錄日期和時(shí)間(未說明)、以及該文件所分配和占用的第一簇的簇號(hào)(或第一FAT條目的數(shù)量)。
例如,目錄336表示文件A所占用的第一簇是簇1。根據(jù)FAT335,對應(yīng)于簇1的條目1包含數(shù)值″2″,其表明文件A占據(jù)鄰接于簇1的簇2。同樣,條目2和3分別保持?jǐn)?shù)值″3″和″4″。這意味著文件A也占用簇3和4。條目4保持表示文件末尾的數(shù)值″FF″。也就是說,文件A占用一起構(gòu)成塊4的連續(xù)簇1-4。注意出于安全的原因,F(xiàn)AT區(qū)323存儲(chǔ)雙份的FAT335(盡管在圖中未示出雙份)。
用戶區(qū)331用于存儲(chǔ)文件數(shù)據(jù)和目錄信息。根據(jù)第一實(shí)施例,對文件數(shù)據(jù)的存儲(chǔ)器分配基本上按塊來執(zhí)行。系統(tǒng)區(qū)321的格式是固定的,并且將簇號(hào)排它地分配給用戶區(qū)中的簇。
現(xiàn)在返回到圖1,文件緩沖器120是緩沖器(存儲(chǔ)區(qū)),其每一個(gè)都具有對應(yīng)于兩個(gè)塊的大小,并且按照從I/O請求源發(fā)出的寫入請求臨時(shí)存儲(chǔ)被請求寫入的數(shù)據(jù)。每一個(gè)文件緩沖器120都是文件管理單元190為按照來自于I/O請求源的文件打開請求所創(chuàng)建的指定文件保留的,并且按照文件關(guān)閉請求解除分配(返回)。注意每一個(gè)文件緩沖器120的大小不限于兩個(gè)塊的大小,任何大小都是適用的,只要它比稍后描述的單個(gè)I/O請求的可請求的最大數(shù)據(jù)大小大一個(gè)塊大小。
寫入緩沖器125是按塊計(jì)算大小的存儲(chǔ)區(qū),并且由文件寫入單元160使用來臨時(shí)存儲(chǔ)將要寫入到閃存205中的文件數(shù)據(jù)。
I/O請求接收單元130從I/O請求源接收對存儲(chǔ)卡110的閃存205上的文件的I/O請求。存在幾種類型的文件I/O請求,包括文件打開的請求、文件關(guān)閉的請求、數(shù)據(jù)寫入(Write)和數(shù)據(jù)讀取(Read)。
當(dāng)接收到作為文件打開請求的I/O請求時(shí),I/O請求接收單元130進(jìn)一步從I/O請求源接收被請求打開的文件的名稱。同樣,當(dāng)接收到作為文件關(guān)閉請求的I/O請求時(shí),I/O請求進(jìn)一步從I/O請求源中接收標(biāo)識(shí)被請求關(guān)閉的文件的文件描述符(將在稍后描述)。
當(dāng)接收到作為數(shù)據(jù)寫入請求的I/O請求時(shí),I/O請求接收單元130進(jìn)一步從I/O請求源中接收被請求寫入的文件數(shù)據(jù)(在下文中,″寫入數(shù)據(jù)″)。寫入數(shù)據(jù)可以在數(shù)據(jù)寫入請求之后,直接原封不動(dòng)地或者按請求源所預(yù)定的存儲(chǔ)在存儲(chǔ)器上的數(shù)據(jù)的存儲(chǔ)器地址和大小(按字節(jié))的形式加以接收。每個(gè)寫入請求可以請求的最大數(shù)據(jù)大小等于塊大小(64KB)。注意最大數(shù)據(jù)大小不限于塊大小并且可以是任何其它大小,比如256KB。
在直接原封不動(dòng)地接收寫入數(shù)據(jù)的情況下,I/O請求接收單元130將所接收到的寫入數(shù)據(jù)轉(zhuǎn)送到存儲(chǔ)器的數(shù)據(jù)區(qū)(未說明)。
當(dāng)接收到作為數(shù)據(jù)讀取請求的I/O請求時(shí),I/O請求接收單元130進(jìn)一步從I/O請求源中接收與將要讀取的文件數(shù)據(jù)有關(guān)的信息。然而,這一功能不是與文件記錄功能有關(guān)的。因此,在這里沒有給出詳細(xì)說明。
I/O請求接收單元130將關(guān)于所接收的I/O請求的信息傳遞到文件管理單元190。所述I/O請求信息包含I/O請求的類型(它是文件打開請求還是數(shù)據(jù)寫入請求,等等);以及關(guān)于被請求來處理的文件的信息(在數(shù)據(jù)寫入請求或文件關(guān)閉請求時(shí)是文件描述符,或者在文件打開請求時(shí)是文件名)。在數(shù)據(jù)寫入請求時(shí),I/O請求信息還包含寫入數(shù)據(jù)的地址和大小。作為回應(yīng),I/O請求接收單元130從文件管理單元190接收根據(jù)所傳遞的I/O請求信息執(zhí)行的處理的結(jié)果,并且將處理結(jié)果提供給I/O請求源。該處理結(jié)果可以被直接原封不動(dòng)地提供給I/O請求源?;蛘?,處理結(jié)果可以首先被轉(zhuǎn)送到存儲(chǔ)區(qū)并且將存儲(chǔ)器地址提供給I/O請求源。
根據(jù)來自于文件管理單元190的指令,數(shù)據(jù)累積單元140將寫入數(shù)據(jù)累積到與用文件描述符標(biāo)識(shí)的文件相對應(yīng)的其中一個(gè)文件緩沖器120。文件管理單元190通過將存儲(chǔ)寫入數(shù)據(jù)的存儲(chǔ)區(qū)的地址和大小傳遞給數(shù)據(jù)累積單元140,來轉(zhuǎn)送寫入數(shù)據(jù)。
圖4示出了如何將數(shù)據(jù)累積到文件緩沖器120A、120B和120C中以及如何將數(shù)據(jù)寫入到閃存205的示例411。在圖中,寫入數(shù)據(jù)被累積在文件緩沖器120A、120B、和120C中的相應(yīng)的一個(gè)中,文件緩沖器120A、120B、和120C中的每一個(gè)都是為特定文件保留的。例如,屬于文件C的寫入數(shù)據(jù)被累積在為文件C保留的文件緩沖器120C中。在此,寫入數(shù)據(jù)被″累積″,這意味著如果沒有其它數(shù)據(jù)已經(jīng)被存儲(chǔ),則寫入數(shù)據(jù)就從文件緩沖器C的頂部起存儲(chǔ)。如果文件緩沖器C已經(jīng)存儲(chǔ)了一些數(shù)據(jù),則直接在已存數(shù)據(jù)后面將寫入數(shù)據(jù)寫入到緩沖器120C中。為了描述的方便,在圖中將存儲(chǔ)在每一個(gè)文件緩沖器120中的數(shù)據(jù)的大小說明為簇大小的整數(shù)倍,盡管實(shí)際上情況不總是這樣。此外,在圖中將每一個(gè)文件緩沖器120說明為具有塊大小,盡管該大小等于兩個(gè)塊(八個(gè)簇)。
在將寫入數(shù)據(jù)累積到一個(gè)相應(yīng)的文件緩沖器120之后,數(shù)據(jù)累積單元140向文件管理單元190發(fā)出累積結(jié)束通知。
根據(jù)來自于文件管理單元190的指令,文件寫入單元160從文件緩沖器120中的一個(gè)指定文件緩沖器的頂部提取等于塊大小的數(shù)據(jù)。文件寫入單元160隨后將所提取的數(shù)據(jù)轉(zhuǎn)送到寫入緩沖器125,并且將保持在文件緩沖器120中的數(shù)據(jù)移動(dòng)到頂部。最后,文件寫入單元160指示存儲(chǔ)卡110將寫入緩沖器125中存儲(chǔ)的數(shù)據(jù)寫入到閃存205的指定塊(第一塊中的一個(gè)塊)。更具體而言,通過(i)將存儲(chǔ)在寫入緩沖器125中的數(shù)據(jù)轉(zhuǎn)送到存儲(chǔ)卡110的數(shù)據(jù)緩沖器202,以及(ii)向命令執(zhí)行單元201發(fā)出寫入命令,該寫入命令包含寫入數(shù)據(jù)將要寫入的塊的地址以及寫入數(shù)據(jù)的大小。
文件管理單元190進(jìn)行管理,以便以塊為單元執(zhí)行向存儲(chǔ)卡111的閃存205的數(shù)據(jù)寫入。
文件管理單元190從I/O請求接收單元130接收I/O請求信息。在所接收的I/O請求信息表明I/O請求的類型為數(shù)據(jù)寫入請求的情況下,文件管理單元190將I/O請求信息所表明的寫入數(shù)據(jù)的存儲(chǔ)器地址和大小傳遞到數(shù)據(jù)累積單元140。另外,根據(jù)I/O請求信息中所包含的文件描述符,文件管理單元190指示與文件描述符所指定的文件相對應(yīng)的一個(gè)文件緩沖器120來累積寫入數(shù)據(jù)。
當(dāng)從數(shù)據(jù)累積單元140中接收到累積結(jié)束通知時(shí),文件管理單元190檢查在文件緩沖器120中的一個(gè)相應(yīng)文件緩沖器上累積的數(shù)據(jù)的大小,并且判斷所累積的數(shù)據(jù)是否等于塊大小或更大。
如果作出肯定的判斷結(jié)果,則文件管理單元190參考FAT335搜索空閑塊,為所累積的數(shù)據(jù)分配空閑塊,并且擦除所述空閑塊。文件管理單元190通過向存儲(chǔ)卡110的命令執(zhí)行單元201發(fā)出用于指定已分配塊的塊號(hào)的擦除命令來執(zhí)行擦除。需要注意的是空閑塊是其簇全部都為空閑(未使用)的塊。
盡管在這個(gè)實(shí)施例中空閑塊是在分配塊時(shí)擦除的,但是每一塊的擦除都可以在塊的重新分配與向該塊寫入數(shù)據(jù)之間的任何時(shí)間執(zhí)行。同樣適用的是,為每一塊設(shè)置擦除標(biāo)志以表明該塊是否已被擦除,并且可以在存儲(chǔ)卡110的空閑時(shí)間期間執(zhí)行擦除。
接下來,文件管理單元190指示文件寫入單元160從文件緩沖器120中的一個(gè)指定文件緩沖器的頂部提取等于塊大小的數(shù)據(jù),并且將由此所提取的數(shù)據(jù)寫入到閃存205中。當(dāng)從文件寫入單元160接收到結(jié)束通知時(shí),文件管理單元190通過更新與數(shù)據(jù)寫入到其中的文件有關(guān)的部分來更新文件FAT335。
在圖4中,例如,寫入緩沖器125存儲(chǔ)新文件C的一塊數(shù)據(jù)。當(dāng)文件寫入單元160將存儲(chǔ)在寫入緩沖器125中的數(shù)據(jù)寫入到閃存205的一個(gè)塊(由簇9-12組成的塊6)中時(shí),文件管理單元190通過新近記錄文件C的作為第一個(gè)簇的號(hào)的數(shù)字″9″來更新目錄422。文件管理單元190還通過將連續(xù)的簇號(hào)9-12記錄到各個(gè)條目中來更新FAT421。
當(dāng)沒有空閑塊時(shí),文件管理單元190執(zhí)行錯(cuò)誤處理,通過該錯(cuò)誤處理將表明由于空閑塊耗盡而不可能進(jìn)行數(shù)據(jù)寫入的日志信息輸出到未圖示的日志文件?;蛘?,該日志信息可以顯示在未圖示的顯示單元上。
根據(jù)這個(gè)實(shí)施例,當(dāng)沒有空閑塊時(shí)就不可能進(jìn)行數(shù)據(jù)寫入。然而,在一個(gè)變形中,適用的是,如果空閑簇的總數(shù)等于塊大小,則搜索并分配空閑簇。然而,在這種情況下,需要對包含這樣的簇的每一塊執(zhí)行RMW操作。
另外,當(dāng)從I/O請求接收單元130中接收到除寫入請求之外的I/O請求時(shí),文件管理單元190如下進(jìn)行工作。
當(dāng)接收到作為文件打開請求的I/O請求時(shí),如果不存在具有該I/O請求信息中所包含的文件名的文件,則文件管理單元190在閃存205中創(chuàng)建新文件。如果已經(jīng)存在具有該文件名的文件,則文件管理單元190標(biāo)識(shí)該文件,并且作為處理結(jié)果將文件描述符返回到I/O請求源。如上所述,文件描述符是標(biāo)識(shí)文件的信息。在將來的處理中,I/O請求源使用由此接收到的文件描述符來指定該文件。新文件的創(chuàng)建包括保留文件緩沖器120并為該新文件產(chǎn)生目錄。
當(dāng)接收到作為文件關(guān)閉請求的I/O請求時(shí),文件管理單元190執(zhí)行處理,以便完成由I/O請求信息中所包含的文件描述符標(biāo)識(shí)的文件的數(shù)據(jù)寫入。完成處理包括將駐留在文件緩沖器120中的一個(gè)指定文件緩沖器上的任何數(shù)據(jù)寫入到閃存205中,并且解除分配(返回)該文件緩沖器。
當(dāng)接收到作為文件讀取請求的I/O請求時(shí),文件管理單元190從由I/O請求信息中所包含的文件描述符標(biāo)識(shí)的文件中讀取數(shù)據(jù),并且將所讀取的數(shù)據(jù)發(fā)送到I/O請求源。
在文件記錄裝置開始工作時(shí)的時(shí)刻啟動(dòng)文件管理單元190,并且將跨在閃存205的塊1-3上的系統(tǒng)區(qū)321(圖3中所示)讀取到存儲(chǔ)器中。通過讀取系統(tǒng)區(qū)321,文件管理單元190獲取關(guān)于塊、簇和扇區(qū)的信息。此外,為了提高所述過程效率,首先在存儲(chǔ)器上更新FAT和目錄。文件管理單元190隨后根據(jù)需要,向存儲(chǔ)卡110發(fā)出寫入命令,從而將新的信息寫入到圖3中所示的閃存205的塊2和3,借此更新FAT和目錄。應(yīng)該自然地認(rèn)識(shí)到的是,在數(shù)據(jù)寫入之前也需要擦除系統(tǒng)區(qū)的塊。
圖5-7是文件記錄處理的處理步驟的流程圖。參照圖5-7對文件記錄處理給出描述。
在圖5中,I/O請求接收單元130從I/O請求源中接收文件I/O請求(S510)。
如果文件I/O請求是用于打開新文件的請求(S514),則文件I/O請求接收單元130還接收將要打開的文件的名稱。I/O請求接收單元130隨后向文件管理單元190傳遞由文件打開請求和文件名組成的I/O請求信息。作為響應(yīng),文件管理單元190執(zhí)行文件打開處理,以創(chuàng)建具有所請求的文件名的新文件(S516)。文件打開處理的細(xì)節(jié)將稍后給出。
如果文件I/O請求是關(guān)閉文件的請求(S518),則I/O請求接收單元130還從I/O請求源中接收用于標(biāo)識(shí)將要關(guān)閉的文件的文件描述符。I/O請求接收單元130隨后向文件管理單元190傳遞由文件關(guān)閉請求和文件描述符組成的I/O請求信息。作為響應(yīng),文件管理單元190對由該文件描述符標(biāo)識(shí)的文件執(zhí)行文件關(guān)閉處理(S520)。所述文件關(guān)閉處理的細(xì)節(jié)將稍后給出。
如果文件I/O請求是寫入請求(S522),則I/O請求接收單元130在該寫入請求之后,直接原封不動(dòng)地接收寫入數(shù)據(jù)?;蛘撸琁/O請求接收單元130可以接收由I/O請求源預(yù)先確定的在存儲(chǔ)器上存儲(chǔ)的寫入數(shù)據(jù)的地址和數(shù)據(jù)大小(按字節(jié))。當(dāng)直接地接收寫入數(shù)據(jù)本身時(shí),I/O請求接收單元130將所接收的寫入數(shù)據(jù)轉(zhuǎn)送到存儲(chǔ)器的數(shù)據(jù)區(qū)(未圖示),產(chǎn)生由新近存儲(chǔ)的數(shù)據(jù)的地址和數(shù)據(jù)大小組成的I/O請求信息,并將由此產(chǎn)生的I/O請求信息傳遞到文件管理單元190。當(dāng)接收到寫入請求時(shí),執(zhí)行寫入處理。對響應(yīng)于寫入請求而執(zhí)行的寫入處理的描述將稍后給出。
如果I/O請求信息不是上述請求中任何一個(gè),則I/O請求接收單元130就根據(jù)所接收的I/O請求執(zhí)行處理(S526)。這種請求的一個(gè)例子是用于從閃存205中讀取文件數(shù)據(jù)的請求。然而,省略其詳細(xì)說明。
圖6A示出了文件打開處理的流程圖,并且圖6B示出了文件關(guān)閉處理的流程圖。
在文件打開處理中,當(dāng)從I/O請求接收單元130中接收到I/O請求信息時(shí),文件管理單元190在圖3中所示的根目錄條目324中,生成具有由I/O請求信息表明的文件名的文件的目錄(S610)。例如,在根目錄條目324中創(chuàng)建圖4中所示的″文件C″的目錄422。注意該文件的目錄已經(jīng)存在,則該文件不是新的,所以不必創(chuàng)建新目錄。
接下來,文件管理單元190為新近打開的文件保留文件緩沖器120(步驟S612)。在圖4中所示的例子中,新近打開的文件是″文件C″并且由此文件緩沖器120C被保留。文件管理單元190隨后創(chuàng)建用作指向該文件的指針的文件描述符,并且作為處理結(jié)果,將該文件描述符傳遞到I/O請求接收單元130。作為該文件打開請求的處理結(jié)果,I/O請求接收單元130將從I/O請求接收單元130接收的文件描述符返回到I/O請求源。
在文件關(guān)閉處理中,當(dāng)從I/O請求接收單元130接收到I/O請求信息時(shí),文件管理單元190解除分配與由I/O請求信息中包含的文件描述符標(biāo)識(shí)的文件相對應(yīng)的文件緩沖器120,例如文件緩沖器120C(步驟S611)。最后,文件管理單元190將記錄日期和時(shí)間(未圖示)記錄到文件的目錄中,例如記錄到目錄422中,并且經(jīng)由I/O請求接收單元130,將正常結(jié)束通知作為文件關(guān)閉請求處理結(jié)果返回到I/O請求源。
圖7是響應(yīng)于數(shù)據(jù)寫入請求而執(zhí)行的數(shù)據(jù)寫入處理的流程圖。
當(dāng)判定為文件I/O請求是數(shù)據(jù)寫入請求時(shí),文件管理單元190向數(shù)據(jù)累積單元140通知關(guān)于與由I/O請求信息中所包含的文件描述符標(biāo)識(shí)的文件相對應(yīng)的文件緩沖器120,以及寫入數(shù)據(jù)的地址和大小。文件管理單元190隨后指示數(shù)據(jù)累積單元140將存儲(chǔ)在所通知的地址上的寫入數(shù)據(jù)加載到文件緩沖器120中的被通知的一個(gè)文件緩沖器上(S710)。根據(jù)從文件管理單元190接收的指令,數(shù)據(jù)累積單元140用來將存儲(chǔ)在所通知的地址上的數(shù)據(jù)存儲(chǔ)到文件緩沖器120中被通知的一個(gè)文件緩沖器中。
當(dāng)從數(shù)據(jù)累積單元140中接收到累積結(jié)束通知時(shí),文件管理單元190檢查在數(shù)據(jù)已被累積在其中的文件緩沖器120中的一個(gè)相應(yīng)文件緩沖器上存儲(chǔ)的數(shù)據(jù)的總量,并且判斷總量是否不小于塊大小(S712)。
如果作出肯定的判斷結(jié)果,則文件管理單元190參考FA335搜索空閑塊(S716)。如果存在空閑塊(S718),則文件管理單元190就分配該空閑塊,并且令存儲(chǔ)卡110擦除該空閑塊。
文件管理單元190隨后指示文件寫入單元160將駐留在文件緩沖器120上的數(shù)據(jù)寫入到所分配的空閑塊中。根據(jù)該指令,文件寫入單元160從文件緩沖器120的頂部提取等于塊大小的數(shù)據(jù),并且將所提取的數(shù)據(jù)轉(zhuǎn)送到寫入緩沖器125(S724)。保持在文件緩沖器120上的數(shù)據(jù)被向前移動(dòng)。文件寫入單元160隨后將寫入緩沖器125上的數(shù)據(jù)轉(zhuǎn)送到存儲(chǔ)卡110的數(shù)據(jù)緩沖器202,并且向命令執(zhí)行單元201發(fā)出用于指定所分配空閑塊的起始地址和塊大小的寫入命令。其結(jié)果是,存儲(chǔ)卡110將保持在寫入緩沖器125上的數(shù)據(jù)寫入閃存205的指定塊中(S725)。當(dāng)從存儲(chǔ)卡110中接收到記錄結(jié)束通知時(shí),文件寫入單元160相應(yīng)地向文件管理單元190發(fā)出記錄結(jié)束通知。
當(dāng)從文件寫入單元160中接收到記錄結(jié)束通知時(shí),文件管理單元190通過更新與已經(jīng)對其執(zhí)行數(shù)據(jù)寫入的文件有關(guān)的部分,來更新FAT(S726)。所述處理隨后分支到步驟S712,以對在指定文件緩沖器120中保持的數(shù)據(jù)重復(fù)相同的操作。
根據(jù)當(dāng)前實(shí)施例的一個(gè)變形,寫入數(shù)據(jù)可以以另一種方式累積。例如,可能存在這樣一種選擇,即當(dāng)數(shù)據(jù)寫入請求時(shí)立即執(zhí)行數(shù)據(jù)寫入。在這種情況下,不累積寫入數(shù)據(jù),而是將其立即寫入到閃存205中?;蛘撸?dāng)接收到數(shù)據(jù)寫入請求時(shí),可以為相應(yīng)的文件緩沖器設(shè)置計(jì)時(shí)器。如果該文件緩沖器的已存內(nèi)容在預(yù)定時(shí)間周期之后保持不變,則所累積的數(shù)據(jù)隨后被寫入到閃存中。此外,在接收到用指定數(shù)據(jù)替換已有數(shù)據(jù)的數(shù)據(jù)寫入請求的情況下,適用的是,在數(shù)據(jù)寫入操作之前先寫入保持在與所請求文件相對應(yīng)的文件緩沖器中的所有數(shù)據(jù)。
第二實(shí)施例在第二實(shí)施例中,向閃存的數(shù)據(jù)寫入以塊為單位執(zhí)行,并且將要寫入的塊大小的數(shù)據(jù)可以由多個(gè)文件的數(shù)據(jù)組成。
除了只有第二實(shí)施例才有的兩個(gè)組成單元之外,根據(jù)第二實(shí)施例的文件記錄裝置在結(jié)構(gòu)上基本類似于根據(jù)圖1中所示的第一實(shí)施例的文件記錄裝置。更具體而言,文件管理單元190和文件寫入單元160具有與它們的對應(yīng)部分不同的功能。在下文中,對所述差別給出描述。
圖8示出了如何將數(shù)據(jù)累積到各個(gè)文件緩沖器120A、120B和120C中以及如何寫入到閃存中的示例。根據(jù)第一實(shí)施例(圖4),在新近將數(shù)據(jù)累積到其中一個(gè)文件緩沖器120中并且在那個(gè)文件緩沖器120中累積的數(shù)據(jù)的大小達(dá)到塊大小時(shí),將每一個(gè)文件緩沖器120中所累積的數(shù)據(jù)寫入到閃存205中。根據(jù)第二實(shí)施例,即使數(shù)據(jù)累積單元140將數(shù)據(jù)新近累積到其中一個(gè)文件緩沖器120并且在那個(gè)文件緩沖器120中累積的數(shù)據(jù)的大小小于塊大小,也執(zhí)行向閃存的數(shù)據(jù)寫入。更具體而言,如果存儲(chǔ)在所有文件緩沖器120中的數(shù)據(jù)的總大小已經(jīng)達(dá)到四個(gè)簇的大小(即,一個(gè)塊的大小),則執(zhí)行向閃存的數(shù)據(jù)寫入。在這種情況下,文件管理單元190逐簇地從各個(gè)文件緩沖器120中提取數(shù)據(jù),直到所提取的數(shù)據(jù)等于塊大小為止。文件管理單元190隨后將所提取的數(shù)據(jù)轉(zhuǎn)送到寫入緩沖器125,并且所轉(zhuǎn)送的數(shù)據(jù)被寫入到閃存中。在圖8中所示的示例中,執(zhí)行向閃存205的數(shù)據(jù)寫入,其中在數(shù)據(jù)寫入之前的所述閃存的已存內(nèi)容如同圖3中示出的示例316。通過數(shù)據(jù)寫入操作而寫入的寫入數(shù)據(jù)包括從文件緩沖器120A中提取的一個(gè)簇、從文件緩沖器120b中提取的一個(gè)簇,以及從文件緩沖器120C中提取的兩個(gè)簇。如在數(shù)據(jù)寫入之后的閃存的內(nèi)容的示例811中所示,所述寫入數(shù)據(jù)存儲(chǔ)在由簇號(hào)9-12組成的空閑塊(塊號(hào)6)中。甚至在這種情況下,將文件A的數(shù)據(jù)825寫入簇9,將文件B的數(shù)據(jù)826寫入簇10,以及將文件C的數(shù)據(jù)827寫入簇11和12。也就是說,每一個(gè)簇都包含單個(gè)文件的數(shù)據(jù),并且由此沒有簇包含混合在其中的不同文件的數(shù)據(jù)。
對于其數(shù)據(jù)被新近寫入的文件,更新FAT821和目錄822。
需要注意的是通過計(jì)算不超出每一個(gè)文件緩沖器120中所存儲(chǔ)的數(shù)據(jù)的大小的最大簇?cái)?shù)量,將在文件緩沖器120中存儲(chǔ)的數(shù)據(jù)的大小轉(zhuǎn)換成簇。
通過上述處理步驟,其整體上比當(dāng)存儲(chǔ)在單個(gè)文件緩沖器的數(shù)據(jù)的大小達(dá)到塊大小時(shí)執(zhí)行數(shù)據(jù)寫入的情況更早地執(zhí)行數(shù)據(jù)寫入。例如,在來自相同內(nèi)容的視頻和音頻數(shù)據(jù)在數(shù)量上不同,然而視頻和音頻數(shù)據(jù)需要被同步寫入的情況下,將視頻和音頻數(shù)據(jù)與各個(gè)數(shù)據(jù)的數(shù)量成比例地寫入到每一塊中。
圖9是根據(jù)第二實(shí)施例,響應(yīng)于數(shù)據(jù)寫入請求而執(zhí)行的數(shù)據(jù)寫入處理的詳細(xì)的處理步驟的流程圖。
在圖9中,為相同的處理步驟使用與圖7的流程圖中所示相同的步驟號(hào)。
現(xiàn)在,參照圖9,對數(shù)據(jù)寫入處理給出描述,其集中在不同的處理步驟上。
在圖9中,當(dāng)數(shù)據(jù)累積單元140最近將數(shù)據(jù)累積到其中的文件緩沖器中的一個(gè)指定文件緩沖器中所存儲(chǔ)的數(shù)據(jù)的大小小于塊大小時(shí)(S712),文件管理單元190以簇為單位計(jì)算各個(gè)文件緩沖器120中所存儲(chǔ)的數(shù)據(jù)的總大小,并且判斷計(jì)算結(jié)果是否不小于四(其為等于一個(gè)塊的簇?cái)?shù)量)(S926)。如果作出肯定的判斷結(jié)果,文件管理單元190檢測用于存儲(chǔ)寫入數(shù)據(jù)的空閑塊(S716)。
在分配空閑塊之后,文件管理單元190根據(jù)數(shù)據(jù)最近被累積到其中的指定的文件緩沖器上所存儲(chǔ)的數(shù)據(jù),來判斷寫入數(shù)據(jù)是由單個(gè)文件的數(shù)據(jù)組成還是由多個(gè)文件的數(shù)據(jù)組成(S927)。如果判定寫入數(shù)據(jù)由多個(gè)文件的數(shù)據(jù)組成,則文件管理單元190逐簇地從各個(gè)文件緩沖器120中提取數(shù)據(jù),直到所提取的數(shù)據(jù)達(dá)到一個(gè)塊的大小為止。文件管理單元190隨后將由此所提取的數(shù)據(jù)轉(zhuǎn)送到寫入緩沖器125中(S928)。在數(shù)據(jù)寫入到所分配空閑塊之后,通過重寫與數(shù)據(jù)被記錄到其上的多個(gè)文件有關(guān)的部分來更新FAT。
第三實(shí)施例根據(jù)本發(fā)明的第三實(shí)施例,在文件記錄裝置中可工作的過濾驅(qū)動(dòng)器保證了文件數(shù)據(jù)的有效記錄。
圖10示出了根據(jù)第三實(shí)施例的在文件記錄裝置中運(yùn)行的軟件的分級(jí)結(jié)構(gòu)。
應(yīng)用程序1010是記錄裝置中用于發(fā)出文件記錄請求的源。用于記錄視頻內(nèi)容的程序是應(yīng)用程序1010的一個(gè)例子。為了記錄文件,應(yīng)用程序1010向文件系統(tǒng)1020發(fā)出I/O請求。
文件系統(tǒng)1020是現(xiàn)有的通用文件系統(tǒng),比如用于Windows操作系統(tǒng)的FAT文件系統(tǒng)(微軟公司提出的)。文件系統(tǒng)1020記錄并管理文件。更具體而言,文件系統(tǒng)1020除了如常規(guī)技術(shù)中的文件管理外,還執(zhí)行諸如響應(yīng)于從應(yīng)用程序1010發(fā)出的文件I/O請求而記錄新文件之類的處理。文件系統(tǒng)1020本身按簇執(zhí)行存儲(chǔ)器分配和管理,正如常規(guī)技術(shù)中的一樣。也就是說,文件系統(tǒng)1020不執(zhí)行任何按塊進(jìn)行的處理或管理。
文件系統(tǒng)1020根據(jù)從應(yīng)用程序1010接收的文件I/O請求來執(zhí)行處理。
文件I/O請求可以是文件打開請求、文件關(guān)閉請求、到文件的數(shù)據(jù)寫入請求或自文件的數(shù)據(jù)讀取請求。
當(dāng)接收到文件I/O請求時(shí),文件系統(tǒng)1020在設(shè)備級(jí)向存儲(chǔ)卡設(shè)備驅(qū)動(dòng)器1040(在下文中,簡稱″設(shè)備驅(qū)動(dòng)器1040″)發(fā)出I/O請求,所述設(shè)備驅(qū)動(dòng)器是存儲(chǔ)卡110的設(shè)備驅(qū)動(dòng)器(圖1)。設(shè)備級(jí)I/O請求是以以下方式發(fā)出的。就到文件的數(shù)據(jù)寫入請求而言,文件系統(tǒng)1020參考FAT搜索空閑簇,并且根據(jù)需要分配由此所檢測到的空閑簇。文件系統(tǒng)1020產(chǎn)生由寫入地址和數(shù)據(jù)大小組成的數(shù)據(jù)寫入請求。在此,所述寫入地址是由所分配的簇的第一個(gè)的扇區(qū)號(hào)指定的,并且所述數(shù)據(jù)大小是由扇區(qū)數(shù)量而非字節(jié)數(shù)量指定的。文件系統(tǒng)1020隨后向設(shè)備驅(qū)動(dòng)器1040發(fā)出數(shù)據(jù)寫入請求。如上所述,設(shè)備級(jí)的I/O請求利用扇區(qū)號(hào)指定閃存205中的地址。
存儲(chǔ)卡過濾驅(qū)動(dòng)器1030(在下文中,簡稱″過濾驅(qū)動(dòng)器1030″)截取從文件系統(tǒng)1020發(fā)出到設(shè)備驅(qū)動(dòng)器1040的設(shè)備級(jí)I/O請求。如果該I/O請求是寫入請求,則過濾驅(qū)動(dòng)器1030禁止設(shè)備驅(qū)動(dòng)器1040立即執(zhí)行數(shù)據(jù)寫入。取而代之,過濾驅(qū)動(dòng)器1030使寫入數(shù)據(jù)累積在作為內(nèi)部存儲(chǔ)區(qū)的驅(qū)動(dòng)器數(shù)據(jù)緩沖器中。當(dāng)滿足預(yù)定條件時(shí),過濾驅(qū)動(dòng)器1030指示設(shè)備驅(qū)動(dòng)器1040將所累積的數(shù)據(jù)一次性寫入到存儲(chǔ)卡110。需要注意的是過濾驅(qū)動(dòng)器1030的細(xì)節(jié)將稍后給出。
設(shè)備驅(qū)動(dòng)器1040從過濾驅(qū)動(dòng)器1030接收設(shè)備級(jí)I/O請求,并根據(jù)請求對存儲(chǔ)卡110執(zhí)行I/O處理。
存儲(chǔ)卡110基本上等同于第一實(shí)施例描述的存儲(chǔ)卡。然而,其閃存的格式是不同的,因?yàn)閳D3中所示的保留區(qū)322沒有存儲(chǔ)有關(guān)塊的信息。更具體而言,根據(jù)當(dāng)前實(shí)施例,表示每個(gè)塊的簇?cái)?shù)量的信息(塊/簇4)未被記錄。
圖11是由過濾驅(qū)動(dòng)器1030執(zhí)行的處理步驟的流程圖?,F(xiàn)在,參照圖11,對過濾驅(qū)動(dòng)器1030執(zhí)行的I/O處理給出描述。
當(dāng)被加載時(shí),過濾驅(qū)動(dòng)器1030保留預(yù)定大小(例如兩個(gè)塊)的驅(qū)動(dòng)器數(shù)據(jù)緩沖器。驅(qū)動(dòng)器數(shù)據(jù)緩沖器是內(nèi)部使用的存儲(chǔ)區(qū)。另外,過濾驅(qū)動(dòng)器1030存儲(chǔ)關(guān)于每個(gè)塊的簇?cái)?shù)量的(例如,″塊/簇4″),以及關(guān)于塊、簇和扇區(qū)之間關(guān)系的內(nèi)部信息。
當(dāng)文件系統(tǒng)1020向設(shè)備驅(qū)動(dòng)器1040發(fā)出驅(qū)動(dòng)器級(jí)I/O請求時(shí),過濾驅(qū)動(dòng)器1030截取該I/O請求并且判定其是否是向閃存205的寫入請求(S1110)。如果該I/O請求不是寫入請求,則過濾驅(qū)動(dòng)器1030指示設(shè)備驅(qū)動(dòng)器1040執(zhí)行所請求的處理(S1112)。驅(qū)動(dòng)器級(jí)I/O請求是指基于扇區(qū)來指定讀取數(shù)據(jù)或?qū)懭霐?shù)據(jù)的I/O請求。就寫入請求而言,例如,閃存205中的寫入起始地址是由扇區(qū)號(hào)指定的,并且寫入數(shù)據(jù)的大小是由扇區(qū)數(shù)量指定的。需要注意的是由扇區(qū)數(shù)量指定的最大寫入數(shù)據(jù)大小限于一個(gè)塊的大小。
驅(qū)動(dòng)器給I/O請求的例子包括寫入請求、讀取請求以及塊擦除請求。
圖12是示出由過濾驅(qū)動(dòng)器1030管理的驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201上的數(shù)據(jù)與存儲(chǔ)卡110的閃存205的塊之間的對應(yīng)關(guān)系的視圖。在圖12中所示的例子中,驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201存儲(chǔ)具有連續(xù)地址的數(shù)據(jù)項(xiàng)AL、A2和A3。數(shù)據(jù)項(xiàng)AL、A2和A3的總大小相當(dāng)于塊大小。
根據(jù)第一實(shí)施例,數(shù)據(jù)寫入是在等于塊大小的數(shù)據(jù)被存儲(chǔ)在單個(gè)文件緩沖器中之后執(zhí)行的。相反地,根據(jù)第三實(shí)施例,不總是數(shù)據(jù)僅僅在所累積的數(shù)據(jù)達(dá)到塊大小之后才被寫入的情況。然而,通常是這樣的情況,其中僅對單個(gè)塊全部地或部分地執(zhí)行一次寫入操作,而從不一次對兩個(gè)或多個(gè)塊執(zhí)行。另外,對塊的數(shù)據(jù)寫入不是在每一次寫入請求時(shí)就執(zhí)行。取而代之,如果寫入數(shù)據(jù)具有連續(xù)的地址,則該寫入數(shù)據(jù)就被累積在驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201中。因此,避免了相同的數(shù)據(jù)被寫入一次以上。
當(dāng)I/O請求是寫入請求時(shí),過濾驅(qū)動(dòng)器1030判斷驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201是否是空的(S1113)。如果判定為空的,則所述處理分支到步驟S1120。如果數(shù)據(jù)驅(qū)動(dòng)器緩沖器1201被判定為不空,則過濾驅(qū)動(dòng)器1030判斷寫入數(shù)據(jù)是否鄰接于在驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201中累積的數(shù)據(jù)(S1114)。
在圖12中所示的例子中,數(shù)據(jù)項(xiàng)A1被累積在數(shù)據(jù)驅(qū)動(dòng)器緩沖器1201中,并且數(shù)據(jù)項(xiàng)A2是由寫入請求所請求的將被寫入的寫入數(shù)據(jù)。數(shù)據(jù)項(xiàng)A1的寫入地址(第一個(gè)扇區(qū)的地址)表示為扇區(qū)號(hào)s1,并且數(shù)據(jù)大小表示為扇區(qū)數(shù)量d1。數(shù)據(jù)項(xiàng)A2的寫入地址表示為扇區(qū)號(hào)s2,而數(shù)據(jù)大小表示為扇區(qū)數(shù)量d2。在這種情況下,如果地址s2等于(s1+d1)則判定數(shù)據(jù)項(xiàng)A1和數(shù)據(jù)項(xiàng)A2是連續(xù)的。
如果寫入數(shù)據(jù)與累積在數(shù)據(jù)驅(qū)動(dòng)器緩沖器1201中的數(shù)據(jù)不是連續(xù)的(S1116N),則過濾驅(qū)動(dòng)器1030就令設(shè)備驅(qū)動(dòng)器1040將所累積的數(shù)據(jù)寫入到閃存205中(S1118)。
接下來,過濾驅(qū)動(dòng)器1030按以下方式將寫入數(shù)據(jù)累積到驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201(S1120)。
如果驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201從起始起就是空的,或者由于其中累積的不連續(xù)數(shù)據(jù)剛被寫入而造成它是空的,則過濾驅(qū)動(dòng)器1030就簡單地把寫入數(shù)據(jù)存儲(chǔ)到驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201中。
如果寫入數(shù)據(jù)鄰接于所累積的數(shù)據(jù),則過濾驅(qū)動(dòng)器1030就將寫入數(shù)據(jù)累積到驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201中,以便驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201開始將該寫入數(shù)據(jù)補(bǔ)充存儲(chǔ)到先前累積的數(shù)據(jù)中。相應(yīng)地更新寫入數(shù)據(jù)的大小。
在上述的具體例子中,在當(dāng)前數(shù)據(jù)寫入請求之前的寫入數(shù)據(jù)的大小表示為扇區(qū)數(shù)量d1。這個(gè)數(shù)據(jù)大小被改為(s1+s2),即通過加上d2計(jì)算出的,其為當(dāng)前寫入請求所請求的寫入數(shù)據(jù)的大小。在驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201中累積的數(shù)據(jù)的寫入地址(扇區(qū)號(hào))和數(shù)據(jù)大小(扇區(qū)數(shù)量)被存儲(chǔ),以作為與驅(qū)動(dòng)器數(shù)據(jù)緩沖器1021有關(guān)的管理信息(未圖示)。
在圖12中所示的例子中,在驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201中所累積數(shù)據(jù)的起始地址(扇區(qū)號(hào))落入塊1的中間并且所累積的數(shù)據(jù)相當(dāng)于一個(gè)塊的大小。在這種情況下,即使寫入地址是連續(xù)的,數(shù)據(jù)項(xiàng)A2和A3也將跨在塊邊界上。也就是說,盡管寫入數(shù)據(jù)是具有塊大小的連續(xù)數(shù)據(jù),對閃存205的數(shù)據(jù)寫入也需要對兩個(gè)塊執(zhí)行RMW操作。此外,不管在數(shù)據(jù)項(xiàng)A3后面的數(shù)據(jù)是否對于另一個(gè)塊是連續(xù)的,同樣需要對兩個(gè)塊執(zhí)行RMW操作,這是浪費(fèi)的。
為了避免這種浪費(fèi),過濾驅(qū)動(dòng)器1030判斷在驅(qū)動(dòng)器數(shù)據(jù)緩沖器1201中所累積的數(shù)據(jù)是否將跨在塊邊界上(S1122)。如果數(shù)據(jù)寫入的目標(biāo)寫入扇區(qū)中有任何一個(gè)對應(yīng)于塊的末尾(即,塊的最后一個(gè)扇區(qū)),則作出所累積的數(shù)據(jù)將跨在塊邊界上的判斷。如果判定所累積的數(shù)據(jù)將跨在塊邊界上,則只把一部分所累積的數(shù)據(jù)寫入到閃存205的塊中(在圖12中所示的例子中,是塊1)。將要寫入的所累積的數(shù)據(jù)的一部分從數(shù)據(jù)緩沖器1201的頂部擴(kuò)展至其寫入地址與該塊末尾對應(yīng)的數(shù)據(jù)(在圖12中所示的例子中,是數(shù)據(jù)項(xiàng)A1和A2)。過濾驅(qū)動(dòng)器1030通過指示設(shè)備驅(qū)動(dòng)器1040(i)將該塊中所存儲(chǔ)的數(shù)據(jù)讀取到存儲(chǔ)器上;(ii)擦除該塊;(iii)在存儲(chǔ)器上,將部分所累積的數(shù)據(jù)(在圖12中所示的例子中,是數(shù)據(jù)項(xiàng)A1+A2)加到從該塊中讀取的數(shù)據(jù)上;以及(iv)將存儲(chǔ)器上的所有數(shù)據(jù)回寫到閃存205的所述塊上,來執(zhí)行對閃存205的所述塊(在圖12中所示的例子中,是塊1)的數(shù)據(jù)寫入。
根據(jù)第三實(shí)施例,過濾驅(qū)動(dòng)器1030逐塊地執(zhí)行數(shù)據(jù)寫入,但是當(dāng)前實(shí)施例不限于此。例如,上述過濾驅(qū)動(dòng)器的功能可以被并入設(shè)備驅(qū)動(dòng)器或文件系統(tǒng)中。
到目前為止,已經(jīng)通過上述實(shí)施例描述了本發(fā)明。然而,要自然地認(rèn)識(shí)到的是,本發(fā)明絕不限于那些具體實(shí)施例,并且可以作出包含下列的各種修改。
本發(fā)明可以體現(xiàn)為計(jì)算機(jī)程序,其使計(jì)算機(jī)系統(tǒng)執(zhí)行上述任何方法。此外,本發(fā)明可以體現(xiàn)為代表上述任何程序的數(shù)字信號(hào)。
此外,本發(fā)明可以體現(xiàn)為計(jì)算機(jī)可讀記錄介質(zhì),比如半導(dǎo)體存儲(chǔ)器,其存儲(chǔ)上述任何程序和數(shù)字信號(hào)。
此外,本發(fā)明可以體現(xiàn)為經(jīng)由電信網(wǎng)絡(luò)、無線或有線網(wǎng)絡(luò)或以因特網(wǎng)為代表的網(wǎng)絡(luò)傳輸?shù)纳鲜鋈魏斡?jì)算機(jī)程序和數(shù)字信號(hào)。
工業(yè)實(shí)用性根據(jù)本發(fā)明的文件記錄裝置能夠有效地存儲(chǔ)大量視頻和音頻數(shù)據(jù),并由此非常適用于諸如音樂和信息行業(yè)之類的涉及大量這類數(shù)據(jù)的記錄和發(fā)布的行業(yè)中。
權(quán)利要求
1.一種文件記錄裝置,其用于將數(shù)據(jù)記錄到按簇寫入和按塊擦除的記錄介質(zhì)上,其中每一個(gè)塊都由預(yù)定數(shù)目的連續(xù)簇組成,所述文件記錄裝置包括接收單元,用于接收用于將多個(gè)文件中的一個(gè)指定的文件的數(shù)據(jù)寫入到所述記錄介質(zhì)上的請求;多個(gè)文件緩沖器,其中每一個(gè)用于所述文件中的一個(gè)不同的文件;數(shù)據(jù)累積單元,用于將被請求寫入的數(shù)據(jù)累積在與所述指定的文件對應(yīng)的一個(gè)所述文件緩沖器中;判斷單元,用于判斷數(shù)據(jù)累積單元已經(jīng)累積的數(shù)據(jù)是否不小于塊大??;和寫入單元,用于如果所述判斷單元作出肯定判斷,則從所累積的數(shù)據(jù)中提取一塊數(shù)據(jù),并將所提取的數(shù)據(jù)寫入到所述記錄介質(zhì)的空閑塊中。
2.如權(quán)利要求1所述的文件記錄裝置,其中如果所述數(shù)據(jù)累積單元最近累積數(shù)據(jù)到其中的所述文件緩沖器中的一個(gè)指定的文件緩沖器中已經(jīng)累積的數(shù)據(jù)不小于塊大小,則所述判斷單元作出肯定判斷,以及所述寫入單元從所述指定的文件緩沖器的頂部提取一塊數(shù)據(jù),并將所提取的數(shù)據(jù)寫入到所述記錄介質(zhì)的空閑塊中。
3.如權(quán)利要求1所述的文件記錄裝置,其中當(dāng)用各個(gè)文件緩沖器中累積的數(shù)據(jù)的大小除以簇大小而計(jì)算出的每一個(gè)商的總和不小于預(yù)定數(shù)目時(shí),所述判斷單元作出肯定判斷,以及所述寫入單元可以從各個(gè)文件緩沖器中逐簇地提取數(shù)據(jù)直到達(dá)到預(yù)定數(shù)目的簇為止,并且將所提取的數(shù)據(jù)寫入到所述記錄介質(zhì)的空閑塊中。
4.如權(quán)利要求1所述的文件記錄裝置,還包括擦除單元,用于在所述寫入單元將所提取的數(shù)據(jù)寫入到所述空閑塊之前擦除所述空閑塊。
5.一種用于文件記錄裝置的控制方法,所述文件記錄裝置包括多個(gè)文件緩沖器,其中每一個(gè)都用于多個(gè)文件中的一個(gè)不同的文件,并且將數(shù)據(jù)記錄到記錄介質(zhì)上,所述記錄介質(zhì)按簇寫入并按塊擦除,每一個(gè)塊都由預(yù)定數(shù)目的連續(xù)簇組成,所述方法包括接收步驟,用于接收用于將多個(gè)文件中的一個(gè)指定的文件的數(shù)據(jù)寫入到所述記錄介質(zhì)上的請求;數(shù)據(jù)累積步驟,用于在與指定文件相對應(yīng)的一個(gè)文件緩沖器中累積被請求寫入的數(shù)據(jù);判斷步驟,用于判斷在所述數(shù)據(jù)累積步驟中已經(jīng)累積的數(shù)據(jù)是否不小于塊大?。灰约皩懭氩襟E,用于如果所述判斷步驟作出肯定判斷,則從所累積的數(shù)據(jù)中提取一塊數(shù)據(jù),并將所提取的數(shù)據(jù)寫入到所述記錄介質(zhì)的空閑塊中。
6.一個(gè)用于由文件記錄裝置執(zhí)行的程序,所述文件記錄裝置包括多個(gè)文件緩沖器,其中每一個(gè)都用于多個(gè)文件中的一個(gè)不同的文件,并且將數(shù)據(jù)記錄到記錄介質(zhì)上,所述記錄介質(zhì)按簇寫入并按塊擦除,每一個(gè)塊都由預(yù)定數(shù)目的連續(xù)簇組成,所述程序包括可用于使所述文件記錄裝置執(zhí)行下列操作的代碼接收步驟,用于接收用于將多個(gè)文件中的一個(gè)指定的文件的數(shù)據(jù)寫入到所述記錄介質(zhì)上的請求;數(shù)據(jù)累積步驟,用于將被請求寫入的數(shù)據(jù)累積在與所述指定的文件對應(yīng)的一個(gè)所述文件緩沖器中;判斷步驟,用于判斷在所述數(shù)據(jù)累積步驟中已經(jīng)累積的數(shù)據(jù)是否不小于塊大?。灰约皩懭氩襟E,用于如果所述判斷步驟作出肯定判斷,則從所累積的數(shù)據(jù)中提取一塊數(shù)據(jù),并將所提取的數(shù)據(jù)寫入到所述記錄介質(zhì)的空閑塊中。
7.一種用于由文件記錄裝置執(zhí)行的程序,所述文件記錄裝置包括驅(qū)動(dòng)器數(shù)據(jù)緩沖器,并且將數(shù)據(jù)記錄到記錄介質(zhì)上,所述記錄介質(zhì)按簇寫入并按塊擦除,每一個(gè)塊都由預(yù)定數(shù)目的連續(xù)簇組成,所述程序包括可用于使所述文件記錄裝置執(zhí)行下列操作的代碼接收步驟,用于接收寫入請求,其指定數(shù)據(jù)被請求寫入的記錄介質(zhì)上的寫入地址;第一判斷步驟,用于如果所述驅(qū)動(dòng)器數(shù)據(jù)緩沖器不是空的,則判斷為被請求寫入的數(shù)據(jù)所指定的寫入地址是否鄰接于為存儲(chǔ)在所述驅(qū)動(dòng)器數(shù)據(jù)緩沖器上的數(shù)據(jù)所指定的寫入地址;數(shù)據(jù)累積步驟,用于如果所述第一判斷步驟作出肯定判斷,則在所述驅(qū)動(dòng)器數(shù)據(jù)緩沖器中累積被請求寫入的數(shù)據(jù);第二判斷步驟,用于判斷為所述驅(qū)動(dòng)器數(shù)據(jù)緩沖器中累積的數(shù)據(jù)所指定的寫入地址是否落在所述記錄介質(zhì)的塊邊界上;以及寫入步驟,用于如果第二判斷步驟作出肯定判斷,則將從所述驅(qū)動(dòng)器數(shù)據(jù)緩沖器頂部到與所述塊邊界對應(yīng)的點(diǎn)的部分所述累積的數(shù)據(jù)寫入到所述記錄介質(zhì)上。
8.如權(quán)利要求7所述的程序,其中所述程序包括所述記錄介質(zhì)的過濾驅(qū)動(dòng)器。
全文摘要
為了有效地將文件記錄到半導(dǎo)體存儲(chǔ)器上,文件記錄裝置具有為各個(gè)文件而設(shè)置的多個(gè)文件緩沖器。將被請求寫入的數(shù)據(jù)累積在相應(yīng)的文件緩沖器中。判斷已經(jīng)累積的數(shù)據(jù)是否達(dá)到一個(gè)塊的大小,其中塊是擦除半導(dǎo)體存儲(chǔ)器的單位。如果判定累積在其中一個(gè)文件緩沖器中或多個(gè)文件緩沖器中的數(shù)據(jù)總和已經(jīng)達(dá)到塊大小,則將所述累積的數(shù)據(jù)寫入到半導(dǎo)體存儲(chǔ)器的空閑塊中。
文檔編號(hào)G06F3/06GK1906596SQ20048004062
公開日2007年1月31日 申請日期2004年10月7日 優(yōu)先權(quán)日2003年11月18日
發(fā)明者齋藤浩, 田中俊啟 申請人:松下電器產(chǎn)業(yè)株式會(huì)社