发明内容
本发明要解决的技术问题是提供一种事务数据处理方法及装置,以解决传统事务处理过程中EEPROM/FLASH操作频繁的问题。
为了解决上述技术问题,本发明提供了一种事务数据处理方法,包括:
建立原始扇区和备用扇区,
交替使用所述原始扇区和所述备用扇区进行事务数据的写操作。
进一步地,上述方法还具有下面特点:所述建立原始扇区和备用扇区的过程中包括:
建立逻辑扇区映射表,初始化时将所述逻辑扇区映射表映射为所述原始扇区;
所述交替使用所述原始扇区和所述备用扇区进行事务数据的写操作的过程中包括:
如使用所述原始扇区进行事务数据的写操作,则将所述逻辑扇区映射表的映射关系修改为所述原始扇区;如使用所述备用扇区进行事务数据的写操作,则将所述逻辑扇区映射表的映射关系修改为所述备用扇区。
进一步地,上述方法还具有下面特点:所述交替使用所述原始扇区和所述备用扇区进行事务数据的写操作的过程中还包括:
锁定所述备用扇区。
进一步地,上述方法还具有下面特点:所述交替使用所述原始扇区和所述备用扇区进行事务数据的写操作后,还包括:
生成主用扇区映射表,将所述主用扇区映射表映射为写操作完成后备用扇区的映射关系。
进一步地,上述方法还具有下面特点:所述交替使用所述原始扇区和所述备用扇区进行事务数据的写操作后,还包括:
接收到恢复事务数据的指令后,读取所述主用扇区映射表映射的所述备用扇区的映射关系,重新生成逻辑扇区映射表。
为了解决上述问题,本发明还提供了一种数据处理装置,包括:
第一模块,用于建立原始扇区和备用扇区,
第二模块,用于交替使用所述原始扇区和所述备用扇区进行事务数据的写操作。
进一步地,上述装置还具有下面特点:
所述第一模块,在建立原始扇区和备用扇区的过程中还用于:建立逻辑扇区映射表,初始化时将所述逻辑扇区映射表映射为所述原始扇区;
所述第二模块,在交替使用所述原始扇区和所述备用扇区进行事务数据的写操作的过程中还用于:如使用所述原始扇区进行事务数据的写操作,则将所述逻辑扇区映射表修改为映射所述备用扇区;如使用所述备用扇区进行事务数据的写操作,则将所述逻辑扇区映射表修改为映射所述原始扇区。
进一步地,上述装置还具有下面特点:
所述第二模块,在交替使用所述原始扇区和所述备用扇区进行事务数据的写操作的过程中还用于:锁定所述备用扇区。
进一步地,上述装置还具有下面特点:所述装置还包括:
第三模块,用于生成主用扇区映射表,将所述主用扇区映射表映射为写操作完成后备用扇区的映射关系。
进一步地,上述装置还具有下面特点:所述装置还包括:
第四模块,用于接收到恢复事务数据的指令后,读取所述主用扇区映射表映射的所述备用扇区的映射关系,重新生成逻辑扇区映射表。
综上,本发明提供一种事务数据处理方法及装置,以解决传统事务处理过程中EEPROM/FLASH操作频繁以及异常回滚流程复杂的问题。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1为本发明实施例的事务数据处理方法的流程图,如图1所示,本实施例的方法包括:
S11、建立原始扇区和备用扇区;
S12、交替使用所述原始扇区和所述备用扇区进行事务数据的写操作。
本实施例中,可以将智能卡的EEPROM/FLASH分为原始扇区和备用扇区,在数据写入的过程中交替使用原始扇区和备用扇区对数据进行写操作,如图2所示。
本实施例中,建立2个扇区映射表(如主用扇区映射表和备用扇区映射表),交替使用互为备份。扇区映射表用于描述扇区的映射关系。映射表的每2个字节表示一个备用扇区,OxFFFF表示该备用扇区空闲,其它值则代表某逻辑扇区映射到该备用扇区。同时用4个字节表示映射表的标示,用于判断映射表的有效性。这些数据应该控制在一个扇区内表示完毕。
初始化时,选择主用扇区映射表进行读取,并建立逻辑扇区映射表(存放在RAM中)。建立过程如图3所示,包括以下步骤:
步骤101、初始化逻辑扇区表,所有逻辑扇区都映射为原始扇区;
逻辑扇区映射表把整个EEPROM/FLASH的所有扇区进行抽象,所有EEPROM/FLASH操作都是基于逻辑扇区映射表来完成的。
步骤102、遍历主用扇区映射表,判断备用扇区映射关系是否遍历完毕,如是,则结束流程;否则,转向步骤103;
主用扇区映射表中描述的是备用扇区的映射关系。
步骤103、判断每个备用扇区映射值是否为OxFFFF,如果不是,则将备用扇区映射到对应值的逻辑扇区上。
图4为本发明实施例的原子(事务)数据写入的流程图,包括如下步骤:
步骤201、判断待写入扇区是否已处于原子(事务)操作中,如是,则转向步骤206,否则转向步骤202;
步骤202、如果扇区没有在原子(事务)操作中,标记扇区处于原子(事务)操作中(RAM操作);
步骤203、根据逻辑扇区映射表判断映射扇区是否为原始扇区,如是,则转向步骤204,否则转向步骤205;
步骤204、如果是原始扇区,那么向一个空闲备用扇区写入数据,修改逻辑扇区映射表,修改该逻辑扇区映射为该空闲备用扇区;然后转步骤207;
步骤205、如果是备用扇区,那么向原始扇区写入数据,同时锁定该备用扇区,修改逻辑扇区映射表,改该逻辑扇区映射为原始扇区;然后转步骤207;
步骤206、如果已经在原子(事务)操作中,那么直接写入对应扇区,提交原子(事务)操作;然后,转步骤207;
步骤207、标记扇区没有处于原子(事务)操作中(RAM操作);
步骤208、释放所有锁定的备用扇区,将其值置为空闲;
步骤209、生成主用扇区映射表,将所述主用扇区映射表映射为所有写操作完成后的所述备用扇区的映射关系。
原子(事务)数据恢复步骤如下:
接收到恢复事务数据的指令后,读取所述主用扇区映射表的所述备用扇区对应关系的数据。并重新建立逻辑扇区映射表(存放在RAM中)。
图5为本发明实施例的一种事务数据处理装置的示意图,如图5所示,本实施例的装置包括:
第一模块,用于建立原始扇区和备用扇区,
第二模块,用于交替使用所述原始扇区和所述备用扇区进行事务数据的写操作。
其中,所述第一模块,在建立原始扇区和备用扇区的过程中还用于:建立逻辑扇区映射表,初始化时将所述逻辑扇区映射表映射为所述原始扇区;
所述第二模块,在交替使用所述原始扇区和所述备用扇区进行事务数据的写操作的过程中还用于:如使用所述原始扇区进行事务数据的写操作,则将所述逻辑扇区映射表修改为映射所述原始扇区;如使用所述备用扇区进行事务数据的写操作,则将所述逻辑扇区映射表修改为映射所述备用扇区。
其中,所述第二模块,在交替使用所述原始扇区和所述备用扇区进行事务数据的写操作的过程中还用于:锁定所述备用扇区。
在一优选实施例中,还可以包括:
第三模块,用于生成主用扇区映射表,将所述主用扇区映射表映射为写操作完成后备用扇区的映射关系。
在一优选实施例中,还可以包括:
第四模块,用于接收到恢复事务数据的指令后,读取所述主用扇区映射表的所述备用扇区的映射关系,重新生成逻辑扇区映射表。
本实施例的事务数据处理装置包括智能卡。
本发明每次原子操作(事务操作),只需要2次EEPROM/FLASH写操作。而原子(事务)数据恢复操作则不需要EEPROM/FLASH写操作。这和传统的原子操作(事务操作)至少需要4次EEPROM/FLASH写操作。原子(事务)数据恢复操作至少需要2次EEPROM/FLASH写操作。大幅减少EEPROM/FLASH写操作,从而也大幅提高了智能卡的性能。异常时数据回滚流程则不需要EEPROM/FLASH写操作,为了解决原子操作(事务操作)流程和异常时数据回滚流程EEPROM/FLASH写操作过于频繁的问题。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。