3G智能卡文件系統(tǒng)的研究與設(shè)計
文章出處:http://m.overnightmodel.com 作者: 人氣: 發(fā)表時間:2012年04月08日
摘要:對基于Flash的3G智能卡文件系統(tǒng)的研究與設(shè)計,引用了數(shù)據(jù)庫日志技術(shù)和掉電保護(hù)機(jī)制,保證了智能卡文件系統(tǒng)可靠性,數(shù)據(jù)的一致性和完整性;按字節(jié)靜態(tài)分配存儲空間、合理有效地回收與重用碎片空間,提高了存儲空間的利用率;平均磨損和頁面映射技術(shù)的使用延長了Flash的使用壽命;有效的存儲設(shè)計提高了數(shù)據(jù)檢索的速度,從而提高了智能卡的整體性能。測試證實了該文件系統(tǒng)設(shè)計適合3G EVDO卡。
0 引言
隨著3G時代的到來,移動電子商務(wù)的發(fā)展,手機(jī)不再僅僅局限于語音和短信功能,基于卡上的應(yīng)用顯得越來越突出。對于智能卡COS而言,文件系統(tǒng)是核心模塊。目前已經(jīng)有很多成熟的文件系統(tǒng),如FAT、UN IX、FTL、NFTL等,這些文件系統(tǒng)是基于大容量磁盤存儲而設(shè)計[ 1 ]的,對于智能卡開發(fā)有一些性能限制: 1)智能卡系統(tǒng)的應(yīng)用條件遠(yuǎn)比大型機(jī)惡劣,電源電壓的不穩(wěn)定以及突發(fā)性斷電將對存儲器造成嚴(yán)重的影響; 2)通用文件系統(tǒng)大量使用緩存技術(shù),在運行中要耗費較多的系統(tǒng)資源; 3)智能卡文件系統(tǒng)數(shù)據(jù)多數(shù)是應(yīng)用數(shù)據(jù),這些數(shù)據(jù)安全性要求較高。
目前, Flash存儲器已經(jīng)成為一種非常重要的非易失存儲介質(zhì),主要有NOR Flash和NAND Flash,在嵌入式移動平臺得到廣泛的應(yīng)用,當(dāng)前基于Flash設(shè)計的文件系統(tǒng)有JFFS2、YAFFS、CFFS等[ 1 ] ,但這些都是為NAND Flash而設(shè)計的,這些文件系統(tǒng)的研究主要放在NAND Flash的存儲特性上,研究領(lǐng)域也主要集中文件系統(tǒng)快速初始化、頁面分配、垃圾回收、日志管理、系統(tǒng)崩潰恢復(fù)技術(shù)等方面,而很少考慮文件系統(tǒng)本身的特性;并且在運行過程中要保存大量的節(jié)點信息,要消耗大量的內(nèi)存,最重要的是這些文件系統(tǒng)是為NAND Flash而設(shè)計的,且都是基于數(shù)據(jù)塊的數(shù)據(jù)存儲,而沒有考慮小容量芯片,如NOR Flash。在當(dāng)前智能卡開發(fā)中,綜合多方面的因素, Flash容量是有限制的,現(xiàn)在大部分使用的是NOR Flash,其頁面大小是512 Byte,本文就是基于NOR Flash進(jìn)行文件系統(tǒng)的設(shè)計與研究。隨著3G EVDO卡業(yè)務(wù)多樣化及3G技術(shù)的發(fā)展,構(gòu)造一個好的文件系統(tǒng)對智能卡至關(guān)重要。通過靈活的文件系統(tǒng)設(shè)計,達(dá)到更高效的數(shù)據(jù)檢索速度、更優(yōu)化的空間利用及可靠的數(shù)據(jù)保證,來有效發(fā)揮智能卡的潛能,為構(gòu)建完善的3G EVDO應(yīng)用系統(tǒng)提供強(qiáng)有力的支持。
1 智能卡文件系統(tǒng)的概述
3G EVDO COS[ 2 ]系統(tǒng)是智能卡的靈魂,要求具有良好的可維護(hù)性、可擴(kuò)展性和高安全性,其智能卡系統(tǒng)結(jié)構(gòu)模型如圖1。其中文件管理模塊是智能卡操作系統(tǒng)的核心模塊,它負(fù)責(zé)組織、管理、維護(hù)智能卡內(nèi)存儲的所有數(shù)據(jù),它是一個承上啟下的模塊,對底層來說實現(xiàn)存儲空間的管理維護(hù),對上層完全透明地實現(xiàn)了數(shù)據(jù)的管理功能。文件系統(tǒng)的設(shè)計和實現(xiàn)既是COS中最靈活、最有個性的部分也是對系統(tǒng)整體結(jié)構(gòu)影響最大的部分,它的設(shè)計與實現(xiàn)直接關(guān)系到智能卡的整體性能。智能卡文件系統(tǒng)的結(jié)構(gòu)[ 3 - 4 ]由主文件MF、專用文件DF、數(shù)據(jù)文件EF組成,其中MF是智能卡的整個入口,DF是一類數(shù)據(jù)或者一個應(yīng)用在卡內(nèi)的映射, EF文件是智能卡中應(yīng)用數(shù)據(jù)的最終載體。智能卡文件系統(tǒng)設(shè)計要達(dá)到以下目標(biāo):保證COS的可靠性、穩(wěn)定性、安全性;保證數(shù)據(jù)的完整性、一致性;保證智能卡的時間、空間效率;保證智能卡的使用壽命;保證智能卡碎片空間的回收與重用。
圖1 3G COS系統(tǒng)結(jié)構(gòu)模型圖
2 存儲空間的分配與相關(guān)數(shù)據(jù)結(jié)構(gòu)的設(shè)計
為了有效合理地使用智能卡有限的存儲空間,采用了靜態(tài)的存儲管理方式,在存儲空間的分配上按字節(jié)來分配,而不是按塊分配。智能卡文件系統(tǒng)采用的是一種連續(xù)分配的存儲結(jié)構(gòu)[ 5 ] ,文件中的數(shù)據(jù)都存放在連續(xù)的物理空間中,以減少查找文件、讀取、更新文件數(shù)據(jù)的所花的時間,在智能卡的生命周期內(nèi),寫入或讀出數(shù)據(jù)文件的數(shù)據(jù)量只能小于或等于所有規(guī)定的文件大小。主文件MF在智能卡初始化首先創(chuàng)建,其存儲空間為整個數(shù)據(jù)域的空間。DF的存儲空間也是連續(xù)分配的,文件的創(chuàng)建、刪除操作都是在DF的存儲空間內(nèi)進(jìn)行的,DF不能使用自身存儲空間以外的存儲空間。為了方便與快速地查找,在這引用了目錄項,目錄項就是把文件句柄部分屬性進(jìn)行分離,目錄項數(shù)據(jù)結(jié)構(gòu)如下描述所示:
status值的定義如下所示: F8H表示目錄文件; F0H表示基本數(shù)據(jù)文件; F2表示為無效文件; FFH表示空閑目錄項。文件句柄是用于描述文件和控制文件的數(shù)據(jù)結(jié)構(gòu),各文件數(shù)據(jù)結(jié)構(gòu)如圖2,其中file Id表示文件標(biāo)識名; availSize表示目錄下可用空間大小; fileSize表示文件大小; fileDes表示文件類型; noOfDF表示當(dāng)前目錄下直接DF數(shù)目; noOfEF表示當(dāng)前目錄下直接EF 數(shù)目; accessCondiction 表示安全訪問規(guī)則;recordLength表示記錄長度; firstRecordNum 表示指向環(huán)形文件第一條記錄的記錄號; lifeCycstatus表示文件的生命周期;另外文件特征、PUK、CHV、ADM及后三者的數(shù)目存儲在Flash特定的位置,以方便對文件的鑒權(quán)等操作。
創(chuàng)建文件分配存儲空間時,是從當(dāng)前目錄下可用的存儲空間的起始地址開始分配的,而不理會當(dāng)前目錄下無效文件碎片空間,直到當(dāng)前目錄下無可用空間或可用空間不夠時,系統(tǒng)才去回收無效文件的碎片空間。在當(dāng)前目錄文件的句柄中有一個控制參數(shù):當(dāng)前目錄下可用存儲空間,它是指在當(dāng)前目錄下創(chuàng)建文件時可用的連續(xù)存儲空間,來決定是否滿足創(chuàng)建文件時所申請的空間大小,根據(jù)此參數(shù)與當(dāng)前目錄文件存儲空間大小及首地址,可計算出當(dāng)前創(chuàng)建文件時的起始地址,每創(chuàng)建一個文件后,該參數(shù)減去所創(chuàng)建文件分配空間,即為當(dāng)前目錄下可用空間的大小。文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)采用靜態(tài)樹型目錄結(jié)構(gòu),靜態(tài)存儲管理時文件存儲的數(shù)據(jù)結(jié)構(gòu)如圖3所示。
圖3 靜態(tài)存儲數(shù)據(jù)結(jié)構(gòu)
3 文件系統(tǒng)相關(guān)機(jī)制設(shè)計
3. 1 碎片空間回收機(jī)制
由于所有的應(yīng)用都可以進(jìn)行刪除與創(chuàng)建,所以這就要求文件系統(tǒng)能夠動態(tài)地對多應(yīng)用文件進(jìn)刪除、創(chuàng)建等操作??紤]到文件的動態(tài)刪除可能會造成卡內(nèi)一些空間碎片,所以在文件系統(tǒng)上增加了碎片空間的回收機(jī)制,該機(jī)制主要針對卡內(nèi)由于刪除文件操作產(chǎn)生的碎片空間??臻g回收機(jī)制是在創(chuàng)建文件且發(fā)生空間不足時被調(diào)用的,是為了有效與合理地使用存儲空間。
回收機(jī)制的實質(zhì)是對空間碎片的整理與再利用的過程,要注重?zé)o效文件節(jié)點的合并,系統(tǒng)在不斷地進(jìn)行分配和回收過程中,大的空閑區(qū)逐漸分割成小的占用區(qū),為了更有效地利用存儲空間,需將相鄰關(guān)系的碎片空間進(jìn)行合并。在回收過程中,主要的任務(wù)是查找刪除文件留下的碎片空間,具體算法如下所示:
1)查找碎片:從當(dāng)前目錄開始,順序遍歷其目錄項,將一個有效文件作為起始,下一個相鄰的有效文件作為終止,如果前一個文件的大小小于兩文件的間隔,證明兩文件間存在碎片。
2)計算碎片大小,將兩文件的間隔大小減去前一個文件的空間的大小,則得到碎片空間大小。
3)如果碎片空間太小,則轉(zhuǎn)向1繼續(xù)查找。
4)遍歷碎片中無效文件,備份碎片起始地址。
5)回到碎片的起始地址。
3. 2 壞損頁面的管理
對于NOR Flash,一般情況下擦寫次數(shù)是十萬次,在使用過程中,數(shù)據(jù)區(qū)某些頁面可能由于物理原因或者經(jīng)常操作,可能出現(xiàn)某些頁面壞損的情況,這有可能導(dǎo)致整個Flash芯片不能正常工作。為了延長Flash的使用壽命,對于壞損頁面必須進(jìn)行有效地管理,在這采用頁面映射技術(shù)[ 1 ] ,也就是將壞損頁面邏輯頁面號映射到的好的頁面上去。通過寫校驗來檢查當(dāng)前頁面是否壞損,如果壞損,就將壞損頁面號和映射頁面號添加到壞損頁面映射管理表中,映射頁面號取值應(yīng)為數(shù)據(jù)區(qū)可用頁面最大頁面號。在讀寫操作中,如果讀寫物理地址所在頁面是壞損頁面,那么就需對壞損頁面進(jìn)行映射處理,其處理流程如下所述:
1)根據(jù)讀寫操作的邏輯地址,來確定數(shù)據(jù)區(qū)物理地址,從而來確定當(dāng)前數(shù)據(jù)區(qū)頁面號。
2)根據(jù)頁面號來遍歷壞損頁面映射表,如果此頁面號在壞損頁面映射表中存在,那么就進(jìn)行地址映射, 修改讀寫地址。
為了提高讀寫的速度,對讀寫數(shù)據(jù)長度進(jìn)行比較處理,判斷所處理的地址涉及的頁面情況:一是所有處理的數(shù)據(jù)在一個頁面;二是所有處理的數(shù)據(jù)在兩個頁面。這樣在讀寫操作中最多核查壞損頁面映射表兩次,沒必要在讀寫操作時,頻繁判斷讀寫地址所在頁面情況,可大大提高讀寫的速度。
3. 3 平均磨損技術(shù)
平均磨損就是使有壽命期限的Flash的各個部分同時到達(dá)壽命期限,平均磨損技術(shù)的主旨是在空間的使用上能夠均勻的使用Flash每個頁面,保證某些頁面不至于先于其他頁面達(dá)到磨損界限,平均磨損技術(shù)的引入提高了Flash 的使用壽命期限。平均磨損技術(shù)以碎片空間回收技術(shù)、存儲空間分配方式和頁面映射為基礎(chǔ),來使Flash損耗達(dá)到平衡。在刪除文件時,它的物理內(nèi)存空間并沒有立即釋放,即將當(dāng)前目錄下該文件的目錄項狀態(tài)置為無效文件標(biāo)志位,表明處于邏輯刪除狀態(tài),所有被刪除文件并沒有在物理空間被清空,只改變文件的狀態(tài)。在分配空間時,并不是從當(dāng)前目錄起始地址開始搜索空閑空間,而是從當(dāng)前目錄下尋找可用空間,這樣可以最大限度地保證均衡使用每個頁面。
由于NOR Flash擦寫次數(shù)是有限的,對于特定的應(yīng)用數(shù)據(jù)區(qū),若經(jīng)常擦寫,可能導(dǎo)致Flash局部區(qū)域過早老化,為了延長Flash的使用壽命,對特定應(yīng)用文件的頁面進(jìn)行頁面映射,在管理上與壞損頁面塊映射一致,不過在這對特定應(yīng)用文件的頁面加入一個特定的計數(shù)器,如果計數(shù)器達(dá)到特定的峰值時,就需對這些特定應(yīng)用的頁面進(jìn)行頁面映射。在整個3GEVDO卡中,讀要比寫操作頻繁,而且少數(shù)特定文件存在經(jīng)常擦寫的現(xiàn)象,如號薄文件、短信息文件等,對于這些特殊文件可以特殊處理,沒必要對整個數(shù)據(jù)區(qū)文件進(jìn)行處理,這樣全面考慮能提高智能卡整體性能。
3. 4 掉電保護(hù)機(jī)制
在數(shù)據(jù)的一次寫過程中,由于Flash物理特性,需要先擦除要改寫的地址空間所在的頁面,每次擦除的物理頁面大小為512 Byte,所以要將這整個頁面?zhèn)浞?防止在改寫過程中出現(xiàn)突然掉電,導(dǎo)致數(shù)據(jù)丟失的情況發(fā)生。在這采用舊數(shù)據(jù)備份[ 4 ]的方式,數(shù)據(jù)在當(dāng)前頁面得到全部更新以后才認(rèn)為更新成功,否則自動恢復(fù)到原始狀態(tài)。備份區(qū)是個經(jīng)常擦寫的地方,為了保證備份區(qū)的有效性,這配置了多個安全備份區(qū),以達(dá)到循環(huán)使用,均衡擦寫。改寫Flash有兩種情況,如圖4所示(圖中斜線部分為改寫的數(shù)據(jù)段) ,一種情況改寫數(shù)據(jù)在一個Flash頁面;另一種情況改寫數(shù)據(jù)涉及了兩個Flash頁面。舊數(shù)據(jù)備份具體算法如下所示:
1)將要改寫數(shù)據(jù)段的Flash頁面的所有數(shù)據(jù)備份到備份區(qū)中。
2)數(shù)據(jù)備份完成后,將備份標(biāo)志位置為有效,并將有效的標(biāo)志位和改寫的地址保存到標(biāo)志區(qū)。
3)數(shù)據(jù)開始更新,依次將數(shù)據(jù)寫入目標(biāo)地址。
4)備份標(biāo)志位復(fù)位,表示改寫成功,并將復(fù)位的標(biāo)志寫入到標(biāo)志區(qū)。
安全寫恢復(fù)流程算法:查看Flash備份標(biāo)志位是否有效,如果無效表示不需要進(jìn)行數(shù)據(jù)安全寫恢復(fù)操作,結(jié)束流程;如果有效,表示要進(jìn)行數(shù)據(jù)安全寫的恢復(fù)操作,步驟如下所示:
1)讀取備份的數(shù)據(jù),根據(jù)備份的地址,對數(shù)據(jù)進(jìn)行恢復(fù)操作。
2)所有的數(shù)據(jù)恢復(fù)成功之后,將備份標(biāo)志位復(fù)位,將復(fù)位的標(biāo)志位寫入標(biāo)志區(qū)。
第1頁第2頁 |