一种数据读取方法、电子设备及计算机存储介质与流程

文档序号:18188868发布日期:2019-07-17 05:29阅读:188来源:国知局
一种数据读取方法、电子设备及计算机存储介质与流程

本公开涉及电子与信息技术领域,尤其是涉及一种数据读取方法、电子设备及计算机存储介质。



背景技术:

相关技术中,在对存储空间中的数据进行读取时,若存储空间中某一数据块发生损坏,则电子设备无法读取到存储在存储空间中数据。



技术实现要素:

为解决上述技术问题,本发明实施例期望提供一种数据读取方法、电子设备及计算机存储介质,解决相关技术中在对存储空间中的数据进行读取时,若存储空间中某一数据块发生损坏,则电子设备无法读取到存储在存储空间中数据的问题。

本发明的技术方案是这样实现的:

一种数据读取方法,所述方法包括:

从第一存储空间的起始位置开始读取所述第一存储空间中数据块的数据;

若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取所述第二存储空间中数据块的数据;

其中,所述第一存储空间和所述第二存储空间存储的数据相同,所述第一损坏块的位置和所述第一位置的地址相应。

可选地,所述若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取所述第二存储空间中数据块的数据之后,所述方法还包括:

若读取到第二损坏块的位置,从所述第一存储空间的第二位置继续读取所述第一存储空间中数据块的数据;其中,所述第二损坏块的位置和所述第二位置的地址相应。

可选地,所述若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取所述第二存储空间中数据块的数据之后,所述方法还包括:

若在所述第二存储空间中读取到所述第二损坏块之前读取到数据块中数据的结束标识,确定从所述第一存储空间和所述第二存储空间中读取到的数据块的数据为目标数据。

可选地,所述若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取所述第二存储空间中数据块的数据,包括:

若读取到所述第一损坏块,记录所述第一损坏块的位置,并生成第一读取指令;

基于所述第一读取指令,从所述第一存储空间的起始位置开始读取所述第一存储空间中数据块的数据;

若读取到所述第一损坏块的位置,从所述第二存储空间的所述第一位置继续读取所述第二存储空间中数据块的数据。

可选地,所述若读取到第二损坏块的位置,从所述第一存储空间的第二位置继续读取所述第一存储空间中数据块的数据,包括:

若读取到所述第二损坏块,记录所述第二损坏块的位置,并生成第二读取指令;

基于所述第二读取指令,从所述第一存储空间的起始位置开始读取所述第一存储空间中数据块的数据;

若读取到所述第一损坏块的位置,从所述第二存储空间的所述第一位置继续读取所述第二存储空间中数据块的数据;

若读取到所述第二损坏块的位置,从所述第一存储空间的所述第二位置继续读取所述第一存储空间中数据块的数据。

可选地,所述基于所述第一读取指令,从所述第一存储空间的起始位置开始读取所述第一存储空间中数据块的数据,包括:

基于所述第一读取指令,从所述第二存储空间的起始位置开始读取所述第二存储空间中数据块的数据;

若读取到所述第三损坏块,记录所述第三损坏块的位置,并生成第三读取指令;

若所述第一损坏块的位置的地址大于所述第三损坏块的位置的地址,基于所述第三读取指令,从所述第一存储空间的起始位置开始读取所述第一存储空间中数据块的数据。

可选地,所述方法还包括:

确定所述第一存储空间中已获取到的损坏块的第一目标位置,并确定所述第二存储空间中已获取到的损坏块的第二目标位置;

从所述第二存储空间中确定与所述第一目标位置对应的第一数据块,并从所述第一存储空间中确定与所述第二目标位置对应的第二数据块;其中,所述第一数据块的位置和所述第一目标位置的地址相应;所述第二数据块的位置和所述第二目标位置的地址相应;

基于所述第一数据块,修复所述第一存储空间中已获取到的损坏块,并基于所述第二数据块,修复所述第二存储空间中已获取到的损坏块。

可选地,所述方法还包括:

确定读取每一存储空间的数据块的数据所消耗的读取时间;

确定大于特定时间的读取时间所对应的数据块,为所述每一存储空间的损坏块。

一种电子设备,所述电子设备包括:处理器、存储器和通信总线;

所述通信总线用于实现处理器和存储器之间的通信连接;

所述处理器用于执行存储器中的数据读取方法的程序,以实现以下步骤:

从第一存储空间的起始位置开始读取所述第一存储空间中数据块的数据;

若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取所述第二存储空间中数据块的数据;其中,所述第一存储空间和所述第二存储空间存储的数据相同,所述第一损坏块的位置和所述第一位置的地址相应。

一种计算机存储介质,该计算机存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述的数据读取方法的步骤。

本发明实施例所提供的数据读取方法、电子设备及计算机存储介质,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据;若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据;由于第一存储空间和第二存储空间存储的数据相同,第一损坏块的位置和第一位置的地址相应,因此在读取到第一损坏块的位置时,绕过了第一损坏块的读取,使读取能够继续进行下去,进而避免了若存储空间中某一数据块发生损坏,则电子设备无法读取到存储在存储空间中数据的问题。

附图说明

图1为本发明实施例提供的一种数据读取方法的流程示意图;

图2为本发明实施例提供的另一种数据读取方法的流程示意图;

图3为本发明实施例提供的又一种数据读取方法的流程示意图;

图4为本发明实施例提供的第一存储空间和第二存储空间的结构示意图;

图5为本发明实施例提供的读取数据块中的数据的流程示意图;

图6为本发明另一实施例提供的一种数据读取方法的流程示意图;

图7为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

应理解,说明书通篇中提到的“本发明实施例”或“前述实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“本发明实施例中”或“在前述实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中应。在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

电子设备在接通电源后,首先会自动运行主板上只读存储器(read-onlymemory,rom)芯片内固化的基本输入输出系统(basicinputoutputsystem,bios)文件,通常称为上电自检(poweronselftest,post),以检查电子设备是否良好。基本输入输出系统文件主要包含对硬件设置的一些参数,当电子设备启动时会读取基本输入输出系统文件中的这些参数,并和实际硬件设置进行比较,如果两者相互符合,则进入引导程序,即引导操作系统装入电子设备,反之,如果不符合,就会影响系统的启动。

基本输入输出系统文件存储于一存储空间中,存储空间包括多个数据块,若某一数据块发生损坏时,就会导致无法从损坏的数据块中读取数据,进而无法读出基本输入输出文件。其中,存储空间可以为存储器也可以为缓存器。多个数据块中每一数据块的大小可以相同或不同。在数据块的大小为128k时,表征可以向该数据块中存储小于或等于128k的数据。数据块的大小可以根据实际情况选择,本发明实施例对此不作限定。

在一种实施方式中,为了避免存储基本输入输出系统文件的存储空间中数据块发生损坏时,无法读取基本输入输出系统文件的情况发生,通常电子设备会设置第一存储空间和第二存储空间,第一存储空间和第二存储空间均存储基本输入输出系统文件。第一存储空间和第二存储空间可以设置在一个存储设备上,或者不同的存储设备上。

通常情况下,第一存储空间中存储的基本输入输出系统文件称为主文件,第二存储空间中存储的基本输入输出系统文件称为备文件,主文件和备文件是相同的文件。第一存储空间可以包括多个依次排列的数据块a1、a2、……、an,第二存储空间可以包括多个依次排列的数据块b1、b2、……、bn,a1和b1的大小相同,且存储相同的数据,a2和b2的大小相同,且存储相同的数据,……,以及an和bn的大小相同,且存储相同的数据。主文件存储于数据块a1、a2、……、an中,备文件存储于数据块b1、b2、……、bn中。在一种实施方式中,数据块a1、a2、……、an的大小可以相同,例如,数据块a1、a2、……、an的大小均为128k。在另一种实施方式中,数据块a1、a2、……、an的大小可以不同。本发明实施例中,基本输入输出系统文件在第一存储空间或第二存储空间中都是连续存储的,即数据块a1、a2、……、an连续,数据块b1、b2、……、bn连续。本发明实施例中的数据块a1和数据块b1的地址相同,数据块a2和数据块b2的地址相同、……、以及数据块an和数据块bn的地址相同。本发明实施例中的地址为物理地址或偏移地址。

当处理器从第一存储空间的起始位置开始读取数据块的数据时,若读取到第一存储空间中的损坏块时,处理器可以从第二存储空间的起始位置开始读取数据块的数据,若读取到基本输入输出系统文件的结束标识,确定从第二存储空间中读取的数据为基本输入输出系统文件。

然而,当处理器在第二存储空间中也读取到损坏块时,处理器也就无法对第二存储空间的数据块中的数据进行读取了,也就是说,在第一存储空间和第二存储空间均存在损坏块时,上述的读取方式依然无法读取到基本输入输出系统文件。

本发明实施例提供一种数据读取方法,应用于电子设备,如图1所示,该方法包括以下步骤:

步骤101:从第一存储空间的起始位置开始读取第一存储空间中数据块的数据。

本发明实施例中的电子设备可以为任一具有数据处理能力的设备,例如服务器、手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理、便捷式媒体播放器、导航装置、可穿戴设备、智能手环、计步器、数字tv或者台式计算机等。

步骤102:若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据。

其中,第一存储空间和第二存储空间存储的数据相同,第一损坏块的位置和第一位置的地址相应。两个数据块的位置的地址相应可以为,两个数据块中每一数据块的地址,相对每一数据块所处的存储空间的首块的地址的偏移量相同。例如,第一损坏块的位置和第一位置的地址相应可以为,第一损坏块的位置相对第一存储空间的首块(即第一存储空间的起始位置的数据块)的偏移量,和第一位置相对第二存储空间的首块(即第二存储空间的起始位置的数据块)的偏移量相同。应理解,本发明实施例中出现的其它两个数据块的位置的地址相应,可参考第一损坏块的位置和第一位置的地址相应的描述,本发明实施例将不再赘述。

电子设备的处理器读取第一存储空间中的数据块时,首先读取第一个数据块的位置,计时器开始计时,然后读取存储于数据块a1的数据,在数据块a1的数据读取完成后,此时从计时器获取读取数据块a1的数据所消耗的第一读取时间小于或等于特定时间;接着处理器读取第二个数据块a2的位置,计时器重新开始计时,然后读取存储于数据块a2的数据,在数据块a2的数据读取完成后,此时从计时器获取读取数据块a2的数据所消耗的第一读取时间小于或等于特定时间;然后处理器读取第三个数据块a3的位置,……,直到处理器读取到第i个数据块的位置,计时器重新开始计时,并在读取第i个数据块的数据时,确定从计时器获取的第一读取时间大于特定时间,确定第i个数据块为第一损坏块。能够理解的是,处理器在读取存储空间中的数据块时,总是读取数据块的位置,再读取该位置的数据块的数据。本发明实施例中,第一损坏块为从第一存储空间的起始位置开始读取数据块的数据时,第一次获得的损坏块。

在一种实施方式中,若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据,可以按照如下方式实现:若读取到第一损坏块的位置,且读取第一损坏块的数据所消耗的第一读取时间大于特定时间时,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据。也就是说,当处理器读取到数据块ai的位置时,可以从第二存储空间的数据块bi的位置继续读取数据块中的数据。

本发明实施例中,从第二存储空间的数据块bi的位置继续读取数据块中的数据,并继续读取数据块bi+1的数据、数据块bi+2的数据等。在其它实施例中,从第二存储空间的数据块bi的位置继续读取数据块中的数据,在读取到数据块bi的数据后,可以继续读取数据块ai+1的数据、数据块ai+2的数据等。

通过这种方式,处理器在读取到第一损坏块的位置时,由于还没有读取到第一损坏块的数据,无法知道该块是否为损坏块,因此,处理器会读取第一损坏块的数据,并获取读取第一损坏块的数据时所消耗的第一读取时间,且确定获取到第一读取时间大于特定时间,此时处理器即得到第一损坏块为损坏块。由于目标数据在第一存储空间和第二存储空间中存储时,对应位置的数据块中存储的数据在刚开始存储的时候是相同的,在一种情况下,由于第一损坏块中存储的数据发生异常,导致无法从第一损坏块中读取数据,但是与第一损坏块的位置对应的第二存储空间中的第一位置的数据块存储的数据并未发生异常,因此本发明实施例中处理器可以从第二存储空间的第一位置继续读取第二存储空间中数据块的数据,进而在读取数据的过程中,绕过了要从第一损坏块中读取数据的情况,使读取可以继续进行下去。本发明实施中的目标数据可以是上述的主文件或备文件,或者还可以为其它文件,本发明实施例对目标数据不作限定。

本发明实施例所提供的数据读取方法,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据;若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据;由于第一存储空间和第二存储空间存储的数据相同,第一损坏块的位置和第一位置的地址相应,因此在读取到第一损坏块的位置时,绕过了第一损坏块的读取,使读取能够继续进行下去,进而避免了若存储空间中某一数据块发生损坏,则电子设备无法读取到存储在存储空间中数据的问题。

基于前述实施例,本发明实施例提供一种数据读取方法,如图2所示,该方法包括以下步骤:

步骤201:电子设备从第一存储空间的起始位置开始读取第一存储空间中数据块的数据。

本发明实施例中,电子设备读取数据块中的数据可以是电子设备的处理器读取数据块中的数据。

步骤202:若读取到第一损坏块的位置,电子设备从第二存储空间的第一位置继续读取第二存储空间中数据块的数据。

其中,第一存储空间和第二存储空间存储的数据相同,第一损坏块的位置和第一位置的地址相应。

本发明实施例中,通过确定读取第一损坏块中的数据所消耗的时间大于特定时间,来确定第一损坏块为损坏块。

应理解,处理器在获取每一数据块是否为损坏块时,可以通过以下方式来说实现:确定读取每一存储空间的数据块的数据所消耗的读取时间;确定大于特定时间的读取时间所对应的数据块,为每一存储空间的损坏块。

例如,如下述的第二损坏块和第三损坏块,处理器可以确定读取第二损坏块中的数据所消耗的时间大于特定时间,确定第二损坏块是损坏块,可以确定读取第三损坏块中的数据所消耗的时间大于特定时间,确定第三损坏块是损坏块。类似地,处理器仍然可以通过这种方法确定第四损坏块、第五损坏块等等,本发明实施例将不再赘述。

在步骤202之后,处理器可以根据读取的是第二损坏块或结束标识,来确定执行步骤203或204。

步骤203:若读取到第二损坏块的位置,电子设备从第一存储空间的第二位置继续读取第一存储空间中数据块的数据。

其中,第二损坏块的位置和第二位置的地址相应。

在一种实施方式中,若读取到第二损坏块的位置,电子设备从第一存储空间的第二位置继续读取第一存储空间中数据块的数据,可以按照如下方式实现:若读取到第二损坏块的位置,且读取第二损坏块的数据所消耗的第二读取时间大于特定时间时,电子设备从第一存储空间的第二位置继续读取第一存储空间中数据块的数据。

举例而言,当处理器从第二存储空间的数据块bi的位置继续读取数据块中的数据,直到读取到数据块bj的位置时,计时器重新开始计时,然后读取数据块bj的数据,在确定从计时器获取的第二读取时间大于特定时间时,确定数据块bj为第二损坏块,接着处理器从第一存储空间的数据块aj的位置继续读取数据块中的数据。

类似地,若读取到第二损坏块的位置,从第一存储空间的第二位置继续读取第一存储空间中数据块的数据之后,处理器还可以执行以下步骤:若从第一存储空间读取到结束标识,确定读取到目标数据;若读取到第四损坏块的位置,从第二存储空间的第四位置继续读取第二存储空间中的数据块的数据;若从第二存储空间中读取到结束标识,确定读取到目标的数据;若读取到第五损坏块的位置,从第一存储空间的第五位置继续读取第一存储空间中的数据块的数据……直到读取到结束标识,得到目标数据。

这样,每当处理器读取到一个存储空间中的损坏块,就从另一个存储空间中的与该损坏块的位置的地址相应的位置继续读取数据块中的数据,直到读取到结束标识,而通过交错读取数据块中的数据,进而绕过了读取损坏块的数据,从而在两个存储空间中都存在损坏块,且两个存储空间中损坏块的位置的地址不同时,数据读取依旧可以进行下去,并能够读取到目标数据。

本发明实施例中的第二损坏块为从第二存储空间的第一位置开始读取数据块的数据时,第一次读取到的损坏块。

步骤204:若在第二存储空间中读取到第二损坏块之前读取到数据块中数据的结束标识,电子设备确定从第一存储空间和第二存储空间中读取到的数据块的数据为目标数据。

在第二存储空间中读取到第二损坏块之前读取到数据块中数据的结束标识,换句话说,在第二存储空间中读取到结束标识了,但是还没有读取到损坏块,也即从第二存储空间中读取到的每一个数据块所消耗的第二时间均小于或等于特定时间。

在本发明的其它实施例中,步骤204还可以替换为:若读取到的数据块的个数为目标个数,电子设备确定从第一存储空间和第二存储空间中读取到的数据块的数据为目标数据。

例如,当目标数据存储于数据块a1、a2、……、an时,或者存储于数据块b1、b2、……、bn时,结束标识存储于数据块an或bn中,目标个数为n。当第一损坏块为数据块ai时,确定从数据块a1、……、ai-1、bi、bi+1、……bn中读取到的数据为目标数据。

在一种实施方式中,在步骤203或步骤204之后,电子设备还可以执行步骤c1至c3的方法:

步骤c1:电子设备确定第一存储空间中已获取到的损坏块的第一目标位置,并确定第二存储空间中已获取到的损坏块的第二目标位置。

例如,在步骤204之后,处理器可以获取到第一存储空间中的第一损坏块的位置,因此,第一目标位置为第一损坏块的位置。或者,在步骤203之后,处理器可以获取到第一存储空间中的第一损坏块的位置,和第二存储空间中的第二损坏块的位置,或者还可以获取到第一存储空间中的第四损坏块的位置、第二存储空间中的第五损坏块的位置等等,因此,第一目标位置包括第一损坏块的位置,第二目标位置包括第二损坏块的位置,或者,第一目标位置包括第一损坏块的位置和第四损坏位置等,第二目标位置包括第二损坏块和第五损坏块的位置等,此处不一一列举。

步骤c2:电子设备从第二存储空间中确定与第一目标位置对应的第一数据块,并从第一存储空间中确定与第二目标位置对应的第二数据块。

其中,第一数据块的位置和第一目标位置的地址相应;第二数据块的位置和第二目标位置的地址相应。

例如,处理器获取到第一损坏块的位置后,确定的与第一损坏块的位置对应的第一位置的数据块为第一数据块。处理器在获取到第二损坏块的位置后,确定与第二损坏块的位置对应第二位置的数据块为第二数据块。应理解,本发明实施例中的位置对应,可以为位置的地址相应。进一步,获取与第三损坏块、第四损坏块以及第五损坏块的位置对应的数据块的方法,可以以此类推,此处不再赘述。应理解,第一数据块中数据块的数量应和第一存储空间中已获取到的损坏块的数量一致,第二数据块中数据块的数量应和第二存储空间中已获取到的损坏块的数量一致。

步骤c3:电子设备基于第一数据块,修复第一存储空间中已获取到的损坏块,并基于第二数据块,修复第二存储空间中已获取到的损坏块。

如此,通过获取另一个存储空间中的与每个损坏块位置对应的数据块,可以对已经获取到的损坏块进行修复。在一种实施方式中,对数据块进行修复可以是将与每个损坏块位置对应的数据块的数据写入至每个损坏块中。

应注意,本发明实施例中提到的损坏块在未作说明的情况下,可以是第一存储空间中的数据块中的损坏块,也可以是第二存储空间中的数据块中的损坏块。

需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。

本发明实施例所提供的数据读取方法,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据时,若读取到结束标识,则读取到目标数据,若读取到第二损坏块,从第一存储空间的第二位置继续读取第一存储空间中数据块的数据,以此类推,在读取到每一个损坏块时,都从另一个存储空间中的与该每一个损坏块的位置继续读取,直到读取到结束标识,得到目标数据,进而通过这种读取方式,使得在第一存储空间和第二存储空间中均存在损坏块时,读取依然可以进行下去,从而得到目标数据。

基于前述实施例,本发明实施例提供一种数据读取方法,如图3所示,该方法包括以下步骤:

步骤301:电子设备从第一存储空间的起始位置开始读取第一存储空间中数据块的数据。

在一种实施方式中,处理器可以获取一个第四读取指令,并基于第四读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据。其中,本发明实施例中的读取指令可以是用于启动电子设备的启动指令。应理解,此处的读取指令可以包括本发明实施例中出现的第一读取指令、第二读取指令、第三读取指令、第四读取指令以及第五读取指令等等。

步骤302:若读取到第一损坏块,电子设备记录第一损坏块的位置,并生成第一读取指令。

例如,处理器在确定到第i个数据块ai为第一损坏块时,可以记录第一损坏块的第一位置,并存储第一位置的地址至预设存储空间中,以使处理器在下次读取时,可以调用预设存储空间中的第一位置的地址。本发明实施例不限定记录第一损坏块的位置,和生成第一读取指令这两个步骤的先后顺序。

步骤303:电子设备基于第一读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据。

在一种实施方式中,步骤303可以通过以下步骤d1至d4的方式实现:

步骤d1:电子设备基于第一读取指令,从第二存储空间的起始位置开始读取第二存储空间中数据块的数据。

步骤d2:若读取到第三损坏块,电子设备记录第三损坏块的位置,并生成第三读取指令。

其中,第三损坏块为从第二存储空间的起始位置开始读取数据块的数据时,第一次获得的损坏块。

在步骤d2之后,电子设备可以基于第一损坏块的位置的地址和第三损坏块的位置的地址关系,确定执行步骤d3或步骤d4。

步骤d3:若第一损坏块的位置的地址大于第三损坏块的位置的地址,电子设备基于第三读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据。

例如,当第一损坏块为ai,第三损坏块为bk时,i大于k,则表征第一损坏块的位置的地址大于第三损坏块的位置的地址。

步骤d4:若第一损坏块的位置的地址小于第三损坏块的位置的地址,电子设备基于第三读取指令,从第二存储空间的起始位置开始读取第一存储空间中数据块的数据。

通过步骤d1至d4,一方面可以在第二存储空间无损坏块时,直接就从第二存储空间中读取到目标数据了,避免了交错读取的情况,另一方面,根据第一损坏块的位置的地址和第三损坏块的位置的地址的大小关系,确定从第一存储空间的起始位置或第二存储空间的起始位置开始读取数据块的数据,可以减少交错读取的次数,从而可以避免磁头来回跳跃对读取性能产生影响。

步骤304:若读取到第一损坏块的位置,电子设备从第二存储空间的第一位置继续读取第二存储空间中数据块的数据。

步骤305:若读取到第二损坏块,电子设备记录第二损坏块的位置,并生成第二读取指令。

例如,处理器在确定到第j个数据块bj为第二损坏块时,可以记录第二损坏块的第二位置,并存储第二位置的地址至预设存储空间中,以使处理器在下次读取时,可以调用预设存储空间中的第二位置的地址。

步骤306:电子设备基于第二读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据。

步骤307:若读取到第一损坏块的位置,电子设备从第二存储空间的第一位置继续读取第二存储空间中数据块的数据。

在步骤307之后,电子设备还可以执行以下步骤:若从第二存储空间中读取到第二损坏块之前读取到结束标识,确定读取到目标数据。

步骤308:若读取到第二损坏块的位置,电子设备从第一存储空间的第二位置继续读取第一存储空间中数据块的数据。

在一种实施方式中,在步骤308之后,电子设备还可以执行以下步骤:若从第一存储空间中读取到第四损坏块之前读取到结束标识,电子设备确定读取到目标数据。应理解,第四损坏块为从第一存储空间的起始位置开始读取数据块的数据时,第一次获得的损坏块。

在另一种实施方式中,在步骤308之后,电子设备还可以执行以下步骤:若从第一存储空间中读取到第四损坏块,电子设备记录第四损坏块的位置,并生成第五读取指令,并基于第五读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据,直到读取到第四损坏块的位置时,从第二存储空间的与第四损坏块的位置的地址对应的位置继续读取数据块中的数据,直到读取到结束标识。

以下结合图4和图5,对电子设备对数据块中的数据的读取过程进行说明:

参阅图4,第一存储空间中包括数据块a1、a2、a3、……、an,第二存储空间包括数据块b1、b2、b3、……、bn。

继续参阅图4和图5,处理器基于第四读取指令,执行第一次读取,从数据块a1开始读取,处理器在读取到数据块a3时,确定读取到损坏块,处理器记录数据块a3的位置,并生成第一读取指令。值得注意的是,本发明实施例中,处理器每次基于读取指令都会进行重启,并从起始位置开始读取数据块中的数据时,处理设备都是先上电,再读取。

处理器基于第一读取指令,执行第二次读取,从第二存储空间的起始位置的数据块b1开始读取数据块中的数据。当读取到第二个数据块b2时,确定数据块b2为损坏块,处理器记录数据块b2的位置,并生成第三读取指令。

处理器根据数据a3和数据块b2,确定数据块a3的位置的地址大于数据块b2的位置的地址,因此,处理器基于第三读取指令,执行第三次读取,并从主存储空间中起始位置开始读取数据块中的数据,当读取到数据块a3的位置时,从第二存储空间的数据块b3继续读取数据块中的数据。直到读取到结束标识。以此类推,当从第二存储空间中读取到损坏块时,依旧可以记录损坏块的位置,生成读取指令,重新读取,当下次从第一存储空间中读取到损坏块时,重新读取,直到读取到结束标识。

值得注意的是,本发明实施例的数据读取方法,并未对从第二存储空间的数据块b3继续读取数据块中的数据后,若读取到损坏块时如何进行下一步读取作出说明,但是应理解,在后续的读取过程中,处理器只要读取到每一损坏块,都会记录每一损坏块的位置,并生成读取指令,处理器根据读取指令,从第一存储单元的起始位置开始读取数据块中的数据,并在读取到已记录到每一损坏块的位置时,都会从另一存储空间的与已记录到每一损坏块的位置对应的位置继续读取数据块中的数据,直到读取到结束标识,得到目标数据。

需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。

本发明实施例所提供的数据读取方法,在每一次读取到损坏块时,都会记录损坏块的位置,并生成一个读取指令,基于该读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据,且读取到已记录到的每一损坏块的位置时,从另一存储空间中与每一损坏块的位置的地址相应的数据块继续读取数据,从而避免了在读取到损坏块时,无法进行读取的情况。

基于前述实施例,本发明实施例提供一种数据读取方法,如图6所示,该方法包括以下步骤:

步骤401:电子设备从第一存储空间的起始位置开始读取第一存储空间中存储的主文件的数据。

本发明实施例中的主文件为基本输入输出系统文件。

步骤402:若读取到第一损坏块的位置,电子设备从第二存储空间的第一位置继续读取第二存储空间中存储的备文件的数据。

本发明实施例中的备文件为基本输入输出系统文件。换而言之,第一存储空间中存储的主文件和第二存储空间中存储的备文件为相同的文件,且都为基本输入输出系统文件。

在一种实施方式中,若读取到第一损坏块的位置,电子设备从第二存储空间的第一位置继续读取第二存储空间中存储的备文件的数据,可以包括:若读取到第一损坏块,电子设备记录第一损坏块的位置,并生成第一读取指令;电子设备基于第一读取指令,从第一存储空间的起始位置开始读取第一存储空间中存储的主文件的数据,若读取到第一损坏块的位置,电子设备从第二存储空间的第一位置继续读取第二存储空间中存储的备文件的数据。

在一种实施方式中,步骤402之后,电子设备还可以执行以下步骤,若读取到备文件中的结束标识,确定从第一存储空间和第二存储空间中读取到数据为基本输入输出系统文件。

在另一种实施方式中,步骤402之后,电子设备还可以执行以下步骤:若读取到所述第二损坏块,电子设备记录所述第二损坏块的位置,并生成第二读取指令;基于所述第二读取指令,电子设备从第一存储空间的起始位置开始读取第一存储空间中存储的主文件的数据;若读取到所述第一损坏块的位置,电子设备从第二存储空间的第一位置继续读取第二存储空间中存储的备文件的数据;若读取到所述第二损坏块的位置,电子设备从第一存储空间的第二位置继续读取第一存储空间中存储的主文件的数据。

以此类推,若从主文件中读取到结束标识,确定读取到基本输入输出系统文件;若读取到第四损坏块,电子设备记录第四损坏块的位置,生成第五读取指令,并基于第五读取指令,电子设备从第一存储空间的起始位置开始读取第一存储空间中存储的主文件的数据,直到读取第四损坏块的位置时,从第二存储空间的与第四损坏块的位置的地址对应的位置继续读取备文件的数据;以及若从备文件中读取到结束标识,确定读取到基本输入输出系统文件,若读取到第五损坏块,电子设备依旧记录第五损坏块的位置,并重新生成读取指令,并基于该读取指令从第一存储空间的起始位置开始读取第一存储空间中存储的主文件的数据,直到读取到第五损坏块的位置时,从第一存储空间的与第五损坏块的位置的地址对应的位置继续读取主文件中的数据,直到读取到结束标识,得到基本输入输出系统文件。

本发明实施例中的数据读取方法不限于此,但是应理解,本发明实施例中的数据读取方法的思路是,电子设备在存储空间中读取到每一损坏块,且没有记录该损坏块的位置时,都会记录每一损坏块的位置,并生成读取指令,电子设备基于读取指令,需从第一存储空间的起始位置开始读取第一存储空间中存储的主文件的数据,直到读取到已经记录的损坏块的位置时,从另一存储空间中读取数据块中的数据,直到读取到结束标识,得到基本输入输出系统文件。例如,参阅图4和图5,在进行第一次读取时,当读取到数据块a3时,由于数据块a3的位置未被记录,因此电子设备将记录数据块a3的位置,并生成第一读取指令。在进行第三次读取时,还是从起始位置开始读取,当读取到数据块a3时,由于数据块a3的位置已经被记录,因此,电子设备可以基于数据块a3的位置,从第二存储空间的数据块b3的位置继续读取数据块中的数据,以此类推,直到读取到结束标识。

简而言之,电子设备在每一次读取到未记录到的损坏块时,都将每一损坏块的位置记录下来,并生成读取指令,基于读取指令从起始位置重新开始读取数据,并根据已经记录的损坏块的位置,交错读取主文件的数据和备文件的数据,直到读取到结束标识,得到基本输入输出系统文件。

在电子设备读取基本输入输出系统文件时,会将基本输入输出系统文件中的这些参数,并和实际硬件设置进行比较,如果两者相互符合,则进入引导程序,引导操作系统装入电子设备,进而启动电子设备。

本发明实施例所提供的数据读取方法,由于第一存储空间和第二存储空间存储的文件相同,且均为基本输入输出系统文件,因此在读取到第一损坏块的位置时,绕过了第一损坏块的读取,使读取能够继续进行下去,从而能够读取到基本输入输出系统文件,进而避免了若存储空间中某一数据块发生损坏,则电子设备无法读取到基本输入输出系统文件,进而导致无法开机的问题。

基于前述实施例,本发明的实施例提供一种电子设备5,该电子设备5可以应用于图1~3和图6对应的实施例提供的一种数据读取方法中,参照图7所示,该电子设备5可以包括:处理器51、存储器52和通信总线53,其中:

通信总线53用于实现处理器51和存储器52之间的通信连接。

处理器51用于执行存储器52中存储的数据读取方法的程序,以实现以下步骤:

从第一存储空间的起始位置开始读取第一存储空间中数据块的数据;

若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据;

其中,第一存储空间和第二存储空间存储的数据相同,第一损坏块的位置和第一位置的地址相应。

在本发明的其他实施例中,处理器51用于执行存储器52中存储的数据读取方法,以实现以下步骤:

若读取到第二损坏块的位置,从第一存储空间的第二位置继续读取第一存储空间中数据块的数据;其中,第二损坏块的位置和第二位置的地址相应。

在本发明的其他实施例中,处理器51用于执行存储器52中存储的数据读取方法,以实现以下步骤:

若在第二存储空间中读取到第二损坏块之前读取到数据块中数据的结束标识,确定从第一存储空间和第二存储空间中读取到的数据块的数据为目标数据。

在本发明的其他实施例中,处理器51用于执行存储器52中存储的若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据,以实现以下步骤:

若读取到第一损坏块,记录第一损坏块的位置,并生成第一读取指令;

基于第一读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据;

若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据。

在本发明的其他实施例中,处理器51用于执行存储器52中存储的若读取到第二损坏块的位置,从第一存储空间的第二位置继续读取第一存储空间中数据块的数据,以实现以下步骤:

若读取到第二损坏块,记录第二损坏块的位置,并生成第二读取指令;

基于第二读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据;

若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据;

若读取到第二损坏块的位置,从第一存储空间的第二位置继续读取第一存储空间中数据块的数据。

在本发明的其他实施例中,处理器51用于执行存储器52中存储的基于第一读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据,以实现以下步骤:

基于第一读取指令,从第二存储空间的起始位置开始读取第二存储空间中数据块的数据;

若读取到第三损坏块,记录第三损坏块的位置,并生成第三读取指令;

若第一损坏块的位置的地址大于第三损坏块的位置的地址,基于第三读取指令,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据。

在本发明的其他实施例中,处理器51用于执行存储器52中存储的数据读取方法,以实现以下步骤:

确定第一存储空间中已获取到的损坏块的第一目标位置,并确定第二存储空间中已获取到的损坏块的第二目标位置;

从第二存储空间中确定与第一目标位置对应的第一数据块,并从第一存储空间中确定与第二目标位置对应的第二数据块;其中,第一数据块的位置和第一目标位置的地址相应;第二数据块的位置和第二目标位置的地址相应;

基于第一数据块,修复第一存储空间中已获取到的损坏块,并基于第二数据块,修复第二存储空间中已获取到的损坏块。

在本发明的其他实施例中,处理器51用于执行存储器52中存储的数据读取方法,以实现以下步骤:

确定读取每一存储空间的数据块的数据所消耗的读取时间;

确定大于特定时间的读取时间所对应的数据块,为每一存储空间的损坏块。

需要说明的是,本实施例中处理器所执行的步骤的具体实现过程,可以参照图1~3和图6对应的实施例提供的数据读取方法中的实现过程,此处不再赘述。

本发明实施例所提供的电子设备,从第一存储空间的起始位置开始读取第一存储空间中数据块的数据;若读取到第一损坏块的位置,从第二存储空间的第一位置继续读取第二存储空间中数据块的数据;由于第一存储空间和第二存储空间存储的数据相同,第一损坏块的位置和第一位置的地址相应,因此在读取到第一损坏块的位置时,绕过了第一损坏块的读取,使读取能够继续进行下去,进而避免了若存储空间中某一数据块发生损坏,则电子设备无法读取到存储在存储空间中数据的问题。

基于前述实施例,本发明的实施例提供一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一项的数据读取方法的步骤。

需要说明的是,上述处理器可以为嵌入式控制器(embedcontroller,ec)、特定用途集成电路(asic,applicationspecificintegratedcircuit)、数字信号处理器(dsp,digitalsignalprocessor)、数字信号处理装置(dspd,digitalsignalprocessingdevice)、可编程逻辑装置(pld,programmablelogicdevice)、现场可编程门阵列(fpga,fieldprogrammablegatearray)、中央处理器(cpu,centralprocessingunit)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。

需要说明的是,上述计算机存储介质/存储器可以是只读存储器(readonlymemory,rom)、可编程只读存储器(programmableread-onlymemory,prom)、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性随机存取存储器(ferromagneticrandomaccessmemory,fram)、快闪存储器(flashmemory)、磁表面存储器、光盘、或只读光盘(compactdiscread-onlymemory,cd-rom)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,从语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的型式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所描述的方法。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可从计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1