智能卡存储系统及该系统中文件创建管理的方法

文档序号:6557543阅读:181来源:国知局
专利名称:智能卡存储系统及该系统中文件创建管理的方法
技术领域
本发明涉及嵌入式领域,尤其是智能卡以及USB TOKEN领域中的一种智能卡存储系统以及实现该智能卡存储系统中文件创建管理的方法。
背景技术
随着智能卡应用的不断推广与普及,人们对智能卡的功能需求越来越多样化,丰富多彩的应用需求使得智能卡的硬件工艺水平日新月异CPU位数上,从最初的8位CPU,到现在广为使用的16位CPU,再到正在逐步推广的32位CPU;存储器类型上,从最初的ROM、RAM、EEPROM,到现在的NOR FLASH,再到新的NOR FLASH与NAND FLASH融合技术;传输接口上,从ISO7816单一接口,到融合MMC、USB等快速接口的多通道等;特别是在存储容量上,更是不断发生着数量级上的变化,从最初的字节级,到现在的K级以及逐渐推出的M级和G级的大容量。
智能卡上所有的应用以及数据都是以文件的形式进行存储,智能卡中的文件类型完全遵照ISO7816规范中的定义,分为目录文件DF和基本文件EF,其中,EF文件又可以分为二进制文件、定长记录文件、变长记录文件、循环文件等多种类型。外界对智能卡上数据的访问归根结底是对智能卡存储器中特定文件内容的访问。传统的智能卡芯片由于存储容量很小,因此,所能完成的功能也十分有限。这种情况下,卡上文件系统的管理相对比较简单,通常采用顺序分配文件空间的方式,不支持文件的灵活创建、删除和空间回收利用。
以我们常用的手机SIM卡为例,当一张卡支持100条短信空间和50个电话号码空间时,如果用户对短信应用不感兴趣而又感觉电话号码空间不够用时,传统的手机SIM卡不能够支持文件空间的互补,即将剩余的短信空间补充到不足的电话号码簿空间。因为传统智能卡采用的是顺序分配空间的方法。
如图1表示一个示例性的智能卡上的文件结构。图2是该文件结构在传统智能卡上的存储分配方法。
每个文件由文件目录项和文件主体空间两部分组成,文件目录项记录该文件的基本信息,如文件名、文件大小等。由图2中可以看出,传统智能卡的文件管理采用的是顺序分配空间的方法MF在创建的时候自动分配为卡上的最大空间。其他文件依照创建的顺序和大小,顺序为其分配空间。例如,当为当前目录文件创建其子文件时,首先查看当前目录下的剩余空间是否大于待创建的子文件大小,如果剩余空间足够大,则子文件将从剩余空间的起始地址处开始被顺序创建;如果剩余空间不够大,则子文件无法被创建。
这种顺序分配文件的方式存在着如下弊端(1)系统根据文件创建时指定的大小分配空间;由于是按照地址空间顺序分配,因此一旦分配成功,文件位置即固定;(2)由于是在文件创建时预先指定文件大小,文件一旦被创建,文件大小不能再被改变;使用过程中,文件大小始终是一个固定值,可能会存在空间不够用或者空间浪费的情况;(3)当在使用过程中发现,一个文件预分配的空间不够,而另一个文件预分配的空间过大时,不能提供一种有效的机制使得两个文件的空间能够互为补充;(4)文件可以被删除,但是删除后的空间不能被系统回收利用,因为所有新创建的文件都是在原有已分配地址空间的基础上继续顺序分配的;因此,造成卡上存储空间的大量浪费;随着智能卡应用的不断多样化和智能卡存储器容量的不断增大,这种传统的文件管理方法已经越来越不能够满足应用需求。

发明内容
本发明的目的在于提出一种智能卡存储系统以及该智能卡存储系统的文件创建管理方法,以及对创建的文件的存储、读取、更新、删除以及文件占用空间的修改,该智能卡存储系统将文件分配表(File Allocation Table,缩写FAT)与传统智能卡系统相结合,采取了一种新的文件创建管理方法,以解决现有技术不支持文件的灵活创建、删除和空间回收利用的问题。
本发明的目的是这样实现的本发明提供一种智能卡存储系统,包括存储区以及控制单元,所述的存储区包括文件分配表存储区以及存储文件内容的数据存储区,所述的文件分配表存储区包括多个文件分配表项,所述的数据存储区包括多个数据块;每一个文件分配表项对应一个数据块,其中,所述的控制单元查找文件分配表存储区的文件分配表项,根据文件分配表项与数据块的对应关系对数据块内的文件做出控制。
所述的数据存储区包括存放文件目录项的文件目录项存储单元和存放文件主体空间的文件主体空间存储单元,所述的文件目录项存储单元和文件主体空间存储单元处于不同的数据块内。
所述的文件分配表项中记录的内容为当前文件所占用的下一个数据块的块号,如果当前文件没有下一个数据块,则文件分配表项中的值为表示结束的特定值;如果数据块没有被占用,则对应文件分配表项中的值为表示未被占用的特定值。
本发明提出一种对智能卡存储系统进行文件创建管理的方法,创建一个新的文件,包括以下步骤A、控制单元搜索所述的文件分配表存储区,在文件分配表中搜索未被占用的文件分配表项,并根据文件分配表项与数据块的对应关系查找到未被占用的数据块;
B、由控制单元将找到的未被占用的数据块分配给待创建文件的文件目录项,写入文件信息,将该数据块对应的文件分配表项的值修改为被占用的特定值;C、继续执行步骤A,再次进行未占用数据块查找,将此次找到的多个数据块分配给待创建文件的文件主体空间,将数据块对应的文件分配表项的值修改为被占用的特定值,形成文件分配表项链表,将第一个数据块的块号记录在步骤B确定的文件目录项中,将该文件所占用的最后一个数据块对应的文件分配表项修改为结束值。
在步骤B中写入的文件信息至少为文件大小、文件起始数据块块号。
在步骤A之前还包括控制单元对当前目录下剩余空间判断的步骤,如当前目录下的剩余空间大小大于等于待创建的文件所需的空间,控制单元才执行步骤A。
如果创建的文件是目录文件,在步骤C中,文件目录项中的文件起始数据块块号记录的是该目录文件下建立的第一个子文件的文件目录项所占用的数据块块号,第一个子文件的文件目录项所占用的数据块对应的文件分配表项中记录的是该目录文件下建立的下一个子文件的文件目录项所占用的数据块块号,以此类推,所有数据块链接起来形成该目录文件的文件主体空间的文件分配表项链表。
如果创建的文件是基本文件,步骤C中的文件目录项中的文件起始数据块块号记录的是该基本文件的文件主体空间所占用的第一个数据块的块号,该起始数据块对应的文件分配表项中记录的是该基本文件的文件主体空间所占用的第二个数据块的块号。
在步骤C之前还存在控制单元对基本文件的文件主体空间所述数据块个数计算的步骤;且在步骤C中控制单元需要在文件分配表中找出相应个数未被占用的文件分配表项,并将这些文件分配表项链接起来,再将这些数据块分配给基本文件的文件主体空间。
在进行文件内容存储的时候,包括以下步骤D、控制单元根据创建的文件的目录项得到文件主体空间存储数据的起始数据块的数据块块号;E控制单元由文件的起始数据块的块号得到数据块对应的文件分配表项,进而得到待存储文件占用数据块的文件分配表项链表,再根据文件分配表项链表进行文件内容的存储,直到文件内容被存储完毕。
对创建或存储的文件更新时,包括以下步骤F控制单元根据待更新文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块块号;G控制单元由文件的起始数据块的块号得到数据块对应的文件分配表项,进而得到待更新文件占用数据块的文件分配表项链表,再根据由步骤F得到的起始数据块的数据块块号以及待更新的起始地址相对于文件主体空间起始地址的偏移量在链表中查找到待更新的起始地址所在的数据块号,进行数据块的更新,直到指定长度的文件内容被更新完毕。
对创建或存储的文件读取时,包括以下步骤H控制单元根据待读取文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;I控制单元由文件起始数据块的数据块号得到起始数据对应的文件分配表项,由该文件分配表项得到待读取文件占用数据块的文件分配表项链表,再根据由步骤H得到的起始数据块的数据块块号以及待读取的起始地址相对于文件主体空间起始地址的偏移量在链表中查找到待读取的起始地址所在的数据块号,进行数据块的读取,直到指定长度的文件内容被读取完毕。
对创建或存储的文件进行删除时,包括以下步骤J控制单元根据待删除文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;K控制单元根据步骤J得到的文件起始数据块的数据块号,得到与其对应的文件分配表项,由该文件分配表项得到待删除文件占用数据块的文件分配表项链表,依该链表进行每一数据块的文件内容的删除,直到该文件的最后一个数据块的文件内容被删除,同时将每一被删除文件内容的数据块对应的文件分配表项的值设置为未占用状态的表项值;L控制单元删除待删除文件的目录项占用的数据块,将其对应的文件分配表项值设置为未占用状态的表项值。
对创建或存储的文件进行占用空间修改时,包括以下步骤M控制单元根据待修改文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;N控制单元根据由步骤M得到的起始数据块的数据块号查找到该数据块对应的文件分配表项,并得到该待修改文件占用数据块的文件分配表项链表,依该链表查找到该文件的最后一个数据块对应的文件分配表项;O控制单元根据待修改文件欲占用空间的大小,进行文件分配表项的设置;P控制单元对待修改文件的文件目录项中文件空间大小的值进行修改。
如进行文件占用空间的缩小,在步骤N中,控制单元还需要对每一文件分配表项对应的数据块的使用状态做出确定;步骤O中还应该包括以下步骤O1控制单元根据文件空间缩小后文件的大小,将该文件未占用的数据块中的一个或者多个数据块所对应文件分配表项值设置为未占用状态的表项值;同时将该文件占用的最后一个数据块对应的文件分配表项值修改为文件分配表项的结束值。
如进行文件占用空间的扩大,在步骤O中,包括以下步骤
O1′控制单元在文件分配表中查找未被占用的文件分配表项,并按照文件预扩大的大小将未被占用的文件分配表项对应的数据块分配给该文件,修改该文件占用的最后一个数据块对应的文件分配表项为结束值,该文件原占用的文件分配表项与新分配的文件分配表项链接起来,生成该文件新的文件分配表项链表。
本发明的有益效果如下由于本发明的文件系统中FAT表项与数据块一一对应,因此,我们可以通过FAT表项对每一个文件所占用的每一个数据块清晰的定位和查找;由于本发明的文件系统所有的空数据块都由FAT表来管理,因此,在为一个文件分配空间时,不再是采用传统的顺序分配方式,而是在FAT表中搜索未占用的数据块的块号,将搜索到的对应未占用的数据块分配给新创建的文件;这样大大增加了文件创建的灵活性,同时充分利用了空间碎片;同样,删除文件时,只要释放相应的FAT表项,则文件所占用的空间就可以被完全回收;当为一个文件分配的空间过大而为另一个文件分配的空间过小时,只需释放一部分大文件尚未被写入内容的数据块对应的FAT表项,并将这些FAT表项分配给占用空间小的文件,同时修改两个文件目录项中的文件大小信息,则可以很容易地实现文件大小的互补,实现文件大小的按需使用和灵活配置。


图1是一个示意性的文件结构图;图2是示意文件结构在传统智能卡中的文件分配方法;图3是本发明的文件a的存储结构示意图;图4是文件空间重分配示意图(重分配前);图5是文件空间重分配示意图(重分配后)。
具体实施例方式
本发明指出一种智能卡存储系统及该系统中文件创建的方法,本发明的智能卡存储系统包括存储区以及控制单元,所述的存储区包括文件分配(FAT)表存储区以及存储文件内容的数据存储区,所述的FAT表存储区包括多个FAT表项,所述的数据存储区包括多个数据块;每一个FAT表项对应一个数据块,其中,所述的控制单元查找FAT表存储区的FAT表项,根据FAT表项与数据块的对应关系对数据块内的文件做出控制。
在本发明的系统中,所述的数据存储区包括存放文件目录项的文件目录项存储单元和存放文件主体空间的文件主体空间存储单元,所述的文件目录项存储单元和文件主体空间存储单元处于不同的数据块内。其中,文件目录项存储单元中存储的是文件的名称、大小、类型、访问控制权限、文件起始数据块块号及文件标识符等基本信息;文件主体空间存储单元对于目录文件DF和基本文件EF有所不同DF是一种特殊的文件,其文件主体空间存放的是它下面的所有子文件的集合;而EF文件的文件主体空间存放的是实际的文件内容。当为一个文件分配存储空间时,该文件的目录项和主体空间在存储区中分配不同的数据块。在本发明的系统中,所述的文件分配表项中记录的内容为当前文件所占用的下一个数据块的块号,如果当前文件没有下一个数据块,则文件分配表项中的值为表示结束的特定值;如果数据块没有被占用,则对应文件分配表项中的值为表示未被占用的特定值。
在本系统中,所述的FAT表项存储区包括若干个FAT表项,每一个FAT表项与一个数据块相对应,数据存储区划分为了多少个块,就需要相应个数的FAT表项。FAT文件系统有FAT12,FAT16,FAT32之分,它们分别表示用来记录数据块的FAT表项的位数12位、16位或者是32位。以FAT16为例,每一个数据块在FAT表中占据2个字节(16位)。
所述的数据区被划分为若干个大小相等的数据块,存放被创建的文件。数据块从1开始编号,分别是第1块,第2块,第3块……,分别对应FAT表区的第1个FAT表项,第2个FAT表项,第3个FAT表项……,即FAT表区的FAT表项与数据区的数据块一一对应。
在本发明的实施例中,对于上述智能卡存储系统中的文件处理,在以下内容进行详细说明,同时以FAT16进行说明本发明给出一种对上述智能卡存储系统进行文件创建管理的方法,即创建一个新的文件时,包括以下步骤A、控制单元搜索所述的文件分配表存储区,在文件分配表中搜索未被占用的文件分配表项,并根据文件分配表项与数据块的对应关系查找到未被占用的数据块;B、由控制单元将找到的未被占用的数据块分配给待创建文件的文件目录项,写入文件信息,将该数据块对应的文件分配表项的值修改为被占用的特定值;C、继续执行步骤A,再次进行未占用数据块查找,将此次找到的多个数据块分配给待创建文件的文件主体空间,将数据块对应的文件分配表项的值修改为被占用的特定值,形成文件分配表项链表,将第一个数据块的块号记录在步骤B确定的文件目录项中,将该文件所占用的最后一个数据块对应的文件分配表项修改为结束值。
如果不是在一种空白智能卡上存储文件,在步骤A之前还包括控制单元对当前目录下剩余空间判断的步骤,如当前目录下的剩余空间大小大于等于待创建的文件所需的空间,控制单元才执行步骤A。
在创建文件时,处理方法会因为存储文件类型的不同而有所区别如创建的文件是目录文件,由于目录文件的文件主体空间是由所有子文件的集合构成,因此,其文件主体空间的分配是在其下创建子文件时由步骤B和步骤C分配的,不需要为目录文件的创建单独执行步骤C,也就是说如其子文件中包括目录文件,再执行步骤C。对于目录文件的创建过程为由于DF是目录文件,其下可以再创建子文件,它的文件主体空间是它下面若干个子文件的集合。因此,在创建时只需要为DF文件的目录项查找并分配空的数据块空间,DF的文件主体空间可以等到在其下创建子文件时分配;即在DF下创建子文件的过程就是为DF的主体空间分配存储块的过程;在DF下创建子文件时,需要首先计算DF下剩余空间的大小,即DF下剩余空间大小=DF的主体空间大小一DF下已有子文件的空间总和,如果计算得到的DF下剩余空间大小比待创建的文件大小(文件目录项大小+文件主体空间大小)小,则说明DF下没有足够的空间创建指定大小的文件,系统将会返回创建失败的应答给应用端;如果剩余空间足够大,则允许创建文件。
如创建的文件是基本文件,在步骤C之前还存在控制单元对基本文件的文件主体空间所述数据块个数计算的步骤;且在步骤C中控制单元需要在FAT表中找出相应个数未被占用的FAT表项,并将这些FAT表项链接起来,再将这些数据块分配给基本文件的文件主体空间,并将该文件所占用的最后一个数据块对应的FAT表项的值修改为文件分配表项的结束值。
在FAT表项链接时,对于目录文件,由于其文件主体空间是由其下所有子文件构成,因此,目录文件的文件目录项中的文件起始数据块块号记录的是该目录文件下建立的第一个子文件的文件目录项所占用的数据块块号;第一个子文件的文件目录项所占用的数据块对应的文件分配表项中记录的是该目录文件下建立的第二个子文件的文件目录项所占用的数据块块号;第二个子文件的文件目录项所占用的数据块对应的文件分配表项中记录的是该目录文件下建立的第三个子文件的文件目录项所占用的数据块块号,依此类推,从而形成该目录文件的文件分配表项链表。
对于基本文件,由于其文件主体空间由其实际文件内容构成,因此,基本文件的文件目录项中的文件起始数据块块号记录的是该基本文件的主体空间所占用的第一个数据块的块号;该起始数据块对应的文件分配表项中记录的是该基本文件的文件主体空间所占用的第二个数据块的块号,依此类推,从而形成该基本文件的文件分配表项链表。
文件创建后,在进行文件内容存储时,包括以下步骤D、控制单元根据创建的文件的目录项得到文件主体空间存储数据的起始数据块的数据块块号;E控制单元由文件的起始数据块的块号得到数据块对应的文件分配表项,进而得到待存储文件占用数据块的文件分配表项链表,再根据文件分配表项链表进行文件内容的存储,直到文件内容被存储完毕。
由于本发明的文件系统由FAT表统一管理所有的数据块,因此,当存储一个文件时,文件可以不连续存放,只要通过FAT表项记录下文件所占用的数据块的链表,就能够正常地对文件进行访问。
在本发明进行文件存储的最佳实施方案中,可以定义FAT表项值为0时表示对应数据块未被占用,FAT表项值为FFFF时表示没有下一链接的数据块。1~FFFE之间的FAT表项值记录的是当前文件的下一数据块的块号。控制单元为待存储文件的目录项和文件主体空间分配不同的数据块,其中,对于文件目录项占用的数据块,其对应的FAT表项中记录的是其兄弟文件的目录项所在数据块的块号,如果该文件目前没有兄弟文件,则FAT表项的值为结束值,例如可为FFFF;对于文件主体空间,每一个数据块对应的FAT表项记录的都是为该文件分配的下一个数据块的块号,如果没有下一数据块,则FAT表项值为结束值。
本发明的这种存储方法,一方面不失FAT文件管理的灵活性,另一方面也是为了加快文件读写时的访问速度。
以下是以文件a的存储为例,见图3对文件的存储进行了详细说明文件a是一个EF文件,进行文件存储时
(1)判断当前目录下的剩余空间是否足够,不够则不允许创建新的子文件;(2)在FAT表中搜索未占用的数据块,分配给待创建文件的目录项;在图4中,将数据块1分配给了文件a的目录项;(3)计算EF文件主体空间所需的数据块个数,在FAT表中查找相应个数的未占用的FAT表项,并将这些FAT表项链接起来,即前一个FAT表项的值为该文件的下一个FAT表项的块编号;如在图4的示例中,为文件a的主体空间分配了6个数据块,控制单元搜索到的未占用的FAT表项为5、6、7、11、12、13,将这些数据块分配给文件a的主体空间,同时,将FAT表项5的值置为6,将FAT表项6的值置为7,将FAT表项7的值置为11,依次类推……第13块是文件a的最后一数据块,因此,将FAT表项13的值置为FFFF,表示该文件没有下一个FAT表项,将文件内容存入这些数据块中,完成对文件的存储。
由此可见,当采用本发明的系统时,并不需要为一个文件分配连续空间的数据块,只要在分配的同时用FAT表项记录下该文件的数据块的链接,就可以完整地对文件进行查找和读写。
以下是对本发明进行创建或存储的文件更新的方法的说明,该方法具体包括以下步骤F控制单元根据待更新文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块块号;G控制单元由文件的起始数据块的块号得到数据块对应的文件分配表项,进而得到待更新文件占用数据块的文件分配表项链表,再根据由步骤F得到的起始数据块的数据块块号以及待更新文件相对于起始数据的偏移量在链表中查找到待更新的起始地址所在的数据块号,进行数据块的更新,直到指定长度的文件内容被更新完毕。
再结合图3对更新过程进行说明控制单元首先根据待更新的偏移量(该偏移量是指更新或者读取文件的位置与文件起始位置之间的偏移)和数据块长度计算待更新的起始地址在第几个数据块中,下文以待更新的起始地址位于第一个数据块为例进行说明,控制单元查找到文件a的目录项,再根据文件a的目录项中记录的起始数据块的块号查找到文件a的第一个数据块,即5号数据块,更新该数据块内的文件内容;5号数据块的FAT表项值是6,则可知文件a的下一数据块是6号数据块;6号数据块的FAT表项值是7,则可知文件a的下一数据块是7号数据块;7号数据块的FAT表项值是11,则可知文件a的下一数据块是11号数据块;依此类推对这些数据块的文件内容进行更新;直到指定长度的文件内容被更新完毕。
以下是本发明提出的对上述系统中的文件进行读取的方法,包括以下步骤H控制单元根据待读取文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;I控制单元由文件起始数据块的数据块号得到起始数据对应的文件分配表项,由该文件分配表项得到待读取文件占用数据块的文件分配表项链表,再根据由步骤H得到的起始数据块的数据块块号以及待读取文件相对于起始数据的偏移量在链表中查找到待读取的起始地址所在的数据块号,进行数据块的读取,直到指定长度的文件内容被读取完毕。
以下以读取图3所示的文件a为例进行说明,首先控制单元查找到文件a的目录项,再根据文件a的目录项中记录的起始数据块的块号查找到文件a的第一个数据块,即5号数据块,读取该数据块的内容;5号数据块的FAT表项值是6,则可知文件a的下一数据块是6号数据块;6号数据块的FAT表项值是7,则可知文件a的下一数据块是7号数据块;7号数据块的FAT表项值是11,则可知文件a的下一数据块是11号数据块;依此类推进行文件内容读取;直到第13号数据块的FAT表项值是FFFF,可知没有下一数据块,文件a到此结束,故而文件a可以被完整地读取。
本发明还给出一种对上述智能卡存储系统的文件删除的方法,进行文件删除时,包括以下步骤J控制单元根据待删除文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;K控制单元根据步骤J得到的文件起始数据块的数据块号,得到与其对应的文件分配表项,由该文件分配表项得到待删除文件占用数据块的文件分配表项链表,依该链表进行每一数据块的文件内容的删除,直到该文件的最后一个数据块的文件内容被删除,同时将每一被删除文件内容的数据块对应的文件分配表项的值设置为未占用状态的表项值;L控制单元删除待删除文件的目录项占用的数据块,将其对应的文件分配表项值设置为未占用状态的表项值。
再结合图3对删除过程进行说明,首先控制单元查找到文件a的目录项,再根据文件a的目录项中记录的起始数据块的块号查找到文件a的第一个数据块,即5号数据块,删除该数据块内的文件内容;5号数据块的FAT表项值是6,则可知文件a的下一数据块是6号数据块;6号数据块的FAT表项值是7,则可知文件a的下一数据块是7号数据块;7号数据块的FAT表项值是11,则可知文件a的下一数据块是11号数据块;依此类推删除这些数据块的文件内容,同时要置该数据块对应的FAT表项为0,表示该数据块没有被占用,以便系统将其分配给其他待创建的文件;直到该文件的最后一个数据块被删除;文件主体空间删除后,同时要删除文件目录项所占用的数据块,并修改其对应的FAT表项为0,完成文件a的删除。
本发明还指出一种对上述的智能卡存储系统的进行文件占用空间修改的方法,对存储的文件进行占用空间修改时,包括以下步骤M控制单元根据待修改文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;N控制单元根据由步骤M得到的起始数据块的数据块号查找到该数据块对应的文件分配表项,并得到该待修改文件占用数据块的文件分配表项链表,依该链表查找到该文件的最后一个数据块对应的文件分配表项;O控制单元根据待修改文件欲占用空间的大小,进行文件分配表项的设置;P控制单元对待修改文件的文件目录项中文件空间大小的值进行修改。
如进行文件占用空间的缩小,在步骤N中,控制单元还需要对每一文件分配表项对应的数据块的使用状态做出确定;步骤O中还应该包括以下步骤O1控制单元根据文件空间缩小后文件的大小,将该文件未占用的数据块中的一个或者多个数据块所对应文件分配表项值设置为未占用状态的表项值;同时将该文件占用的最后一个数据块对应的文件分配表项值修改为文件分配表项的结束值。
在步骤O中,包括以下步骤O1′控制单元在文件分配表中查找未被占用的文件分配表项,并按照文件预扩大的大小将未被占用的文件分配表项对应的数据块分配给该文件,修改该文件占用的最后一个数据块对应的文件分配表项为结束值,该文件原占用的文件分配表项与新分配的文件分配表项链接起来,生成该文件新的文件分配表项链表。
以下结合图4和图5的内容进行说明图4中所示的内容是重分配前的文件空间示意图,由图中可以看出,文件a占用了第5、6、7、11、12、13六个数据块;文件b占用了8、9、10三个数据块;假设目前文件a仅使用了前4个数据块,即第12、13两个被阴影标注的数据块尚未使用;如用户希望缩小文件a的空间同时扩大b的空间,则可将文件a尚未使用的空间(第12、13数据块)转移给文件b,即让文件a占有第5、6、7、11四个数据块;让文件B占用第8、9、10、12、13五个数据块;为了实现上述的功能,需要修改文件b原先的最后一数据块——第10数据块对应的FAT表项为12,使其指向新分配的第12数据块;同时,修改文件a的最后一数据块——第11数据块的FAT表项为FFFF,表明没有后续数据块;修改后的文件a和文件b的空间示意图见图5。
修改FAT表项的同时,还应修改文件a和文件b的目录项中的“文件大小”,使其等于更新后的文件大小。
本发明的这种对文件空间修改的方法,能够对文件大小重新分配,即当一个文件空间过大造成浪费,而另一个文件空间过小不够使用时,可将大文件中未使用的文件空间转移给小的文件使用,使用户可以灵活利用存储空间。
基于上述描述可知,本发明所述的智能卡文件系统及其管理方法可以克服现有技术存在的缺陷,并实现文件的灵活创建、删除和空间回收利用。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种智能卡存储系统,包括存储区以及控制单元,其特征在于,所述的存储区包括文件分配表存储区以及存储文件内容的数据存储区,所述的文件分配表存储区包括多个文件分配表项,所述的数据存储区包括多个数据块;每一个文件分配表项对应一个数据块,其中,所述的控制单元查找文件分配表存储区的文件分配表项,根据文件分配表项与数据块的对应关系对数据块内的文件做出控制。
2.根据权利要求1所述的智能卡存储系统,其特征在于,所述的数据存储区包括存放文件目录项的文件目录项存储单元和存放文件主体空间的文件主体空间存储单元,所述的文件目录项存储单元和文件主体空间存储单元处于不同的数据块内。
3.根据权利要求1所述的智能卡存储系统,其特征在于,所述的文件分配表项中记录的内容为当前文件所占用的下一个数据块的块号,如果当前文件没有下一个数据块,则文件分配表项中的值为表示结束的特定值;如果数据块没有被占用,则对应文件分配表项中的值为表示未被占用的特定值。
4.一种对权利要求1所述的智能卡存储系统进行文件创建管理的方法,其特征在于,创建一个新的文件,包括以下步骤A、控制单元搜索所述的文件分配表存储区,在文件分配表中搜索未被占用的文件分配表项,并根据文件分配表项与数据块的对应关系查找到未被占用的数据块;B、由控制单元将找到的未被占用的数据块分配给待创建文件的文件目录项,写入文件信息,将该数据块对应的文件分配表项的值修改为被占用的特定值;C、继续执行步骤A,再次进行未占用数据块查找,将此次找到的多个数据块分配给待创建文件的文件主体空间,将数据块对应的文件分配表项的值修改为被占用的特定值,形成文件分配表项链表,将第一个数据块的块号记录在步骤B确定的文件目录项中,将该文件所占用的最后一个数据块对应的文件分配表项修改为结束值。
5.根据权利要求4所述的方法,其特征在于,在步骤B中写入的文件信息至少为文件大小、文件起始数据块块号。
6.根据权利要求4所述的方法,其特征在于,在步骤A之前还包括控制单元对当前目录下剩余空间判断的步骤,如当前目录下的剩余空间大小大于等于待创建的文件所需的空间,控制单元才执行步骤A。
7.根据权利要求4或5或6所述的方法,其特征在于,如果创建的文件是目录文件,在步骤C中,文件目录项中的文件起始数据块块号记录的是该目录文件下建立的第一个子文件的文件目录项所占用的数据块块号,第一个子文件的文件目录项所占用的数据块对应的文件分配表项中记录的是该目录文件下建立的下一个子文件的文件目录项所占用的数据块块号,以此类推,所有数据块链接起来形成该目录文件的文件主体空间的文件分配表项链表。
8.根据权利要求4或5或6所述的方法,其特征在于,如果创建的文件是基本文件,步骤C中的文件目录项中的文件起始数据块块号记录的是该基本文件的文件主体空间所占用的第一个数据块的块号,该起始数据块对应的文件分配表项中记录的是该基本文件的文件主体空间所占用的第二个数据块的块号。
9.根据权利要求8所述的方法,其特征在于,在步骤C之前还存在控制单元对基本文件的文件主体空间所述数据块个数计算的步骤;且在步骤C中控制单元需要在文件分配表中找出相应个数未被占用的文件分配表项,并将这些文件分配表项链接起来,再将这些数据块分配给基本文件的文件主体空间。
10.根据权利要求4所述的方法,其特征在于,在进行文件内容存储的时候,包括以下步骤D、控制单元根据创建的文件的目录项得到文件主体空间存储数据的起始数据块的数据块块号;E控制单元由文件的起始数据块的块号得到数据块对应的文件分配表项,进而得到待存储文件占用数据块的文件分配表项链表,再根据文件分配表项链表进行文件内容的存储,直到文件内容被存储完毕。
11.根据权利要求4或10所述的方法,其特征在于,对创建或存储的文件更新时,包括以下步骤F控制单元根据待更新文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块块号;G控制单元由文件的起始数据块的块号得到数据块对应的文件分配表项,进而得到待更新文件占用数据块的文件分配表项链表,再根据由步骤F得到的起始数据块的数据块块号以及待更新的起始地址相对于文件主体空间起始地址的偏移量在链表中查找到待更新的起始地址所在的数据块号,进行数据块的更新,直到指定长度的文件内容被更新完毕。
12.根据权利要求4或10所述的方法,其特征在于,对创建或存储的文件读取时,包括以下步骤H控制单元根据待读取文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;I控制单元由文件起始数据块的数据块号得到起始数据对应的文件分配表项,由该文件分配表项得到待读取文件占用数据块的文件分配表项链表,再根据由步骤H得到的起始数据块的数据块块号以及待读取的起始地址相对于文件主体空间起始地址的偏移量在链表中查找到待读取的起始地址所在的数据块号,进行数据块的读取,直到指定长度的文件内容被读取完毕。
13.根据权利要求4或10所述的方法,其特征在于,对创建或存储的文件进行删除时,包括以下步骤J控制单元根据待删除文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;K控制单元根据步骤J得到的文件起始数据块的数据块号,得到与其对应的文件分配表项,由该文件分配表项得到待删除文件占用数据块的文件分配表项链表,依该链表进行每一数据块的文件内容的删除,直到该文件的最后一个数据块的文件内容被删除,同时将每一被删除文件内容的数据块对应的文件分配表项的值设置为未占用状态的表项值;L控制单元删除待删除文件的目录项占用的数据块,将其对应的文件分配表项值设置为未占用状态的文件分配表项值。
14.根据权利要求4或10所述的方法,其特征在于,对创建或存储的文件进行占用空间修改时,包括以下步骤M控制单元根据待修改文件的标识符或文件名查找到匹配的文件目录项,由文件目录项得到文件主体空间存储数据的起始数据块的数据块号;N控制单元根据由步骤M得到的起始数据块的数据块号查找到该数据块对应的文件分配表项,并得到该待修改文件占用数据块的文件分配表项链表,依该链表查找到该文件的最后一个数据块对应的文件分配表项;O控制单元根据待修改文件欲占用空间的大小,进行文件分配表项的设置;P控制单元对待修改文件的文件目录项中文件空间大小的值进行修改。
15.根据权利要求14所述的方法,其特征在于,如进行文件占用空间的缩小,在步骤N中,控制单元还需要对每一文件分配表项对应的数据块的使用状态做出确定;步骤O中还应该包括以下步骤O1控制单元根据文件空间缩小后文件的大小,将该文件未占用的数据块中的一个或者多个数据块所对应文件分配表项值设置为未占用状态的表项值;同时将该文件占用的最后一个数据块对应的文件分配表项值修改为文件分配表项的结束值。
16.根据权利要求14所述的方法,其特征在于,如进行文件占用空间的扩大,在步骤O中,包括以下步骤O1′控制单元在文件分配表中查找未被占用的文件分配表项,并按照文件预扩大的大小将未被占用的文件分配表项对应的数据块分配给该文件,修改该文件占用的最后一个数据块对应的文件分配表项为结束值,该文件原占用的文件分配表项与新分配的文件分配表项链接起来,生成该文件新的文件分配表项链表。
全文摘要
本发明指出一种智能卡存储系统及其管理方法,包括存储区以及控制单元,所述的存储区包括文件分配表存储区以及存储文件内容的数据存储区,所述的文件分配表存储区包括多个文件分配表项,所述的数据存储区包括多个数据块;每一个文件分配表项对应一个数据块,其中,所述的控制单元查找文件分配表存储区的文件分配表项,根据文件分配表项与数据块的对应关系对数据块内的文件做出控制。本发明的方法采用FAT文件管理与传统智能卡文件管理相结合的方式,具有很强的灵活性,并且加快文件读写时的访问速度。
文档编号G06F17/30GK101042696SQ200610065158
公开日2007年9月26日 申请日期2006年3月23日 优先权日2006年3月23日
发明者叶新, 龙德帆 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1