亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Fat文件數(shù)據(jù)讀取/寫入方法、系統(tǒng)和移動(dòng)通信終端的制作方法

文檔序號(hào):6470973閱讀:231來(lái)源:國(guó)知局
專利名稱:Fat文件數(shù)據(jù)讀取/寫入方法、系統(tǒng)和移動(dòng)通信終端的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù),特別涉及一種基于Linux操作系統(tǒng)的FAT文件數(shù) 據(jù)讀取/寫入技術(shù)。
背景技術(shù)
Linux是一套免費(fèi)使用和自由傳播的操作系統(tǒng),主要用于基于Intel x86系 列中央處理器的計(jì)算機(jī)上。這個(gè)系統(tǒng)是由世界各地的成千上萬(wàn)的程序員設(shè)計(jì)和 實(shí)現(xiàn)的。其目的是建立不受任何商品化軟件的版權(quán)制約的、全世界都能自由使 用的Unix兼容產(chǎn)品。Linux以高效性和靈活性著稱,能夠在PC計(jì)算機(jī)上實(shí)現(xiàn) 全部的Unix特性,具有多任務(wù)、多用戶的能力,被廣泛應(yīng)用在各種具有多士某 體處理能力的便攜式設(shè)備中,例如手機(jī)、照相機(jī)等便攜式設(shè)備。
操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)稱為文件管理系統(tǒng),文件 管理系統(tǒng)由三部分組成與文件管理有關(guān)的軟件、被管理的文件以及實(shí)施文件 管理所需的數(shù)據(jù)結(jié)構(gòu)。從系統(tǒng)角度來(lái)看,文件管理系統(tǒng)是對(duì)文件存儲(chǔ)器空間進(jìn) 行組織和分配,負(fù)責(zé)文件的存儲(chǔ)并對(duì)存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。具體 地說(shuō),它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲(chǔ)文件,控制文件的存 取,當(dāng)用戶不再使用時(shí)撤銷文件等。文件管理系統(tǒng)是操作系統(tǒng)用于明確磁盤或 分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu),即在^f茲盤上組織文件的方法。
Linux操作系統(tǒng)支持多種的文件管理系統(tǒng)格式,支持文件管理系統(tǒng)使用不 同設(shè)備。Linux操作系統(tǒng)中的文件管理系統(tǒng)比較復(fù)雜,軟件結(jié)構(gòu)如圖1所示, 包括VFS(虛擬文件管理系統(tǒng)層)、Disk Caches(》茲盤數(shù)據(jù)緩沖區(qū)層)、Mapping Layer (文件管理系統(tǒng)映射層)、Generic Block Layer (通用存儲(chǔ)設(shè)備層)、I/O schedule layer (輸入/輸出調(diào)度層)和Block Device Driver (存儲(chǔ)設(shè)備驅(qū)動(dòng)層),
其中
VFS是最上層,不同的文件管理系統(tǒng)使用相同的軟件接口,調(diào)用者不需要 考慮實(shí)際的文件管理系統(tǒng)類型,只需要告訴VFS所要讀取/寫入的文件路徑和 文件名;
Disk Caches位于VFS下層,為了提高讀取/寫入速度,已經(jīng)讀取/寫入的數(shù) 據(jù)暫時(shí)保存到數(shù)據(jù)緩沖區(qū)中,如果下次再次讀取/寫入這些數(shù)據(jù)可以直接操作數(shù) 據(jù)緩沖區(qū)而不需要讀取/寫入設(shè)備。如果數(shù)據(jù)緩沖區(qū)沒(méi)有需要的數(shù)據(jù),VFS軟 件使用Mapping Layer層接口,根據(jù)所使用的具體文件管理系統(tǒng)得到用戶所需 要的文件數(shù)據(jù)在具體存儲(chǔ)設(shè)備中的物理位置;
VFS通過(guò)Generic Block Layer層和I/O schedule layer層,將讀取/寫入所需 數(shù)據(jù)的起始物理位置、大小請(qǐng)求發(fā)送給Block Device Driver層;
存儲(chǔ)設(shè)備驅(qū)動(dòng)層根據(jù)使用的具體不同的數(shù)據(jù)存儲(chǔ)設(shè)備,發(fā)送讀取/寫入操作 命令,完成一次讀取/寫入操作,將讀取的數(shù)據(jù)保存到數(shù)據(jù)緩沖區(qū)中或者將數(shù)據(jù) 緩沖區(qū)數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)設(shè)備。
其中Generic Block Layer層、I/O schedule layer層和Block Device Driver 層協(xié)調(diào)負(fù)責(zé)數(shù)據(jù)存儲(chǔ)設(shè)備中的數(shù)據(jù)讀取/寫入管理。
現(xiàn)有Linux操作系統(tǒng)以邏輯塊(Block)為單位管理存儲(chǔ)設(shè)備,并為每一個(gè) 邏輯塊設(shè)定對(duì)應(yīng)的號(hào)碼作為邏輯塊的物理地址,VFS從具體的文件管理系統(tǒng)中 獲得的物理位置實(shí)際上就是文件數(shù)據(jù)在存儲(chǔ)設(shè)備中占用的邏輯塊號(hào)碼信息。一 個(gè)邏輯塊的大小可以設(shè)定為一個(gè)或一個(gè)以上連續(xù)的扇區(qū),而存儲(chǔ)設(shè)備讀取/寫入 操作的最小單位是一個(gè)扇區(qū),讀取/寫入操作命令中需要指定讀取/寫入操作的 數(shù)據(jù)所在的扇區(qū)。
因此如圖2所示,為方便管理,現(xiàn)有Linux操作系統(tǒng)中將一個(gè)邏輯塊的大 小設(shè)定為一個(gè)扇區(qū),以保持扇區(qū)號(hào)碼和邏輯塊號(hào)碼的一致,這樣VFS從具體 的文件管理系統(tǒng)中獲得的邏輯塊號(hào)碼實(shí)質(zhì)上就是扇區(qū)號(hào)碼,可以直接將邏輯塊 號(hào)碼作為扇區(qū)號(hào)碼進(jìn)行數(shù)據(jù)讀取/寫入控制。
由于對(duì)每一個(gè)扇區(qū)中的數(shù)據(jù)進(jìn)行讀取/寫入操作時(shí),VFS都需要將數(shù)據(jù)所 在扇區(qū)號(hào)碼發(fā)送給Block Device Driver層,Block Device Driver層根據(jù)每次收 到的扇區(qū)號(hào)碼,在對(duì)應(yīng)扇區(qū)中進(jìn)行數(shù)據(jù)的讀取/寫入操作。例如當(dāng)扇區(qū)大小只有 一個(gè)sector (512字節(jié))時(shí),用戶需要讀取/寫入4K字節(jié)數(shù)據(jù)時(shí),VFS層需要 發(fā)送給8次請(qǐng)求,由于VFS每一次發(fā)送請(qǐng)求都需要檢查磁盤數(shù)據(jù)緩沖區(qū)所需 要的數(shù)據(jù)是否存在,調(diào)用文件管理系統(tǒng)映射層得到文件所在的邏輯塊號(hào)碼,通 過(guò)調(diào)用通用塊設(shè)備層、輸入/輸出調(diào)度層和塊設(shè)備驅(qū)動(dòng)層向數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送讀 取/寫入操作命令,數(shù)據(jù)存儲(chǔ)設(shè)備接收命令后需要一定時(shí)間后才能開始數(shù)據(jù)讀取 /寫入操作。因此發(fā)送請(qǐng)求越多,各種開銷和延時(shí)越大,數(shù)據(jù)讀取/寫入操作整 體性能越低,數(shù)據(jù)讀取/寫入速度較慢,則無(wú)法滿足多媒體業(yè)務(wù)對(duì)文件高速讀寫 的要求。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)讀取/寫入方 法、系統(tǒng)和移動(dòng)通信終端,用以提高存儲(chǔ)設(shè)備中的FAT文件數(shù)據(jù)讀取/寫入操 作速度。
一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)讀取/寫入方法,包括從FAT 文件管理系統(tǒng)中獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)碼,并分別根據(jù)每一個(gè)存 儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)碼進(jìn)行數(shù)據(jù)讀取/寫入操作,每一個(gè)邏輯塊包括 至少兩個(gè)連續(xù)扇區(qū),其中每一次根據(jù)一個(gè)邏輯塊號(hào)碼進(jìn)行的數(shù)據(jù)讀取/寫入操 作過(guò)程具體包括
根據(jù)邏輯塊號(hào)碼確定本次需要進(jìn)行數(shù)據(jù)讀取/寫入操作的第 一個(gè)扇區(qū)號(hào)碼 N為N=nxm + q,其中n為邏輯塊號(hào)碼,m為一個(gè)邏輯塊包含的扇區(qū)個(gè)數(shù), m為大于等于2的整數(shù),q為FAT文件信息區(qū)包含的扇區(qū)個(gè)數(shù)x除以m的余數(shù);
向數(shù)據(jù)存儲(chǔ)設(shè)備的管理單元發(fā)送攜帶所述N和m的數(shù)據(jù)讀取/寫入操作命
令;
所述數(shù)據(jù)存儲(chǔ)設(shè)備的管理單元根據(jù)數(shù)據(jù)讀取/寫入操作命令中的N和m, 在以第N個(gè)扇區(qū)開始的連續(xù)m個(gè)扇區(qū)上分別進(jìn)行數(shù)據(jù)讀取/寫入操作。
較佳的,從FAT文件管理系統(tǒng)中獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)碼 之前,還包括根據(jù)所述x和m確定q并將所述q保存到數(shù)據(jù)緩沖區(qū)中;以及 在每一次根據(jù)一個(gè)邏輯塊號(hào)碼進(jìn)行的數(shù)據(jù)讀取/寫入操作之前,還包括從數(shù)據(jù) 緩沖區(qū)獲取q。
較佳的,當(dāng)進(jìn)行FAT文件數(shù)據(jù)讀取操作時(shí),所述根據(jù)所述x和m確定q 并將所述q保存到數(shù)據(jù)緩沖區(qū)中之前,還包括
確定數(shù)據(jù)緩沖區(qū)中是否已經(jīng)保存有需要讀的FAT文件數(shù)據(jù),如果是則從數(shù) 據(jù)緩沖區(qū)中讀取該FAT文件數(shù)據(jù),否則根據(jù)存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊個(gè)數(shù), 申請(qǐng)相應(yīng)大小的數(shù)據(jù)緩沖區(qū)后,再執(zhí)行根據(jù)所述x和m確定q并將所述q保存 到數(shù)據(jù)緩沖區(qū)中。
一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)讀取/寫入系統(tǒng),包括
數(shù)據(jù)存儲(chǔ)設(shè)備,用于存儲(chǔ)FAT文件數(shù)據(jù),所述數(shù)據(jù)存儲(chǔ)設(shè)備包含多個(gè)邏輯 塊,每一個(gè)邏輯塊包含m個(gè)扇區(qū),m為大于等于2的整數(shù);
FAT文件管理單元,用于管理存儲(chǔ)的FAT文件數(shù)據(jù),所述FAT文件的存 儲(chǔ)區(qū)包含F(xiàn)AT文件信息區(qū)和FAT文件數(shù)據(jù)區(qū),所述FAT文件信息區(qū)包含x個(gè) 扇區(qū);
虛擬文件管理單元,用于從所述FAT文件管理單元中獲得存儲(chǔ)FAT文件 數(shù)據(jù)的邏輯塊的號(hào)碼,并分別根據(jù)每一個(gè)邏輯塊的號(hào)碼確定每一次進(jìn)行數(shù)據(jù)讀 取/寫入操作的對(duì)應(yīng)的第一個(gè)扇區(qū)號(hào)碼N為N=nxm + q,其中n為邏輯塊號(hào) 碼,q為所述x除以m的余數(shù),并分別根據(jù)確定出的N發(fā)送一次攜帶所述N 和m的數(shù)據(jù)讀取/寫入操作命令;
數(shù)據(jù)存儲(chǔ)管理單元,用于接收所述虛擬文件管理單元發(fā)送的讀取/寫入操作 命令,并在接收到每一個(gè)數(shù)據(jù)讀取/寫入操作命令時(shí),根據(jù)其中的N和m,對(duì) 以第N個(gè)扇區(qū)開始的連續(xù)m個(gè)扇區(qū)上分別進(jìn)行數(shù)據(jù)讀取/寫入操作。
較佳的所述的系統(tǒng)還包括數(shù)據(jù)緩沖區(qū),所述虛擬文件管理單元還用于在 獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)碼之前,才艮據(jù)所述x和m確定q并將所 述q保存到數(shù)據(jù)緩沖區(qū)中;以及在每一次根據(jù)一個(gè)邏輯塊號(hào)碼確定對(duì)應(yīng)的N之 前,從所述數(shù)據(jù)緩沖區(qū)獲取q。
進(jìn)一步,所述虛擬文件管理單元還用于當(dāng)進(jìn)行FAT文件數(shù)據(jù)讀操作時(shí),在 所述根據(jù)所述x和m確定q并將所述q保存到數(shù)據(jù)緩沖區(qū)中之前,確定數(shù)據(jù)緩 沖區(qū)中是否已經(jīng)保存有需要讀取的FAT文件數(shù)據(jù),如果是則從數(shù)據(jù)緩沖區(qū)中讀 取該FAT文件數(shù)據(jù),否則根據(jù)存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊個(gè)數(shù),申請(qǐng)相應(yīng)大 小的數(shù)據(jù)緩沖區(qū)后,再執(zhí)行根據(jù)所述x和m確定q并將所述q保存到數(shù)據(jù)緩沖 區(qū)中。
一種基于Linux操作系統(tǒng)的移動(dòng)通信終端,包括所述基于Linux操作系統(tǒng) 的FAT文件數(shù)據(jù)讀取/寫入系統(tǒng)。
本發(fā)明實(shí)施例在Linux操作系統(tǒng)中,為提高FAT文件的讀取/寫入速度, 將邏輯塊的大小設(shè)定為連續(xù)2個(gè)或2個(gè)以上扇區(qū),并根據(jù)文件數(shù)據(jù)在存儲(chǔ)設(shè)備 中占用的邏輯塊號(hào)碼確定每一次數(shù)據(jù)讀取/寫入操作的第一個(gè)扇區(qū)號(hào)碼,根據(jù)第 一個(gè)扇區(qū)號(hào)碼和邏輯塊包含的扇區(qū)個(gè)數(shù),利用 一次數(shù)據(jù)讀取/寫入操作命令就可 以完成一個(gè)邏輯塊大小數(shù)據(jù)的操作,從而成倍減少了數(shù)據(jù)讀取/寫入操作命令的 發(fā)送次數(shù),提高了存儲(chǔ)設(shè)備中的FAT文件數(shù)據(jù)讀取/寫入操作速度。


圖1為現(xiàn)有Linux操作系統(tǒng)中的文件管理系統(tǒng)軟件結(jié)構(gòu)示意圖; 圖2為現(xiàn)有Linux操作系統(tǒng)中的邏輯塊和扇區(qū)對(duì)應(yīng)關(guān)系示意圖; 圖3為本發(fā)明實(shí)施例以一個(gè)邏輯塊大小為2個(gè)扇區(qū)、FAT文件信息區(qū)大小 為3的示例圖4a為本發(fā)明實(shí)施例以一個(gè)邏輯塊大小為2個(gè)扇區(qū)、FAT文件信息區(qū)大 小為零的示例圖4b為本發(fā)明實(shí)施例以一個(gè)邏輯塊大小為5個(gè)扇區(qū)、FAT文件信息區(qū)大 小為3的示例圖5為本發(fā)明實(shí)施例提供的一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)讀取 方法流程示意圖6為本發(fā)明實(shí)施例提供的一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)寫入 方法流程示意圖7為本發(fā)明實(shí)施例提供的一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)讀取 /寫入系統(tǒng)主要結(jié)構(gòu)示意圖。
具體實(shí)施例方式
現(xiàn)有很多存儲(chǔ)設(shè)備,例如TF存儲(chǔ)卡或硬盤等,都可以支持一次讀取/寫入 連續(xù)多個(gè)扇區(qū)的數(shù)據(jù)讀取/寫入操作命令,在數(shù)據(jù)讀取/寫入操作命令中指示需 要操作的第 一個(gè)扇區(qū)號(hào)碼以及連續(xù)扇區(qū)的個(gè)數(shù),則可以以第 一個(gè)扇區(qū)號(hào)碼對(duì)應(yīng) 的扇區(qū)開始,逐個(gè)完成指定數(shù)量的連續(xù)多個(gè)扇區(qū)的數(shù)據(jù)讀取/寫入才喿作。
FAT(File Allocation Table)文件管理系統(tǒng)在基于WINDOWS操作系統(tǒng)的計(jì) 算機(jī)中被廣泛使用,文件數(shù)據(jù)結(jié)構(gòu)一般采用FAT12、 FAT16或FAT32等格式存 儲(chǔ)。FAT文件管理系統(tǒng)幾乎被所有個(gè)人計(jì)算機(jī)的操作系統(tǒng)所支持,使它成為理 想的軟盤和記憶卡文件管理系統(tǒng),也適合用作不同操:作系統(tǒng)中的數(shù)據(jù)交流。如 圖3所示,F(xiàn)AT格式文件數(shù)據(jù)結(jié)構(gòu)包括文件信息區(qū)和文件數(shù)據(jù)區(qū),文件信息區(qū) 通常位于開頭部分,用于保存文件數(shù)據(jù)的大小、存儲(chǔ)空間大小等信息,文件信 息區(qū)的大小為一個(gè)或一個(gè)以上的扇區(qū)。文件數(shù)據(jù)區(qū)用于存儲(chǔ)FAT格式文件數(shù) 據(jù),文件信息區(qū)一般位于存儲(chǔ)設(shè)備的開頭部分,用于保存文件數(shù)據(jù)的管理信息。 存儲(chǔ)設(shè)備剩余的空間為文件數(shù)據(jù)區(qū),用于存^L文件數(shù)據(jù)。
FAT文件系統(tǒng)分配文件空間是以簇單位。簇的大小在文件系統(tǒng)格式化時(shí)設(shè) 置。 一般為扇區(qū)的2冪次方倍,也就是可以是l, 2, 4, 8, 16, 32倍。如果 文件數(shù)據(jù)區(qū)的扇區(qū)總數(shù)不是蔟大小的整數(shù)倍,最后不能組成一個(gè)簇的扇區(qū)將不
能存儲(chǔ)數(shù)據(jù),被FAT文件系統(tǒng)丟棄不使用。舉例說(shuō)明FAT文件數(shù)據(jù)實(shí)際存儲(chǔ) 的位置是從文件數(shù)據(jù)區(qū)開始,例如物理設(shè)備總的容量是100個(gè)扇區(qū),文件系統(tǒng) 信息區(qū)占用扇區(qū)號(hào)0到2的3個(gè)扇區(qū),剩余的97個(gè)扇區(qū)給文件系統(tǒng)數(shù)據(jù)區(qū)使 用。如果FAT文件系統(tǒng)的簇大小是2個(gè)扇區(qū)數(shù),那么FAT文件系統(tǒng)分配給文 件數(shù)據(jù)存放空間的單位是2個(gè)扇區(qū)。也就是說(shuō)連續(xù)2個(gè)扇區(qū)為分配單位。那么 扇區(qū)號(hào)3, 4為一個(gè)分配單位,扇區(qū)號(hào)5, 6為一個(gè)單位,以此類推扇區(qū)號(hào)97, 98為一個(gè)單位。最后的扇區(qū)號(hào)99不足一個(gè)簇,不能分配給文件,所以不能使 用。
本發(fā)明實(shí)施例在Linux操作系統(tǒng)中,為提高FAT文件的讀取/寫入速度, 將邏輯塊的大小設(shè)定為連續(xù)2個(gè)或2個(gè)以上扇區(qū),如圖4a所示,如果FAT文 件系統(tǒng)扇區(qū)大小是512字節(jié),簇大小小于等于扇區(qū)的8倍(也就是小于4k字 節(jié)),設(shè)置邏輯塊的大小與簇大小一致。如果超過(guò)8倍,設(shè)置邏輯塊的大小為 扇區(qū)的8倍,由于簇的是扇區(qū)的2冪次方倍,因此邏輯塊大小與簇大小是整數(shù) 倍關(guān)系。根據(jù)文件數(shù)據(jù)在存儲(chǔ)設(shè)備中占用的邏輯塊號(hào)碼確定每一次數(shù)據(jù)讀取/ 寫入操作的第一個(gè)扇區(qū)號(hào)碼,根據(jù)第一個(gè)扇區(qū)號(hào)碼和邏輯塊包含的扇區(qū)個(gè)數(shù), 利用 一次數(shù)據(jù)讀取/寫入操作命令就可以完成一個(gè)邏輯塊大小數(shù)據(jù)的操作,從而 成倍減少了數(shù)據(jù)讀取/寫入操作命令的發(fā)送次數(shù),提高了存儲(chǔ)設(shè)備中的數(shù)據(jù)讀取 /寫入操作速度。
如果假設(shè)FAT文件信息區(qū)的大小為O,以一個(gè)邏輯塊大小為2個(gè)扇區(qū)為例, 將邏輯塊號(hào)碼乘以相應(yīng)的倍數(shù),則可以將邏輯塊號(hào)碼轉(zhuǎn)換為該邏輯塊所占的第 一個(gè)扇區(qū)號(hào)碼。例如邏輯塊號(hào)碼1乘以倍數(shù)2得到2,是對(duì)應(yīng)邏輯塊號(hào)碼1的 第一個(gè)扇區(qū)號(hào)碼2。一個(gè)邏輯塊包含3個(gè)或3個(gè)以上扇區(qū)的轉(zhuǎn)換原理完全相同。 假設(shè)邏輯塊號(hào)碼為n, —個(gè)邏輯塊大小為m個(gè)扇區(qū),則邏輯塊號(hào)碼對(duì)應(yīng)的第一 個(gè)扇區(qū)號(hào)碼N通過(guò)如下公式1確定
N=n x m ( 1 )
根據(jù)公式1,從N至N+m的連續(xù)多個(gè)扇區(qū)組成一個(gè)邏輯塊,并對(duì)應(yīng)存儲(chǔ)設(shè)備中的實(shí)際邏輯塊,仍參閱圖3所示,第一次數(shù)據(jù)讀取/寫入操作的兩個(gè)扇區(qū),
扇區(qū)0和扇區(qū)1組成邏輯塊0,第二次數(shù)據(jù)讀耳又/寫入才喿作的兩個(gè)扇區(qū),扇區(qū)2 和扇區(qū)3組成邏輯塊1,依次類推。
如果假設(shè)FAT文件信息區(qū)的大小為x,根據(jù)公式1確定的第一個(gè)扇區(qū)號(hào)碼 和對(duì)應(yīng)邏輯塊的實(shí)際第一個(gè)扇區(qū)號(hào)碼之間存在一定偏差,則該偏差的扇區(qū)個(gè)數(shù) 為x除以m的余l(xiāng)t q,如下/>式2所示
N=n x m + q ( 2 )
每一次數(shù)據(jù)讀取/寫入操作的多個(gè)連續(xù)扇區(qū)并不是存儲(chǔ)設(shè)備中的一個(gè)實(shí)際 邏輯塊,仍參閱圖3所示,如果文件信息區(qū)大小是3個(gè)扇區(qū)。文件數(shù)據(jù)區(qū)大小 從扇區(qū)號(hào)3到扇區(qū)號(hào)2n+l,如果簇大小是2個(gè)扇區(qū),劃分扇區(qū)號(hào)3、 4為一個(gè) 簇,5、 6為一個(gè)簇,依此類推最后一個(gè)簇占用扇區(qū)號(hào)2n-l、 2n。最后一個(gè)扇 區(qū)號(hào)2n+l不能組成一個(gè)簇將不使用。設(shè)置邏輯塊大小也是2個(gè)扇區(qū),則FAT 文件信息區(qū)占用邏輯塊0的所有扇區(qū)和邏輯塊1的第一個(gè)扇區(qū),則FAT文件數(shù) 據(jù)占用的扇區(qū)實(shí)際從邏輯塊1的第二個(gè)扇區(qū)開始到邏輯塊n的第 一個(gè)扇區(qū),則 根據(jù)公式2:
q等于l;
根據(jù)邏輯塊O,第一次數(shù)據(jù)讀取/寫入操作的第一個(gè)扇區(qū)號(hào)碼Nl為3,第 一次數(shù)據(jù)讀取/寫入操作的連續(xù)兩個(gè)扇區(qū)為扇區(qū)3和扇區(qū)4;
根據(jù)邏輯塊2,第二次數(shù)據(jù)讀取/寫入操作的第一個(gè)扇區(qū)號(hào)碼N2為5,第 一次數(shù)據(jù)讀取/寫入才喿作的連續(xù)兩個(gè)扇區(qū)為扇區(qū)5和扇區(qū)6;
依次類推
根據(jù)邏輯塊n-l,最后一次數(shù)據(jù)讀取/寫入操作的第一個(gè)扇區(qū)號(hào)碼Nn為 2n-l,最后一次數(shù)據(jù)讀取/寫入梯:作的連續(xù)兩個(gè)扇區(qū)為扇區(qū)2n-l和扇區(qū)2n。
邏輯塊大小設(shè)置有要求,應(yīng)該是扇區(qū)數(shù)的2的冪次方倍,也就是2, 4, 8, 16, 32倍。主要原因是簡(jiǎn)化設(shè)計(jì)。邏輯塊大小最大是4k字節(jié),也就是說(shuō)扇區(qū)
大小是512時(shí),邏輯塊最大可以是扇區(qū)大小的8倍。再以一個(gè)邏輯塊的大小為 4個(gè)扇區(qū)為例,如圖4b所示,F(xiàn)AT文件信息區(qū)大小為3個(gè)扇區(qū)時(shí),文件信息區(qū) 占用邏輯塊0的所有扇區(qū),文件數(shù)據(jù)占用的扇區(qū)實(shí)際從邏輯塊0的第四個(gè)扇區(qū) 開始,直至邏輯塊n的所有扇區(qū),則文件數(shù)據(jù)的邏輯塊包括邏輯塊O、邏輯塊 1.....直至邏輯塊n,根據(jù)公式2: q等于3;
根據(jù)邏輯塊O,第一次數(shù)據(jù)讀取/寫入操作的第一個(gè)扇區(qū)號(hào)碼Nl為3,第 一次數(shù)據(jù)讀取/寫入操:作的連續(xù)四個(gè)扇區(qū)包括扇區(qū)3、扇區(qū)4、扇區(qū)5和扇區(qū) 6;
根據(jù)邏輯塊l,第二次數(shù)據(jù)讀取/寫入操作的第一個(gè)扇區(qū)號(hào)碼N2為7,第 二次數(shù)據(jù)讀取/寫入揭:作的連續(xù)四個(gè)扇區(qū)包括扇區(qū)7、扇區(qū)8、扇區(qū)9和扇區(qū) 10;
依次類推
根據(jù)邏輯塊n-l,最后一次數(shù)據(jù)讀取/寫入"t喿作的第一個(gè)扇區(qū)號(hào)碼Nn為 4n-2,最后一次數(shù)據(jù)讀取/寫入操作的連續(xù)四個(gè)扇區(qū)包括扇區(qū)4n-l、扇區(qū)4n、 扇區(qū)4n+l和扇區(qū)4n+2。
根據(jù)以上示例可見(jiàn),每一次數(shù)據(jù)讀取/寫入操作的多個(gè)連續(xù)扇區(qū)組成的邏輯 塊并不是存儲(chǔ)設(shè)備的實(shí)際邏輯塊,而是和實(shí)際邏輯塊之間偏差了 q個(gè)扇區(qū)。
需要說(shuō)明的是,F(xiàn)AT文件數(shù)據(jù)區(qū)占用的扇區(qū)是連續(xù)的,占用大小從FAT信 息區(qū)最后扇區(qū)開始到物理存儲(chǔ)設(shè)備最后扇區(qū)。但是文件存儲(chǔ)空間是以簇單位分 配的,例如一個(gè)FAT文件可能分配的簇號(hào)是1, 5, 8,不連續(xù),但是每個(gè)簇占 用的扇區(qū)是連續(xù)的。
較佳的,本發(fā)明實(shí)施例中,由于linux操作系統(tǒng)的數(shù)據(jù)緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)體 bufferjiead中b一state是一個(gè)32位變量,主要作用是保存數(shù)據(jù)緩沖區(qū)狀態(tài),而 現(xiàn)有l(wèi)inux操作系統(tǒng)中只了使用其中幾位,剩余的處于空閑狀態(tài),本發(fā)明實(shí)施
例可以利用其中空閑的3位表示偏差值q。具體實(shí)現(xiàn)方法為,當(dāng)linux操作系統(tǒng) 需要操作一個(gè)沒(méi)有在數(shù)據(jù)緩沖區(qū)中保存的FAT文件數(shù)據(jù)時(shí),讀取FAT信息區(qū) 大小x和設(shè)定的邏輯塊大小m,根據(jù)x和m計(jì)算出偏差值q,將偏差值q保存 到為該FAT文件數(shù)據(jù)申請(qǐng)的數(shù)據(jù)緩沖區(qū)中b—state的特定比特位上即可,這樣, 每一次進(jìn)行邏輯塊號(hào)碼與扇區(qū)號(hào)碼轉(zhuǎn)換運(yùn)算時(shí),從b_state的特定比特位上獲 得該偏差值q即可。
由于邏輯塊大小為m個(gè)扇區(qū)時(shí),無(wú)論FAT信息區(qū)大小是多少,偏差值不 會(huì)大于m,只能取值為0到m-1的整數(shù)。而一般FAT文件系統(tǒng)中邏輯塊大小 最大不超過(guò)4K字節(jié),是扇區(qū)大小的8倍,則偏差值最大取值是7,需要在b—state 中定義3個(gè)比特位就可以保存偏差值。
基于上述原理,本發(fā)明實(shí)施例首先提供一種基于Linux操作系統(tǒng)的FAT文 件數(shù)據(jù)讀取方法,如圖5所示,包括如下步驟
步驟S501 ,確定數(shù)據(jù)緩沖區(qū)中是否已經(jīng)保存有需要讀取的FAT文件數(shù)據(jù);
步驟S502,如果是則從數(shù)據(jù)緩沖區(qū)中讀取該FAT文件數(shù)據(jù),否則再執(zhí)行 步驟S503;
步驟S503,根據(jù)存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊個(gè)數(shù),申請(qǐng)相應(yīng)大小的數(shù)據(jù) 緩沖區(qū);
當(dāng)然,本發(fā)明實(shí)施例中,步驟S501和S502也可以省略,每一次都從存儲(chǔ) 設(shè)備中重新讀取數(shù)據(jù)。
步驟S504,根據(jù)x和m確定q,并將所述q保存到數(shù)據(jù)緩沖區(qū)的設(shè)定存 儲(chǔ)位置中;
其中x為需要讀取的FAT文件的信息區(qū)包含的扇區(qū)個(gè)數(shù),m為一個(gè)邏輯 塊包含的扇區(qū)個(gè)數(shù),q為x除以m的余數(shù)。
當(dāng)然,本發(fā)明實(shí)施例中,步驟S504也可以省略,每一次確定N之前,都 先計(jì)算一次q。
步驟S505,獲得一個(gè)邏輯塊號(hào)碼n;
步驟S506,確定邏輯塊號(hào)碼n對(duì)應(yīng)的第一個(gè)扇區(qū)號(hào)碼N; N為每一次進(jìn)行數(shù)據(jù)讀取操作的第 一個(gè)扇區(qū)號(hào)碼,N=n x m + q。 步驟S507,向數(shù)據(jù)存儲(chǔ)設(shè)備的管理單元發(fā)送攜帶N和m的數(shù)據(jù)讀取操作 命令;
步驟S508,確定是否已經(jīng)根據(jù)所有邏輯塊號(hào)碼完成了數(shù)據(jù)讀取操作,如果 是則結(jié)束,否則轉(zhuǎn)入步驟S505獲得下一個(gè)邏輯塊號(hào)碼,直至完成所有數(shù)據(jù)讀 取操作。
步驟S509,數(shù)據(jù)存儲(chǔ)設(shè)備的管理單元根據(jù)數(shù)據(jù)讀取操作命令中的N和m, 在以第N個(gè)扇區(qū)開始的連續(xù)m個(gè)扇區(qū)上分別進(jìn)行數(shù)據(jù)讀取操作,并將讀取的 數(shù)據(jù)保存至申請(qǐng)的數(shù)據(jù)緩沖區(qū)中。
本發(fā)明實(shí)施例為提高FAT文件數(shù)據(jù)的讀取速度,在Linux操作系統(tǒng)中,將 邏輯塊包含的扇區(qū)個(gè)數(shù)設(shè)定為大于等于2的整數(shù)m,并充分考慮到FAT文件數(shù) 據(jù)的信息區(qū)結(jié)構(gòu),完成了邏輯塊號(hào)碼和扇區(qū)號(hào)碼之間的轉(zhuǎn)換,從通過(guò)發(fā)送一次 數(shù)據(jù)讀取命令,就可以完成m個(gè)連續(xù)扇區(qū)的數(shù)據(jù)讀取操作,相對(duì)于讀寫每一個(gè) 扇區(qū)的數(shù)據(jù)都需要發(fā)送一次數(shù)據(jù)讀取命令,大大提高了數(shù)據(jù)讀取的速度。
如圖6所示,本發(fā)明實(shí)施例還對(duì)應(yīng)提供一種基于Linux操作系統(tǒng),將FAT 文件數(shù)據(jù)寫入存儲(chǔ)設(shè)備的方法,包括如下步驟
步驟S601,從FAT文件管理系統(tǒng)中獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)
碼;
步驟S602,根據(jù)x和m確定q并將q保存到數(shù)據(jù)緩沖區(qū)中; 當(dāng)然,本發(fā)明實(shí)施例中,步驟S603也可以省略,每一次確定N之前,都 先計(jì)算一次q。
步驟S603,獲得一個(gè)邏輯塊號(hào)碼n;
步驟S604,確定邏輯塊號(hào)碼n對(duì)應(yīng)的第一個(gè)扇區(qū)號(hào)碼N;
N為每一次進(jìn)行數(shù)據(jù)寫入操作的第一個(gè)扇區(qū)號(hào)碼,N=n x m + q。
步驟S605,向數(shù)據(jù)存儲(chǔ)設(shè)備的管理單元發(fā)送攜帶N和m的數(shù)據(jù)寫入操作
命令;
步驟S606,確定是否已經(jīng)根據(jù)所有邏輯塊號(hào)碼完成了數(shù)據(jù)寫入操作,如果 是則結(jié)束,否則轉(zhuǎn)入步驟S603獲得下一個(gè)邏輯塊號(hào)碼,直至完成所有it據(jù)寫 入操作。
步驟S607,數(shù)據(jù)存儲(chǔ)設(shè)備的管理單元根據(jù)數(shù)據(jù)寫入操作命令中的N和m, 在以第N個(gè)扇區(qū)開始的連續(xù)m個(gè)扇區(qū)上分別進(jìn)行數(shù)據(jù)寫入操:作。
需要寫入的數(shù)據(jù)的存儲(chǔ)位置可以在數(shù)據(jù)緩存區(qū)中,也可能在其它存儲(chǔ)設(shè)備 上,該技術(shù)細(xì)節(jié)為本領(lǐng)域技術(shù)人員所熟知,這里不再詳細(xì)描述。
本發(fā)明實(shí)施例為提高FAT文件數(shù)據(jù)的寫入速度,在Linux操作系統(tǒng)中,將 邏輯塊包含的扇區(qū)個(gè)數(shù)設(shè)定為大于等于2的整數(shù)m,并充分考慮到FAT文件數(shù) 據(jù)的信息區(qū)結(jié)構(gòu),完成了邏輯塊號(hào)碼和扇區(qū)號(hào)碼之間的轉(zhuǎn)換,從通過(guò)發(fā)送一次 數(shù)據(jù)寫入命令,就可以完成m個(gè)連續(xù)扇區(qū)的數(shù)據(jù)寫入操作,相對(duì)于寫入每一個(gè) 扇區(qū)的數(shù)據(jù)都需要發(fā)送一次數(shù)據(jù)寫入命令,大大提高了數(shù)據(jù)寫入的速度。
如圖7所示,本發(fā)明實(shí)施例還提供一種基于Linux操作系統(tǒng)的FAT文件數(shù) 據(jù)讀取/寫入系統(tǒng),主要應(yīng)用在基于Linux操作系統(tǒng)的智能移動(dòng)通信終端上,包 括
數(shù)據(jù)存儲(chǔ)設(shè)備701,用于存儲(chǔ)FAT文件數(shù)據(jù),數(shù)據(jù)存儲(chǔ)設(shè)備包含多個(gè)邏輯 塊,每一個(gè)邏輯塊包含m個(gè)扇區(qū),m為大于等于2的整數(shù);
FAT文件管理單元702,用于管理存儲(chǔ)的FAT文件數(shù)據(jù),F(xiàn)AT文件的存儲(chǔ) 區(qū)包含F(xiàn)AT文件信息區(qū)和FAT文件數(shù)據(jù)區(qū),F(xiàn)AT文件信息區(qū)包含x個(gè)扇區(qū);
虛擬文件管理單元703,用于從FAT文件管理單元702中獲得存儲(chǔ)FAT文 件數(shù)據(jù)的邏輯塊的號(hào)碼,并分別根據(jù)每一個(gè)邏輯塊的號(hào)碼確定每一次進(jìn)行數(shù)據(jù) 讀取/寫入操:作的對(duì)應(yīng)的第一個(gè)扇區(qū)號(hào)碼N為N=nxm + q,其中n為邏輯塊 號(hào)碼,q為x除以m的余數(shù),并分別根據(jù)確定出的N發(fā)送一次攜帶N和m的 數(shù)據(jù)讀取/寫入操作命令;
數(shù)據(jù)存儲(chǔ)管理單元704,用于接收虛擬文件管理單元發(fā)送的讀取/寫入操作
命令,并在接收到每一個(gè)數(shù)據(jù)讀取/寫入操作命令時(shí),根據(jù)其中的N和m,對(duì) 數(shù)據(jù)存儲(chǔ)設(shè)備701中以第N個(gè)扇區(qū)開始的連續(xù)m個(gè)扇區(qū)上分別進(jìn)行數(shù)據(jù)讀取/ 寫入操作。
進(jìn)一步,本發(fā)明實(shí)施例提供的FAT文件數(shù)據(jù)讀取/寫入系統(tǒng),還包括
數(shù)據(jù)緩沖區(qū)705,虛擬文件管理單元還用于在獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏 輯塊的號(hào)碼之前,根據(jù)x和m確定q并將q保存到數(shù)據(jù)緩沖區(qū)中;以及在每一 次根據(jù)一個(gè)邏輯塊號(hào)碼確定對(duì)應(yīng)的N之前,從數(shù)據(jù)緩沖區(qū)獲取q。
更進(jìn)一步,虛擬文件管理單元還用于當(dāng)進(jìn)行FAT文件數(shù)據(jù)讀取操作時(shí),在 根據(jù)x和m確定q并將q保存到數(shù)據(jù)緩沖區(qū)中之前,確定數(shù)據(jù)緩沖區(qū)中是否已 經(jīng)保存有需要讀取的FAT文件數(shù)據(jù),如果是則從數(shù)據(jù)緩沖區(qū)中讀取該FAT文 件數(shù)據(jù),否則根據(jù)存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊個(gè)數(shù),申請(qǐng)相應(yīng)大小的數(shù)據(jù)緩沖 區(qū)后再執(zhí)行根據(jù)x和m確定q并將q保存到數(shù)據(jù)緩沖區(qū)中。
本發(fā)明實(shí)施例中,VFS層設(shè)置在虛擬文件管理單元703中,Mapping Layer 層設(shè)置在FAT文件管理單元702中,Generic Block Layer層、I/O schedule layer 層和Block Device Driver層設(shè)置在數(shù)據(jù)存儲(chǔ)管理單元704中,數(shù)據(jù)存儲(chǔ)設(shè)備可 以是TF等存儲(chǔ)卡或硬盤等存儲(chǔ)裝置。
離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利 要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1、一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)讀取/寫入方法,包括:從FAT文件管理系統(tǒng)中獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)碼,并分別根據(jù)每一個(gè)存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)碼進(jìn)行數(shù)據(jù)讀取/寫入操作,每一個(gè)邏輯塊包括至少兩個(gè)連續(xù)扇區(qū),其中:每一次根據(jù)一個(gè)邏輯塊號(hào)碼進(jìn)行的數(shù)據(jù)讀取/寫入操作過(guò)程具體包括:根據(jù)邏輯塊號(hào)碼確定本次需要進(jìn)行數(shù)據(jù)讀取/寫入操作的第一個(gè)扇區(qū)號(hào)碼N為:N=n×m+q,其中:n為邏輯塊號(hào)碼,m為一個(gè)邏輯塊包含的扇區(qū)個(gè)數(shù),m為大于等于2的整數(shù),q為FAT文件信息區(qū)包含的扇區(qū)個(gè)數(shù)x除以m的余數(shù);向數(shù)據(jù)存儲(chǔ)設(shè)備的管理單元發(fā)送攜帶所述N和m的數(shù)據(jù)讀取/寫入操作命令;所述數(shù)據(jù)存儲(chǔ)設(shè)備的管理單元根據(jù)數(shù)據(jù)讀取/寫入操作命令中的N和m,在以第N個(gè)扇區(qū)開始的連續(xù)m個(gè)扇區(qū)上分別進(jìn)行數(shù)據(jù)讀取/寫入操作。
2、 如權(quán)利要求1所述的方法,其特征在于從FAT文件管理系統(tǒng)中獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)碼之前,還 包括根據(jù)所述x和m確定q并將所述q保存到數(shù)據(jù)緩沖區(qū)中;以及在每一次根據(jù)一個(gè)邏輯塊號(hào)碼進(jìn)行的數(shù)據(jù)讀取/寫入操作之前,還包括從 數(shù)據(jù)緩沖區(qū)獲取q。
3、 如權(quán)利要求2所述的方法,其特征在于,當(dāng)進(jìn)行FAT文件數(shù)據(jù)讀取操 作時(shí),所述才艮據(jù)所述x和m確定q并將所述q保存到tt據(jù)緩沖區(qū)中之前,還包 括確定數(shù)據(jù)緩沖區(qū)中是否已經(jīng)保存有需要讀的FAT文件數(shù)據(jù),如果是則從數(shù) 據(jù)緩沖區(qū)中讀取該FAT文件數(shù)據(jù),否則根據(jù)存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊個(gè)數(shù), 申請(qǐng)相應(yīng)大小的數(shù)據(jù)緩沖區(qū)后,再執(zhí)行4艮據(jù)所述x和m確定q并將所述q保存 到數(shù)據(jù)緩沖區(qū)中。
4、 一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)讀取/寫入系統(tǒng),包括 數(shù)據(jù)存儲(chǔ)設(shè)備,用于存儲(chǔ)FAT文件數(shù)據(jù),所述數(shù)據(jù)存儲(chǔ)設(shè)備包含多個(gè)邏輯 塊,每一個(gè)邏輯塊包含m個(gè)扇區(qū),m為大于等于2的整數(shù);FAT文件管理單元,用于管理存儲(chǔ)的FAT文件數(shù)據(jù),所述FAT文件的存 儲(chǔ)區(qū)包含F(xiàn)AT文件信息區(qū)和FAT文件數(shù)據(jù)區(qū),所述FAT文件信息區(qū)包含x個(gè) 扇區(qū);虛擬文件管理單元,用于從所述FAT文件管理單元中獲得存儲(chǔ)FAT文件 數(shù)據(jù)的邏輯塊的號(hào)碼,并分別根據(jù)每一個(gè)邏輯塊的號(hào)碼確定每一次進(jìn)行數(shù)據(jù)讀 取/寫入操:作的對(duì)應(yīng)的第一個(gè)扇區(qū)號(hào)碼N為N=nxm + q,其中n為邏輯塊號(hào) 碼,q為所述x除以m的余數(shù),并分別根據(jù)確定出的N發(fā)送一次攜帶所述N 和m的數(shù)據(jù)讀取/寫入操作命令;數(shù)據(jù)存儲(chǔ)管理單元,用于接收所述虛擬文件管理單元發(fā)送的讀取/寫入操作 命令,并在接收到每一個(gè)數(shù)據(jù)讀取/寫入操作命令時(shí),根據(jù)其中的N和m,對(duì) 以第N個(gè)扇區(qū)開始的連續(xù)m個(gè)扇區(qū)上分別進(jìn)行數(shù)據(jù)讀取/寫入操作。
5、 如權(quán)利要求4所述的系統(tǒng),其特征在于,還包括數(shù)據(jù)緩沖區(qū),所述虛擬文件管理單元還用于在獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏 輯塊的號(hào)碼之前,根據(jù)所述x和m確定q并將所述q保存到數(shù)據(jù)緩沖區(qū)中;以 及在每一次根據(jù)一個(gè)邏輯塊號(hào)碼確定對(duì)應(yīng)的N之前,從所述數(shù)據(jù)緩沖區(qū)獲取q。
6、 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述虛擬文件管理單元還用 于當(dāng)進(jìn)行FAT文件數(shù)據(jù)讀操作時(shí),在所述根據(jù)所述x和m確定q并將所述q 保存到數(shù)據(jù)緩沖區(qū)中之前,確定數(shù)據(jù)緩沖區(qū)中是否已經(jīng)保存有需要讀取的FAT 文件數(shù)據(jù),如果是則從數(shù)據(jù)緩沖區(qū)中讀取該FAT文件數(shù)據(jù),否則根據(jù)存儲(chǔ)FAT 文件數(shù)據(jù)的邏輯塊個(gè)數(shù),申請(qǐng)相應(yīng)大小的數(shù)據(jù)緩沖區(qū)后,再執(zhí)行根據(jù)所述x和 m確定q并將所述q保存到數(shù)據(jù)緩沖區(qū)中。
7、 一種基于Linux操作系統(tǒng)的移動(dòng)通信終端,其特征在于,包括 數(shù)據(jù)存儲(chǔ)設(shè)備,用于存儲(chǔ)FAT文件數(shù)據(jù),所述數(shù)據(jù)存儲(chǔ)設(shè)備包含多個(gè)邏輯塊,每一個(gè)邏輯塊包含m個(gè)扇區(qū),m為大于等于2的整數(shù); FAT文件管理單元,用于管理存儲(chǔ)的FAT文件數(shù)據(jù),所述FAT文件的存 儲(chǔ)區(qū)包含F(xiàn)AT文件信息區(qū)和FAT文件數(shù)據(jù)區(qū),所述FAT文件信息區(qū)包含x個(gè) 扇區(qū);虛擬文件管理單元,用于從所述FAT文件管理單元中獲得存儲(chǔ)FAT文件 數(shù)據(jù)的邏輯塊的號(hào)碼,并分別根據(jù)每一個(gè)邏輯塊的號(hào)碼確定每一次進(jìn)行數(shù)據(jù)讀 取/寫入操:作的對(duì)應(yīng)的第一個(gè)扇區(qū)號(hào)碼N為N=nxm + q,其中n為邏輯塊號(hào) 碼,q為所述x除以m的余數(shù),并分別根據(jù)確定出的N發(fā)送一次攜帶所述N 和m的數(shù)據(jù)讀取/寫入操作命令;數(shù)據(jù)存儲(chǔ)管理單元,用于接收所述虛擬文件管理單元發(fā)送的讀取/寫入操作 命令,并在接收到每一個(gè)數(shù)據(jù)讀取/寫入操作命令時(shí),根據(jù)其中的N和m,在 以第N個(gè)扇區(qū)開始的連續(xù)m個(gè)扇區(qū)上分別進(jìn)行數(shù)據(jù)讀取/寫入操作。
8、 如權(quán)利要求7所述的移動(dòng)通信終端,其特征在于,還包括 數(shù)據(jù)緩沖區(qū),所述虛擬文件管理單元還用于在獲得存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊的號(hào)碼之前,根據(jù)所述x和m確定q并將所述q保存到數(shù)據(jù)緩沖區(qū)中;以 及在每一次根據(jù)一個(gè)邏輯塊號(hào)碼確定對(duì)應(yīng)的N之前,從所述數(shù)據(jù)緩沖區(qū)獲取q。
9、 如權(quán)利要求8所述的移動(dòng)通信終端,其特征在于,所述虛擬文件管理 單元還用于當(dāng)進(jìn)行FAT文件數(shù)據(jù)讀操作時(shí),在所述根據(jù)所述x和m確定q并 將所述q保存到數(shù)據(jù)緩沖區(qū)中之前,確定數(shù)據(jù)緩沖區(qū)中是否已經(jīng)保存有需要讀 取的FAT文件數(shù)據(jù),如果是則從數(shù)據(jù)緩沖區(qū)中讀取該FAT文件數(shù)據(jù),否則根 據(jù)存儲(chǔ)FAT文件數(shù)據(jù)的邏輯塊個(gè)數(shù),申請(qǐng)相應(yīng)大小的數(shù)據(jù)緩沖區(qū)后,再執(zhí)行根 據(jù)所述x和m確定q并將所述q保存到數(shù)據(jù)緩沖區(qū)中。
10、 如權(quán)利要求7、 8或9所述的移動(dòng)通信終端,其特征在于,所述數(shù)據(jù) 存儲(chǔ)設(shè)備為TF存儲(chǔ)卡。
全文摘要
本發(fā)明涉及計(jì)算機(jī)技術(shù),特別涉及一種基于Linux操作系統(tǒng)的FAT文件數(shù)據(jù)讀取/寫入方法、系統(tǒng)和移動(dòng)通信終端,用以提高存儲(chǔ)設(shè)備中的FAT文件數(shù)據(jù)讀取/寫入操作速度。本發(fā)明實(shí)施例在Linux操作系統(tǒng)中,為提高FAT文件的讀取/寫入速度,將邏輯塊的大小設(shè)定為連續(xù)2個(gè)或2個(gè)以上扇區(qū),并根據(jù)文件數(shù)據(jù)在存儲(chǔ)設(shè)備中占用的邏輯塊號(hào)碼確定每一次數(shù)據(jù)讀取/寫入操作的第一個(gè)扇區(qū)號(hào)碼,根據(jù)第一個(gè)扇區(qū)號(hào)碼和邏輯塊包含的扇區(qū)個(gè)數(shù),利用一次數(shù)據(jù)讀取/寫入操作命令就可以完成一個(gè)邏輯塊大小數(shù)據(jù)的操作,從而成倍減少了數(shù)據(jù)讀取/寫入操作命令的發(fā)送次數(shù),提高了存儲(chǔ)設(shè)備中的FAT文件數(shù)據(jù)讀取/寫入操作速度。
文檔編號(hào)G06F3/06GK101382877SQ200810224460
公開日2009年3月11日 申請(qǐng)日期2008年10月15日 優(yōu)先權(quán)日2008年10月15日
發(fā)明者謝志宇 申請(qǐng)人:青島海信移動(dòng)通信技術(shù)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1