CN112860323A - 一种将文件加载至内存的方法及装置 - Google Patents
一种将文件加载至内存的方法及装置 Download PDFInfo
- Publication number
- CN112860323A CN112860323A CN201911185705.4A CN201911185705A CN112860323A CN 112860323 A CN112860323 A CN 112860323A CN 201911185705 A CN201911185705 A CN 201911185705A CN 112860323 A CN112860323 A CN 112860323A
- Authority
- CN
- China
- Prior art keywords
- compressed
- subfile
- file
- reading
- processor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种将文件加载至内存的方法及装置,文件存储于终端的非易失性的存储区,该文件包括多个压缩子文件,每个压缩子文件具有各自的编号;终端的处理器下发读取第i编号的压缩子文件的读取指令;终端的处理器在第i编号的压缩子文件的读取时间内,对第一缓冲区内的第m编号的压缩子文件进行解压缩并存储至内存的第二缓冲区。该方案由于终端的处理器在读取压缩文件时段内,很大程度上处于空闲状态,因此在读取第i编号的压缩子文件时,处理器同时解压缩已缓存于第一缓冲区的第m编号的压缩子文件,有效利用了处理器读取压缩文件的空闲时间,极大加快了将文件加载至内存的速度。
Description
技术领域
本发明涉及嵌入式领域,尤其涉及一种将文件加载至内存的方法及装置。
背景技术
通常情况下,系统在启动的过程中需要加载一些大文件。在嵌入式领域中,一般指的是将Flash平台的大文件加载至内存,这样一种加载文件至内存的过程是系统启动过程的一个重要环节,若加载文件至内存的速度较慢,则意味着系统启动的速度也会较慢,从而影响到用户的开机体验。
通过如下方法可以实现将Flash平台的大文件加载至内存:处理器首先在Flash平台中读出初始文件;随后将已读出的初始文件存储至内存。
以上技术在实现将Flash平台的大文件加载至内存的过程中,加载速度慢,耗时长,极大影响了用户的开机的体验。
综上,现有技术将Flash平台的大文件加载至内存的方法存在速度慢、耗时长的问题。
发明内容
本发明提供一种将文件加载至内存的方法及装置,用以解决开机过程中无法快速地将Flash平台的大文件加载至内存的问题。
第一方面,本发明实施例提供一种将文件加载至内存的方法,所述文件存储于终端的非易失性的存储区,所述文件包括多个压缩子文件,每个压缩子文件具有各自的编号;所述方法包括:所述终端的处理器下发读取第i编号的压缩子文件的读取指令;所述读取指令用于指示将所述第i编号的压缩子文件读取至所述内存的第一缓冲区;所述终端的处理器在所述第i编号的压缩子文件的读取时间内,对所述第一缓冲区内的第m编号的压缩子文件进行解压缩并存储至所述内存的第二缓冲区;所述第二缓冲区内存储有解压缩后的各压缩子文件。
基于该方案,鉴于终端的处理器在读取压缩文件时段内,很大程度上处于空闲状态,因此在读取第i编号的压缩子文件时,终端的处理器同时解压缩已缓存于第一缓冲区的第m编号的压缩子文件,有效利用了处理器读取压缩文件的空闲时间,极大加快了将文件加载至内存的速度。
作为一种可能实现的方法,所述终端的处理器在所述第i编号的压缩子文件读取至所述第一缓冲区后,暂停所述第m编号的压缩子文件的解压缩;所述终端的处理器下发读取第k编号的压缩子文件的读取指令;所述终端的处理器在所述第k编号的压缩子文件的读取时间内,对所述第m编号的压缩子文件继续解压缩。
基于该方案,鉴于在读取第i编号的压缩子文件的时段内,第m编号的压缩子文件可能未完全地被解压缩,因此可以暂停第m编号的压缩子文件的解压缩;利用读取第k编号的压缩子文件的时段,继续解压缩第m编号的压缩子文件。通过读取压缩子文件和解压缩子文件的并行的方式,合理利用了终端的处理器读取压缩子文件的空闲时间,整体提高了将文件加载至内存的速度。
作为一种可能实现的方法,所述多个压缩子文件的编号按照所述多个压缩子文件在所述文件中的位置依次递增;压缩子文件的解压缩时间小于压缩子文件的读取时间;其中,k=i+1;m=i-1。
基于该方案,鉴于压缩子文件的解压缩时间小于压缩子文件的读取时间,从而可以在读取第i编号的压缩子文件时,终端的处理器可以完成对缓存于第一缓冲区的第m编号的压缩子文件的解压缩任务,从整体来看,对所述文件的解压缩时间表现为读取多个压缩子文件的时间和解压缩一个压缩子文件的时间,从而大大提高了将大文件加载至内存的时间。
作为一种可能实现的方法,所述文件包括描述信息,所述描述信息包括记载各压缩子文件的编号、各压缩子文件的大小;所述方法还包括:所述终端的处理器根据所述各压缩子文件的大小,确定所述第一缓冲区和所述第二缓冲区的大小;所述终端的处理器下发读取第i编号的压缩子文件的读取指令之前,还包括:所述终端的处理器通过所述描述信息确定待读取的第i编号的压缩子文件。
基于该方案,根据各压缩子文件的大小,确定第一缓冲区和第二缓冲区的大小,可以起到合理利用内存的作用;以及可以通过描述信息所记载的各压缩子文件的编来确定待读取的第i编号的压缩子文件。
作为一种可能实现的方法,所述文件通过以下方式存入所述非易失性的存储区,包括:将初始文件切分为多个子文件;针对每个子文件,根据预设的压缩算法,得到所述子文件的压缩数据;根据所述子文件的压缩数据和所述子文件的编号,得到所述压缩子文件;将所述多个压缩子文件和所述描述信息打包为所述文件并将所述文件烧录至所述非易失性的存储区。
基于该方案,通过将初始文件切分成多个子文件,针对每个子文件生成具有唯一编号的各压缩子文件,从而将非易失性的存储区存储的各压缩子文件加载至内存的过程中,可以实现读取与解压缩并行的目的,有利于提高将大文件加载至内存的时间。
第二方面,本发明实施例提供一种将文件加载至内存的装置,所述文件存储于终端的非易失性的存储区,所述文件包括多个压缩子文件,每个压缩子文件具有各自的编号;所述装置包括:下发单元,用于下发读取第i编号的压缩子文件的读取指令;所述读取指令用于指示将所述第i编号的压缩子文件读取至所述内存的第一缓冲区;处理单元,用于在所述第i编号的压缩子文件的读取时间内,对所述第一缓冲区内的第m编号的压缩子文件进行解压缩并存储至所述内存的第二缓冲区;所述第二缓冲区内存储有解压缩后的各压缩子文件。
基于该方案,鉴于终端的处理器在读取压缩文件时段内,很大程度上处于空闲状态,因此在读取第i编号的压缩子文件时,终端的处理器同时解压缩已缓存于第一缓冲区的第m编号的压缩子文件,有效利用了处理器读取压缩文件的空闲时间,极大加快了将文件加载至内存的速度。
作为一种可能实现的方法,所述处理单元还用于在所述第i编号的压缩子文件读取至所述第一缓冲区后,暂停所述第m编号的压缩子文件的解压缩;所述下发单元用于下发读取第k编号的压缩子文件的读取指令;所述处理单元用于在所述第k编号的压缩子文件的读取时间内,对所述第m编号的压缩子文件继续解压缩。
基于该方案,鉴于在读取第i编号的压缩子文件的时段内,第m编号的压缩子文件可能未完全地被解压缩,因此可以暂停第m编号的压缩子文件的解压缩;利用读取第k编号的压缩子文件的时段,继续解压缩第m编号的压缩子文件。通过读取压缩子文件和解压缩子文件的并行的方式,合理利用了终端的处理器读取压缩子文件的空闲时间,整体提高了将文件加载至内存的速度。
作为一种可能实现的方法,所述多个压缩子文件的编号按照所述多个压缩子文件在所述文件中的位置依次递增;压缩子文件的解压缩时间小于压缩子文件的读取时间;其中,k=i+1;m=i-1。
基于该方案,鉴于压缩子文件的解压缩时间小于压缩子文件的读取时间,从而可以在读取第i编号的压缩子文件时,终端的处理器可以完成对缓存于第一缓冲区的第m编号的压缩子文件的解压缩任务,从整体来看,对所述文件的解压缩时间表现为读取多个压缩子文件的时间和解压缩一个压缩子文件的时间,从而大大提高了将大文件加载至内存的时间。
作为一种可能实现的方法,所述文件包括描述信息,所述描述信息包括记载各压缩子文件的编号、各压缩子文件的大小;所述处理单元还用于根据所述各压缩子文件的大小,确定所述第一缓冲区和所述第二缓冲区的大小;所述处理单元下发读取第i编号的压缩子文件的读取指令之前,还用于通过所述描述信息确定待读取的第i编号的压缩子文件。
基于该方案,根据各压缩子文件的大小,确定第一缓冲区和第二缓冲区的大小,可以起到合理利用内存的作用;以及可以通过描述信息所记载的各压缩子文件的编来确定待读取的第i编号的压缩子文件。
作为一种可能实现的方法,将初始文件切分为多个子文件;针对每个子文件,根据预设的压缩算法,得到所述子文件的压缩数据;根据所述子文件的压缩数据和所述子文件的编号,得到所述压缩子文件;将所述多个压缩子文件和所述描述信息打包为所述文件并将所述文件烧录至所述非易失性的存储区。
基于该方案,通过将初始文件切分成多个子文件,针对每个子文件生成具有唯一编号的各压缩子文件,从而将非易失性的存储区存储的各压缩子文件加载至内存的过程中,可以实现读取与解压缩并行的目的,有利于提高将大文件加载至内存的时间。
第三方面,本发明实施例提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面任一所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一所述的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种将文件加载至内存的方法;
图2为本发明实施例提供的一种读取与解压缩并行的流程图;
图3为本发明实施例提供的一种将文件加载至内存的装置。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的一种将文件加载至内存的方法,所述文件存储于终端的非易失性的存储区,所述文件包括多个压缩子文件,每个压缩子文件具有各自的编号。该方法包括:
步骤101,所述终端的处理器下发读取第i编号的压缩子文件的读取指令;所述读取指令用于指示将所述第i编号的压缩子文件读取至所述内存的第一缓冲区;
步骤102,所述终端的处理器在所述第i编号的压缩子文件的读取时间内,对所述第一缓冲区内的第m编号的压缩子文件进行解压缩并存储至所述内存的第二缓冲区;所述第二缓冲区内存储有解压缩后的各压缩子文件。
基于该方案,鉴于终端的处理器在读取压缩文件时段内,很大程度上处于空闲状态,因此在读取第i编号的压缩子文件时,终端的处理器同时解压缩已缓存于第一缓冲区的第m编号的压缩子文件,有效利用了处理器读取压缩文件的空闲时间,极大加快了将文件加载至内存的速度。
本发明实施例中的终端可为手机终端、PC终端、平板终端等。终端的非易失性的存储区可以为Flash平台,Flash平台中存储有需要加载至内存的大文件。如对于大文件A,其中包括了多个压缩子文件,比如可以是大文件A中包括了5个压缩子文件;每个压缩子文件具有各自唯一的编号,比如分别为A1编号的压缩子文件、A2编号的压缩子文件、A3编号的压缩子文件、A4编号的压缩子文件A4和A5编号的压缩子文件。
在上述步骤101中,终端内的处理器下发读取第i编号的压缩子文件的读取指令,该指令用于指示将所述第i编号的压缩子文件读取至内存的第一缓冲区。
如处理器下发读取A2编号的压缩子文件的读取指令,旨在将A2编号的压缩子文件读取至内存的压缩缓冲区,也即第一缓冲区。
在上述步骤102中,终端内的处理器在第i编号的压缩子文件的读取时间内,对第一缓冲区内的第m编号的压缩子文件进行解压缩并存储至内存的第二缓冲区,该第二缓冲区内存储有解压缩后的各压缩子文件。
在处理器下发读取A2编号的压缩子文件的读取指令的时刻开始、直至处理器将A2编号的压缩子文件全部读取至压缩缓冲区的时刻结束,针对这一段A2编号的压缩子文件的读取时间,处理器很大程度上是在等待A2编号的压缩子文件被读取至压缩缓冲区,也即在这一段读取时间内的很长一段时间里,处理器是处于非读取的工作状态,因此可以让处于非读取工作状态的处理器来对已经缓存于压缩缓冲区的某一编号的压缩文件进行解压缩。如A1编号的压缩子文件预先被读取至压缩缓冲区,那么处理器在A2编号的压缩子文件的读取时间内,可以令处理器同时对已经缓存于压缩缓冲区的A1编号的压缩子文件进行解压缩,并将A1编号的压缩子文件解压后对应的数据存储至解压缩缓冲区,也即第二缓冲区。
又如,处理器在A3编号的压缩子文件的读取时间内,可以令处理器同时对已经缓存于压缩缓冲区的A2编号的压缩子文件进行解压缩,并将A2编号的压缩子文件解压后的对应的数据存储至解压缩缓冲区;处理器在A4编号的压缩子文件的读取时间内,可以令处理器同时对已经缓存于压缩缓冲区的A3编号的压缩子文件进行解压缩,并将A3编号的压缩子文件解压后的对应的数据存储至解压缩缓冲区;处理器在A5编号的压缩子文件的读取时间内,可以令处理器同时对已经缓存于压缩缓冲区的A4编号的压缩子文件进行解压缩,并将A4编号的压缩子文件解压后的对应的数据存储至解压缩缓冲区;由于大文件A一共包括了5个压缩子文件,因此,最后令处理器对缓存于压缩缓冲区的A5编号的压缩子文件进行解压缩,并将A5编号的压缩子文件解压后的对应的数据存储至解压缩缓冲区。至此,实现了将Flash中的大文件A加载至内存的目标。
如图2所示,为本发明实施例提供的一种读取与解压缩并行的流程图,包括以下步骤:
步骤201,创建压缩缓冲区。该压缩缓冲区用于存储处理器读取的每一份压缩子文件。
步骤202,创建解压缩缓冲区。当处理器对每一份压缩子文件进行解压缩后,该解压缩缓冲区用于存储解压缩后的数据。
步骤203,读取一份压缩子文件放入压缩缓冲区。如读取一份A2编号的压缩子文件放入压缩缓冲区。
步骤204,对取自压缩缓冲区的一份压缩子文件进行解压。其中,发生步骤204的前提条件是压缩缓冲区中存储有至少一份压缩子文件;步骤204发生的时间节点是在步骤203的读取时间段内。即设压缩缓冲区中存储有一份A1编号的压缩子文件,当在读取一份A2编号的压缩子文件的时间段内,处理器同时对取自压缩缓冲区中的一份A1编号的压缩子文件进行解压缩。
步骤205,将解压后的数据存储至解压缩缓冲区。如将A1编号的压缩子文件解压后的数据存储至解压缩缓冲区。
步骤206,判断所有的压缩子文件是否被全部解压缩。若是,则转至步骤207;若否,则转至步骤204。
步骤207,加载结束。当解压缩缓冲区中存储有全部压缩子文件的解压后的数据,则表示已经将Flash平台的大文件加载至内存。
作为一种可能实现的方法,所述终端的处理器在所述第i编号的压缩子文件读取至所述第一缓冲区后,暂停所述第m编号的压缩子文件的解压缩;所述终端的处理器下发读取第k编号的压缩子文件的读取指令;所述终端的处理器在所述第k编号的压缩子文件的读取时间内,对所述第m编号的压缩子文件继续解压缩。
鉴于一种实际会发生的场景,如在A2编号的压缩子文件的读取时间内,处理器不能对已经缓存于压缩缓冲区的A1编号的压缩子文件进行100%的解压缩,可以假设处理器对A1编号的压缩子文件执行了80%的解压缩;对于这种场景,处理器则暂停对A1编号的压缩子文件所余下20%的解压缩进程。接下来处理下发读取A3编号的压缩子文件的读取指令,在A3编号的压缩子文件的读取时间内,处理器继续完成对A1编号的压缩子文件所余下20%的解压缩;在T时刻下,处理器完成了对A1编号的压缩子文件的全部解压缩,若T时段处于A3编号的压缩子文件的读取时间,则处理器继续对已经缓存于压缩缓冲区的A2编号的压缩子文件进行解压缩。
作为一种可能实现的方法,所述多个压缩子文件的编号按照所述多个压缩子文件在所述文件中的位置依次递增;压缩子文件的解压缩时间小于压缩子文件的读取时间;其中,k=i+1;m=i-1。
鉴于一种实际会发生的场景,如在A2编号的压缩子文件的读取时间内,处理器可以快速地对已经缓存于压缩缓冲区的A1编号的压缩子文件进行100%的解压缩,设A2编号的压缩子文件的读取时间为10秒,但事实上,处理器在第6秒时就已经对A1编号的压缩子文件执行了全部的解压缩,则在余下的4秒时间内,处理器处于非读取的空闲状态,直至将A2编号的压缩子文件全部读取至压缩缓冲区。
作为一种可能实现的方法,所述文件包括描述信息,所述描述信息包括记载各压缩子文件的编号、各压缩子文件的大小;所述方法还包括:所述终端的处理器根据所述各压缩子文件的大小,确定所述第一缓冲区和所述第二缓冲区的大小;所述终端的处理器下发读取第i编号的压缩子文件的读取指令之前,还包括:所述终端的处理器通过所述描述信息确定待读取的第i编号的压缩子文件。
对于前述的大文件A,除了可以包括A1编号的压缩子文件、A2编号的压缩子文件、A3编号的压缩子文件、A4编号的压缩子文件和A5编号的压缩子文件这5个压缩子文件,还可以包括描述信息B,该描述信息B记载了大文件A中各个压缩子文件的信息,包括各个压缩子文件的编号和文件大小。如A1编号的压缩子文件的大小为10K、A2编号的压缩子文件的大小为20K、A3编号的压缩子文件的大小为30K、A4编号的压缩子文件的大小为40K、A5编号的压缩子文件的大小为50K。
基于以上各个压缩子文件的大小,可以确定压缩缓冲区的大小约为各个压缩子文件的大小的总和,如可以是150K,当然在实际的操作的过程中,可以将压缩缓冲区的大小设置得比各个压缩子文件的大小的总和略为大一些,对此,本发明不做限定。
基于以上各个压缩子文件的大小,可以确定解压缩缓冲区的大小。具体在确定解压缩缓冲区的大小的过程中,还需要考虑各个压缩子文件各自对应的子文件的大小,其中,子文件是压缩子文件未被压缩之前的文件。设A1编号的压缩子文件,其未被压缩的子文件A11的大小为20K;设A2编号的压缩子文件,其未被压缩的子文件A21的大小为40K;设A3编号的压缩子文件,其未被压缩的子文件A31的大小为60K;设A4编号的压缩子文件,其未被压缩的子文件A41的大小为80K;设A5编号的压缩子文件,其未被压缩的子文件A51的大小为100K,基于子文件A11、子文件A21、子文件A31、子文件A41和子文件A51的大小,可以确定解压缩缓冲区的大小为各个子文件大小的总和,如可以是300K,当然在实际的操作的过程中,可以将压缩缓冲区的大小设置得比各个压缩子文件的大小的总和略为大一些,对此,本发明不做限定。
处理器是通过描述信息来确定待读取的第i编号的压缩子文件,并下发读取第i编号的压缩子文件的读取指令。
作为一种可能实现的方法,所述文件通过以下方式存入所述非易失性的存储区,包括:将初始文件切分为多个子文件;针对每个子文件,根据预设的压缩算法,得到所述子文件的压缩数据;根据所述子文件的压缩数据和所述子文件的编号,得到所述压缩子文件;将所述多个压缩子文件和所述描述信息打包为所述文件并将所述文件烧录至所述非易失性的存储区。
以上描述了如何将Flash平台的大文件A中的各个压缩子文件加载至内存的方法;对于Flash平台上是如何存储有大文件A,可以采用以下方式进行:
在一个PC端,对于其内部的一个初始文件,根据初始文件的大小,可以将该初始文件切分成多个子文件。在切分时,可以选择将初始文件进行均匀切分,得到大小相同的多个子文件;也可以是按一定比例关系、将初始文件进行不均匀区分;还可以是将初始文件进行任意切分,对此,本发明不做限定。
为了叙述的方便,本发明实施例选取将初始文件进行均匀切分、得到大小相同的多个子文件的情况进行说明。设对于“1234567890”这样一份初始文件,计算出该初始文件的大小为100K。为了得到5个大小相同的子文件,则每一个子文件的大小为20K,通过均与切分该初始文件,得到了20K的“12”子文件、20K的“34”子文件、20K的“56”子文件、20K的“78”子文件和20K的“90”子文件。
对于“12”子文件,根据预设的压缩算法,如可以是Zlib类型的压缩算法,则可以得到“12”子文件的压缩数据,如“12”子文件的压缩数据为“a”,同时在描述信息B中记录下本次压缩的子文件的编号为“1”;参考“12”子文件的压缩过程,得到“34”子文件的压缩数据为“b”,同时在描述信息B中记录下本次压缩的子文件的编号为“2”;参考“12”子文件的压缩过程,得到“56”子文件的压缩数据为“c”,同时在描述信息B中记录下本次压缩的子文件的编号为“3”;参考“12”子文件的压缩过程,得到“78”子文件的压缩数据为“d”,同时在描述信息B中记录下本次压缩的子文件的编号为“4”;参考“12”子文件的压缩过程,得到“90”子文件的压缩数据为“e”,同时在描述信息B中记录下本次压缩的子文件的编号为“5”。
根据压缩数据“a”和编号“1”,得到压缩子文件A1;参考压缩子文件A1的得到过程,还可以得到压缩子文件A2、压缩子文件A3、压缩子文件A4和压缩子文件A5。
最后将上述得到的多个压缩子文件和描述信息B打包为一个大文件,也即大文件A,将大文件A烧录至终端的Flash平台。
下面结合一个具体的例子描述本发明。
第一部分:对初始文件进行压缩打包
1、使用文件IO API读取初始文件X,并计算初始文件X的大小;
2、对初始文件X进行切分,得到5个子文件,分别为X1、X2、X3、X4和X5;
3、申请缓冲区Y和缓冲区Z;
4、读取子文件X1并放入缓冲区Y;
5、对已读取的子文件X1使用Zlib类型的压缩算法,得到子文件X1被压缩后的数据,并将该数据放入缓冲区Z;
6、调用文件IO API,将缓冲区Z中缓存的子文件X1被压缩后的数据写入压缩子文件X11;
7、创建一个文件描述符B,记录压缩子文件X11的大小和编号;
8、对子文件X2、X3、X4和X5均执行一遍如子文件X1的压缩流程;
9、将5个压缩子文件(X11、X21、X31、X41和X51)以及文件描述符B打包成一个独立的大文件C。
10、通过Flash烧写工具将大文件C烧写到嵌入式平台的Flash上。
第二部分:并行地解压缩文件
1、嵌入式系统创建Flash任务和解压缩任务;
2、Flash任务读取文件描述符B的表头,并解析出大文件C中包含的压缩子文件的个数和每个压缩子文件的大小;
3、Flash任务触发一次读取压缩子文件的行为,并把读出来的数据放入一个预先申请的压缩缓冲区中;
4、解压缩任务此时一直在后台等待压缩缓冲区中的数据填充,当它监测到步骤3的行为成功后,解压缩任务则利用步骤3中读取压缩子文件的IO等待时间段、来获取CPU的使用权去进行解压缩行为,同时将解压缩的最后数据放入一个预先申请的解压缩缓冲区中。
5、当Flash任务和解压缩任务都处理完各自的工作后(即大文件C中包括的5个压缩子文件均被彻底解压缩),则实现了在Flash平台将初始文件X加载至内存的目标。
基于同样的构思,本发明实施例提供一种将文件加载至内存的装置,所述文件存储于终端的非易失性的存储区,所述文件包括多个压缩子文件,每个压缩子文件具有各自的编号。如图3所示,该装置包括:
下发单元301,用于下发读取第i编号的压缩子文件的读取指令;所述读取指令用于指示将所述第i编号的压缩子文件读取至所述内存的第一缓冲区;
处理单元302,用于在所述第i编号的压缩子文件的读取时间内,对所述第一缓冲区内的第m编号的压缩子文件进行解压缩并存储至所述内存的第二缓冲区;所述第二缓冲区内存储有解压缩后的各压缩子文件。
进一步地,对于所述装置,所述处理单元302还用于在所述第i编号的压缩子文件读取至所述第一缓冲区后,暂停所述第m编号的压缩子文件的解压缩;所述下发单元301用于下发读取第k编号的压缩子文件的读取指令;所述处理单元302用于在所述第k编号的压缩子文件的读取时间内,对所述第m编号的压缩子文件继续解压缩。
进一步地,对于所述装置,所述多个压缩子文件的编号按照所述多个压缩子文件在所述文件中的位置依次递增;压缩子文件的解压缩时间小于压缩子文件的读取时间;其中,k=i+1;m=i-1。
进一步地,对于所述装置,所述文件包括描述信息,所述描述信息包括记载各压缩子文件的编号、各压缩子文件的大小;所述处理单元302还用于根据所述各压缩子文件的大小,确定所述第一缓冲区和所述第二缓冲区的大小;所述处理单元302下发读取第i编号的压缩子文件的读取指令之前,还用于通过所述描述信息确定待读取的第i编号的压缩子文件。
进一步地,对于所述装置,将初始文件切分为多个子文件;针对每个子文件,根据预设的压缩算法,得到所述子文件的压缩数据;根据所述子文件的压缩数据和所述子文件的编号,得到所述压缩子文件;将所述多个压缩子文件和所述描述信息打包为所述文件并将所述文件烧录至所述非易失性的存储区。
本发明实施例提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。该计算设备可以包括中央处理器(Center Processing Unit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器,可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本发明实施例中,存储器可以用于将文件加载至内存的方法的程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行将文件加载至内存的方法。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行将文件加载至内存的方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种将文件加载至内存的方法,其特征在于,所述文件存储于终端的非易失性的存储区,所述文件包括多个压缩子文件,每个压缩子文件具有各自的编号;所述方法包括:
所述终端的处理器下发读取第i编号的压缩子文件的读取指令;所述读取指令用于指示将所述第i编号的压缩子文件读取至所述内存的第一缓冲区;
所述终端的处理器在所述第i编号的压缩子文件的读取时间内,对所述第一缓冲区内的第m编号的压缩子文件进行解压缩并存储至所述内存的第二缓冲区;所述第二缓冲区内存储有解压缩后的各压缩子文件。
2.如权利要求1所述的方法,其特征在于,还包括:所述终端的处理器在所述第i编号的压缩子文件读取至所述第一缓冲区后,暂停所述第m编号的压缩子文件的解压缩;
所述终端的处理器下发读取第k编号的压缩子文件的读取指令;
所述终端的处理器在所述第k编号的压缩子文件的读取时间内,对所述第m编号的压缩子文件继续解压缩。
3.如权利要求1所述的方法,其特征在于,包括:
所述多个压缩子文件的编号按照所述多个压缩子文件在所述文件中的位置依次递增;压缩子文件的解压缩时间小于压缩子文件的读取时间;
其中,k=i+1;m=i-1。
4.如权利要求1所述的方法,其特征在于,包括:
所述文件包括描述信息,所述描述信息包括记载各压缩子文件的编号、各压缩子文件的大小;所述方法还包括:
所述终端的处理器根据所述各压缩子文件的大小,确定所述第一缓冲区和所述第二缓冲区的大小;
所述终端的处理器下发读取第i编号的压缩子文件的读取指令之前,还包括:
所述终端的处理器通过所述描述信息确定待读取的第i编号的压缩子文件。
5.如权利要求4所述的方法,其特征在于,
所述文件通过以下方式存入所述非易失性的存储区,包括:
将初始文件切分为多个子文件;
针对每个子文件,根据预设的压缩算法,得到所述子文件的压缩数据;根据所述子文件的压缩数据和所述子文件的编号,得到所述压缩子文件;
将所述多个压缩子文件和所述描述信息打包为所述文件并将所述文件烧录至所述非易失性的存储区。
6.一种将文件加载至内存的装置,其特征在于,所述文件存储于终端的非易失性的存储区,所述文件包括多个压缩子文件,每个压缩子文件具有各自的编号;所述装置包括:
下发单元,用于下发读取第i编号的压缩子文件的读取指令;所述读取指令用于指示将所述第i编号的压缩子文件读取至所述内存的第一缓冲区;
处理单元,用于在所述第i编号的压缩子文件的读取时间内,对所述第一缓冲区内的第m编号的压缩子文件进行解压缩并存储至所述内存的第二缓冲区;所述第二缓冲区内存储有解压缩后的各压缩子文件。
7.如权利要求6所述的装置,其特征在于,所述处理单元还用于在所述第i编号的压缩子文件读取至所述第一缓冲区后,暂停所述第m编号的压缩子文件的解压缩;所述下发单元用于下发读取第k编号的压缩子文件的读取指令;所述处理单元用于在所述第k编号的压缩子文件的读取时间内,对所述第m编号的压缩子文件继续解压缩。
8.如权利要求6所述的装置,其特征在于,包括:
所述多个压缩子文件的编号按照所述多个压缩子文件在所述文件中的位置依次递增;压缩子文件的解压缩时间小于压缩子文件的读取时间;
其中,k=i+1;m=i-1。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911185705.4A CN112860323A (zh) | 2019-11-27 | 2019-11-27 | 一种将文件加载至内存的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911185705.4A CN112860323A (zh) | 2019-11-27 | 2019-11-27 | 一种将文件加载至内存的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112860323A true CN112860323A (zh) | 2021-05-28 |
Family
ID=75985188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911185705.4A Pending CN112860323A (zh) | 2019-11-27 | 2019-11-27 | 一种将文件加载至内存的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112860323A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118101800A (zh) * | 2024-04-29 | 2024-05-28 | 无锡沐创集成电路设计有限公司 | 一种数据包的处理方法、系统、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076031A (zh) * | 2006-12-06 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种应用网络硬盘的方法 |
CN101312533A (zh) * | 2007-05-22 | 2008-11-26 | 恩益禧电子股份有限公司 | 将压缩数据读出及写入存储器的图像处理设备和处理方法 |
CN104778066A (zh) * | 2015-04-21 | 2015-07-15 | 北京凌阳益辉科技有限公司 | 一种嵌入式操作系统的快速启动方法及其装置 |
CN106227506A (zh) * | 2015-06-02 | 2016-12-14 | 福州瑞芯微电子股份有限公司 | 一种内存压缩系统中的多通道并行压缩解压系统及方法 |
CN106843982A (zh) * | 2017-02-08 | 2017-06-13 | 广州致远电子股份有限公司 | 一种基于fpga的数据处理方法及装置 |
CN107977233A (zh) * | 2016-10-19 | 2018-05-01 | 华为技术有限公司 | 内核镜像文件快速加载方法和装置 |
CN108134609A (zh) * | 2017-12-21 | 2018-06-08 | 深圳大学 | 一种通用数据gz格式的多线程压缩与解压方法及装置 |
-
2019
- 2019-11-27 CN CN201911185705.4A patent/CN112860323A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076031A (zh) * | 2006-12-06 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种应用网络硬盘的方法 |
CN101312533A (zh) * | 2007-05-22 | 2008-11-26 | 恩益禧电子股份有限公司 | 将压缩数据读出及写入存储器的图像处理设备和处理方法 |
CN104778066A (zh) * | 2015-04-21 | 2015-07-15 | 北京凌阳益辉科技有限公司 | 一种嵌入式操作系统的快速启动方法及其装置 |
CN106227506A (zh) * | 2015-06-02 | 2016-12-14 | 福州瑞芯微电子股份有限公司 | 一种内存压缩系统中的多通道并行压缩解压系统及方法 |
CN107977233A (zh) * | 2016-10-19 | 2018-05-01 | 华为技术有限公司 | 内核镜像文件快速加载方法和装置 |
CN106843982A (zh) * | 2017-02-08 | 2017-06-13 | 广州致远电子股份有限公司 | 一种基于fpga的数据处理方法及装置 |
CN108134609A (zh) * | 2017-12-21 | 2018-06-08 | 深圳大学 | 一种通用数据gz格式的多线程压缩与解压方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118101800A (zh) * | 2024-04-29 | 2024-05-28 | 无锡沐创集成电路设计有限公司 | 一种数据包的处理方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110582785B (zh) | 配置用于执行层描述符列表的具有功率效率的深度神经网络模块 | |
KR101955145B1 (ko) | 애플리케이션 로딩 방법 및 장치 | |
US10049427B1 (en) | Image data high throughput predictive compression systems and methods | |
CN105205014A (zh) | 一种数据存储方法和装置 | |
CN103034467B (zh) | 图像显示方法、装置及移动终端 | |
CN110457235B (zh) | 内存压缩方法、装置、终端及存储介质 | |
CN106468984A (zh) | 一种物品关联图片快速预览的方法以及装置 | |
CN107977233A (zh) | 内核镜像文件快速加载方法和装置 | |
WO2020220971A1 (zh) | 一种文件加载方法、装置、电子设备及存储介质 | |
CN105096235A (zh) | 图形处理方法及图形处理装置 | |
CN109088636B (zh) | 一种数据处理方法、系统及电子设备和存储介质 | |
CN112860323A (zh) | 一种将文件加载至内存的方法及装置 | |
US20210303992A1 (en) | Executing neural networks on electronic devices | |
JP5709903B2 (ja) | データレコードを圧縮し圧縮されたデータレコードを処理するための方法、システム、コンピュータプログラム、その記録媒体、データコレクションを記憶したデータ記憶媒体、並びに通話データ記録システム | |
WO2015199734A1 (en) | Buffer-based update of state data | |
CN113127438A (zh) | 用于存储数据的方法、装置、服务器和介质 | |
WO2014024255A1 (ja) | 端末および動画再生プログラム | |
US20130009964A1 (en) | Methods and apparatus to perform animation smoothing | |
CN114003573A (zh) | 文件系统的压缩方法、装置、设备、存储介质、程序产品 | |
CN107705089B (zh) | 业务处理方法、装置及设备 | |
CN116166660B (zh) | 压缩笛卡尔积数据组合的方法及装置 | |
CN113687879A (zh) | 跨平台框架与平台交互库的交互方法及装置 | |
CN115098456B (zh) | 文件处理方法、装置、存储介质及电子设备 | |
US11977525B2 (en) | Method to optimize ingest in dedupe systems by using compressibility hints | |
KR102325954B1 (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210528 |