CN108108271B - 一种实现事务与掉电保护统一管理的方法及装置 - Google Patents
一种实现事务与掉电保护统一管理的方法及装置 Download PDFInfo
- Publication number
- CN108108271B CN108108271B CN201711415867.3A CN201711415867A CN108108271B CN 108108271 B CN108108271 B CN 108108271B CN 201711415867 A CN201711415867 A CN 201711415867A CN 108108271 B CN108108271 B CN 108108271B
- Authority
- CN
- China
- Prior art keywords
- data
- area
- unit
- backup
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种实现事务与掉电保护统一管理的方法及装置,属于信息安全领域。本发明将Java卡上的非易失存储器芯片的整个备份区域划分为三块,分别为第一块区、第二块区和第三块区,当Java卡执行写数据操作时,先进行数据备份并设置事务标记,在进行数据备份时包括将原始数据备份写入第三块区中,计算出记录数据并写入第二块区中,将待写数据写入目标页后,根据事务标记识别是否是事务的写操作,是事务则不需要清除记录,否则需要清除记录。本发明利用非易失存储器芯片的整个备份区域来统一管理事务与掉电从而达到减少占用芯片空间、节省执行时间的目的,提高了卡片的执行效率,同时兼顾芯片的磨损平衡,大大延长了芯片的使用寿命。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种实现事务与掉电保护统一管理的方法及装置。
背景技术
Java卡是一种可以运行Java程序的CPU智能卡,使用Java卡平台创建的智能卡上存有Java应用。Java应用被下载到微处理器的内存里,由Java虚拟机来运行,在Java卡执行应用的过程中,Java卡中的非易失存储器(Non-volatile memory-NVM,包括EEPROM、FLASH等)的擦写耗时都大大制约了智能卡执行效率,另外,Java卡芯片内部资源的匮乏,致使用户可用的空间被严格限制。因此,大空间、速度快的智能卡已成为各大卡商追求的目标。
现在的Java卡对于NVM的擦写管理,事务与掉电保护功能彼此相对独立、关联性小,这样不仅增加了对EEPROM/FLASH的擦写次数,影响了智能卡执行效率,而且需要更大的备份区空间来保证数据的完整性、可靠性,从而导致用户可用空间被缩减。
发明内容
鉴于现有技术的不足,为了提高Java卡的性能,本发明提供了一种实现事务与掉电保护统一管理的方法及装置。
本发明的技术方案如下:一种实现事务与掉电保护统一管理的方法,包括:当Java卡执行写数据操作时,执行以下步骤:
步骤S1:所述Java卡获取当前目标页和待写数据;
步骤S2:所述Java卡根据备份区域的第二块区中的内容判断当前目标页是否已备份,是则置位事务标记并执行步骤S5,否则执行步骤S3;
步骤S3:所述Java卡将当前目标页的原始数据写入备份区域的第三块区中,并判断当前写数据操作是否为原子写操作,是则置位事务标记,执行步骤S4,否则复位事务标记,执行步骤S4;
步骤S4:所述Java卡计算与所述原始数据对应的记录数据,将计算得到的记录数据写入所述备份区域的第二块区中;
步骤S5:所述Java卡将所述待写数据写入当前目标页;
步骤S6:所述Java卡根据所述事务标记判断是否需要清除记录,是则执行步骤S7,否则写数据操作结束;
步骤S7:所述Java卡清除写入所述第二块区的所述记录数据,写数据操作结束。
优选的,上述步骤S2之前还包括,所述Java卡判断是否为首次写操作,是则执行掉电初始化,执行所述步骤S2,否则直接执行所述步骤S2。所述执行掉电初始化包括:初始化所述记录区游标和所述数据区游标,清除所述首次写标记。
优选的,上述步骤S2具体为,所述Java卡遍历备份区域的第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据,是则置位事务标记,执行步骤S5,否则根据遍历结果确定记录区游标,执行步骤S3。
优选的,上述步骤S6具体为,所述Java卡判断所述事务标记是否置位,是则不需要清除记录,写数据操作结束;否则需要清除记录,执行步骤S7。
优选的,上述判断当前写数据操作是否为原子写操作具体为,获取原子写标记并判断是否置位,是则当前写数据操作为原子写操作,否则当前写数据操作为非原子写操作。相应的,本方法还包括:当Java卡执行开启事务操作时,置位原子写标记;上述步骤S3之前还包括,当所述Java卡监测到数据区游标异常时,复位所述原子写标记。
优选的,所述第二块区中存储的记录数据结构如下:每条记录数据长度是四个字节,其中第一个字节数据组成备份标记,第二个字节数据组成校验值,第三和第四个字节数据组成页号索引;
上述步骤S2还包括,根据当前目标页地址计算出页号索引,遍历备份区域的第二块区中存储的记录数据并根据遍历结果确定记录区游标;所述步骤S3与步骤S4之间还包括,若所述Java卡判断当前写数据操作为非原子写操作则将所述页号索引的最高位置位;所述步骤S4具体为,所述Java卡将备份标记设置为预设值,根据所述备份标记和所述页号索引计算得到校验值,根据所述备份标记、所述校验值和所述页号索引组成记录数据,根据所述记录区游标将所述记录数据写入所述第二块区中;所述步骤S4之前,若所述Java卡判断当前写数据操作为原子写操作则所述步骤S4还包括将数据区游标后移一页。
优选的,本发明的方法还包括:当Java卡执行取消事务操作时,执行以下步骤:
步骤R1:所述Java卡从所述备份区域的第二块区中获取一条记录数据作为当前记录数据;
步骤R2:所述Java卡判断当前记录数据是否对应有备份页,是则执行步骤R3,否则所述Java卡清除备份区域的第二块区的内容,取消事务操作结束;
步骤R3:所述Java卡判断当前记录数据中包含的校验值是否正确,是则执行步骤R4,否则所述Java卡返回错误信息给上层,取消事务操作结束;
步骤R4:所述Java卡判断是否需要执行数据回滚,是则执行步骤R5,否则返回执行步骤R1;
步骤R5:所述Java卡根据当前记录数据中包含的页号索引找到目标页,从所述备份区域的第三块区中找到与所述目标页对应的备份页,将所述备份页中的原始数据恢复到所述目标页,返回执行步骤R1。
上述步骤R1之前还包括:
步骤R0:所述Java卡复位记录区游标和数据区游标;
所述步骤R5中所述返回执行步骤R1之前还包括,将记录区游标更新为指向第二块区的下一条记录数据,将数据区游标更新为指向第三块区的下一备份页。
上述步骤R2具体为:所述Java卡判断当前记录数据中包含的备份标记是否等于预设值,是则执行步骤R3,否则所述Java卡清除所述备份区域的第二块区的内容,复位数据区游标,取消事务操作结束。
上述步骤R3具体为:所述Java卡将当前记录数据的第一、第三和第四字节数据做异或运算,判断异或运算结果是否与当前记录数据的第二字节数据相等,是则执行步骤R4,否则Java卡返回错误信息给上层,取消事务操作结束。
上述步骤R4具体为,所述Java卡判断是否满足当前记录数据的第三字节的最高位等于0或者纯掉电标记等于1,是则执行步骤R5,否则返回执行步骤R1。
优选的,本发明的方法还包括:当Java卡执行提交事务操作时,执行以下步骤:所述Java卡清除备份区域的第二块区的内容,复位记录区游标。
本发明还提供了一种实现事务与掉电保护统一管理的装置,包括非易失存储器芯片、写操作模块和事务处理模块,其中,所述非易失存储器芯片的备份区域包括第一块区、第二块区和第三块区;
所述写操作模块包括获取单元、第一判断单元、数据备份单元、第二判断单元、计算单元、写入单元、第三判断单元和清除单元;
所述获取单元,用于获取当前目标页和待写数据;
所述第一判断单元,用于根据所述第二块区中的内容判断所述获取单元获取的当前目标页是否已备份,是则置位事务标记并触发所述数据备份单元,否则触发所述写入单元;
所述数据备份单元,用于将所述获取单元获取的当前目标页的原始数据写入所述第三块区中,并触发第二判断单元;
所述第二判断单元,用于判断当前写数据操作是否为原子写操作,是则置位事务标记,触发所述计算单元,否则复位事务标记,触发所述计算单元;
所述计算单元,用于计算与所述原始数据对应的记录数据,将计算得到的记录数据写入所述第二块区中,并触发所述写入单元;
所述写入单元,用于将所述获取单元获取的所述待写数据写入当前目标页,触发所述第三判断单元;
所述第三判断单元,用于根据事务标记判断是否需要清除记录;
所述清除单元,用于当所述第三判断单元判断结果为是时清除所述计算单元写入到所述第二块区的所述记录数据。
优选的,上述写操作模块还包括第四判断单元和初始化单元;
所述第四判断单元,用于判断是否为首次写操作;
所述初始化单元,用于当所述第四判断单元判断为是时执行掉电初始化。
优选的,上述第一判断单元包括遍历子单元和触发子单元;
所述遍历子单元,用于遍历所述第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据;
所述触发子单元,用于当所述遍历子单元判断结果为是时置位事务标记并触发所述写入单元,用于当所述遍历子单元判断结果为否时根据遍历结果确定记录区游标,触发所述数据备份单元。
优选的,上述第三判断单元,具体用于判断事务标记是否置位,是则表示不需要清除记录,否则表示需要清除记录。
优选的,上述第二判断单元,具体用于获取原子写标记并判断是否置位,是则当前写数据操作为原子写操作,置位事务标记,触发所述计算单元,否则当前写数据操作为非原子写操作,复位事务标记,触发所述计算单元。
优选的,上述事务处理模块包括开启事务子模块;
所述开启事务子模块,用于开启事务,置位原子写标记;
所述写操作模块还包括监测单元;
所述监测单元,用于监测异常,并当监测到数据区游标异常时复位所述原子写标记。
所述第二块区中存储的记录数据结构如下:每条记录数据长度是四个字节,其中第一个字节数据组成备份标记,第二个字节数据组成校验值,第三和第四个字节数据组成页号索引;所述第一判断单元,还用于根据当前目标页地址计算出页号索引,遍历备份区域的第二块区中存储的记录数据并根据遍历结果确定记录区游标;所述第二判断单元,还用于当判断当前写数据操作为非原子写操作时将所述页号索引的最高位置位;还用于当判断当前写数据操作为原子写操作时触发所述计算单元将数据区游标后移一页;所述计算单元,具体用于将备份标记设置为预设值,根据所述备份标记和所述页号索引计算得到校验值,根据所述备份标记、所述校验值和所述页号索引组成记录数据,根据所述第一判断单元确定的所述记录区游标将所述记录数据写入所述第二块区中,并触发所述写入单元;
优选的,上述事务处理模块包括取消事务子模块;
所述取消事务子模块包括获取单元、第一判断单元、第二判断单元、第三判断单元和数据恢复单元;
所述获取单元,用于从所述备份区域的第二块区中获取一条记录数据作为当前记录数据;
所述第一判断单元,用于判断所述获取单元获取的当前记录数据是否对应有备份页,是则触发第二判断单元,否则清除备份区域的第二块区的内容;
所述第二判断单元,用于判断所述获取单元获取的当前记录数据中包含的校验值是否正确,是则触发第三判断单元,否则返回错误信息给上层;
所述第三判断单元,用于判断是否需要执行数据回滚,是则触发数据恢复单元,否则重新触发所述获取单元;
所述数据恢复单元,用于根据当前记录数据中包含的页号索引找到目标页,从所述备份区域的第三块区中找到与所述目标页对应的备份页,将所述备份页中的原始数据恢复到所述目标页。
优选的,上述事务处理模块还包括提交事务子模块;所述提交事务子模块,用于清除备份区域的第二块区的内容,复位记录区游标。
本发明的有益效果如下:本发明利用NVM的整个备份区域来统一管理事务与掉电从而达到减少占用EEPROM/FLASH空间、节省执行时间的目的,提高了卡片的执行效率,同时兼顾芯片EEPROM/FLASH的磨损平衡,大大延长了芯片的使用寿命。
附图说明
图1是本发明实施例1提供的一种实现事务与掉电保护统一管理的方法的流程图;
图2是本发明实施例2提供的一种实现事务与掉电保护统一管理的方法的流程图;
图3是本发明实施例2提供的一种写数据操作的具体处理流程图;
图4是本发明实施例2提供的一种取消事务操作的具体处理流程图;
图5是本发明实施例3一种实现事务与掉电保护统一管理的装置的组成框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图和具体实施例对本发明做进一步地详细说明。
在以下实施例中,Java卡上的非易失存储器(NVM)中的整个备份区域被划分为三块,分别为第一块区、第二块区和第三块区,其中,第一块区具体为磨损控制区,优选的,第一块区的大小为一页(128字节),第二块区具体为备份记录区,用于存储记录数据,记录区游标用于指向第二块区的当前记录数据;第三块区具体为备份数据区,用于存储备份页,数据区游标用于指向第三块区的当前备份页。
实施例1
本实施例1提供了一种实现事务与掉电保护统一管理的方法,如图1所示,包括:
步骤S1:Java卡获取当前目标页和待写数据;
具体的,当上层应用调用写操作本地方法时,Java卡执行上层应用写NVM操作代码,解析出dest和src两个参数,根据所述dest确定当前目标页,其中,dest是当前目标页地址,src是待写数据。
步骤S2:Java卡判断当前目标页是否已备份,是则执行步骤S5,否则执行步骤S3;
具体的,Java卡遍历备份区域的第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据,是则表示当前目标页已备份,否则表示当前目标页未备份。
步骤S3:Java卡根据数据区游标的指向将当前目标页的原始数据写入备份区域的第三块区中;
进一步的,本步骤还包括:判断当前写数据操作是否为原子写操作,是则置位事务标记,执行步骤S4,否则复位事务标记,执行步骤S4;
步骤S4:Java卡计算与所述原始数据对应的记录数据,将计算得到的记录数据写入备份区域的第二块区中;
具体的,Java卡设置备份标记为预设值,根据当前目标页的地址计算出页号索引,根据页号索引计算出校验值,将所述备份标记、所述校验值和所述页号索引组成四字节数据结构即得到记录数据,根据记录区游标将所述记录数据写入备份区域的第二块区。
进一步的,当本次写操作为原子写操作时,所述根据当前目标页的地址计算出页号索引之后,还包括将所述页号索引的最高位置位,然后再计算记录数据。
步骤S5:Java卡将所述待写数据写入当前目标页;
步骤S6:Java卡判断是否需要清除记录,是则执行步骤S7,否则结束;
具体的,Java卡根据当前事务标记判断是否需要清除记录,若事务标记为置位状态则需要清除记录,否则不需要清除记录。
优选的,上述步骤S2判断为是还包括置位事务标记,然后执行步骤S5;
本实施例优选的,当Java卡执行开启事务操作时,置位原子写标记;相应的所述步骤S3之前还包括,当Java卡监测到数据区游标异常时,复位所述原子写标记。
进一步的,当Java卡执行提交事务操作时,所述Java卡清除备份区域的第二块区的内容,复位记录区游标。
步骤S7:Java卡清除当前写入到第二块区的记录数据,结束。
本实施例提供的方法,利用NVM的整个备份区域来统一管理事务与掉电从而达到减少占用EEPROM/FLASH空间、节省执行时间的目的,提高了卡片的执行效率。
实施例2
本实施例2提供了一种实现事务与掉电保护统一管理的方法,如图2所示,包括:
步骤101:Java卡上电,根据上层调用确定当前要执行的操作类型;
当确定的操作类型为写数据时执行步骤102,当确定的操作类型为取消事务时执行步骤113,当确定的操作类型为提交事务时执行步骤122;
例如,上层应用调用写操作本地方法,Java卡执行写数据操作;上层应用调用事务回滚本地方法,Java卡执行取消事务操作;上层应用调用事务提交本地方法,Java卡执行提交事务操作。
步骤102:Java卡判断是否为首次写操作,是则执行步骤103,否则执行步骤104;
具体的,Java卡检查首次写标记的值,若等于1则表示当前写操作为用户第一次操作NVM,执行步骤103;当等于0则表示当前写操作不是用户第一次操作NVM,执行步骤104。
例如:本实施例中,首次写标记firstNVMWrite=0。
步骤103:Java卡执行掉电初始化;
具体的,本步骤包括:初始化记录区游标、初始化数据区游标,以及清除首次写标记。
进一步的,Java卡根据备份区域的第一块区的内容计算出记录区游标和数据区游标的初值,并根据计算得到的记录区游标和数据区游标的初值初始化所述记录区游标和所述数据区游标。
步骤104:Java卡获取当前目标页和待写数据;
具体的,当上层应用调用写操作本地方法时,Java卡虚拟机执行上层应用写NVM操作代码,解析出dest和src两个参数,其中,dest是当前目标页地址,src是待写数据,已知当前目标页地址可以确定当前目标页。
步骤105:Java卡判断当前目标页是否已备份,是则置ret=1,执行步骤110,否则执行步骤106;
具体的,Java卡遍历备份区域的第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据,是则表示当前目标页已备份,置事务标记(ret)=1,执行步骤110,否则表示当前目标页未备份,执行步骤106;
优选的,第二块区中存储的记录数据结构如下:每条记录数据长度是四个字节,其中第一个字节数据是备份标记,第二个字节数据是校验值,第三和第四个字节数据是页号索引。
所述Java卡遍历备份区域的第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据,具体如下:
Java卡遍历第二块区中的记录数据,判断是否存在满足如下条件的记录数据:记录数据的第一个字节数据等于预设值,并且第三、第四字节数据与根据当前目标页地址计算出的页号索引相同,若存在满足上述条件的记录数据则表示存在与当前目标页对应的记录数据,即当前目标页已备份,否则表示当前目标页未备份。本实施例中优选的,所述预设值等于0x18。
步骤106:Java卡将当前目标页的原始数据写入备份区域的第三块区;
具体的,Java卡根据当前的数据区游标的指向将当前目标页的原始数据写入备份区域的第三块区中。
步骤107:Java卡判断是否为原子写操作,是则执行步骤108,否则执行步骤109;
具体的,Java卡判断原子写标记是否等于1,是则执行步骤108,否则执行步骤109。
例如,本实施例中,原子写标记atomic_write=1。
步骤108:Java卡置ret=1,计算与所述原始数据对应的记录数据,将计算得到的记录数据写入备份区域的第二块区,执行步骤110;
具体的,Java卡置ret=1,并设置备份标记为预设值,根据当前目标页的地址计算出页号索引,根据页号索引计算出校验值,将所述备份标记、所述校验值和所述页号索引组成四字节数据结构即得到记录数据,根据记录区游标将所述记录数据写入备份区域的第二块区。
本实施例中优选的,预设值等于0x18。
步骤109:Java卡置ret=0,计算与所述原始数据对应的记录数据,将计算得到的记录数据写入备份区域的第二块区,执行步骤110;
具体的,Java卡置ret=0,并设置备份标记为预设值,根据当前目标页的地址计算出页号索引,将所述页号索引的最高位置位,根据页号索引计算出校验值,将所述备份标记、所述校验值和所述页号索引组成四字节数据结构即得到记录数据,根据记录区游标将所述记录数据写入备份区域的第二块区。
步骤110:Java卡将所述待写数据写入当前目标页;
步骤111:Java卡判断ret是否等于0,是则执行步骤112,否则结束;
步骤112:Java卡清除当前写入到第二块区的记录数据,结束。
具体的,Java卡根据当前的记录区游标的指向清除第二块区的一条记录数据。
步骤113:Java卡复位记录区游标和数据区游标;
具体的,Java卡将记录区游标指向第二块区的第一条记录数据,将数据区游标指向第三块区的第一备份页。
步骤114:Java卡根据记录区游标获取当前记录数据;
步骤115:Java卡判断当前记录数据是否对应有备份页,是则执行步骤117,否则执行步骤116;
具体的,Java卡判断当前记录数据的第一个字节是否等于预设值,是则执行步骤117,否则执行步骤116;优选的,预设值等于0x18。
步骤116:Java卡清除备份区域的第二块区的内容,复位数据区游标,结束;
步骤117:Java卡判断所述记录数据中包含的校验值是否正确,是则执行步骤119,否则执行步骤118;
具体的,Java卡判断所述记录数据的第二字节数据是否与根据所述记录数据的第一、第三和第四字节数据计算得到数值相等,是则执行步骤119,否则执行步骤118。
优选的,Java卡将所述记录数据的第一、第三和第四字节数据作异或运算,判断异或运算结果是否与记录数据的第二字节数据相等,是则表示记录数据中包含的校验值正确,否则不正确。
步骤118:Java卡返回错误信息给上层,结束;
步骤119:Java卡判断是否需要执行数据回滚,是则执行步骤120,否则执行步骤121;
具体的,Java卡判断当前记录数据中包含的页号索引的最高位是否等于0,或者纯掉电标记是否等于1,若判断结果有一个为是则需要执行数据回滚,执行步骤120,否则执行步骤121。
进一步,本发明的方法还包括当Java卡检测到掉电发生时置所述纯掉电标记的值为1,相应的,当步骤119判断纯掉电标记等于1执行数据回滚时,当执行完成步骤120之后还包括将所述纯掉电标记的值恢复为0。
例如,本实施例中所述页号索引的最高位是0,纯掉电标记powerup=0。
步骤120:Java卡根据所述记录数据中包含的页号索引找到目标页,根据数据区游标在备份区域的第三块区中找到对应的备份页,将备份页中的原始数据恢复到所述目标页;
具体的,Java卡根据所述记录数据的第三、第四字节数据计算出目标页地址,根据计算出的目标页地址确定目标页,根据数据区游标的指向在备份区域的第三块区中确定备份页,将备份页中的原始数据写入所述目标页。
步骤121:Java卡更新记录区游标和数据区游标,返回执行步骤114;
具体的,Java卡将记录区游标更新为指向下一条记录数据,将数据区游标更新为指向下一备份页。
步骤122:Java卡清除备份区域的第二块区的内容,复位记录区游标,结束。
本实施例优选的,当上层应用调用开启事务本地方法时,所述Java卡开启事务,置位原子写标记;相应的所述方法还包括,当Java卡监测到数据区游标异常时,复位所述原子写标记。
本实施例提供的方法,利用整个备份区域来统一管理事务与掉电从而达到减少占用EEPROM/FLASH空间、节省执行时间的目的,提高了卡片的执行效率,同时兼顾芯片EEPROM/FLASH的磨损平衡,大大延长了芯片的使用寿命。
如图3所示,一种写数据操作的具体处理流程如下所示,当上层应用调用写操作本地方法,Java卡执行写数据操作时,Java卡执行以下步骤:
步骤201:获取当前目标页和待写数据;
步骤202:判断是否存在首次写标记,是则执行步骤203,否则执行步骤204;
具体的,判断是否存在首次写标记firstNVMWrite=1,是则执行步骤203,否则执行步骤204。
步骤203:遍历第一块区计算得到记录区游标和数据区游标初值,并根据得到的初值初始化记录区游标和数据区游标,清除首次写标记,执行步骤205;
具体的,第一块区的大小为一页,第一块区的第一个字节为备份区标记,每次掉电初始化时将第一块区的第一字节写入0x19;第一块区的其余字节为磨损控制段,每次掉电初始化时向磨损控制段中写入一个字节的0x18。进一步的,当磨损控制段的字节写满0x18时,自动擦除第一块区的内容,重头开始写入。
所述遍历第一块区计算得到记录区游标和数据区游标初值具体为,遍历第一块区得到第一块区中的磨损控制段中0x18所占字节长度,根据该长度按预设计算公式计算得到记录区游标初值和数据区游标初值。
预设计算公式如下:
bakpage_start(基准游标)=NVM_BAK_ZONE_BASE(NVM备份区域基址)+NVM_PAGE_SIZE(第一块区的大小)+第一块区中的磨损控制段中0x18的个数*NVM_PAGE_SIZE(第一块区的大小)
record_cursor(记录区游标初值)=bakpage_start
bakpage_cursor(数据区游标初值)=bakpage_start+TABLE_PAGE_SIZE(第二块区的大小)
例如:NVM备份区域基址是0xC08800,第一块区和第二块区的大小是128字节(即0x80),第一块区如下,
0x19 | 0x18 | 0x18 | 0x18 | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | …… |
则记录区游标初值=0xC08A00,数据区游标初值=0xC08A80。
步骤204:获取记录区游标和数据区游标,执行步骤205;
步骤205:根据当前目标页地址计算出页号索引,通过遍历第二块区的记录数据判断当前目标页是否已备份,是则执行步骤207,否则执行步骤206;
具体的:用当前目标页地址减去卡片NVM备份区域基址,将得到的值作移位运算(具体为右移7位)得到页号索引,遍历第二块区中的记录数据,判断是否存在满足如下条件的记录数据:记录数据的第一个字节数据等于0x18,并且第三、第四字节数据与根据当前目标页地址计算出的页号索引相同,若存在满足上述条件的记录数据则表示当前目标页已备份,否则表示当前目标页未备份。
例如,当前目标页地址为0xC07F00,NVM备份区域基址是0xC08800,计算得到的页号索引为0x00FE。
步骤206:根据遍历结果确定记录区游标,根据数据区游标将当前目标页的原始数据写入备份区域的第三块区,执行步骤208;
例如,第二块区中存储有3条记录数据,步骤205未遍历到与当前目标页对应的记录数据,则此时确定的记录区游标是指向第二块区的第15个字节的位置。
步骤207:置ret=1,执行步骤213;
步骤208:获取原子写标记并判断是否等于1,是则执行步骤209,否则执行步骤211;
具体的,获取原子写标记atomic_write,判断其值是否为1,是则执行步骤209,否则执行步骤211。
步骤209:设置备份标记为预设值,根据备份标记和页号索引计算校验值,根据所述备份标记、所述校验值和所述页号索引组成记录数据,根据记录区游标将所述记录数据写入备份区域的第二块区;
优选的,所述预设值为0x18。根据备份标记和页号索引计算校验值具体为:将备份标记和页号索引作异或运算得到的运算结果作为校验值。
例如,页号索引为0x00FE,计算得到的校验值为0xE6,组成的记录数据如下:0x180xE60x000xFE。
步骤210:将数据区游标后移一页,置ret=1,执行步骤213;
步骤211:将页号索引的最高位置位,置ret=0;
步骤212:设置备份标记为预设值,根据备份标记和页号索引计算校验值,根据所述备份标记、所述校验值和所述页号索引组成记录数据,根据记录区游标将所述记录数据写入备份区域的第二块区,执行步骤213;
步骤213:将所述待写数据写入当前目标页;
步骤214:判断ret是否等于0,是则执行步骤215,否则结束;
步骤215:清除当前写入到第二块区的记录数据,结束。
如图4所示,一种取消事务操作的具体处理流程如下所示,当上层应用调用取消事务本地方法,Java卡执行取消事务操作时,Java卡执行以下步骤:
步骤301:复位记录区游标和数据区游标;
具体的,所述复位记录区游标和数据区游标是指将记录区游标赋为记录区游标初值,指向第二块区的第一条记录数据,将数据区游标赋为数据区游标初值,指向第三块区的第一页备份页。
步骤302:根据记录区游标获取当前记录数据;
步骤303:判断当前记录数据中包含的备份标记是否等于预设值,是则执行步骤305,否则执行步骤304;
具体的,判断当前记录数据的第一字节是否等于0x18,是则执行步骤305,否则执行步骤304。
步骤304:清除备份区域的第二块区的内容,复位数据区游标,结束;
步骤305:判断所述记录数据中包含的校验值是否正确,是则执行步骤307,否则执行步骤306;
具体的,将所述记录数据的第一、第三和第四字节数据作异或运算,判断异或运算结果是否与记录数据的第二字节数据相等,是则表示记录数据中包含的校验值正确,否则不正确。
步骤306:返回错误信息给上层,结束;
步骤307:判断是否为原子写或纯掉电,是则执行步骤308,否则执行步骤309;
具体的,判断当前记录数据的第三字节数据的最高位是否等于0,或者纯掉电标记是否等于1,是则执行步骤308,否则执行步骤309。
步骤308:根据所述记录数据中包含的页号索引找到目标页,根据数据区游标在备份区域的第三块区中找到对应的备份页,将备份页中的原始数据恢复到所述目标页,执行步骤309;
步骤309:更新记录区游标和数据区游标,返回执行步骤302。
具体的,将记录区游标更新为指向第二块区的下一条记录数据,将数据区游标更新为指向第三块区的下一备份页。
实施例3
本实施例基于实施例1和2的实现事务与掉电保护统一管理的方法,提供了一种实现事务与掉电保护统一管理的装置,如图5所示,包括:非易失存储器芯片400、写操作模块500和事务处理模块600。当上层应用调用写操作本地方法时,触发所述写操作模块执行写数据操作;当上层应用调用事务开启本地方法时,触发所述事务处理模块执行开启事务操作;当上层应用调用事务回滚本地方法时,触发所述事务处理模块执行取消事务操作;当上层应用调用事务提交本地方法时,触发所述事务处理模块执行提交事务操作。所述非易失存储器芯片的备份区域包括第一块区、第二块区和第三块区。
所述写操作模块500包括获取单元501、第一判断单元502、数据备份单元503、第二判断单元504、计算单元505、写入单元506、第三判断单元507和清除单元508;
所述获取单元501,用于获取当前目标页和待写数据;
所述第一判断单元502,用于根据所述第二块区中的内容判断所述获取单元501获取的当前目标页是否已备份,是则置位事务标记并触发所述数据备份单元503,否则直接触发所述数据备份单元503;
所述数据备份单元503,用于将所述获取单元501获取的当前目标页的原始数据写入所述第三块区中,并触发第二判断单元;
所述第二判断单元504,用于判断当前写数据操作是否为原子写操作,是则置位事务标记,触发所述计算单元505,否则复位事务标记,触发所述计算单元505;
所述计算单元505,用于计算记录数据,将计算得到的记录数据写入所述第二块区中,并触发所述写入单元506;
所述写入单元506,用于将所述获取单元501获取的所述待写数据写入当前目标页,触发所述第三判断单元507;
所述第三判断单元507,用于根据事务标记判断是否需要清除记录;具体用于判断事务标记是否置位,是则表示不需要清除记录,否则表示需要清除记录。
所述清除单元508,用于当所述第三判断单元507判断结果为是时清除所述计算单元写入到所述第二块区的所述记录数据。
本实施例中优选的,所述写操作模块还包括第四判断单元和初始化单元;
所述第四判断单元,用于判断是否为首次写操作;具体用于判断是否存在首次写标记,是则触发所述初始化单元,否则触发所述获取单元;
所述初始化单元,用于当所述第四判断单元判断为是时执行掉电初始化。具体用于初始化所述记录区游标和所述数据区游标,清除所述首次写标记。
所述获取单元,还用于获取记录区游标和数据区游标;
进一步的,所述初始化单元,具体用于通过遍历备份区域的第一块区的内容计算得到记录区游标初值和数据区游标初值,并根据计算得到的初值分别初始化所述记录区游标和所述数据区游标。
本实施例中优选的,所述第一判断单元包括遍历子单元和触发子单元;
所述遍历子单元,用于遍历所述第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据;
所述触发子单元,用于当所述遍历子单元判断结果为是时置位事务标记并触发所述数据备份单元,用于当所述遍历子单元触发所述数据备份单元。
所述遍历子单元,具体用于根据当前目标页地址计算出页号索引,遍历所述第二块区中的记录数据,判断是否存在记录数据满足如下条件:记录数据的第一个字节等于预设值,并且第三、第四个字节与计算出的所述页号索引相同,若存在满足上述条件的记录数据则表示存在与当前目标页对应的记录数据,否则表示不存在与当前目标页对应的记录数据。
本实施例中优选的,所述第二判断单元,具体用于获取原子写标记并判断是否置位,是则当前写数据操作为原子写操作,置位事务标记,触发所述计算单元,否则当前写数据操作为非原子写操作,复位事务标记,触发所述计算单元。
相应的,所述事务处理模块包括开启事务子模块;所述写操作模块还包括监测单元;
所述开启事务子模块,用于开启事务,置位原子写标记;
所述监测单元,用于监测异常,并当监测到数据区游标异常时复位所述原子写标记。
本实施例中优选的,所述第二块区中存储的记录数据结构如下:每条记录数据长度是四个字节,其中第一个字节组成备份标记,第二个字节组成校验值,第三和第四个字节组成页号索引;
所述第一判断单元,还用于根据当前目标页地址计算出页号索引,遍历备份区域的第二块区中存储的记录数据并根据遍历结果确定记录区游标;
所述第二判断单元,还用于判断当前写数据操作为非原子写操作时将所述页号索引的最高位置位;还用于判断当前写数据操作为原子写操作时触发所述计算单元将数据区游标后移一页;
所述计算单元,具体用于将备份标记设置为预设值,根据所述备份标记和所述页号索引计算得到校验值,根据所述备份标记、所述校验值和所述页号索引组成记录数据,根据所述第一判断单元确定的所述记录区游标将所述记录数据写入所述第二块区中,并触发所述写入单元;
本实施例中优选的,所述事务处理模块还包括取消事务子模块;
所述取消事务子模块包括获取单元、第一判断单元、第二判断单元、第三判断单元和数据恢复单元;
所述获取单元,用于从所述备份区域的第二块区中获取一条记录数据作为当前记录数据;
所述第一判断单元,用于判断所述获取单元获取的当前记录数据是否对应有备份页,是则触发第二判断单元,否则清除备份区域的第二块区的内容;具体用于判断所述获取单元获取的当前记录数据中包含的备份标记是否等于预设值,是则触发第二判断单元,否则清除备份区域的第二块区的内容,并复位数据区游标。
所述第二判断单元,用于判断所述获取单元获取的当前记录数据中包含的校验值是否正确,是则触发第三判断单元,否则返回错误信息给上层;具体用于将当前记录数据的第一、第三和第四字节做异或运算,判断异或运算结果是否与当前记录数据的第二字节相等,是则触发第三判断单元,否则返回错误信息给上层。
所述第三判断单元,用于判断是否需要执行数据回滚,是则触发数据恢复单元,否则重新触发所述获取单元;具体用于判断是否满足当前记录数据的第三字节的最高位等于0或者纯掉电标记等于1,是则触发数据恢复单元,否则重新触发所述获取单元。
所述数据恢复单元,用于根据当前记录数据中包含的页号索引找到目标页,从备份区域的第三块区中找到与所述目标页对应的备份页,将所述备份页中的原始数据恢复到所述目标页。
进一步的,所述取消事务子模块还包括复位单元和跳转单元;
所述复位单元,用于复位记录区游标和数据区游标之后触发所述获取单元;
所述跳转单元,用于在所述数据恢复单元将所述备份页中的原始数据恢复到所述目标页之后,将记录区游标更新为指向第二块区的下一条记录数据,将数据区游标更新为指向第三块区的下一备份页,并触发所述获取单元。
本实施例中优选的,所述事务处理模块还包括提交事务子模块;所述提交事务子模块,用于清除备份区域的第二块区的内容,复位记录区游标。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (26)
1.一种实现事务与掉电保护统一管理的方法,其特征在于:当Java卡执行写数据操作时,执行以下步骤:
步骤S1:所述Java卡获取当前目标页和待写数据;
步骤S2:所述Java卡根据备份区域的第二块区中的内容判断当前目标页是否已备份,是则置位事务标记并执行步骤S5,否则执行步骤S3;
步骤S3:所述Java卡将当前目标页的原始数据写入备份区域的第三块区中,并判断当前写数据操作是否为原子写操作,是则置位事务标记,执行步骤S4,否则复位事务标记,执行步骤S4;
步骤S4:所述Java卡计算与所述原始数据对应的记录数据,将计算得到的记录数据写入所述备份区域的第二块区中;
步骤S5:所述Java卡将所述待写数据写入当前目标页;
步骤S6:所述Java卡根据所述事务标记判断是否需要清除记录,是则执行步骤S7,否则写数据操作结束;
步骤S7:所述Java卡清除写入所述第二块区的所述记录数据,写数据操作结束;
所述步骤S2之前还包括,所述Java卡判断是否为首次写操作,是则执行掉电初始化,执行所述步骤S2,否则直接执行所述步骤S2;
所述Java卡判断是否为首次写操作具体为:所述Java卡判断是否存在首次写标记,是则执行掉电初始化,执行步骤S2;否则获取记录区游标和数据区游标,执行步骤S2;
所述执行掉电初始化包括:初始化所述记录区游标和所述数据区游标,清除所述首次写标记;
所述初始化所述记录区游标和所述数据区游标具体为,通过遍历备份区域的第一块区的内容计算得到记录区游标初值和数据区游标初值,并根据计算得到的记录区游标初值和数据区游标初值分别初始化所述记录区游标和所述数据区游标;
所述第一块区为磨损控制区,所述第二块区为备份记录区,用于存储记录数据,所述记录区游标用于指向所述第二块区的当前记录数据;所述第三块区为备份数据区,用于存储备份页,所述数据区游标用于指向所述第三块区的当前备份页。
2.根据权利要求1所述的方法,其特征在于:所述步骤S2具体为,所述Java卡遍历备份区域的第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据,是则置位事务标记,执行步骤S5,否则根据遍历结果确定记录区游标,执行步骤S3。
3.根据权利要求2所述的方法,其特征在于:所述Java卡遍历备份区域的第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据,具体为:所述Java卡根据当前目标页地址计算出页号索引,遍历第二块区中的记录数据,判断是否存在满足如下条件的记录数据:记录数据的第一个字节数据等于预设值,并且记录数据的第三、第四个字节数据与根据当前目标页地址计算出的页号索引相同,若存在满足上述条件的记录数据则表示当前目标页已备份,否则表示当前目标页未备份。
4.根据权利要求1所述的方法,其特征在于:所述步骤S6具体为,所述Java卡判断所述事务标记是否置位,是则不需要清除记录,写数据操作结束;否则需要清除记录,执行步骤S7。
5.根据权利要求1所述的方法,其特征在于:所述判断当前写数据操作是否为原子写操作具体为,获取原子写标记并判断是否置位,是则当前写数据操作为原子写操作,否则当前写数据操作为非原子写操作。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:当Java卡执行开启事务操作时,置位原子写标记;
所述步骤S3之前还包括,当所述Java卡监测到数据区游标异常时,复位所述原子写标记。
7.根据权利要求1所述的方法,其特征在于:所述第二块区中存储的记录数据结构如下:每条记录数据长度是四个字节,其中第一个字节数据组成备份标记,第二个字节数据组成校验值,第三和第四个字节数据组成页号索引;
所述步骤S2还包括,根据当前目标页地址计算出页号索引,遍历备份区域的第二块区中存储的记录数据并根据遍历结果确定记录区游标;
所述步骤S3与步骤S4之间还包括,若所述Java卡判断当前写数据操作为非原子写操作则将所述页号索引的最高位置位;
所述步骤S4具体为,所述Java卡将备份标记设置为预设值,根据所述备份标记和所述页号索引计算得到校验值,根据所述备份标记、所述校验值和所述页号索引组成记录数据,根据所述记录区游标将所述记录数据写入所述第二块区中;
所述步骤S4之前,若所述Java卡判断当前写数据操作为原子写操作则所述步骤S4还包括将数据区游标后移一页。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:当Java卡执行取消事务操作时,执行以下步骤:
步骤R1:所述Java卡从所述备份区域的第二块区中获取一条记录数据作为当前记录数据;
步骤R2:所述Java卡判断当前记录数据是否对应有备份页,是则执行步骤R3,否则所述Java卡清除备份区域的第二块区的内容,取消事务操作结束;
步骤R3:所述Java卡判断当前记录数据中包含的校验值是否正确,是则执行步骤R4,否则所述Java卡返回错误信息给上层,取消事务操作结束;
步骤R4:所述Java卡判断是否需要执行数据回滚,是则执行步骤R5,否则返回执行步骤R1;
步骤R5:所述Java卡根据当前记录数据中包含的页号索引找到目标页,从所述备份区域的第三块区中找到与所述目标页对应的备份页,将所述备份页中的原始数据恢复到所述目标页,返回执行步骤R1。
9.根据权利要求8所述的方法,其特征在于,所述步骤R1之前还包括:
步骤R0:所述Java卡复位记录区游标和数据区游标;
所述步骤R5中所述返回执行步骤R1之前还包括,将记录区游标更新为指向第二块区的下一条记录数据,将数据区游标更新为指向第三块区的下一备份页。
10.根据权利要求8所述的方法,其特征在于,所述步骤R2具体为:所述Java卡判断当前记录数据中包含的备份标记是否等于预设值,是则执行步骤R3,否则所述Java卡清除所述备份区域的第二块区的内容,复位数据区游标,取消事务操作结束。
11.根据权利要求8所述的方法,其特征在于,所述步骤R3具体为:所述Java卡将当前记录数据的第一、第三和第四字节数据做异或运算,判断异或运算结果是否与当前记录数据的第二字节数据相等,是则执行步骤R4,否则Java卡返回错误信息给上层,取消事务操作结束。
12.根据权利要求8所述的方法,其特征在于,所述步骤R4具体为,所述Java卡判断是否满足当前记录数据的第三字节的最高位等于0或者纯掉电标记等于1,是则执行步骤R5,否则返回执行步骤R1。
13.根据权利要求1所述的方法,其特征在于,所述方法还包括:当Java卡执行提交事务操作时,执行以下步骤:所述Java卡清除备份区域的第二块区的内容,复位记录区游标。
14.一种实现事务与掉电保护统一管理的装置,包括非易失存储器芯片、写操作模块和事务处理模块,其特征在于:所述非易失存储器芯片的备份区域包括第一块区、第二块区和第三块区;所述第一块区为磨损控制区,所述第二块区为备份记录区,用于存储记录数据,记录区游标用于指向所述第二块区的当前记录数据;所述第三块区为备份数据区,用于存储备份页,数据区游标用于指向所述第三块区的当前备份页;
所述写操作模块包括获取单元、第一判断单元、数据备份单元、第二判断单元、计算单元、写入单元、第三判断单元和清除单元;
所述获取单元,用于获取当前目标页和待写数据;
所述第一判断单元,用于根据所述第二块区中的内容判断所述获取单元获取的当前目标页是否已备份,是则置位事务标记并触发所述数据备份单元,否则触发所述写入单元;
所述数据备份单元,用于将所述获取单元获取的当前目标页的原始数据写入所述第三块区中,并触发第二判断单元;
所述第二判断单元,用于判断当前写数据操作是否为原子写操作,是则置位事务标记,触发所述计算单元,否则复位事务标记,触发所述计算单元;
所述计算单元,用于计算与所述原始数据对应的记录数据,将计算得到的记录数据写入所述第二块区中,并触发所述写入单元;
所述写入单元,用于将所述获取单元获取的所述待写数据写入当前目标页,触发所述第三判断单元;
所述第三判断单元,用于根据事务标记判断是否需要清除记录;
所述清除单元,用于当所述第三判断单元判断结果为是时清除所述计算单元写入到所述第二块区的所述记录数据;
所述写操作模块还包括第四判断单元和初始化单元;
所述第四判断单元,用于判断是否为首次写操作;
所述初始化单元,用于当所述第四判断单元判断为是时执行掉电初始化;
所述第四判断单元,具体用于判断是否存在首次写标记,是则触发所述初始化单元,否则触发所述获取单元;
所述获取单元,还用于在所述第四判断单元判断为否时获取所述记录区游标和所述数据区游标;
所述初始化单元,具体用于初始化所述记录区游标和所述数据区游标,清除所述首次写标记;
所述初始化单元,具体用于通过遍历所述备份区域的第一块区的内容计算得到记录区游标初值和数据区游标初值,并根据计算得到的记录区游标初值和数据区游标初值分别初始化所述记录区游标和所述数据区游标。
15.根据权利要求14所述的装置,其特征在于:所述第一判断单元包括遍历子单元和触发子单元;
所述遍历子单元,用于遍历所述第二块区中存储的记录数据,判断是否存在与当前目标页对应的记录数据;
所述触发子单元,用于当所述遍历子单元判断结果为是时置位事务标记并触发所述写入单元,用于当所述遍历子单元判断结果为否时根据遍历结果确定记录区游标,触发所述数据备份单元。
16.根据权利要求15所述的装置,其特征在于:所述遍历子单元,具体用于根据当前目标页地址计算出页号索引,遍历所述第二块区中的记录数据,判断是否存在满足如下条件的记录数据:记录数据的第一个字节数据等于预设值,并且第三、第四个字节数据与计算出的所述页号索引相同,若存在满足上述条件的记录数据则表示存在与当前目标页对应的记录数据,否则表示不存在与当前目标页对应的记录数据。
17.根据权利要求14所述的装置,其特征在于:所述第三判断单元,具体用于判断事务标记是否置位,是则表示不需要清除记录,否则表示需要清除记录。
18.根据权利要求14所述的装置,其特征在于:所述第二判断单元,具体用于获取原子写标记并判断是否置位,是则当前写数据操作为原子写操作,置位事务标记,触发所述计算单元,否则当前写数据操作为非原子写操作,复位事务标记,触发所述计算单元。
19.根据权利要求18所述的装置,其特征在于:所述事务处理模块包括开启事务子模块;
所述开启事务子模块,用于开启事务,置位原子写标记;
所述写操作模块还包括监测单元;
所述监测单元,用于监测异常,并当监测到数据区游标异常时复位所述原子写标记。
20.根据权利要求14所述的装置,其特征在于:所述第二块区中存储的记录数据结构如下:每条记录数据长度是四个字节,其中第一个字节数据组成备份标记,第二个字节数据组成校验值,第三和第四个字节数据组成页号索引;
所述第一判断单元,还用于根据当前目标页地址计算出页号索引,遍历备份区域的第二块区中存储的记录数据并根据遍历结果确定记录区游标;
所述第二判断单元,还用于当判断当前写数据操作为非原子写操作时将所述页号索引的最高位置位;还用于当判断当前写数据操作为原子写操作时触发所述计算单元将数据区游标后移一页;
所述计算单元,具体用于将备份标记设置为预设值,根据所述备份标记和所述页号索引计算得到校验值,根据所述备份标记、所述校验值和所述页号索引组成记录数据,根据所述第一判断单元确定的所述记录区游标将所述记录数据写入所述第二块区中,并触发所述写入单元。
21.根据权利要求14所述的装置,其特征在于:所述事务处理模块包括取消事务子模块;
所述取消事务子模块包括获取单元、第一判断单元、第二判断单元、第三判断单元和数据恢复单元;
所述获取单元,用于从所述备份区域的第二块区中获取一条记录数据作为当前记录数据;
所述第一判断单元,用于判断所述获取单元获取的当前记录数据是否对应有备份页,是则触发第二判断单元,否则清除备份区域的第二块区的内容;
所述第二判断单元,用于判断所述获取单元获取的当前记录数据中包含的校验值是否正确,是则触发第三判断单元,否则返回错误信息给上层;
所述第三判断单元,用于判断是否需要执行数据回滚,是则触发数据恢复单元,否则重新触发所述获取单元;
所述数据恢复单元,用于根据当前记录数据中包含的页号索引找到目标页,从所述备份区域的第三块区中找到与所述目标页对应的备份页,将所述备份页中的原始数据恢复到所述目标页。
22.根据权利要求21所述的装置,其特征在于:所述取消事务子模块还包括复位单元和跳转单元;
所述复位单元,用于复位记录区游标和数据区游标,触发所述获取单元;
所述跳转单元,用于在所述数据恢复单元将所述备份页中的原始数据恢复到所述目标页之后,将记录区游标更新为指向第二块区的下一条记录数据,将数据区游标更新为指向第三块区的下一备份页,并触发所述获取单元。
23.根据权利要求21所述的装置,其特征在于:所述第一判断单元,具体用于判断所述获取单元获取的当前记录数据中包含的备份标记是否等于预设值,是则触发第二判断单元,否则清除所述备份区域的第二块区的内容,并复位数据区游标。
24.根据权利要求21所述的装置,其特征在于:所述第二判断单元,具体用于将当前记录数据的第一、第三和第四字节数据做异或运算,判断异或运算结果是否与当前记录数据的第二字节数据相等,是则触发第三判断单元,否则返回错误信息给上层。
25.根据权利要求21所述的装置,其特征在于:所述第三判断单元,具体用于判断是否满足当前记录数据的第三字节的最高位等于0或者纯掉电标记等于1,是则触发数据恢复单元,否则重新触发所述获取单元。
26.根据权利要求14所述的装置,其特征在于:所述事务处理模块包括提交事务子模块;所述提交事务子模块,用于清除备份区域的第二块区的内容,复位记录区游标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711415867.3A CN108108271B (zh) | 2017-12-25 | 2017-12-25 | 一种实现事务与掉电保护统一管理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711415867.3A CN108108271B (zh) | 2017-12-25 | 2017-12-25 | 一种实现事务与掉电保护统一管理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108108271A CN108108271A (zh) | 2018-06-01 |
CN108108271B true CN108108271B (zh) | 2020-11-03 |
Family
ID=62212585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711415867.3A Active CN108108271B (zh) | 2017-12-25 | 2017-12-25 | 一种实现事务与掉电保护统一管理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108108271B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427718B (zh) * | 2019-12-10 | 2024-01-23 | 杭州海康威视数字技术股份有限公司 | 文件备份方法、恢复方法及装置 |
CN113785275B (zh) * | 2020-12-17 | 2024-03-05 | 深圳杰睿联科技有限公司 | Flash数据掉电保护方法及设备 |
CN113380308B (zh) * | 2021-06-22 | 2023-10-27 | 力高(山东)新能源技术有限公司 | 一种使用pflash软件模拟eeprom的数据存储方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495754A (zh) * | 2011-10-27 | 2012-06-13 | 飞天诚信科技股份有限公司 | 基于缓存的java卡事务处理方法 |
CN103793337A (zh) * | 2013-11-12 | 2014-05-14 | 飞天诚信科技股份有限公司 | 一种防掉电的数据保护方法 |
CN104536847A (zh) * | 2014-12-18 | 2015-04-22 | 飞天诚信科技股份有限公司 | 一种提高数据写入完整性的方法 |
CN104978154A (zh) * | 2015-07-27 | 2015-10-14 | 武汉天喻信息产业股份有限公司 | 一种基于缓存操作的flash快速读写方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100746198B1 (ko) * | 2005-07-08 | 2007-08-06 | 삼성전자주식회사 | 데이터 저장장치, 데이터 저장방법, 및 그 기록매체 |
US8301593B2 (en) * | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
EP2598996B1 (en) * | 2010-07-28 | 2019-07-10 | SanDisk Technologies LLC | Apparatus, system, and method for conditional and atomic storage operations |
-
2017
- 2017-12-25 CN CN201711415867.3A patent/CN108108271B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495754A (zh) * | 2011-10-27 | 2012-06-13 | 飞天诚信科技股份有限公司 | 基于缓存的java卡事务处理方法 |
CN103793337A (zh) * | 2013-11-12 | 2014-05-14 | 飞天诚信科技股份有限公司 | 一种防掉电的数据保护方法 |
CN104536847A (zh) * | 2014-12-18 | 2015-04-22 | 飞天诚信科技股份有限公司 | 一种提高数据写入完整性的方法 |
CN104978154A (zh) * | 2015-07-27 | 2015-10-14 | 武汉天喻信息产业股份有限公司 | 一种基于缓存操作的flash快速读写方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108108271A (zh) | 2018-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9612957B2 (en) | Read disturb and data retention handling for NAND devices | |
CN108108271B (zh) | 一种实现事务与掉电保护统一管理的方法及装置 | |
US9558055B2 (en) | System level memory leak detection | |
CN110399380B (zh) | 一种数据处理方法、电子装置及存储介质 | |
US9710340B2 (en) | Replacement of a corrupt driver variable record | |
KR102031606B1 (ko) | 버저닝된 메모리 구현 | |
CN113785275B (zh) | Flash数据掉电保护方法及设备 | |
TWI633428B (zh) | 資料儲存裝置與記憶體裝置之資料處理方法 | |
CN104808951A (zh) | 进行存储控制的方法和设备 | |
CN109150642B (zh) | 应用内存错误检测方法、检测装置及存储介质 | |
US20140082346A1 (en) | Method and System for Managing Basic Input/Output System (BIOS) Configuration Data of BIOS | |
CN110333770A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
US20100131803A1 (en) | Computation of stack usage in embedded computing systems | |
CN106033574B (zh) | 一种作弊行为的识别方法及装置 | |
US20140351628A1 (en) | Information processing device, control circuit, computer-readable recording medium for control program, and control method | |
CN107992268B (zh) | 一种坏块标记的方法及相关装置 | |
CN116821006B (zh) | 闪存数据防丢失与擦写平衡方法、系统、装置和介质 | |
CN109254929B (zh) | 实现数据被可靠写入芯片的方法 | |
CN107239229B (zh) | 用于执行数据更新的方法 | |
CN113836600B (zh) | 一种Embedded Flash误写保护方法 | |
CN109960611B (zh) | 数据恢复的方法、装置、电子设备及机器可读存储介质 | |
CN114217736A (zh) | 减少预读的数据写入方法、装置和存储介质 | |
US20180253349A1 (en) | Fault tolerant operating metohd and electronic device using the same | |
CN108875369B (zh) | 一种控制流完整性校验方法、装置和计算机存储介质 | |
KR101608623B1 (ko) | 전원 손실 이후 효과적인 데이터 복구를 위한 메모리 복구 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |