基于智能卡的数据处理方法、装置及智能卡转让专利

申请号 : CN201310339964.4

文献号 : CN104346298B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑黎方刘智超陈德权聂国贤

申请人 : 北京数码视讯软件技术发展有限公司

摘要 :

本发明公开了一种基于智能卡的数据处理方法、装置及智能卡。其中,该方法包括:接收目标应用程序的数据处理请求;获取与数据处理请求对应的存储位置;在存储位置上对第一易失性数据进行数据处理,其中,存储位置位于智能卡中固定的一段物理内存中,第一易失性数据为目标应用程序所请求处理的数据。通过本发明,解决了现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,实现了多个应用共享RAM物理空间的效果。

权利要求 :

1.一种基于智能卡的数据处理方法,其特征在于,包括:

接收目标应用程序的数据处理请求;

获取与所述数据处理请求对应的存储位置;

在所述存储位置上对第一易失性数据进行数据处理,

其中,所述存储位置位于智能卡中固定的一段物理内存中,所述第一易失性数据为所述目标应用程序所请求处理的数据;

其中,在所述存储位置上对第一易失性数据进行数据处理的步骤包括:在所述数据处理请求为读取请求的情况下,从与所述第一易失性数据的第一数据标识对应的空闲单元中读取第一起始地址;获取与所述第一起始地址对应的第一空间;检测所述目标应用程序的目标程序标识与所述第一空间的标识字段中存储的当前应用程序的第一程序标识是否一致;在所述目标程序标识与所述第一程序标识一致的情况下,读取数据体起始地址,以获取所述第一易失性数据;

其中,所述第一数据标识为可编程只读存储器中空闲单元的索引数据,所述第一空间为可编程只读存储器中为属性头分配的空间。

2.根据权利要求1所述的方法,其特征在于,在所述存储位置上对第一易失性数据进行数据处理之前,所述方法还包括:检测所述智能卡中是否存在状态为运行态的当前应用程序;

在所述智能卡中存在状态为运行态的所述当前应用程序的情况下,检测所述当前应用程序与所述目标应用程序是否一致,在所述当前应用程序与所述目标应用程序不一致的情况下,检测所述当前应用程序与所述目标应用程序是否位于所述智能卡上相同的逻辑通道;

在所述当前应用程序与所述目标应用程序位于不同的逻辑通道的情况下,备份所述当前应用程序的当前数据;

在所述当前应用程序与所述目标应用程序位于相同的逻辑通道的情况下,清除所述存储位置上的所述当前数据。

3.根据权利要求2所述的方法,其特征在于,在所述存储位置上对第一易失性数据进行数据处理的步骤包括:在所述当前应用程序与所述目标应用程序位于不同的逻辑通道的情况下,检测所述目标应用程序的状态;

在所述目标应用程序的状态为挂起态的情况下,从挂起地址读取所述目标应用程序的备份数据,将所述备份数据和所述第一易失性数据写入所述存储位置,其中,所述挂起地址为预设的备份所述备份数据的固定地址;

在所述目标应用程序的状态为退选态的情况下,初始化所述目标应用程序的数据,将所述第一易失性数据写入所述存储位置。

4.根据权利要求2所述的方法,其特征在于,备份所述当前应用程序的当前数据的步骤包括:获取所述当前数据的备份地址;

将所述当前数据作为备份数据保存在所述备份地址中,其中,所述备份地址为预设的存储器中的固定地址。

5.根据权利要求1所述的方法,其特征在于,获取与所述数据处理请求对应的存储位置的步骤包括:获取与所述数据处理请求对应的属性参数;

在所述智能卡的随机存储器中获取与所述属性参数对应的所述存储位置。

6.根据权利要求5所述的方法,其特征在于,在所述数据处理请求为创建请求的情况下,所述属性参数包括:空间容量参数,所述第一易失性数据包括属性头和数据体,其中,在所述智能卡的随机存储器中获取与所述属性参数对应的所述存储位置的步骤包括:获取第一总长度,其中,所述第一总长度为所述目标应用程序已经创建的所有易失性数据的数据体的总长度;

在所述随机存储器中为所述目标应用程序分配所述存储位置,

其中,所述存储位置的起始地址为从所述物理内存的起始地址偏移所述第一总长度的位置,所述存储位置的长度为所述空间容量参数的值,所述空间容量参数为所述第一易失性数据的长度。

7.根据权利要求6所述的方法,其特征在于,在所述随机存储器中为所述目标应用程序分配所述存储位置之前,所述方法还包括:在所述智能卡的可编程只读存储器中寻找所述空闲单元,并将所述空闲单元的索引数据作为所述第一易失性数据的第一数据标识;

在可编程只读存储器中为所述属性头分配第一空间,将所述第一空间的第一起始地址写入所述空闲单元,其中,所述第一空间包括:标识字段、数据体起始地址字段和数据体长度字段;

将所述当前应用程序的第一程序标识、所述空间容量参数以及所述第一总长度的值分别写入所述标识字段、所述数据体长度字段以及所述数据体起始地址字段。

8.根据权利要求7所述的方法,其特征在于,所述属性参数包括:所述第一数据标识、相对于所述第一易失性数据的数据体的起始地址的第一偏移参数、第一目的地址参数以及读取长度,所述第一易失性数据的第二起始地址为所述存储位置的起始地址、所述数据体起始地址以及所述第一偏移参数的值之和,所述第一易失性数据的长度为所述读取长度;将所述第一易失性数据拷贝至所述第一目的地址参数指向的第一存储空间。

9.根据权利要求7所述的方法,其特征在于,在所述数据处理请求为更新请求的情况下,所述属性参数包括:所述第一数据标识、所述第一易失性数据的数据体的起始地址的第一偏移参数、源数据的起始地址参数以及更新长度,其中,在所述存储位置上对第一易失性数据进行数据处理的步骤包括:从与所述第一数据标识对应的所述空闲单元中读取第一起始地址;

获取与所述第一起始地址对应的第一空间;

检测所述目标应用程序的目标程序标识与所述第一空间的标识字段中存储的所述第一程序标识是否一致;

在所述目标程序标识与所述第一程序标识一致的情况下,读取数据体起始地址,以获取第二存储空间,其中,所述第二存储空间是所述存储位置的起始地址、所述数据体起始地址以及所述第一偏移参数的值之和指向的空间;

将所述第一易失性数据拷贝至第二存储空间,其中,所述第一易失性数据的起始地址为所述起始地址参数对应的地址,所述第一易失性数据的长度为所述更新长度。

10.根据权利要求7至9中任意一项所述的方法,其特征在于,在所述随机存储器中为所述目标应用程序分配所述存储位置之后,所述方法还包括:将所述第一总长度与所述空间容量参数之和作为第二总长度,并使用所述第二总长度更新所述第一总长度。

11.一种基于智能卡的数据处理装置,其特征在于,包括:

第一接收模块,用于接收目标应用程序的数据处理请求;

第一获取模块,用于获取与所述数据处理请求对应的存储位置;

第一处理模块,用于在所述存储位置上对第一易失性数据进行数据处理,其中,所述存储位置位于智能卡中固定的一段物理内存中,所述第一易失性数据为所述目标应用程序所请求处理的数据;

其中,所述第一处理模块用于通过以下步骤来在所述存储位置上对第一易失性数据进行数据处理:在所述数据处理请求为读取请求的情况下,从与所述第一易失性数据的第一数据标识对应的空闲单元中读取第一起始地址;获取与所述第一起始地址对应的第一空间;检测所述目标应用程序的目标程序标识与所述第一空间的标识字段中存储的当前应用程序的第一程序标识是否一致;在所述目标程序标识与所述第一程序标识一致的情况下,读取数据体起始地址,以获取所述第一易失性数据;

其中,所述第一数据标识为可编程只读存储器中空闲单元的索引数据,所述第一空间为可编程只读存储器中为属性头分配的空间。

12.一种智能卡,其特征在于,包括:

处理器,用于在接收到目标应用程序的数据处理请求之后,获取与所述数据处理请求对应的存储位置,然后在所述存储位置上对第一易失性数据进行数据处理,其中,所述存储位置位于智能卡中固定的一段物理内存中,所述第一易失性数据为所述目标应用程序所请求处理的数据;

其中,所述处理器用于通过以下步骤来在所述存储位置上对第一易失性数据进行数据处理:在所述数据处理请求为读取请求的情况下,从与所述第一易失性数据的第一数据标识对应的空闲单元中读取第一起始地址;获取与所述第一起始地址对应的第一空间;检测所述目标应用程序的目标程序标识与所述第一空间的标识字段中存储的当前应用程序的第一程序标识是否一致;在所述目标程序标识与所述第一程序标识一致的情况下,读取数据体起始地址,以获取所述第一易失性数据;

其中,所述第一数据标识为可编程只读存储器中空闲单元的索引数据,所述第一空间为可编程只读存储器中为属性头分配的空间。

13.根据权利要求12所述的智能卡,其特征在于,所述智能卡还包括:可编程只读存储器,用于保存来自应用程序的程序易失性数据的属性头;

随机存储器,包括第一区随机存储器和第二区随机存储器,其中,第一区随机存储器用于保存来自系统的系统易失性数据的数据体,所述第二区随机存储器用于保存所述程序易失性数据的数据体。

14.根据权利要求13所述的智能卡,其特征在于,所述可编程只读存储器包括:第一可编程只读存储器,用于保存一个或多个程序易失性数据的属性头,每个所述程序易失性数据的属性头占用一个子空间,每个所述子空间包括:标识字段、数据体起始地址字段和数据体长度字段,其中,所述标识字段,用于保存所述应用程序的程序标识;

所述数据体起始地址字段,用于保存所述数据体在所述随机存储器中的地址参数;

所述数据体长度字段,用于保存所述程序易失性数据的数据体的长度数据;

第二可编程只读存储器,包括一个或多个空闲单元,每个所述空闲单元分别用于保存一个所述属性头所占所述子空间的第一起始地址;

第三可编程只读存储器,用于保存所述应用程序已经创建的程序易失性数据的数据体的总长度;

第四可编程只读存储器,包括多个分区,每个分区用于保存一个所述应用程序的备份数据。

说明书 :

基于智能卡的数据处理方法、装置及智能卡

技术领域

[0001] 本发明涉及数据处理领域,具体而言,涉及一种基于智能卡的数据处理方法、装置及智能卡。

背景技术

[0002] 智能卡一般看作由硬件(HD,Hardware)、操作系统(OS,Operation System)、应用程序(APP,Application)三部分组成,其中,应用程序可以包括多个,例如:应用程序1、应用程序2、……应用程序n,如图1所示。其中,硬件由中央处理器CPU、可编程只读存储器EEPROM、随机存储器RAM、只读存储器ROM组成。OS和APP的代码放在ROM中,OS和APP的数据放在EEPROM或RAM中。一般将放在EEPROM中的数据称为非易失性数据(NVD,Nonvolatile Data),放在RAM中的数据称为易失性数据(VD,Volatile Data)。现有技术中的智能卡上的易失性数据在内存中的使用分布一般采用如图2所示的线性使用方法,该RAM的首地址为RamStartAddress,尾地址为RamEndAddress,在图2中将来自系统的数据记作系统数据,将来自第一应用程序的易失性数据记作第一应用数据,来自第二应用程序的易失性数据记作第二应用数据,……来自第n应用程序的易失性数据记作第n应用数据。图2所示的RAM使用方法,OS的使用空间ram_size_os,APP1至APPn分别使用空间ram_size_app1,……,ram_size_appn。总的占用RAM空间为ram_size_total=ram_size_os+(ram_size_app1+……+ram_size_appn),这个总和随着APP的数量增加而增加。
[0003] 智能卡的RAM资源非常有限,当APP较多时,采用图2所示的使用方法,RAM资源往往不够用。
[0004] 针对现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,目前尚未提出有效的解决方案。

发明内容

[0005] 针对相关技术智能卡在多应用使用环境下RAM物理空间不足的问题,目前尚未提出有效的解决方案,为此,本发明的主要目的在于提供一种基于智能卡的数据处理方法、装置及智能卡,以解决上述问题。
[0006] 为了实现上述目的,根据本发明的一个方面,提供了一种基于智能卡的数据处理方法,该方法包括:接收目标应用程序的数据处理请求;获取与数据处理请求对应的存储位置;在存储位置上对第一易失性数据进行数据处理,其中,存储位置位于智能卡中固定的一段物理内存中,第一易失性数据为目标应用程序所请求处理的数据。
[0007] 进一步地,在存储位置上对第一易失性数据进行数据处理之前,方法还包括:检测智能卡中是否存在状态为运行态的当前应用程序;在智能卡中存在状态为运行态的当前应用程序的情况下,检测当前应用程序与目标应用程序是否一致,在当前应用程序与目标应用程序不一致的情况下,检测当前应用程序与目标应用程序是否位于智能卡上相同的逻辑通道;在当前应用程序与目标应用程序位于不同的逻辑通道的情况下,备份当前应用程序的当前数据;在当前应用程序与目标应用程序位于相同的逻辑通道的情况下,清除存储位置上的当前数据。
[0008] 进一步地,在存储位置上对第一易失性数据进行数据处理的步骤包括:在当前应用程序与目标应用程序位于不同的逻辑通道的情况下,检测目标应用程序的状态;在目标应用程序的状态为挂起态的情况下,从挂起地址读取目标应用程序的备份数据,将备份数据和第一易失性数据写入存储位置,其中,挂起地址为预设的备份该备份数据的固定地址;在目标应用程序的状态为退选态的情况下,初始化目标应用程序的数据,将第一易失性数据写入存储位置。
[0009] 进一步地,备份当前应用程序的当前数据的步骤包括:获取当前数据的备份地址;将当前数据作为备份数据保存在备份地址中,其中,备份地址为预设的存储器中的固定地址。
[0010] 进一步地,获取与数据处理请求对应的存储位置的步骤包括:获取与数据处理请求对应的属性参数;在智能卡的随机存储器中获取与属性参数对应的存储位置。
[0011] 进一步地,数据处理请求包括创建请求,属性参数包括:空间容量参数,第一易失性数据包括属性头和数据体,其中,在智能卡的随机存储器中获取与属性参数对应的存储位置的步骤包括:获取第一总长度,其中,第一总长度为目标应用程序已经创建的所有易失性数据的数据体的总长度;在随机存储器中为目标应用程序分配存储位置,其中,存储位置的起始地址为从物理内存的起始地址偏移第一总长度的位置,存储位置的长度为空间容量参数的值,空间容量参数为第一易失性数据的长度。
[0012] 进一步地,在随机存储器中为目标应用程序分配存储位置之前,方法还包括:在智能卡的可编程只读存储器中寻找空闲单元,并将空闲单元的索引数据作为第一易失性数据的第一数据标识;在可编程只读存储器中为属性头分配第一空间,将第一空间的第一起始地址写入空闲单元,其中,第一空间包括:标识字段、数据体起始地址字段和数据体长度字段;将当前应用程序的第一程序标识、空间容量参数以及第一总长度的值分别写入标识字段、数据体长度字段以及数据体起始地址字段。
[0013] 进一步地,数据处理请求包括读取请求,属性参数包括:第一数据标识、相对于第一易失性数据的数据体的起始地址的第一偏移参数、第一目的地址参数以及读取长度,其中,在存储位置上对第一易失性数据进行数据处理的步骤包括:从与第一数据标识对应的空闲单元中读取第一起始地址;获取与第一起始地址对应的第一空间;检测目标应用程序的目标程序标识与第一空间的标识字段中存储的第一程序标识是否一致;在目标程序标识与第一程序标识一致的情况下,读取数据体起始地址,以获取第一易失性数据,其中,第一易失性数据的第二起始地址为存储位置的起始地址、数据体起始地址以及第一偏移参数的值之和,第一易失性数据的长度为读取长度;将第一易失性数据拷贝至第一目的地址参数指向的第一存储空间。
[0014] 进一步地,数据处理请求包括更新请求,属性参数包括:第一数据标识、第一易失性数据的数据体的起始地址的第一偏移参数、源数据的起始地址参数以及更新长度,其中,在存储位置上对第一易失性数据进行数据处理的步骤包括:从与第一数据标识对应的空闲单元中读取第一起始地址;获取与第一起始地址对应的第一空间;检测目标应用程序的目标程序标识与第一空间的标识字段中存储的第一程序标识是否一致;在目标程序标识与第一程序标识一致的情况下,读取数据体起始地址,以获取第二存储空间,其中,第二存储空间是存储位置的起始地址、数据体起始地址以及第一偏移参数的值之和指向的空间;将第一易失性数据拷贝至第二存储空间,其中,第一易失性数据的起始地址为起始地址参数对应的地址,第一易失性数据的长度为更新长度。
[0015] 进一步地,在随机存储器中为目标应用程序分配存储位置之后,方法还包括:将第一总长度与空间容量参数之和作为第二总长度,并使用第二总长度更新第一总长度。
[0016] 为了实现上述目的,根据本发明的另一方面,提供了一种基于智能卡的数据处理装置,该装置包括:第一接收模块,用于接收目标应用程序的数据处理请求;第一获取模块,用于获取与数据处理请求对应的存储位置;第一处理模块,用于在存储位置上对第一易失性数据进行数据处理,其中,存储位置位于智能卡中固定的一段物理内存中,第一易失性数据为目标应用程序所请求处理的数据。
[0017] 为了实现上述目的,根据本发明的另一方面,提供了一种智能卡,该智能卡包括:处理器,用于在接收到目标应用程序的数据处理请求之后,获取与数据处理请求对应的存储位置,然后在存储位置上对第一易失性数据进行数据处理,其中,存储位置位于智能卡中固定的一段物理内存中,第一易失性数据为目标应用程序所请求处理的数据。
[0018] 进一步地,智能卡还包括:可编程只读存储器,用于保存来自应用程序的程序易失性数据的属性头;随机存储器,包括第一区随机存储器和第二区随机存储器,其中,第一区随机存储器用于保存来自系统的系统易失性数据的数据体,第二区随机存储器用于保存程序易失性数据的数据体。
[0019] 进一步地,可编程只读存储器包括:第一可编程只读存储器,用于保存一个或多个程序易失性数据的属性头,每个程序易失性数据的属性头占用一个子空间,每个子空间包括:标识字段、数据体起始地址字段和数据体长度字段,其中,标识字段,用于保存应用程序的程序标识;数据体起始地址字段,用于保存数据体在随机存储器中的地址参数;数据体长度字段,用于保存程序易失性数据的数据体的长度数据;第二可编程只读存储器,包括一个或多个空闲单元,每个空闲单元分别用于保存一个属性头所占子空间的第一起始地址;第三可编程只读存储器,用于保存应用程序已经创建的程序易失性数据的数据体的总长度;第四可编程只读存储器,包括多个分区,每个分区用于保存一个应用程序的备份数据。
[0020] 通过本发明,在处理器中的第一接收模块接收到目标应用程序的数据处理请求之后,通过第一获取模块获取与数据处理请求对应的存储位置,然后使用第一处理模块将目标应用程序请求处理的第一易失性数据在该存储位置进行处理,其中,该存储位置位于智能卡中固定的一段物理内存中,这样可以将来自任意应用程序APP的第一易失性数据均保存在该固定的一段物理内存中,从而可以让所有的APP共享一段物理RAM内存,从而达到节省物理RAM空间的目的,解决了现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,实现了多个应用共享RAM物理空间的效果。

附图说明

[0021] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0022] 图1是现有技术中智能卡的结构示意图;
[0023] 图2是现有技术中智能卡的易失性数据在RAM分布示意图;
[0024] 图3是根据本发明实施例的基于智能卡的数据处理装置的示意图;
[0025] 图4是根据本发明实施例在RAM中OVD的数据处理分布示意图;
[0026] 图5是根据本发明实施例AVD的数据结构图;
[0027] 图6是根据本发明实施例在RAM中AVD的数据处理分布示意图
[0028] 图7是根据本发明实施例的基于智能卡的数据处理方法的流程图;
[0029] 图8是根据图7所示实施例的RAM的数据处理的示意图;以及
[0030] 图9是根据图7所示另一实施例的RAM的数据处理的示意图。

具体实施方式

[0031] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0032] 图3是根据本发明实施例的基于智能卡的数据处理装置的结构示意图。如图3所示,第一接收模块10,用于接收目标应用程序的数据处理请求;第一获取模块30,用于获取与数据处理请求对应的存储位置;第一处理模块50,用于在存储位置上对第一易失性数据进行数据处理,其中,存储位置位于智能卡中固定的一段物理内存中,第一易失性数据为目标应用程序所请求处理的数据。其中,数据处理的过程包括对数据进行存储、读取、修改、替换、初始化、擦除等各种数据处理过程。
[0033] 采用本发明,在处理器中的第一接收模块接收到目标应用程序的数据处理请求之后,通过第一获取模块获取与数据处理请求对应的存储位置,然后使用第一处理模块将目标应用程序请求处理的第一易失性数据在该存储位置进行处理,其中,该存储位置位于智能卡中固定的一段物理内存中,这样可以将来自任意应用程序APP的第一易失性数据均在该固定的一段物理内存中处理,从而可以让所有的APP共享一段物理RAM内存,从而达到节省物理RAM空间的目的,解决了现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,实现了多个应用共享RAM物理空间的效果。
[0034] 根据本发明的上述实施例,装置还可以包括:第一检测模块,用于检测当前应用程序与目标应用程序是否一致,第二处理模块,用于在当前应用程序与目标应用程序不一致的情况下,清除存储位置上的数据,其中,当前应用程序为存储位置内当前存储数据对应的应用程序。
[0035] 在本发明的上述实施例中,第一获取模块可以包括:第一子获取模块,用于获取与数据处理请求对应的属性参数;第二子获取模块,用于在智能卡的随机存储器中获取与属性参数对应的存储位置。
[0036] 根据本发明的上述实施例,装置还包括:第二检测模块,用于检测智能卡中是否存在状态为运行态的当前应用程序;第三检测模块,用于在智能卡中存在状态为运行态的当前应用程序的情况下,检测当前应用程序与目标应用程序是否一致,第四检测模块,用于在当前应用程序与目标应用程序不一致的情况下,检测当前应用程序与目标应用程序是否位于智能卡上相同的逻辑通道;第三处理模块,用于在当前应用程序与目标应用程序位于不同的逻辑通道的情况下,备份当前应用程序的当前数据;第四处理模块,用于在当前应用程序与目标应用程序位于相同的逻辑通道的情况下,清除存储位置上的当前数据。
[0037] 在本发明的上述实施例中,所述第一处理模块可以包括:第一子检测模块,用于在当前应用程序与目标应用程序位于不同的逻辑通道的情况下,检测目标应用程序的状态;第一子处理模块,用于在目标应用程序的状态为挂起态的情况下,从挂起地址读取目标应用程序的备份数据,将备份数据和第一易失性数据写入存储位置,其中,挂起地址为预设的备份该备份数据的固定地址;第二子处理模块,用于在目标应用程序的状态为退选态的情况下,初始化目标应用程序的数据,将第一易失性数据写入存储位置。
[0038] 根据本发明的上述实施例,第三处理模块可以包括:第三子获取模块,用于获取当前数据的备份地址;第三子处理模块,用于将当前数据作为备份数据保存在备份地址中,其中,备份地址为预设的存储器中的固定地址。
[0039] 本发明还提供了一种智能卡,该智能卡可以包括:处理器,用于在接收到目标应用程序的数据处理请求之后,获取与数据处理请求对应的存储位置,然后在存储位置上对第一易失性数据进行数据处理,其中,存储位置位于智能卡中固定的一段物理内存中,第一易失性数据为目标应用程序所请求处理的数据。
[0040] 采用本发明,在处理器中的第一接收模块接收到目标应用程序的数据处理请求之后,通过第一获取模块获取与数据处理请求对应的存储位置,然后使用第一处理模块将目标应用程序请求处理的第一易失性数据在该存储位置进行处理,其中,该存储位置位于智能卡中固定的一段物理内存中,这样可以将来自任意应用程序APP的第一易失性数据均保存在该固定的一段物理内存中,从而可以让所有的APP共享一段物理RAM内存,从而达到节省物理RAM空间的目的,解决了现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,实现了多个应用共享RAM物理空间的效果。
[0041] 在本发明的上述实施例中,智能卡还可以包括:可编程只读存储器,用于保存来自应用程序的程序易失性数据的属性头;随机存储器,包括第一区随机存储器和第二区随机存储器,其中,第一区随机存储器用于保存来自系统的系统易失性数据的数据体,第二区随机存储器用于保存程序易失性数据的数据体。
[0042] 具体地,可编程只读存储器包括:第一可编程只读存储器,用于保存一个或多个程序易失性数据的属性头,每个程序易失性数据的属性头占用一个子空间,每个子空间包括:标识字段、数据体起始地址字段和数据体长度字段,其中,标识字段,用于保存应用程序的程序标识;数据体起始地址字段,用于保存数据体在随机存储器中的地址参数;数据体长度字段,用于保存保存程序易失性数据的数据体的长度数据,也即上述实施例中的空间容量参数;第二可编程只读存储器,包括一个或多个空闲单元,每个空闲单元分别用于保存一个属性头所占子空间的第一起始地址;第三可编程只读存储器,用于保存应用程序已经创建的程序易失性数据的数据体的总长度;第四可编程只读存储器,包括多个分区,每个分区用于保存一个应用程序的备份数据。
[0043] 具体地,可以为系统中的每个应用程序设置一个应用标识符(AID,ApplicationIdentifier),AID的值从阿拉伯数字0开始从小到大排列。处理器每次调用应用程序(APP)的时候,通过AID来选中APP:智能卡的卡外实体发送选择应用程序的选择指令,该选择指令指定了AID,处理器的操作系统模块接收该选择指令之后,记录AID,并将该选择指令传递给该AID对应的APP,以达到APP和卡外实体交互的目的。
[0044] 在本发明的上述实施例中,将属于操作系统的系统易失性数据简称为OVD(OS VD),将属于APP的程序易失性数据简称为AVD(Application VD)。
[0045] 在本发明的上述实施例中,随机存储器可以包括:第一区随机存储器和第二区随机存储器,第一区随机存储器用于保存来自系统的系统易失性数据的数据体,第二区随机存储器用于保存来自应用程序的程序易失性数据的数据体,第二区随机存储器即为上述实施例中的存储位置,也即为固定的用于处理来自应用程序的第一易失性数据的数据体的物理内存。其中,在一个时刻RAM_APP上可以只处理当前应用程序的APP的易失性数据AVD。
[0046] 具体地,将智能卡上的RAM空间分为两个区随机存储器,其中一个RAM_OS用于存储来自操作系统模块的数据,另一个RAM_AP用于存储来自APP的数据,RAM_OS的地址区间为RAM_OSStartAddress~RAM_OS EndAddress,RAM_AP的地址区间为RAM_APP StartAddress~RAM_APPEndAddress。
[0047] 进一步地,还可以为每一个来自操作系统的系统易失性数据OVD分配一个标识符OVDID(OVD Identifier),该OVDID取值于该OVD的数据体在RAM_OS中的首地址。每一个OVD具有一个数据体(Body),OVD的Body在RAM_OS(RAM的第一区随机存储器)中分布如图4所示,在RAM中,来自操作系统的系统易失性数据OVD的数据体:第一系统数据体、第二系统数据体、……第m系统数据体依次从第一区首地址(RAM_OS StartAddress)开始保存,由图4可知,来自操作系统的系统易失性数据OVD的数据体并不能将整个第一区随机存储器占满,也即到第一区尾地址(RAM_OS EndAddress)还可以有空闲区域。如图6所示,在RAM中,来自应用程序APPn的程序易失性数据AVD的数据体第一应用数据体、第二应用数据体、……第m应用数据体依次从第二区首地址(RAM_APP StartAddress)开始保存,由图6所示,第二区首地址与第二区尾地址之间还存在空闲区域,并且在RAM_APP中只保存有当前应用程序的数据,其中,当前应用程序具有的多个数据体依次保存在RAM_APP中,并且如图4和图6所示,在各自的存储区域内均有空闲的区域。
[0048] 智能卡还包括:可编程只读存储器EEPROM,可编程只读存储器EEPROM可以为4个。
[0049] 其中,第一块EEPROM(即第二可编程只读存储器)依次存放AVD的Header。在本申请中该EEPROM可以为EEPROM_AVDHR。
[0050] 第二块EEPROM(即第一可编程只读存储器)可以看做是4字节为一个单元的数组,数组的索引将会作为AVDID,数组第m个单元存储的是AVDID为m的AVD的Header的首地址。在本申请中该EEPROM可以为EEPROM_AVDID。
[0051] 第三块EEPROM(即第三可编程只读存储器)可以看作以4字节为一个单元的数组,数组的索引对应APP的AID,每个单元存储AID对应的APP的拥有的所有AVD在RAM_APP中已经占据的空间之和。在本申请中该EEPROM可以为EEPROM_AVDSIZE。
[0052] 第四块EEPROM(即第四可编程只读存储器)有CSTNum个单元,分别为第1,2,…CSTNum个单元,每个单元的大小同RAM_APP的大小。并且通过智能卡的易失性数据管理模块维护单元序号i和APP AID的映射关系。每个单元用来备份或还原映射APP的所有的AVD。备份操作发生在处于运行态的APP发生改变时,可以将这块EEPROM称为EEPROM_BACKUP,其中,在本申请中将智能卡上并发APP的个数最大支持个数记作ConcurrentSelectTotalNumer,简写为CSTNum。
[0053] 具体地,为来自APP的程序易失性数据AVD设定标识符AVDID(AVD Identifier),该AVDID的值从阿拉伯数字0替增。每一个AVD均可以包括:属性头(Header)和数据体(Body)。Header放在EEPROM中,即上述实施例的EEPROM_AVDHR中,Body放置在RAM_APP中,其中,Header具有如图5所示的数据结构,每个AVD的Header均可以包括三个字段:标识字段(Aid字段)、数据体长度字段(Body_Size字段)、数据体起始地址字段(Body_Address,即数据体在RAM中的地址)。其中,Aid字段标示了该AVD隶属的APP的程序标识AID,该字段为2个字节;
Body_Size字段中存储着AVD的Body的大小,该字段为4个字节;Body_Address字段中记录了Body在RAM_APP中的首地址,该字段为4个字节。Header占据的空间大小记作Header_Size,Header_Size=10个字节。
[0054] 智能卡通过APDU指令与卡外实体交互,卡外实体首先选择某一个APP,然后和选中的APP交互信息。在实际使用场景中,卡外实体通常选中一个APP并和该APP交互信息完成后,再次选中另外一个APP并交互信息,因此在一段时间内系统内只存在唯一一个被选中的APP。由于OS承担APP的选择和APDU指令的分发,属于OS的系统易失性数据必须始终维护在RAM中,而APP中只有当前被选择的APP的程序易失性数据才需要维护在RAM中,因此,本申请的上述实施例中,处理器在获取到来自应用程序的数据处理请求的情况下,获取与该数据处理请求对应的存储位置,在该存储位置对AVD进行数据处理,其中,该存储位置为一个固定位置,来自任意一个APP的AVD均会存储在该位置RAM_APP。从而可以让所有的APP共享一段物理RAM内存,从而达到节省物理RAM空间的目的,解决了现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,实现了多个应用共享RAM物理空间的效果。
[0055] 具体地,支持多应用的智能卡操作系统一般支持多个逻辑通道,将智能卡操作系统支持的逻辑通道总数记作ChannelTotalNum。优选地,逻辑通道的个数可以为20个,分别标识为Channel1~channel20。
[0056] 卡外实体发送给智能卡的每条指令的第一个字节中都附带了逻辑通道信息,操作系统首先判断当前逻辑通道上有无APP被选中,如果有APP被选中,则将该指令传递给该APP处理;如果没有,操作系统直接返回错误信息给卡外实体。
[0057] 在本申请的上述实施例中,APP可以具有三种状态:退选态、运行态、挂起态。智能卡重新上电后,所有的APP都处于退选态;通过发送选择应用指令选中APP,在接收到其他的交互指令之前,APP处于运行态;如果在相同逻辑通道上,前后分别选择了APP1和APP2,则APP1从运行态变为退选态,而APP2从退选态变为运行态;如果多个逻辑通道上选择了不同的应用,例如,在Channel1和Channel2上分别选择了APP1和APP2,若当前指令正被APP1处理,则APP1处于运行态,APP2处于挂起态;某一时刻,只有唯一一个APP处于运行态。其中,退选态为应用程序没有被选中的状态,运行态为应用程序被选中正在处理数据的状态,挂起态为应用程序的数据存储在逻辑通道上并且当前没有处理数据的状态。
[0058] 根据本发明的上述实施例,只有处于运行态的APP才会占用RAM的物理空间(如上述实施例中的存储位置),从而可以让所有的APP共享一段物理RAM内存,从而达到节省物理RAM空间的目的,解决了现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,实现了多个应用共享RAM物理空间的效果。
[0059] 图7是根据本发明实施例的基于智能卡的数据处理方法的流程图。如图7所示,该方法可以包括如下步骤:
[0060] 步骤S102,接收目标应用程序的数据处理请求。
[0061] 步骤S104,获取与数据处理请求对应的存储位置。
[0062] 步骤S106,在存储位置上对第一易失性数据进行数据处理,其中,存储位置位于智能卡中固定的一段物理内存中,第一易失性数据为目标应用程序所请求处理的数据。
[0063] 采用本发明,在通过图3所示的第一接收模块接收到目标应用程序的数据处理请求之后,通过第一获取模块获取与数据处理请求对应的存储位置,然后使用第一处理模块将目标应用程序请求处理的第一易失性数据保存在该存储位置,其中,该存储位置位于智能卡中固定的一段物理内存中,这样可以将来自任意应用程序APP的第一易失性数据均保存在该固定的一段物理内存中,从而可以让所有的APP共享一段物理RAM内存,从而达到节省物理RAM空间的目的,解决了现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,实现了多个应用共享RAM物理空间的效果。
[0064] 根据本发明的上述实施例,在接收目标应用程序的数据处理请求之后,目标应用程序的状态将由挂起态或者退选态变更为运行态。
[0065] 在本发明的上述实施例中,获取与数据处理请求对应的存储位置的步骤可以包括:获取与数据处理请求对应的属性参数;在智能卡的随机存储器中获取与属性参数对应的存储位置。
[0066] 具体地,目标应用程序的数据处理请求的中携带有目标逻辑通道信息和AID,其中,AID为对应每个应用程序的唯一标识,在接收到目标应用程序的数据处理请求之后,从数据处理请求目标应用程序的AID,并建立目标逻辑通道信息与AID之间的映射关系,由于目标逻辑通道信息与存储位置是具有关联关系的,在接收到数据处理请求之后,可以根据数据处理请求获取对应的存储位置,并根据关联关系获取与存储位置对应的目标逻辑通道的位置,并且携带目标逻辑通道信息的处理数据的交互指令(即数据处理请求)会传递给具有AID标识的APP,则对应该APP的第一易失性数据会在目标逻辑通道上进行处理,从而达到APP和卡外实体进行数据交互的目的。
[0067] 在本发明的上述实施例中,数据处理请求可以包括创建请求,其中,在存储位置上对第一易失性数据进行数据处理之前,方法还可以包括:检测当前应用程序与目标应用程序是否一致,在当前应用程序与目标应用程序不一致的情况下,清除存储位置上的当前数据,其中,当前应用程序为存储位置内当前存储数据对应的应用程序。优选地,在当前应用程序与目标应用程序不一致的情况下,还可以备份当前存储数据。
[0068] 具体地,在数据处理装置接收到创建请求之后,检测存储位置上存储的数据对应的当前应用程序与目标应用程序是否一致,其中,在一致的情况下,清除存储位置上的当前存储数据。具体地,清除存储位置上的数据可以通过直接擦除存储位置上的数据,将存储位置上的数据全部清零来实现,也可以通过格式化存储位置上的数据,将存储位置上的数据全部置为零来实现。
[0069] 具体地,如果是清除前一刻被选中APP的所有AVD的请求,则将RAM_APP全部清除为0;如果是初始化当前选择APP的所有AVD的请求,则将RAM_APP全部初始化为0,以创建当前选择的应用程序的AVD,以供后续的数据处理(如:读取或更新处理等)。
[0070] 例如,APPi和APPj先后对易失性数据管理模块发起创建或读取或更新AVD请求时,操作系统模块将会在APPj被选中时,对易失性数据管理模块发起清除前一刻被选中APPi的所有AVD的请求,并随后发起初始化被选择APPj的所有AVD的请求。
[0071] 具体地,在前一时刻智能卡的随机存储器的存储位置存储的是APPi的易失性数据(即当前数据,也可以称之为当前存储数据),如图8所示,第二区随机存储器首地址(RAM_APPStartAddress)的值与第一区随机存储器尾地址(RAM_OS EndAddress)的值相等,从存储位置RAM_APP的首地址RAM_APP StartAddress开始,依次保存的是APPi的应用i的第一数据体、应用i的第二数据体……应用i的第x数据体。
[0072] 在处理器的操作系统模块接收到应用程序APPj(即上述实施例中的目标应用程序,该程序为AID=j的APP)的数据处理请求时,即APPj被选中时,检测到存储位置存储的数据是APPi的当前数据,则对易失性数据管理模块发起清除前一刻被选中的APPi的所有AVD的指令,并随后发起初始化被选择APPj的所有AVD的请求,将APPj的AVD保存在存储位置上,如图8所示,即从存储位置RAM_APP的首地址RAM_APP StartAddress开始,依次保存的是APPj的应用j的第一数据体、应用j的第二数据体……应用j的第x数据体。
[0073] 如图8所示,采用本发明的上述实施例,通过将随机存储器分为两个区,在其中一个区保存来自系统的系统易失性数据,在另一个区保存来自应用程序的程序易失性数据,图8中的第一区随机存储器保存的来自系统的系统易失性数据的第一系统数据体、第二系统数据体、……、第m系统数据体,在从选中应用程序i更换至选中应用程序j时,系统的系统易失性数据的存储并没有发生变化,变化的只是第二区随机存储器的数据,并且保存来自应用程序的程序易失性数据的区内在固定的一段物理内存中保存第一易失性数据从应用程序i的数据变更为应用程序的j的数据,系统控制了多个应用程序,但是并没有占用更多的内存,并且可以使得RAM中可以存在空闲的区域。
[0074] 更具体地,通过指令清除前一刻被选中APPi的所有AVD,则对易失性数据管理模块传入APPi的AID参数i;通过指令初始化APPj的所有AVD,则对易失性数据管理模块传入APPj的AID参数j。
[0075] 在本发明的上述实施例中,在存储位置上对第一易失性数据进行数据处理之前,方法还可以包括:检测智能卡中是否存在状态为运行态的当前应用程序;在智能卡中存在状态为运行态的当前应用程序的情况下,检测当前应用程序与目标应用程序是否一致,在当前应用程序与目标应用程序不一致的情况下,检测当前应用程序与目标应用程序是否位于智能卡上相同的逻辑通道;在当前应用程序与目标应用程序位于不同的逻辑通道的情况下,备份当前应用程序的当前数据;在当前应用程序与目标应用程序位于相同的逻辑通道的情况下,清除存储位置上的当前数据。
[0076] 根据本发明的上述实施例,在存储位置上对第一易失性数据进行数据处理的步骤可以包括:在当前应用程序与目标应用程序位于不同的逻辑通道的情况下,检测目标应用程序的状态;在目标应用程序的状态为挂起态的情况下,从挂起地址读取目标应用程序的备份数据,将备份数据和第一易失性数据写入存储位置,其中,挂起地址为预设的备份该备份数据的固定地址;在目标应用程序的状态为退选态的情况下,初始化目标应用程序的数据,将第一易失性数据写入存储位置。
[0077] 具体地,备份当前应用程序的当前数据的步骤可以包括:获取与当前数据对应的备份地址;将当前数据作为备份数据保存在备份地址中,其中,备份地址为预设的固定存储器中的地址。其中,上述实施例中的备份地址与挂起地址均位于第四可编程只读存储器中。
[0078] 具体地,可以通过智能卡的操作系统模块维护逻辑通道号Channel与在该逻辑通道Channel上选中APP的AID及状态的映射关系,并且操作系统模块可以将卡外实体发送的指令(即数据处理请求)传递给AID标识的APP,如果智能卡有ChannelTotalNum个逻辑通道,则操作系统需要维护ChannelTotalNum个映射关系。在智能卡上电时,所有的Channel都与0映射,表示该逻辑通道上没有应用被选中,并且所有的APP状态为退选态。
[0079] 例如,操作系统模块在目标应用程序APPj(即AID=j的APP,其中,APP的AID从阿拉伯数字0递增,j为自然数)被选中时,如果智能卡上没有APP处于运行态,对易失性数据管理模块发起初始化APPj的所有AVD的请求,并且将APPj的状态修改为运行态。如果有应用程序处于运行态,并且当前应用程序为APPi处于运行态(i!=j),则检测当前应用程序APPi和APPj是否位于相同的逻辑通道中,在当前应用程序APPi和目标应用程序APPj位于不同的逻辑通道中的情况下,对易失性数据管理模块发起备份当前应用程序APPi的所有当前的易失性数据AVD的请求,并检测目标应用程序的当前状态,具体地,在目标应用程序APPj处于挂起态的情况下,对易失性数据管理模块发起还原目标应用程序APPj的所有AVD的请求,即从挂起地址读取目标应用程序的备份数据,然后根据数据处理请求对目标应用程序进行相应的数据交互处理,如,将备份数据和第一易失性数据写入相应的存储位置;在目标应用程序APPj处于退选态的情况下,对易失性数据管理模块发起初始化目标应用程序APPj的所有AVD的请求,并将当前应用程序APPi的状态修改为挂起态,将目标应用程序APPj的状态修改为运行态。
[0080] 在当前应用程序APPi和目标应用程序APPj位于相同逻辑通道的情况下,发起清除当前应用程序APPi的所有AVD的应用请求,并发起初始化目标应用程序APPj所有AVD的应用请求,并分别将当前应用程序APPi和目标应用程序APPj的状态分别置为退选态和运行态。在目标应用程序APPj处于运行态的情况下,直接进行数据处理。如果应用请求是备份或清除当前APPi的所有AVD,则对易失性数据管理模块传入当前APPi的AID参数i;如果应用请求是还原或初始化APPj的所有AVD,则对易失性数据管理模块传入APPj的AID参数j。
[0081] 在本发明的另一个实施例中,如图9所示,第四可编程只读存储器包括多个区(第1备份空间,第2备份空间,……,第CSTNum备份空间),每个区分别用于存储一个应用程序的第一易失性数据,与图8相类似的,随机存储器分为两个区,在其中一个区保存来自系统的第一易失性数据,在另一个区保存来自应用程序的第一易失性数据,其中,第一区随机存储器(从第一区随机存储器首地址至第一区随机存储器尾地址)保存的来自系统的第一易失性数据的第一系统数据体、第二系统数据体、……、第m系统数据体,第二区随机存储器(从第二区随机存储器首地址至第二区随机存储器尾地址)保存在来自应用程序的数据体。
[0082] 如图9所示,在逻辑通道lm和逻辑通道ln上先后分别选中应用i和应用j时(此时,应用i为当前应用程序,应用j为目标应用程序),系统会将应用i的所有易失性数据的数据体(也即当前数据)备份在第四可编程只读存储器的第1备份空间中,并在第二区随机存储器中保存应用j的第一数据体、应用j的第二数据体、……、应用j的第y数据体,在该种情况下,将应用i的状态由运行态修改为挂起态,将应用j的状态由退选态修改为运行态。在逻辑通道1p上选中应用k时(此时,应用k为目标应用程序,应用j为当前应用程序),将应用j的所有易失性数据的数据体(包括应用j的第一数据体、应用j的第二数据体、……、应用j的第y数据体)备份在第2备份空间,并将应用k的第一数据体、应用k的第二数据体、……、应用k的第z数据体保存在存储位置上,并且将应用j的状态由运行态修改为挂起态,将应用k的状态由退选态修改为运行态。如果此时,用户通过卡外实体发送应用程序j的数据处理请求(此时,应用k为当前应用程序,应用j为目标应用程序),则将应用k的所有易失性数据的数据体(包括应用k的第一数据体、应用k的第二数据体、……、应用k的第z数据体)备份在第1备份空间,并将上一次备份的应用j的所有第一易失性数据的数据体备份在第2备份空间。
[0083] 通过本发明的上述实施例,通过备份RAM_APP至EEPROM的方式,使得所有的APP都可以共享RAM_APP的全部空间,并且可以使得单个APP可分配的RAM资源最大化,从而使得并发APP的最大个数不受RAM资源大小限制。
[0084] 根据本发明的上述实施例,数据处理请求可以包括创建请求,属性参数可以包括:空间容量参数,第一易失性数据包括属性头和数据体,其中,在智能卡的随机存储器中获取与属性参数对应的存储位置的步骤包括:获取第一总长度,其中,第一总长度为目标应用程序已经创建的所有易失性数据的数据体的总长度;在随机存储器中为目标应用程序分配存储位置,其中,存储位置的起始地址为从物理内存的起始地址偏移第一总长度的位置,存储位置的长度为空间容量参数的值,空间容量参数为第一易失性数据的长度。
[0085] 其中,上述步骤具体是在第二区随机存储器中获取与属性参数对应的存储位置,更具体地,在第二区随机存储器中为目标应用程序分配存储位置,其中的,存储位置的起始地址为从第二区随机存储器的起始地址偏移第一总长度的位置。
[0086] 在本发明的上述实施例中,在随机存储器中为目标应用程序分配存储位置之前,方法还可以包括:在智能卡的可编程只读存储器中寻找空闲单元,并将空闲单元的索引数据作为第一易失性数据的第一数据标识;在可编程只读存储器中为属性头分配第一空间,将第一空间的第一起始地址写入空闲单元,其中,第一空间包括:标识字段、数据体起始地址字段和数据体长度字段;将当前应用程序的第一程序标识、空间容量参数以及第一总长度的值分别写入标识字段、数据体起始地址字段和数据体长度字段。
[0087] 具体地,在智能卡的第二可编程只读存储器中寻找空闲单元,并将空闲单元的索引数据作为第一易失性数据的第一数据标识;在第一可编程只读存储器中为属性头分配第一空间,将第一空间的第一起始地址写入第二可编程只读存储器中的空闲单元。
[0088] 根据本发明的上述实施例,数据处理请求可以包括读取请求,属性参数可以包括:第一数据标识、相对于第一易失性数据的数据体的起始地址的第一偏移参数、第一目的地址参数以及读取长度,其中,在存储位置上对第一易失性数据进行数据处理的步骤可以包括:从与第一数据标识对应的空闲单元中读取第一起始地址;获取与第一起始地址对应的第一空间;检测目标应用程序的目标程序标识与第一空间的标识字段中存储的第一程序标识(也即当前应用程序的程序标识)是否一致;在目标程序标识与第一程序标识一致的情况下,读取数据体起始地址,以获取第一易失性数据,其中,第一易失性数据的第二起始地址为存储位置的起始地址、数据体起始地址以及第一偏移参数的值之和,第一易失性数据的长度为读取长度;将第一易失性数据拷贝至第一目的地址参数指向的第一存储空间。
[0089] 其中,从第二可编程只读存储器中对应的空闲单元读取第一起始地址,在获取与第一起始地址对应的第一空间之后,并且在目标应用程序标识与第一程序标识一致的情况下,也即存储位置当前存储的数据即为目标应用程序的数据,读取第一总长度体起始地址。
[0090] 在本发明的上述实施例中,数据处理请求可以包括更新请求,属性参数可以包括:第一数据标识、第一易失性数据的数据体的起始地址的第一偏移参数、源数据的起始地址参数以及更新长度,其中,在存储位置上对第一易失性数据进行数据处理的步骤可以包括:
从与第一数据标识对应的空闲单元中读取第一起始地址;获取与第一起始地址对应的第一空间;检测目标应用程序的目标程序标识与第一空间的标识字段中存储的第一程序标识是否一致;在目标程序标识与第一程序标识一致的情况下,读取数据体起始地址,以获取第二存储空间,其中,第二存储空间是存储位置的起始地址、数据体起始地址以及第一偏移参数的值之和指向的空间;将第一易失性数据拷贝至第二存储空间,其中,第一易失性数据的起始地址为起始地址参数对应的地址,第一易失性数据的长度为更新长度。
[0091] 其中,在该实施例中,可以从第二可编程只读存储器中对应的空闲单元读取第一起始地址,在获取与第一起始地址对应的第一空间之后,并且在目标应用程序标识与第一程序标识一致的情况下,也即存储位置当前存储的数据即为目标应用程序的数据,读取第一总长度体起始地址。
[0092] 具体地,在随机存储器中为目标应用程序分配存储位置之后,方法还可以包括:将第一总长度与空间容量参数之和作为第二总长度,并使用第二总长度更新第一总长度。
[0093] 具体地,通过应用程序向处理器中的易失性数据管理模块发起创建、读取、更新属于自己的AVD的请求,并维护属于自己的AVDID。如果该数据处理请求是创建请求,应用对易失性数据管理模块传入的属性参数包括:空间容量参数(即创建空间的大小参数alloc_size);如果是读取请求,应用对易失性数据管理模块传入的属性参数包括:第一易失性数据的第一数据标识AVDID、第一易失性数据的数据体的起始地址的第一偏移参数offset、第一易失性数据的第一目的地址参数dst_addr以及读取长度length;如果是更新请求,应用对易失性数据管理模块传入的属性参数可以包括:第一易失性数据的第一数据标识AVDID、源数据的数据体的起始地址的第一偏移参数offset、第一易失性数据的源数据的起始地址参数src_addr以及更新长度length。其中,上述实施例中应用向易失性数据管理模块传入的属性参数均是携带在数据处理请求中。
[0094] 在应用程序发起的数据处理请求为读取请求或更新请求的情况下,需要先执行创建请求,也即需要先在存储位置创建该目标应用程序的程序易失性数据。
[0095] 具体地,APP对易失性数据管理模块发起创建或读取或更新AVD请求时,在此之前必须通过卡外实体与智能卡的交互选中该APP。例如,APPi和APPj先后对易失性数据管理模块发起创建或读取或更新AVD请求时,操作系统模块可以在APPj被选中时,对易失性数据管理模块发起清除前一刻被选中APPi的所有AVD的请求,也可以对易失性数据管理模块发起备份前一刻被选中APPi的所有AVD(即当前存储数据或当前数据)的请求,并随后发起初始化被选择APPj的所有AVD的请求。
[0096] 更具体地,在来自应用程序的数据处理请求为创建请求的情况下,可以通过如下方法实现对当前选中的应用程序(即目标应用程序)的数据创建:1)将内存EEPROM_AVDID看做以四字节为单元的数组,在该数组中寻找空闲单元。如果找到空闲单元,记录该单元的索引数据index;2)在内存EEPROM_AVDHR中分配一个大小为Header_Size(属性头的长度)的第一空间用于存储目标应用程序的Header,将该第一空间的第一起始地址(即首地址)写入EEPROM_AVDID的空闲单元;从操作系统模块中获取当前被选中的APP(即目标应用程序)的AID,将aid和alloc_size分别写入Header的标识字段(Aid字段)和数据体长度字段(Body_Size字段);3)将内存EEPROM_AVDSIZE看作四字节一单元的数组,读取对应目标应用程序的第aid个单元的值,记作AVD_size_aid(即第一总长度);从内存RAM_APP的偏移AVD_size_aid处开始,分配大小为alloc_size的空间,更新EEPROM_AVDSIZE内存中第aid单元的值为(AVD_size_aid+alloc_size,更新后为第二总长度),并将第一总长度的值写入Header的Body_Address(即数据体起始地址字段);4)将index作为第一数据标识AVDID,并返回给操作系统模块。
[0097] 在来自应用程序的数据处理请求为读取请求的情况下,可以通过如下方法实现对当前选中的应用程序(即目标应用程序)的数据的读取:1)易失性数据管理模块从内存EEPROM_AVDID的第AVDID个单元读取Header的首地址,如果为NULL(0)则退出,反之继续;2)从操作系统模块获取当前被选中的APP的aid,和Header的Aid字段值比较,如果不相同,请求终止,反之继续;3)从Header的Body_Address字段获取数据体的首地址body_address(其值等于第一总长度的值),将body_address+存储位置的起始地址+offset为起始地址,大小为length的空间中的数据拷贝至dst_addr指向的空间。
[0098] 在来自应用程序的数据处理请求为更新请求的情况下,可以通过如下方法实现对当前选中的应用程序(即目标应用程序)的数据的更新:1)易失性数据管理模块从内存EEPROM_AVDID的第AVDID个单元读取Header的首地址,如果为NULL(0)则退出,反之继续;2)从操作系统模块获取当前被选中的APP的aid,和Header的Aid字段值比较,如果不相同,请求终止,反之继续;3)从Header的Body_Address字段获取数据体的首地址body_address,将dst_addr为起始地址,大小为length的空间数据拷贝至(body_address+offset)指向的空间中
[0099] 另外,操作系统的数据处理请求也可以通过操作系统模块对易失性数据管理模块发起,其中,包括创建、读取、更新来自系统的系统易失性数据的请求。如果该请求是创建请求,操作系统模块对系统易失性数据管理模块传入的属性参数可以包括空间容量参数,即创建空间的大小参数alloc_size;如果是读取请求,操作系统模块对系统易失性数据管理模块传入的属性参数可以包括:系统易失性数据的第一系统标识OVDID、系统易失性数据的数据体的起始地址的第二偏移参数offset、系统易失性数据的第二目的地址参数dst_addr以及系统读取长度length;如果是更新请求,操作系统模块对系统易失性数据管理模块传入属性参数可以包括:系统易失性数据的第一系统标识OVDID、系统易失性数据的数据体的起始地址的第一偏移参数offset、源数据的起始地址参数src_addr以及系统更新长度length。
[0100] 具体地,如果来自系统的数据处理请求是创建请求,则在RAM_OS中开辟一块大小alloc_size的空间,并将起始地址作为OVDID返回;如果是读取请求,则根据传入的参数OVDID、offset、dst_addr、length,将从OVDID与offset之和作为起始地址拷贝长度为length的数据至dst_addr中;如果是更新请求,从src_addr开始,将length长度的数据拷贝至OVDID与offset之和作为起始地址的空间中。
[0101] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0102] 从以上的描述中,可以看出,本发明实现了如下技术效果:采用本发明,在接收到目标应用程序的数据处理请求之后,获取与数据处理请求对应的存储位置,然后使用第一处理模块在该存储位置对目标应用程序请求处理的第一易失性数据进行处理,其中,该存储位置位于智能卡中固定的一段物理内存中,这样可以将来自任意应用程序的处于运行态的APP的第一易失性数据均在该固定的一段物理内存中处理,从而可以让所有的APP共享一段物理RAM内存,从而达到节省物理RAM空间的目的,解决了现有技术中智能卡在多应用使用环境下RAM物理空间不足的问题,实现了多个应用共享RAM物理空间的效果。
[0103] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0104] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。