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