3G智能卡文件系统的研究与设计

时间:2022-04-08 03:33:39

3G智能卡文件系统的研究与设计

摘 要:对基于Flash的3G智能卡文件系统的研究与设计,引用了数据库日志技术和掉电保护机制,保证了智能卡文件系统可靠性,数据的一致性和完整性;按字节静态分配存储空间、合理有效地回收与重用碎片空间,提高了存储空间的利用率;平均磨损和页面映射技术的使用延长了Flash的使用寿命;有效的存储设计提高了数据检索的速度,从而提高了智能卡的整体性能。测试证实了该文件系统设计适合3G EVDO卡。

关键词:文件系统;空间回收;页面映射;平均磨损;掉电保护;日志备份;数据一致性

中图分类号: TP316

文献标志码:A

Research and design of 3G file system for smart card

YIN Wei,LI Daiping,GUO Hongzhi, MEI Xiaohu

College of Computer,Guangdong University of Technology, Guangzhou Guangdong 510006,China

)

Abstract: Research and design of three generation file system for smart card on flash memory were made, introducing log technology and power failure protection to assure smart cards file system reliability, data consistency and integrality. Memory space was assigned according to byte. Mechanisms of valid space collection and reuse improve the using rate of memory space. Technology of wear leveling and page mapped prolong the flash storage lifespan, and the design of efficiency memory management improves the rate of data retrieval. Consequently, the whole performance of smart card is strengthened. The simulation makes sure the file system fit 3G EVDO card.

Key words: file system; space collection; page mapping; wear levelling; power fail protection; log backup; data consistency

0 引言

随着3G时代的到来,移动电子商务的发展,手机不再仅仅局限于语音和短信功能,基于卡上的应用显得越来越突出。对于智能卡COS而言,文件系统是核心模块。目前已经有很多成熟的文件系统,如FAT、UNIX、FTL、NFTL等,这些文件系统是基于大容量磁盘存储而设计[1]的,对于智能卡开发有一些性能限制:1)智能卡系统的应用条件远比大型机恶劣,电源电压的不稳定以及突发性断电将对存储器造成严重的影响;2)通用文件系统大量使用缓存技术,在运行中要耗费较多的系统资源;3)智能卡文件系统数据多数是应用数据,这些数据安全性要求较高。

目前,Flash存储器已经成为一种非常重要的非易失存储介质,主要有NOR Flash和NAND Flash,在嵌入式移动平台得到广泛的应用,当前基于Flash设计的文件系统有JFFS2、YAFFS、CFFS等[1],但这些都是为NAND Flash而设计的,这些文件系统的研究主要放在NAND Flash的存储特性上,研究领域也主要集中文件系统快速初始化、页面分配、垃圾回收、日志管理、系统崩溃恢复技术等方面,而很少考虑文件系统本身的特性;并且在运行过程中要保存大量的节点信息,要消耗大量的内存,最重要的是这些文件系统是为NAND Flash而设计的,且都是基于数据块的数据存储,而没有考虑小容量芯片,如NOR Flash。在当前智能卡开发中,综合多方面的因素,Flash容量是有限制的,现在大部分使用的是 NOR Flash,其页面大小是512Byte,本文就是基于NOR Flash进行文件系统的设计与研究。随着3G EVDO卡业务多样化及3G技术的发展,构造一个好的文件系统对智能卡至关重要。通过灵活的文件系统设计,达到更高效的数据检索速度、更优化的空间利用及可靠的数据保证,来有效发挥智能卡的潜能,为构建完善的3G EVDO应用系统提供强有力的支持。

1 智能卡文件系统的概述

3G EVDO COS[2]系统是智能卡的灵魂,要求具有良好的可维护性、可扩展性和高安全性,其智能卡系统结构模型如┩1。其中文件管理模块是智能卡操作系统的核心模块,它负责组织、管理、维护智能卡内存储的所有数据,它是一个承上启下的模块,对底层来说实现存储空间的管理维护,对上层完全透明地实现了数据的管理功能。文件系统的设计和实现既是COS中最灵活、最有个性的部分也是对系统整体结构影响最大的部分,它的设计与实现直接关系到智能卡的整体性能。智能卡文件系统的结构[3-4]由主文件MF、专用文件DF、数据文件EF组成,其中MF是智能卡的整个入口,DF是一类数据或者一个应用在卡内的映射,EF文件是智能卡中应用数据的最终载体。

智能卡文件系统设计要达到以下目标:保证COS的可靠性、稳定性、安全性;保证数据的完整性、一致性;保证智能卡的时间、空间效率;保证智能卡的使用寿命;保证智能卡碎片空间的回收与重用。

图片

图1 3G COS系统结构模型图

2 存储空间的分配与相关数据结构的设计

为了有效合理地使用智能卡有限的存储空间,采用了静态的存储管理方式,在存储空间的分配上按字节来分配,而不是按块分配。智能卡文件系统采用的是一种连续分配的存储结构[5],文件中的数据都存放在连续的物理空间中,以减少查找文件、读取、更新文件数据的所花的时间,在智能卡的生命周期内,写入或读出数据文件的数据量只能小于或等于所有规定的文件大小。主文件MF在智能卡初始化首先创建,其存储空间为整个数据域的空间。DF的存储空间也是连续分配的,文件的创建、删除操作都是在DF的存储空间内进行的,DF不能使用自身存储空间以外的存储空间。为了方便与快速地查找,在这引用了目录项,目录项就是把文件句柄部分属性进行分离,目录项数据结构如下描述所示:

程序前

Typedef struct{

unsigned char status;//1Byte,文件状态

unsigned short fileId;//2Byte,文件标识名

unsigned short startAddr;//2Byte,文件起始地址

}dirNode;

程序后

status值的定义如下所示:F8H表示目录文件;F0H表示基本数据文件;F2表示为无效文件;FFH表示空闲目录项。文件句柄是用于描述文件和控制文件的数据结构,各文件数据结构如图2,其中fileId表示文件标识名;availSize表示目录下可用空间大小;fileSize表示文件大小;fileDes表示文件类型;noOfDF表示当前目录下直接DF数目;noOfEF表示当前目录下直接EF数目;accessCondiction表示安全访问规则;recordLength表示记录长度;firstRecordNum表示指向环形文件第一条记录的记录号;lifeCycstatus表示文件的生命周期;另外文件特征、PUK、CHV、ADM及后三者的数目存储在Flash 特定的位置,以方便对文件的鉴权等操作。

图片

图2 各文件句柄数据结构

┑1期 ┮伟等:3G智能卡文件系统的研究与设计

┆扑慊应用 ┑30卷

创建文件分配存储空间时,是从当前目录下可用的存储空间的起始地址开始分配的,而不理会当前目录下无效文件碎片空间,直到当前目录下无可用空间或可用空间不够时,系统才去回收无效文件的碎片空间。在当前目录文件的句柄中有一个控制参数:当前目录下可用存储空间,它是指在当前目录下创建文件时可用的连续存储空间,来决定是否满足创建文件时所申请的空间大小,根据此参数与当前目录文件存储空间大小及首地址,可计算出当前创建文件时的起始地址,每创建一个文件后,该参数减去所创建文件分配空间,即为当前目录下可用空间的大小。文件系统的数据结构采用静态树型目录结构,静态存储管理时文件存储的数据结构如图3┧示。

图片

图3 静态存储数据结构

3 文件系统相关机制设计

3.1 碎片空间回收机制

由于所有的应用都可以进行删除与创建,所以这就要求文件系统能够动态地对多应用文件进删除、创建等操作。考虑到文件的动态删除可能会造成卡内一些空间碎片,所以在文件系统上增加了碎片空间的回收机制,该机制主要针对卡内由于删除文件操作产生的碎片空间。空间回收机制是在创建文件且发生空间不足时被调用的,是为了有效与合理地使用存储空间。

回收机制的实质是对空间碎片的整理与再利用的过程,要注重无效文件节点的合并,系统在不断地进行分配和回收过程中,大的空闲区逐渐分割成小的占用区,为了更有效地利用存储空间,需将相邻关系的碎片空间进行合并。在回收过程中,主要的任务是查找删除文件留下的碎片空间,具体算法如下所示:

1)查找碎片:从当前目录开始,顺序遍历其目录项,将一个有效文件作为起始,下一个相邻的有效文件作为终止,如果前一个文件的大小小于两文件的间隔,证明两文件间存在碎片。

2)计算碎片大小,将两文件的间隔大小减去前一个文件的空间的大小,则得到碎片空间大小。

3)如果碎片空间太小,则转向1继续查找。

4)遍历碎片中无效文件,备份碎片起始地址。

5)回到碎片的起始地址。

3.2 坏损页面的管理

对于NOR Flash,一般情况下擦写次数是十万次,在使用过程中,数据区某些页面可能由于物理原因或者经常操作,可能出现某些页面坏损的情况,这有可能导致整个Flash芯片不能正常工作。为了延长Flash的使用寿命,对于坏损页面必须进行有效地管理,在这采用页面映射技术[1],也就是将坏损页面逻辑页面号映射到的好的页面上去。通过写校验来检查当前页面是否坏损,如果坏损,就将坏损页面号和映射页面号添加到坏损页面映射管理表中,映射页面号取值应为数据区可用页面最大页面号。在读写操作中,如果读写物理地址所在页面是坏损页面,那么就需对坏损页面进行映射处理,其处理流程如下所述:

1)根据读写操作的逻辑地址,来确定数据区物理地址,从而来确定当前数据区页面号。

2)根据页面号来遍历坏损页面映射表,如果此页面号在坏损页面映射表中存在,那么就进行地址映射,修改读写┑刂贰

为了提高读写的速度,对读写数据长度进行比较处理,判断所处理的地址涉及的页面情况:一是所有处理的数据在一个页面;二是所有处理的数据在两个页面。这样在读写操作中最多核查坏损页面映射表两次,没必要在读写操作时,频繁判断读写地址所在页面情况,可大大提高读写的速度。

3.3 平均磨损技术

平均磨损就是使有寿命期限的Flash的各个部分同时到达寿命期限,平均磨损技术的主旨是在空间的使用上能够均匀的使用Flash每个页面,保证某些页面不至于先于其他页面达到磨损界限,平均磨损技术的引入提高了Flash 的使用寿命期限。平均磨损技术以碎片空间回收技术、存储空间分配方式和页面映射为基础,来使Flash损耗达到平衡。在删除文件时,它的物理内存空间并没有立即释放,即将当前目录下该文件的目录项状态置为无效文件标志位,表明处于逻辑删除状态,所有被删除文件并没有在物理空间被清空,只改变文件的状态。在分配空间时,并不是从当前目录起始地址开始搜索空闲空间,而是从当前目录下寻找可用空间,这样可以最大限度地保证均衡使用每个页面。

由于NOR Flash擦写次数是有限的,对于特定的应用数据区,若经常擦写,可能导致Flash局部区域过早老化,为了延长Flash的使用寿命,对特定应用文件的页面进行页面映射,在管理上与坏损页面块映射一致,不过在这对特定应用文件的页面加入一个特定的计数器,如果计数器达到特定的峰值时,就需对这些特定应用的页面进行页面映射。在整个3GEVDO卡中,读要比写操作频繁,而且少数特定文件存在经常擦写的现象,如号薄文件、短信息文件等,对于这些特殊文件可以特殊处理,没必要对整个数据区文件进行处理,这样全面考虑能提高智能卡整体性能。

3.4 掉电保护机制

在数据的一次写过程中,由于Flash物理特性,需要先擦除要改写的地址空间所在的页面,每次擦除的物理页面大小为512Byte,所以要将这整个页面备份,防止在改写过程中出现突然掉电,导致数据丢失的情况发生。在这采用旧数据备份[4]的方式,数据在当前页面得到全部更新以后才认为更新成功,否则自动恢复到原始状态。备份区是个经常擦写的地方,为了保证备份区的有效性,这配置了多个安全备份区,以达到循环使用,均衡擦写。改写Flash有两种情况,如图4所示(图中斜线部分为改写的数据段),一种情况改写数据在一个Flash页面;另一种情况改写数据涉及了两个Flash页面。旧数据备份具体算法如下所示:

1)将要改写数据段的Flash页面的所有数据备份到备份区中。

2)数据备份完成后,将备份标志位置为有效,并将有效的标志位和改写的地址保存到标志区。

3)数据开始更新,依次将数据写入目标地址。

4)备份标志位复位,表示改写成功,并将复位的标志写入到标志区。

安全写恢复流程算法:查看Flash备份标志位是否有效,如果无效表示不需要进行数据安全写恢复操作,结束流程;如果有效,表示要进行数据安全写的恢复操作,步骤如下所示:

1)读取备份的数据,根据备份的地址,对数据进行恢复操作。

2)所有的数据恢复成功之后,将备份标志位复位,将复位的标志位写入标志区。

图片

图4 掉电保护图

3.5 日志备份机制

在智能卡一个完整的事务流程中,可能对多个页面进行数据改写操作,将此过程视为一个原子操作来完成,所有数据更新操作要么全部完成要么全部不做。当事务处理涉及到至少两个页面数据操作时,掉电保护机制并不能真正地保证数据的一致性,运行的事务在非正常状态下终止,可能会导致操作系统数据不一致性,在这引用了日志备份技术,来保证数据的一致性、完整性[6-7]。在一个多次执行改写操作事务中,对需要处理数据的数据段在日志备份区以日志记录的方式对旧数据进行数据备份,记录此次事务下的所有完成的写操作,存储在智能卡的日志区。当系统遭受不正常断电后重新启动时,系统将进行自检,对非正常终止的事务进行回滚,自动恢复到断电前最后一个稳定状态,使系统恢复到一致状态。在这采用以记录为单位的日志文件,使用旧数据回写的方式来恢复数据。在一个事务的执行过程中,记录每个事务的开始标记、结束标记,同一事务的每次更新操作均作为一个日志记录,具体执行流程如下所示:

1)事务的标志位,置为有效。

2)把要改写的旧数据以TLV格式备份到日志区中,其中T表示此次事务中第几次改写Flash;L表示要改写数据的长度与旧数据起始地址的长度和;V表示旧数据起始地址和旧数据。

3)数据备份完成后,将备份标志位置为有效,并将有效的标志位和数据改写地址保存到指定的位置。

4)数据开始更新,依次将数据写入目标地址。

5)如果事务未完成,还有其他写操作,那么转向步骤2)继续执行,同一事务的备份数据应有序保存,以便数据的恢复。

6)事务标志位复位,表示事务执行成功,并将复位的标志写入到Flash指定的位置。

数据恢复流程算法:系统进行自检,查看事务标志位是否有效,如果无效表示不需要进行数据一致性写恢复操作,结束流程;如果有效表示要进行写恢复操作,步骤如下所示:

1)读取最新事务的日志数据,根据备份的有效标志位,对数据进行有序的恢复操作。

2)所有的数据恢复成功之后,将事务标志位复位,将复位的标志位写入Flash指定的位置。

在事务的一次处理过程中,可能涉及到多次的擦写,这是非常耗时的,也很不安全,采用了日志备份,把事务的处理过程以日志的方式记录下来,不需要频繁擦写;日志区是一个大的缓冲区,不过它也是容量限制的,当达到一定容量或关键值时,就需对日志备份区进行清理,这样就减少写操作的时间,提高了智能卡的整体性能。

4 仿真与测试

软件环境:Keil Uvision2,在华大微电子提供HEDIC51仿真器对CIU51G256芯片进行仿真,仿真测试证实该文件系统设计的有效性与合理性。用VC++6.0开发的智能卡文件结构扫描工具对所研发3G EVDO卡进行扫描,其文件系统的树型层次结构、文件句柄及基本数据如图5所示,表明该文件系统结构的完整性。

图片

图5 文件结构扫描图

在COS文件系统的设计过程中,不仅注重空间效率,更应注重时间效率,智能卡在生产和运行过程中,对时间效率要求非常高,命令执行因数据存储位置、数据量等因素的影响,对不同文件操作响应时间也有所不同,为了更好地衡量命令执行的时间性能,以每次50条同样APDU指令或命令对在同一个APDU软件测试工具进行测试,获取平均时间作为性能指标,与文件相关命令执行平均时间效率如表1,下载COS(即将整个COS原代码转化成APDU指令后,下载到卡片中的过程) 所需时间为16.031s;预个人化(构造COS所需的文件及文件所需数据的过程 )所需时间为16.843s,并且各方面的执行效率也达到相关电信测试部门认可。

表格(有表名)

表1 文件相关命令执行性能表ms

命令3G EVDO COS的数值

CREATE FILE84.7

DELETE FILE65.4

SELECT10

GET RESPONSE15

STATUS12.4

READ BINARY68.4(数据长度为0xFF)

UPDATE BINARY155.6(数据长度为0xFF)

READ RECORD68.7(记录长度为0xFF)

UPDATE RECORD123.7(记录长度为0xFF)

SEEK8

INCREASE112.5

INVALIDATE86.2

REHABILITATE(命令对)

5 性能评价

此文件系统的设计采用了按字节分配存储空间,与采用FAT表[5,8]按块静态分配存储空间的设计方式相比在空间、时间上有一定的优越性。所谓按块静态分配,指将智能卡的数据存储区划分为大小相等的若干块,每块由一个块号作为地址标识,文件最小空间分配单元是一个逻辑块。对这两种设计方式在华大微电子CIU51G256芯片上进行测试。首先,比较存储空间利用率,依照中国电信EVDO卡测试规范,个人化所需的标准文件为91个,其两种设计方式下标准文件个人化所需数据空间如表2所示,通过表2可看出按字节存储与按块存储存在明显的不同,前者能大大节省智能卡有限的存储空间,后者随着逻辑块容量的增大,其空间利用率越来越低,且前者不需要对FAT表进行维护,很明显在空间利用上前者优于后者。

表格(有表名)

表2 字节和块存储所需数据的存储空间对比

存储方式存储容量/KB

按字节存储49.22

按块存储块大小为128B56.75块大小为256B67.50

从时间性能进行分析,两种方式下读写数据平均所耗时间如表3所示(单位ms),其数据逻辑块大小为128Byte。从表3可以发现:字节存储与块存储下读数据的所耗时间差别不是很大,前者略低于后者,因为后者在读写数据时要查看FAT表;写数据所耗的时间前者大约是后者的二分之一,前者的时间性能明显高于后者。

表格(有表名)

表3 字节和块存储下数据写时间性能对比ms

存储ち/B字节存储读时间写时间块存储读时间写时间

1283110939273

2566712573339

512110316135646

1B0242136452751B182

2B0484321B3695162B229

从实验结果可以看出此文件系统设计的高效性,但仍有不足之处,如空间回收、坏损页面的管理,由于采用按字节存储,增加一定的复杂度,还有待进一步的研究。

6 结语

本文基于对3G智能卡的应用需求、NOR Flash的物理特性及安全等多方面的考虑,设计了一种基于Flash的文件系统。此文件系统设计灵活,不仅注重了空间效率,更注重了时间效率,以尽可能小的代价,提高智能卡的数据存储、读写、检索的速度,有效地实现智能卡应用中存储空间的释放、回收、重用,延长了Flash的使用寿命,提供断电保护和数据恢复机制,保证文件系统的可靠性、健壮性,数据完整性、一致性。该设计成功地应用到华大微电子CIU51G256芯片上,并投入生产。

参考文献:[1] LIM S H, PARK K H.An efficient NAND flash file system for flash memory storage[J].IEEE Transactions on Computers,2006,55(7):906-912.

[2] 中国电信CDMA卡需求规范-UIM卡(1x增强型)分册v1.0 [S],2009.

[3] 3GPP2C.S0023C.Removable user identity module for spread spectrum systems[S],2008.

[4] 李翔.智能卡研发技术与工程实践[M].北京:人民邮电出版社,2003.

[5] 张鲁国,马自堂.智能卡操作系统中存储管理设计[J].微计算机信息,2005,21(8):18-19.

[6] BOWEN N S, PRADHAN D K. The effort of merroymanagement policies on system reliability[J]. IEEE Transactions on Reliablity,1993,42(3):375-382.

[7] 郑良辰,孙玉芳.日志文件系统在嵌入式设备上的实现[J].计算机科学,2002,29(1):72-74.

[8] 吴瀛,龚育昌,张为民.一种基于Flash的智能卡文件系统[J].计算机工程,2005,31(6):55-57.

上一篇:“亮. 震撼视界” 下一篇:基于非均匀B样条插值算法的图像放大