一种动态管理Java Card存储空间的系统和方法技术方案

技术编号:27975322 阅读:22 留言:0更新日期:2021-04-06 14:09
一种动态管理Java Card存储空间的系统和方法,所述系统包括数据体区域、数据头区域、数据索引、数据创建模块、数据查找模块、数据删除模块和数据调整模块,其中数据头区域的每个数据头对应着一个数据体区域的一个数据体。本发明专利技术提供的系统,由于在删除数据和调整数据大小的时候,将当前数据体和其前后的空数据体合并,从而将非连续的存储空间合并成为连续的存储空间,减少了存储空间碎片;同时,在查找数据时通过数据索引获取数据类型和对应的数据头序号,能够快速定位到数据头,再通过数据头中保存的数据地址可快速定位到数据本身,使得查找数据的速度更快。

【技术实现步骤摘要】
一种动态管理JavaCard存储空间的系统和方法
本专利技术涉及智能卡
,具体涉及一种动态管理JavaCard存储空间的系统和方法。
技术介绍
JavaCard(Java卡)是目前智能卡上普遍采用的技术,基于标准的JCVM(JavaCardVirtualMachine,Java卡虚拟机)执行,能做到与硬件系统分离,所以JavaCardApplet(运行在Java卡上的小应用程序)具有很高的可移植性和可重用性。根据JavaCard技术规范,JavaCardApplet在运行过程中需要对不定大小的各种数据进行管理,如创建数据、删除数据、扩展数据、缩小数据、读和写数据等。受UICC(UniversalIntegratedCircuitCard,通用集成电路卡)的硬件体积影响,其提供的Flash存储器和RAM(RandomAccessMemory,随机存取存储器)的存储空间都比较小,其中Flash存储器的存储空间最大仅为1MB。通常UICC会提供整片的Flash存储空间,JavaCard运行时对不同类型数据进行管理,会产生大量的空间碎片,致使JavaCard的存储空间缩小,如何有效地对这片空间进行动态管理以减少空间碎片,是一个普遍的难题。
技术实现思路
本申请提供一种动态管理JavaCard存储空间的系统和方法,旨在对JavaCard存储空间进行动态管理,以减少存储空间碎片。根据第一方面,一种实施例中提供一种动态管理JavaCard存储空间的系统,包括:数据体区域,包括多个数据体,所述数据体用于存储数据,所述数据分为预定数目的类型;数据头区域,所述数据头区域被划分为与所述数据类型相对应的子区域,每个子区域包括固定数量的数据头,每个数据头对应一个数据体,数据头包括序号、有效性标识、所对应的数据体的地址,所述有效性标识包括有效值和无效值;数据索引,用于指示数据类型和数据头序号;数据创建模块,用于当创建数据时,在相应数据类型的数据头子区域中寻找一有效性标识为无效值的数据头,将其有效性标识修改为有效值,然后在数据体区域中寻找一空间大于或等于期望空间值的空数据体,将数据存入该空数据体中,并将其地址写入先前找到的数据头中,空数据体是指没有存储数据的数据体;数据查找模块,用于当查找数据时,根据所述数据索引所指示的数据类型和数据头序号查找数据头,再根据所查找到的数据头获得所对应的数据体的地址,根据所述数据体的地址访问数据;数据删除模块,用于当删除当前数据体的数据时,将当前数据体对应的数据头的有效性标识修改为无效值,并判断当前数据体的前后是否存在空数据体,当存在空数据体时则将当前数据体与空数据体合并成为一个新的空数据体,否则将当前数据体单独作为一个新的空数据体;数据调整模块,用于当扩展当前数据体的数据时,判断当前数据体的前后是否存在空数据体,当存在空数据体时,则计算当前数据体和空数据体的总空间是否满足期望空间值,若满足期望空间值则将当前数据体和空数据体合并成为一个新的数据体,用于存储扩展后的数据,并将新数据体的地址写入对应的数据头中;当当前数据体的前后不存在空数据体或者当前数据体和空数据体的总空间不满足期望空间值时,则通过所述数据创建模块存储扩展后的数据,并将当前数据体的数据删除。一种实施例中,所述数据查找模块在查找数据头时,首先定位到所述数据索引所指示的数据类型所对应的数据头子区域,然后根据所述数据索引所指示的数据头序号确定数据头在该数据头子区域中的地址,从而查找到数据头,其中数据头在该数据头子区域中的地址的确定方式为:数据头序号×该类型数据头的长度。一种实施例中,所述数据体采用TLV编码,所述数据创建模块用于当创建数据时,在相应数据类型的数据头子区域中寻找一有效性标识为无效值的数据头,将其有效性标识修改为有效值,然后在数据体区域中寻找一空间大于或等于期望空间值的空数据体,将数据存入该空数据体中,并将其地址写入先前找到的数据头中;同时,若找到的空数据体的空间等于期望空间值,则将其Tag字段修改为有效标识,若找到的空数据体的空间大于期望空间值,则将其Tag字段修改为有效标识后,将剩余空间作为一个Tag字段为无效标识的空数据体;所述数据删除模块用于当删除当前数据体的数据时,将当前数据体对应的数据头的有效性标识修改为无效值,并判断当前数据体的前后是否存在空数据体,当存在空数据体时则将当前数据体与空数据体合并成为一个新的空数据体,计算该新的空数据体的长度并写入Length字段中,并将Tag字段修改为无效标识,否则将当前数据体单独作为一个新的空数据体,将Tag字段修改为无效标识;所述数据调整模块用于当扩展当前数据体的数据时,判断当前数据体的前后是否存在空数据体,当存在空数据体时,则计算当前数据体和空数据体的总空间是否满足期望空间值,若满足期望空间值则将当前数据体和空数据体合并成为一个新的数据体,用于存储扩展后的数据,并将新数据体的地址写入对应的数据头中,同时计算该新的数据体的长度并写入Length字段中,并将Tag字段和Length字段写到该新的数据体的最前端,若有剩余空间则将剩余空间作为一个Tag字段为无效标识的空数据体;当当前数据体的前后不存在空数据体或者当前数据体和空数据体的总空间不满足期望空间值时,则通过所述数据创建模块存储扩展后的数据,并将当前数据体的数据删除。一种实施例中,所述数据调整模块还用于当缩小当前数据体的数据时,计算缩小后的数据长度并写入Length字段中,并将剩余空间作为一个Tag字段为无效标识的空数据体。一种实施例中,所述动态管理JavaCard存储空间的系统还包括数据读写模块,用于对数据进行读写时,通过所述数据查找模块访问所要读写的数据,并进行读写操作。一种实施例中,所述数据头还包括数据属性。一种实施例中,数据分为Object、Package、App和File四种类型。根据第二方面,一种实施例中提供一种基于上述第一方面所述的系统的动态管理JavaCard存储空间的方法,包括:数据创建操作,所述数据创建操作包括:在相应数据类型的数据头子区域中寻找一有效性标识为无效值的数据头,将其有效性标识修改为有效值,然后在数据体区域中寻找一空间大于或等于期望空间值的空数据体,将数据存入该空数据体中,并将其地址写入先前找到的数据头中;数据查找操作,所述数据查找操作包括:根据所述数据索引所指示的数据类型和数据头序号查找数据头,再根据所查找到的数据头获得所对应的数据体的地址,根据所述数据体的地址访问数据;数据删除操作,所述数据删除操作包括:将当前数据体对应的数据头的有效性标识修改为无效值,并判断当前数据体的前后是否存在空数据体,当存在空数据体时则将当前数据体与空数据体合并成为一个新的空数据体,否则将当前数据体单独作为一个新的空数据体;数据调整操作,所述数据调整操作包括:判断当前数据体的前后是否存在空数据体,当存在空数据体时,则计算当前数据体和空数据体的总空间是否满足期望空间值,若满足本文档来自技高网...

【技术保护点】
1.一种动态管理Java Card存储空间的系统,其特征在于,包括:/n数据体区域,包括多个数据体,所述数据体用于存储数据,所述数据分为预定数目的类型;/n数据头区域,所述数据头区域被划分为与所述数据类型相对应的子区域,每个子区域包括固定数量的数据头,每个数据头对应一个数据体,数据头包括序号、有效性标识、所对应的数据体的地址,所述有效性标识包括有效值和无效值;/n数据索引,用于指示数据类型和数据头序号;/n数据创建模块,用于当创建数据时,在相应数据类型的数据头子区域中寻找一有效性标识为无效值的数据头,将其有效性标识修改为有效值,然后在数据体区域中寻找一空间大于或等于期望空间值的空数据体,将数据存入该空数据体中,并将其地址写入先前找到的数据头中,空数据体是指没有存储数据的数据体;/n数据查找模块,用于当查找数据时,根据所述数据索引所指示的数据类型和数据头序号查找数据头,再根据所查找到的数据头获得所对应的数据体的地址,根据所述数据体的地址访问数据;/n数据删除模块,用于当删除当前数据体的数据时,将当前数据体对应的数据头的有效性标识修改为无效值,并判断当前数据体的前后是否存在空数据体,当存在空数据体时则将当前数据体与空数据体合并成为一个新的空数据体,否则将当前数据体单独作为一个新的空数据体;/n数据调整模块,用于当扩展当前数据体的数据时,判断当前数据体的前后是否存在空数据体,当存在空数据体时,则计算当前数据体和空数据体的总空间是否满足期望空间值,若满足期望空间值则将当前数据体和空数据体合并成为一个新的数据体,用于存储扩展后的数据,并将新数据体的地址写入对应的数据头中;当当前数据体的前后不存在空数据体或者当前数据体和空数据体的总空间不满足期望空间值时,则通过所述数据创建模块存储扩展后的数据,并将当前数据体的数据删除。/n...

【技术特征摘要】
1.一种动态管理JavaCard存储空间的系统,其特征在于,包括:
数据体区域,包括多个数据体,所述数据体用于存储数据,所述数据分为预定数目的类型;
数据头区域,所述数据头区域被划分为与所述数据类型相对应的子区域,每个子区域包括固定数量的数据头,每个数据头对应一个数据体,数据头包括序号、有效性标识、所对应的数据体的地址,所述有效性标识包括有效值和无效值;
数据索引,用于指示数据类型和数据头序号;
数据创建模块,用于当创建数据时,在相应数据类型的数据头子区域中寻找一有效性标识为无效值的数据头,将其有效性标识修改为有效值,然后在数据体区域中寻找一空间大于或等于期望空间值的空数据体,将数据存入该空数据体中,并将其地址写入先前找到的数据头中,空数据体是指没有存储数据的数据体;
数据查找模块,用于当查找数据时,根据所述数据索引所指示的数据类型和数据头序号查找数据头,再根据所查找到的数据头获得所对应的数据体的地址,根据所述数据体的地址访问数据;
数据删除模块,用于当删除当前数据体的数据时,将当前数据体对应的数据头的有效性标识修改为无效值,并判断当前数据体的前后是否存在空数据体,当存在空数据体时则将当前数据体与空数据体合并成为一个新的空数据体,否则将当前数据体单独作为一个新的空数据体;
数据调整模块,用于当扩展当前数据体的数据时,判断当前数据体的前后是否存在空数据体,当存在空数据体时,则计算当前数据体和空数据体的总空间是否满足期望空间值,若满足期望空间值则将当前数据体和空数据体合并成为一个新的数据体,用于存储扩展后的数据,并将新数据体的地址写入对应的数据头中;当当前数据体的前后不存在空数据体或者当前数据体和空数据体的总空间不满足期望空间值时,则通过所述数据创建模块存储扩展后的数据,并将当前数据体的数据删除。


2.如权利要求1所述的系统,其特征在于,所述数据查找模块在查找数据头时,首先定位到所述数据索引所指示的数据类型所对应的数据头子区域,然后根据所述数据索引所指示的数据头序号确定数据头在该数据头子区域中的地址,从而查找到数据头,其中数据头在该数据头子区域中的地址的确定方式为:数据头序号×该类型数据头的长度。


3.如权利要求1所述的系统,其特征在于,所述数据体采用TLV编码,所述数据创建模块用于当创建数据时,在相应数据类型的数据头子区域中寻找一有效性标识为无效值的数据头,将其有效性标识修改为有效值,然后在数据体区域中寻找一空间大于或等于期望空间值的空数据体,将数据存入该空数据体中,并将其地址写入先前找到的数据头中;同时,若找到的空数据体的空间等于期望空间值,则将其Tag字段修改为有效标识,若找到的空数据体的空间大于期望空间值,则将其Tag字段修改为有效标识后,将剩余空间作为一个Tag字段为无效标识的空数据体;
所述数据删除模块用于当删除当前数据体的数据时,将当前数据体对应的数据头的有效性标识修改为无效值,并判断当前数据体的前后是否存在空数据体,当存在空数据体时则将当前数据体与空数据体合并成为一个新的空数据体,计算该新的空数据体的长度并写入Length字段中,并将Tag字段修改为无效标识,否则将当前数据体单独作为一个新的空数据体,将Tag字段修改为无效标识;
所述数据调整模块用于当扩展当前数据体的数据时,判断当前数据体的前后是否存在空数据体,当存在空数据体时,则计算当前数据体和空数据体的总空间是否满足期望空间值,若满足期望空间值则将当前数据体和空数据体合并成为一个新的数据体,用于存储扩展后的数据,并将新数据体的地址写入对应的数据头中,同时计算该新的数据体的长度并写入Length字段中,并将Tag字段和Length字段写到该新的数据体的最前端,若有剩余空间则将剩余空间作为一个Tag字段为无效标识的空数据体;当当前数据体的前后不存在空数据体或者当前数据体和空数据体的总空间不满足期望空间值时,则通过所述数据创建模块存储扩展后的数据,并将当前数据体的数据删除。


4.如权利要求3所述的系统,其特征在于,所述数据调整模块还用于当缩小当前数据体的数据时,计算缩小后的数据长度并写入Length字段中,并将剩余空间作为一个Tag字段为无效标识的空数据体。


5.如权利要求1所述的系统,其特征在于,还包括数据读写模块,用于对数据进行读写时,通过所述数据查找模块访问所要读写的数据,并进行读写操作。


6.如权利要求1所述的系统,其特征在于,所述数据头还包括数据属性。


7.如权利要求1所述的系统,其特征在于,数据分为Object、Package、App和File四种类型。


8.一种基于权利要求1-7中...

【专利技术属性】
技术研发人员:金辉欧阳雷
申请(专利权)人:深圳杰睿联科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1