一种数据处理方法、系统、装置及可读存储介质
技术领域
本发明涉及信息安全领域,特别涉及一种数据处理方法、系统、装置及可读存储介质。
背景技术
在一些对数据完整性和一致性要求较高的领域,例如电力行业、金融行业,安全芯片的运行环境都并非十分理想,掉电的情况时有发生。正常工作时,将安全芯片的数据从内存源区域写到存储器的目的区域,一旦写入过程中掉电,目的区域内的数据不完整,会造成数据紊乱,甚至造成系统奔溃。
因此,如何提供一种解决上述技术问题的方案是目前本领域技术人员需要解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种实现掉电保护目的、保证数据完整和一致的数据处理方法、系统、装置及可读存储介质。其具体方案如下:
一种数据处理方法,应用于掉电保护,包括:
判断存储器的备份区是否存在有效标识;
如果是,将所述备份区的修改数据恢复至所述存储器的目的区域;
判断所述备份区的所有修改数据是否均已经恢复至所述目的区域;
如果是,取消所述备份区的所述有效标识;
其中,所述有效标识为内存中的修改数据被完全写入所述备份区后添加的完成标识。
优选的,所述内存中的修改数据被完全写入所述备份区的过程,具体包括:
将所述内存中的修改数据写入所述备份区;
判断所述内存中的所有修改数据是否均已写入所述备份区;
如果是,在所述备份区添加所述有效标识。
优选的,所述将所述内存中的修改数据写入所述备份区的过程,具体包括:
将所述内存中源区域的修改数据写入所述内存的缓存区;
判断所述源区域的所有修改数据是否均已写入所述缓存区;
如果是,将所述缓存区的修改数据镜像至所述备份区;
相应的,所述判断所述内存中的所有修改数据是否均已写入所述备份区的过程,具体为:
判断所述缓存区的所有修改数据是否均已被镜像至所述备份区。
优选的,所述将所述内存中源区域的修改数据写入所述内存的缓存区备份区之前,还包括:
比较所述源区域与所述目的区域的数据,得到差异数据,将所述差异数据确定为所述源区域内存中的修改数据。
优选的,所述将所述内存中源区域的修改数据写入所述内存的缓存区将所述缓存区的修改数据镜像至所述备份区的过程,还包括:
在所述缓存区的修改数据中添加对应的地址信息和大小信息。优选的,所述数据处理方法,还包括数据读取,所述数据读取的过程具体包括:
检测所述缓存区中是否存在目标数据;
如果否,直接读取所述目的区域的目标数据;
如果是,读取所述缓存区的目标数据,并判断该目标数据是否完整;
如果否,再读取所述目的区域剩余的目标数据。
相应的,本发明还公开了一种数据处理系统,应用于掉电保护,包括:
第一判断模块,用于判断存储器的备份区是否存在有效标识;如果是,触发恢复模块;
所述恢复模块,用于将所述备份区的修改数据恢复至所述存储器的目的区域;
第二判断模块,用于判断所述备份区的所有修改数据是否均已经恢复至所述目的区域;如果是,触发标识取消模块;
所述标识取消模块,用于取消所述备份区的所述有效标识;
其中,所述有效标识为内存中的修改数据被完全写入所述备份区后添加的完成标识。
优选的,所述数据处理系统还包括:
备份模块,用于将所述内存中的修改数据写入所述备份区;
第三判断模块,用于判断所述内存中的所有修改数据是否均已写入所述备份区;如果是,触发标识添加模块;
所述标识添加模块,用于在所述备份区添加所述有效标识。
相应的,本发明公开了一种数据处理装置,应用于掉电保护,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文所述数据处理方法的步骤。
相应的,本发明公开了一种可读存储介质,应用于掉电保护,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文所述数据处理方法的步骤。
本发明公开了一种数据处理方法,应用于掉电保护,包括:判断存储器的备份区是否存在有效标识;如果是,将所述备份区的修改数据恢复至所述存储器的目的区域;判断所述备份区的所有修改数据是否均已经恢复至所述目的区域;如果是,取消所述备份区的所述有效标识;其中,所述有效标识为内存中的修改数据被完全写入所述备份区后添加的完成标识。
本发明中,有效标识的存在保证了修改数据的完整性,达到了掉电保护的目的:只有所有的修改数据全部从备份区恢复到目的区域,才能取消有效标识,如果在恢复过程中系统掉电,那么重新上电后备份区的有效标识依然存在,备份区的修改数据保存完整,修改数据再次由备份区恢复至目的区域,总能被完整地被恢复至目的区域,不存在目的区域只能保存一部分修改数据的情况。类似的,在所有修改数据由内存写入备份区后,才能够添加有效标识,如果修改数据在由内存写入备份区过程中掉电,则备份区没有有效标识,不会执行本发明中将修改数据由备份区恢复至目的区域的动作,保证修改数据的完整一致。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中一种数据处理方法的步骤流程图;
图2为本发明实施例中一种数据处理方法的具体步骤流程图;
图3为本发明实施例中一种数据处理方法的具体步骤流程图;
图4为本发明实施例中一种备份区的数据组织示意图;
图5a为本发明实施例中一种数据处理方法的数据变化示意图;
图5b为本发明实施例中一种数据处理方法的数据变化示意图;
图5c为本发明实施例中一种数据处理方法的数据变化示意图;
图5d为本发明实施例中一种数据处理方法的数据变化示意图;
图5e为本发明实施例中一种数据处理方法的数据变化示意图;
图6为本发明实施例中一种数据处理系统的结构分布图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种数据处理方法,应用于掉电保护,参见图1所示,包括:
S01:判断存储器的备份区是否存在有效标识;
S02:如果是,将所述备份区的修改数据恢复至所述存储器的目的区域;
S03:判断所述备份区的所有修改数据是否均已经恢复至所述目的区域;
S04:如果是,取消所述备份区的所述有效标识;
其中,所述有效标识为内存中的修改数据被完全写入所述备份区后添加的完成标识。
具体的,备份区的修改数据是由内存中写入备份区的修改数据,但修改数据的写入过程与修改数据的恢复过程并不要求系统持续供电,即使修改数据的写入过程系统掉电,或恢复过程中系统掉电,修改数据的完整性依然可以由有效标识保证:只有所有的修改数据全部从备份区恢复到目的区域,才能取消有效标识,如果在恢复过程中系统掉电,那么重新上电后备份区的有效标识依然存在,备份区的修改数据保存完整,修改数据再次由备份区恢复至目的区域,总能被完整地被恢复至目的区域,不存在目的区域只能保存一部分修改数据的情况。类似的,在所有修改数据由内存写入备份区后,才能够添加有效标识,如果修改数据在由内存写入备份区过程中掉电,则备份区没有有效标识,不会执行本发明中将修改数据由备份区恢复至目的区域的动作,保证修改数据的完整一致。
本发明实施例公开了一种数据处理方法,应用于掉电保护,包括:判断存储器的备份区是否存在有效标识;如果是,将备份区的修改数据恢复至存储器的目的区域;判断备份区的所有修改数据是否均已经恢复至目的区域;如果是,取消备份区的有效标识;其中,有效标识为内存中的修改数据被完全写入备份区后添加的完成标识。本发明中,有效标识的存在保证了修改数据的完整性,达到了掉电保护的目的:如果在恢复过程中系统掉电,重新上电后备份区的有效标识依然存在,备份区的修改数据保存完整,修改数据再次由备份区恢复至目的区域,总能被完整地被恢复至目的区域。如果修改数据在由内存写入备份区过程中掉电,备份区没有有效标识,不会执行将修改数据由备份区恢复至目的区域的动作,保证修改数据的完整一致。
本发明实施例公开了一种具体的数据处理方法,相对与上一实施例,本实施例对技术方案做了进一步的说明和优化。
其中,所述内存中的修改数据被完全写入所述备份区的过程,具体包括:
将所述内存中的修改数据写入所述备份区;
判断所述内存中的所有修改数据是否均已写入所述备份区;
如果是,在所述备份区添加所述有效标识。
进一步的,所述将所述内存中的修改数据写入所述备份区的过程包括:
将所述内存中源区域的修改数据写入所述内存的缓存区;
判断所述源区域的所有修改数据是否均已写入所述缓存区;
如果是,将所述缓存区的修改数据镜像至所述备份区;
相应的,所述判断所述内存中的所有修改数据是否均已写入所述备份区的过程,具体为:
判断所述缓存区的所有修改数据是否均已被镜像至所述备份区。
可以理解的是,本实施例的动作执行于上一实施例之前,其步骤流程图参见图2,包括:
S11:将内存中源区域的修改数据写入所述内存的缓存区;
S12:判断源区域的所有修改数据是否均已被写入所述缓存区;
S13:如果是,将所述缓存区的修改数据镜像至所述备份区;
具体的,存储器一般为EEPROM(Electrically-Erasable Programmable Read-Only Memory,电子抹除式可复写只读存储器)或FLASH存储芯片。
由于FLASH具有“先擦后写,按页擦写”的特性,为了防止擦写过程中掉电,备份数据时必须按页备份,所以当存储器为FLASH时,在将所述缓存区的修改数据镜像至存储器的备份区之前,还需要对所述备份区进行边界扩展,除了缓存修改数据外,还可能要从目的区域读取部分数据,扩充修改数据的前后,使得备份的数据扩展为页大小的整数倍。
S14:判断所述缓存区的所有修改数据是否均已被镜像至所述备份区;
S15:如果是,在所述备份区添加所述有效标识。
通常,本实施例的数据处理方法被设定为可选择的,也就是说,用户既可以选择在将修改数据从源区域写入目的区域的过程中使用本数据处理方法,也可以选择不使用本方法,直接将源区域的修改数据写入目的区域。这是,相较于传统的数据修改路径,本实施例中从源区域——缓存区——备份区——目的区域这种数据路径,可以被看做是改变传统路径的重定向。
其中,数据处理方法中的重定向可以分为写重定向和读重定向。写重定向的步骤参照上文中步骤S11至S15,而读重定向参见图3所示,即重定向时的数据读取步骤包括:
S21:检测所述缓存区中是否存在目标数据;
S22:如果否,直接读取所述目的区域的目标数据;
S23:如果是,读取所述缓存区的目标数据,并判断该目标数据是否完整;
S24:如果否,再读取所述目的区域剩余的目标数据。
如果是,结束数据读取动作。
当然,在进行步骤S21至S25之前,还可以判断内存和存储器是否处于重定向状态,如果处于重定向状态,最新数据既可能处于目的区域,也可能处于缓存区,为了完整读取所有数据,必须遍历缓存区和目的区域进行读取,执行图3中重定向的数据读取;如果不处于重定向状态,数据的写入和读取只与源区域和目的区域相关,按照常规方法进行写入和读取即可。
其中,处于重定向状态就意味着处于掉电保护状态,程序中可以用全局变量g_in_protect作为掉电保护的开关。
除此外,还可以设置三个通用接口fs_protect_begin、fs_protect_end、fs_protect_abort,分别用于掉电保护功能的开启、关闭和撤销接口。
具体的,fs_protect_begin接口会开启掉电保护开关(g_in_protect),启动数据重定向功能,监视文件系统的写入操作步骤S11或读取操作步骤S21-S24;fs_protect_end接口会关闭掉电保护开关,结束对文件系统写入/读取操作的监视,进入数据镜像流程步骤S13,在镜像结束后,设置有效标志并进入数据恢复流程;fs_protect_abort接口会关闭掉电保护开关,结束对文件系统写入操作的监视,清除“原子写”有效标志,相当于进行事务回滚,撤销之前的写入操作。
本发明实施例公开了一种具体的数据处理方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
所述将所述内存中源区域的修改数据写入所述内存的缓存区备份区之前,还包括:
比较所述源区域与所述目的区域的数据,得到差异数据,将所述差异数据确定为所述源区域内存中的修改数据。
进一步的,所述将所述内存中源区域的修改数据写入所述内存的缓存区将所述缓存区的修改数据镜像至所述备份区的过程,还包括:
在所述缓存区的修改数据中添加对应的地址信息和大小信息。
在步骤S11所述将所述内存中源区域的修改数据写入所述内存的缓存区备份区之前,还包括:
比较所述源区域与所述目的区域的数据,得到差异数据,将所述差异数据确定为所述源区域内存中的修改数据。可以理解的是,在某些情况下,源区域和目的区域的数据差异并不会太大,因此不需要让目的区域的数据完全被源区域的数据覆盖写入,只需要写入差异数据,也即只需要对差异数据进行缓存和备份。
进一步,在步骤S11所述将所述内存中源区域的修改数据写入所述内存的缓存区将所述缓存区的修改数据镜像至所述备份区的过程,还包括:
在所述缓存区的修改数据中添加修改数据的地址信息和大小信息。
设计结构体备份区管理头部fs_protect_head和备份块头部fs_protect_frame管理上述修改数据,其中备份区管理头部包括原子写有效标志、备份块的个数、备份数据总长度;备份块头部包括备份块大小、备份块目的地址,具体见下文中程序,其管理方式如图4所示,备份区中的备份块也就是分散独立的每块修改数据。
实际应用时,数据的变化过程参见图5a至图5e所示,其中图5a为修改数据写入前,图5b为步骤S11的写入缓存区示意图,图5c为步骤S13的镜像示意图,图5d为步骤S15的恢复至目的区域示意图,图5e为恢复至目的区域并取消有效标志示意图。
相应的,本发明实施例还公开了一种数据处理系统,应用于掉电保护,参见图6所示,包括:
第一判断模块1,用于判断存储器的备份区是否存在有效标识;如果是,触发恢复模块2;
所述恢复模块2,用于将所述备份区的修改数据恢复至所述存储器的目的区域;
第二判断模块3,用于判断所述备份区的所有修改数据是否均已经恢复至所述目的区域;如果是,触发标识取消模块4;
所述标识取消模块4,用于取消所述备份区的所述有效标识;
其中,所述有效标识为内存中的修改数据被完全写入所述备份区后添加的完成标识。
在一些具体的实施例中,所述数据处理系统还包括:
备份模块,用于将所述内存中的修改数据写入所述备份区;
第三判断模块,用于判断所述内存中的所有修改数据是否均已写入所述备份区;如果是,触发标识添加模块;
所述标识添加模块,用于在所述备份区添加所述有效标识。
其中,本发明实施例中数据处理系统具有与上文实施例中数据处理方法相同的有益效果。
相应的,本发明实施例还公开了一种数据处理装置,应用于掉电保护,应用于掉电保护,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述数据处理方法的步骤。
其中,有关数据处理方法的细节描述可以参照上文实施例中的相关内容,此处不再赘述。
其中,本发明实施例中数据处理装置具有与上文实施例中数据处理方法相同的有益效果。
相应的,本发明实施例还公开了一种可读存储介质,应用于掉电保护,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任一项所述数据处理方法的步骤。
其中,有关数据处理方法的细节描述可以参照上文实施例中的相关内容,此处不再赘述。
其中,本发明实施例中可读存储介质具有与上文实施例中数据处理方法相同的有益效果。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种数据处理方法、系统、装置及可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。