CN110704335A - 一种基于异步环形缓冲区的数据读取、写入方法及装置 - Google Patents
一种基于异步环形缓冲区的数据读取、写入方法及装置 Download PDFInfo
- Publication number
- CN110704335A CN110704335A CN201910829304.1A CN201910829304A CN110704335A CN 110704335 A CN110704335 A CN 110704335A CN 201910829304 A CN201910829304 A CN 201910829304A CN 110704335 A CN110704335 A CN 110704335A
- Authority
- CN
- China
- Prior art keywords
- data
- ring buffer
- size
- read
- asynchronous ring
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请公开了一种基于异步环形缓冲区的数据读取、写入方法及装置,包括:在写入数据时,确定剩余存储空间大小;若其不小于待写入数据的数据大小,则根据写指针将待写入数据写入环形缓冲区的剩余存储空间,并更新写指针。在读取数据时,确定缓存数据大小;比较缓存数据大小以及目标读取数据大小,确定二者中的较小值;根据该读指针以及目标数据大小,读取环形缓存区中的缓存数据,并更新异步环形缓冲区的读指针。可见,若应用于产品升级场景中,可以保证硬件总线发送数据包不会超时;而且,这相比于先将全部数据写入内存再从内存将的全部数据读出并写入硬件存储器的实施方式而言,耗时更短,效率更高。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种基于异步环形缓冲区的数据读取、写入方法及装置。
背景技术
对计算机***产品而言,产品升级是平常而且重要的。比如,当旧版本的产品存在已知bug时,通常需要在新版本中完成bug的修复,并利用新版本的产品来更新旧版本的产品,实现产品升级。又比如,当需要在旧版本产品上添加新功能时,用户通常使用升级功能把具有新功能的新版本产品(更新文件/升级文件)下载到本地中,以利用新版本的产品更新旧版本的产品。
目前,对于一般计算机***产品而言,固件程序都存放在flash硬件芯片中,在进行产品升级时,就是通过升级工具把新版本的固件二进制文件下载存入产品内的flash硬件芯片内。一般的过程是:升级工具把二进制文件分拆成多个数据包通过硬件总线发送到产品***内,产品***把数据包缓存到内存中,二进制接收完毕后,再把二进制数据写入flash硬件芯片中,完成升级。
但是,实际应用中,存在部分***产品的内存比较小,而升级文件可能相对比较大。比如:对于Expander这种小型计算机***而言,其内存可能只有2M(兆),而其升级文件为1.5M,在去除Expander运行所需的1M内存后,剩余1M内存不足以缓存升级文件。针对于此,如果产品接收到一包数据包后直接写入flash,不使用内存做缓存,虽然可以不考虑内存大小问题,但实际应用中硬件总线的速度很快,这使得两个数据包发送间隔时间很短,而每发送一包在直接写入flash时,写入flash中所需的时长是波动的。即,可能在较短时间内就可以完成该数据包的写入,也可能会花费较长时间才能完成该数据包的写入,这使得当数据包写入flash的过程需要花费较长时间时,硬件总线就会出现传输超时错误,从而会导致产品升级失败。
发明内容
本申请实施例提供了一种基于异步环形缓冲区的数据读取、写入方法及装置,以实现以较小的缓冲区完成对产品的成功升级。
第一方面,本申请实施例提供了一种基于异步环形缓冲区的数据写入方法,所述方法包括:
根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的剩余存储空间大小;
若所述剩余存储空间大小不小于待写入数据的数据大小,则根据所述写指针将所述待写入数据写入所述异步环形缓冲区的剩余存储空间;
其中,当所述待写入数据写入至所述异步环形缓冲区中可写入数据的尾地址处并且所述待写入数据未写入完全时,所述待写入数据在所述异步环形缓冲区中可写入数据的首地址处继续写入;
根据所述异步环形缓冲区的写指针以及所述待写入数据的数据大小,更新所述异步环形缓冲区的写指针。
在一些可能的实施方式中,所述方法还包括:
在将所述待写入数据写入所述异步环形缓冲区之前,申请互斥锁锁定数据写入操作。
在一些可能的实施方式中,所述方法还包括:
在完成将所述待写入数据写入所述异步环形缓冲区之后,释放所述互斥锁。
所述根据所述异步环形缓冲区的写指针以及所述待写入数据的数据大小,更新所述异步环形缓冲区的写指针
在一些可能的实施方式中,所述异步环形缓冲区的最大缓存空间的地址用一维数组表征,所述一维数组的长度为所述最大缓存空间的地址长度。
第二方面,本申请实施例还提供了一种基于异步环形缓冲区的数据读取方法,所述方法包括:
根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的缓存数据大小;
比较所述缓存数据大小以及目标读取数据大小,确定目标数据大小,所述目标数据大小为所述缓存数据大小与所述目标读取数据大小中的较小值;
根据所述读指针以及所述目标数据大小,读取所述异步环形缓冲区中的缓存数据;
其中,当读取至所述异步环形缓冲区中可读取数据的尾地址处并且所述待读取数据未读取完全时,在所述异步环形缓冲区中可读取数据的首地址处继续读取所述待读取数据;
根据所述读指针以及所述目标数据大小,更新所述异步环形缓冲区的读指针。
在一些可能的实施方式中,所述方法还包括:
在读取所述异步环形缓冲区中的缓存数据之前,申请互斥锁锁定数据写入操作。
在一些可能的实施方式中,所述方法还包括:
在完成读取所述异步环形缓冲区中的缓存数据之后,释放所述互斥锁。
在一些可能的实施方式中,所述异步环形缓冲区的最大缓存空间的地址用一维数组表征,所述一维数组的长度为所述最大缓存空间的地址长度。
第三方面,本申请实施例还提供了一种基于异步环形缓冲区的数据写入装置,所述装置包括:
确定模块,用于根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的剩余存储空间大小;
写入模块,用于若所述剩余存储空间大小不小于待写入数据的数据大小,则根据所述写指针将所述待写入数据写入所述异步环形缓冲区的剩余存储空间;
其中,当所述待写入数据写入至所述异步环形缓冲区中可写入数据的尾地址处并且所述待写入数据未写入完全时,所述待写入数据在所述异步环形缓冲区中可写入数据的首地址处继续写入;
更新模块,用于根据所述异步环形缓冲区的写指针以及所述待写入数据的数据大小,更新所述异步环形缓冲区的写指针。
在一些可能的实施方式中,所述装置还包括:
申请模块,用于在将所述待写入数据写入所述异步环形缓冲区之前,申请互斥锁锁定数据写入操作。
在一些可能的实施方式中,所述装置还包括:
释放模块,用于在完成将所述待写入数据写入所述异步环形缓冲区之后,释放所述互斥锁。
在一些可能的实施方式中,所述异步环形缓冲区的最大缓存空间的地址用一维数组表征,所述一维数组的长度为所述最大缓存空间的地址长度。
第四方面,本申请实施例还提供了一种基于异步环形缓冲区的数据读取装置,所述装置包括:
确定模块,用于根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的缓存数据大小;
比较模块,用于比较所述缓存数据大小以及目标读取数据大小,确定目标数据大小,所述目标数据大小为所述缓存数据大小与所述目标读取数据大小中的较小值;
读取模块,用于根据所述读指针以及所述目标数据大小,读取所述环形缓存区中的缓存数据;
其中,当读取至所述异步环形缓冲区中可读取数据的尾地址处并且所述待读取数据未读取完全时,在所述异步环形缓冲区中可读取数据的首地址处继续读取所述待读取数据;
更新模块,用于根据所述读指针以及所述目标数据大小,更新所述异步环形缓冲区的读指针。
在一些可能的实施方式中,所述装置还包括:
申请模块,用于在读取所述异步环形缓冲区中的缓存数据之前,申请互斥锁锁定数据写入操作。
在一些可能的实施方式中,所述装置还包括:
释放模块,用于在完成读取所述异步环形缓冲区中的缓存数据之后,释放所述互斥锁。
在一些可能的实施方式中,所述异步环形缓冲区的最大缓存空间的地址用一维数组表征,所述一维数组的长度为所述最大缓存空间的地址长度。
在本申请实施例的上述实现方式中,在基于异步环形缓冲区进行数据写入时,可以根据环形缓冲区的最大缓存空间大小以及该环形缓冲区的读指针和写指针,确定该环形缓冲区的剩余存储空间大小;若该剩余存储空间大小不小于待写入数据的数据大小,则可以根据写指针将待写入数据写入环形缓冲区的剩余存储空间;其中,当该待写入数据写入至异步环形缓冲区中可写入数据的尾地址处并且该待写入数据未写入完全时,该待写入数据在所述异步环形缓冲区中可写入数据的首地址处继续写入;然后,根据该环形缓冲区的写指针以及所述待写入数据的数据大小,更新该异步环形缓冲区的写指针。相应的,在基于异步环形缓冲区进行数据读取时,可以根据异步环形缓冲区的最大缓存空间大小以及异步环形缓冲区的读指针和写指针,确定异步环形缓冲区的缓存数据大小;然后,比较缓存数据大小以及目标读取数据大小,确定目标数据大小,其中,目标数据大小为缓存数据大小与目标读取数据大小中的较小值;接着,根据该读指针以及目标数据大小,可以读取环形缓存区中的缓存数据;其中,当读取至异步环形缓冲区中可读取数据的尾地址处并且该待读取数据未读取完全时,在异步环形缓冲区中可读取数据的首地址处继续读取待读取数据;最后,根据读指针以及目标数据大小,可以更新异步环形缓冲区的读指针。
可见,在对***产品进行升级时,数据可以不断的写入该异步环形缓冲区中,从而在基于硬件总线将数据写入异步环形缓冲区中时,可以保证硬件总线发送数据包不会超时;而且,还可以同时从异步环形缓冲区中将写入的数据包读取并写入flash,即使写入某个数据包在写入flash的过程中出现时延抖动,也不会使得硬件总线出现数据包超时。由于采用异步环形缓冲区可以使得在写入或者读出时具有连续性,即数据在写入至缓冲区的尾地址后可以继续从该缓冲区的首地址处进行数据存储,相应的,在读取缓冲区的尾地址所存储的数据后可以继续从该缓冲区的首地址处读取数据,这使得数据写入以及数据读取可以采用异步操作,而这种边写边读的数据处理过程不仅可以减少数据最终写入flash等硬件存储器所需消耗的内存,而且,这相比于先将全部数据写入内存再从内存将的全部数据读出并写入硬件存储器的实施方式而言,耗时更短,效率更高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一示例性应用场景示意图;
图2为本申请实施例中一种基于异步环形缓冲区的数据读取、写入方法流程示意图;
图3为本申请实施例中一种读指针小于写指针的示意图;
图4为本申请实施例中读指针大于写指针的示意图;
图5为本申请实施例中读指针等于写指针的示意图;
图6为本申请实施例中一种基于异步环形缓冲区的数据读取装置的结构示意图;
图7为本申请实施例中一种基于异步环形缓冲区的数据写入装置的结构示意图。
具体实施方式
实际应用中,对于一些小型的计算机***,其内存通常较小,在进行***产品升级更新时,升级文件的大小可能超过该内存的剩余内存空间的大小,使得在该计算机***内无法缓存升级文件。而若直接将该升级文件存储于flash中,而不用内存作为缓存,虽然对于计算机内存不做要求,但是由于实际应用场景中升级文件是通过硬件总线传输至flash中,并且,硬件总线的传输速度通常较快,使得升级文件中的两个相邻数据包的发送间隔时间很短,若前一数据包能够在该发送时间间隔内成功写入flash,则后一数据包可以顺利进行发送,而若前一数据包未在该发送时间间隔内成功写入flash,则硬件总线会出现传输超时错误,影响后续数据包发送失败,从而会导致产品升级失败。
基于此,本申请实施例提供了一种基于异步环形缓冲区的数据读取、写入方法,通过在环形缓冲区中写入以及读取数据,实现以较小的缓冲区完成对产品的成功升级。具体的,在基于异步环形缓冲区进行数据写入时,可以根据环形缓冲区的最大缓存空间大小以及该环形缓冲区的读指针和写指针,确定该环形缓冲区的剩余存储空间大小;若该剩余存储空间大小不小于待写入数据的数据大小,则可以根据写指针将待写入数据写入环形缓冲区的剩余存储空间;其中,当该待写入数据写入至异步环形缓冲区中可写入数据的尾地址处并且该待写入数据未写入完全时,该待写入数据在所述异步环形缓冲区中可写入数据的首地址处继续写入;然后,根据该环形缓冲区的写指针以及所述待写入数据的数据大小,更新该异步环形缓冲区的写指针。相应的,在基于异步环形缓冲区进行数据读取时,可以根据异步环形缓冲区的最大缓存空间大小以及异步环形缓冲区的读指针和写指针,确定异步环形缓冲区的缓存数据大小;然后,比较缓存数据大小以及目标读取数据大小,确定目标数据大小,其中,目标数据大小为缓存数据大小与目标读取数据大小中的较小值;接着,根据该读指针以及目标数据大小,可以读取环形缓存区中的缓存数据;其中,当读取至异步环形缓冲区中可读取数据的尾地址处并且该待读取数据未读取完全时,在异步环形缓冲区中可读取数据的首地址处继续读取待读取数据;最后,根据读指针以及目标数据大小,可以更新异步环形缓冲区的读指针。
可见,在对***产品进行升级时,数据可以不断的写入该异步环形缓冲区中,从而在基于硬件总线将数据写入异步环形缓冲区中时,可以保证硬件总线发送数据包不会超时;而且,还可以同时从异步环形缓冲区中将写入的数据包读取并写入flash,即使写入某个数据包在写入flash的过程中出现时延抖动,也不会使得硬件总线出现数据包超时。由于采用异步环形缓冲区可以使得在写入或者读出时具有连续性,即数据在写入至缓冲区的尾地址后可以继续从该缓冲区的首地址处进行数据存储,相应的,在读取缓冲区的尾地址所存储的数据后可以继续从该缓冲区的首地址处读取数据,这使得数据写入以及数据读取可以采用异步操作,而这种边写边读的数据处理过程不仅可以减少数据最终写入flash等硬件存储器所需消耗的内存,而且,这相比于先将全部数据写入内存再从内存将的全部数据读出并写入硬件存储器的实施方式而言,耗时更短,效率更高。
作为一种示例,本申请实施例可以应用于如图1所示的示例性应用场景。在该场景中,终端101上具有用于更新Expander***102的产品升级文件,并且,终端101与Expander***102之间可以通过USB总线进行数据交互。当需要对Expander***102的产品进行升级时,终端101可以将升级文件通过USB总线发送给Expander***102;Expander***102在接收升级文件(包含多个数据包)的过程中,可以先根据自身的Expander***102的异步环形缓冲区的最大缓存空间大小以及该异步环形缓存区的读指针和写指针,确定出该异步环形缓冲区的剩余存储空间大小,并且,若确定该剩余存储空间大小不小于数据包的数据大小,则可以该写指针将该数据包写入异步环形缓冲区的剩余存储空间。其中,数据包在被写入异步环形缓冲区的过程中,当该数据包写入至该异步环形缓冲区中可写入数据的尾地址处并且该数据包未写入完全时,该数据包在异步环形缓冲区中可写入数据的首地址处继续写入,并根据写指针以及该数据包的大小,更新写指针。而在将写入异步环形缓冲区中的数据写入Expander***102的flash存储器中时,Expander***102可以异步环形缓冲区的最大缓存空间大小以及该异步环形缓冲区的读指针和写指针,确定出当前异步环形缓冲区的缓存数据大小;然后,Expander***102可以比较缓存数据大小与此次所要读取数据的大小,确定其中的较小值,并以该较小值从异步环形缓冲区的读指针处开始读取缓存数据。其中,当读取到异步环形缓冲区中可读取数据的尾地址处并且数据未读取完全时,可以在所述异步环形缓冲区中可读取数据的首地址处继续读取缓存数据;而当数据读取完全后,可以根据该读指针以及此次所读取的数据大小(即为上述较小值),更新读指针。按照该过程,可以一边向Expander***102的异步环形缓冲区中写入数据,一边将写入该缓冲区的数据读出并且写入Expander***102的flash存储器中,从而可以以较小的缓存区实现较大的升级文件的成功写入flash中,从而完成Expander***102的产品升级。
可以理解的是,上述场景仅是本申请实施例提供的一个场景示例,本申请实施例并不限于此场景。比如,在其他可能的实施方式中,本申请实施例的技术方案也可以是应用于其他小型计算机***中,而不局限于上述Expander***102。又比如,在本申请实施例不限于应用在产品升级的场景中,对于内存不足,数据读写频率较高的应用场景,都可以应用于本申请实施例的技术方案。总之,本申请实施例可以应用于任何可适用的应用场景,而不局限于上述场景示例。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面将结合附图对本申请实施例中的各种非限定性实施方式进行示例性说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
参阅图2,图2示出了本申请实施例中一种基于异步环形缓冲区的数据写入、读取方法的流程示意图,该方法具体可以包括:
S201:根据异步环形缓冲区的最大缓存空间大小以及该异步环形缓冲区的读指针以及写指针,确定该异步环形缓冲区的剩余存储空间大小。
本实施例中,在将数据一次性写入异步环形缓冲区之前,可以预先确定异步环形缓冲区是否具有足够的存储空间去缓存数据。若存储空间足够,则可以将该数据写入该异步环形缓冲区,而若存储空间不够,则通常无法一次性将该数据全部写入异步环形缓存区,此时,可以触发报警或者进行缓存报错提示。
需要说明的是,本实施例中,可以设置读指针以及写指针来标识数据读写时的起始地址。以写指针为例,写指针可以标识出数据被写入异步环形缓冲区时数据的起始缓存地址,如当写指针指向存储地址0082时,若存在数据需要缓存至该异步环形缓冲区中,则第一个数据可以被缓存在该写指针所指向的存储地址0082,而第二个、第三个数据可以依次按照地址顺序被缓存于存储地址0083以及存储地址0084中。相应的,在读取异步环形缓冲区中的缓存数据时,即可以从读指针所指向的存储地址处开始读取数据。基于此,本实施例中按照地址顺序,读指针至写指针之间的地址空间通常已缓存数据,而写指针至读指针之间的地址空间通常未缓存数据,即为剩余存储空间。如图3所示,在读指针至写指针之间的空白区域,为已缓存数据的区域,而写指针至读指针之间的阴影区域,为尚未缓存数据的区域。
在一种示例性的具体实施方式中,在确定异步环形缓冲区的剩余存储空间大小的过程中,具体可以是根据异步环形缓冲区的最大缓存空间大小以及该异步环形缓冲区的读指针以及写指针来进行确定。如图3所示,该异步环形缓冲区中的最大缓存空间大小为Size,读指针所指向的存储地址为RP,写指针所指向的存储地址为WP(WP>RP),则该异步环形缓冲区的剩余存储空间大小为|Size-(WP-RP)|。
值得注意的是,在图3所示的示例中,WP>RP,而在其他可能的场景示例中,写指针所指向的存储地址WP也可能小于读指针所指向的存储地址RP,如图4所示,则异步环形缓冲区的剩余存储空间为WP至RP,剩余存储空间大小为(RP-WP)。
另外,当写指针所指向的存储地址WP与读指针所指向的存储地址RP相等时,如图5所示,则异步环形缓冲区的剩余存储空间大小等于最大缓存空间大小Size。
作为一种示例,可以一维数组来表征异步环形缓冲区的最大缓存空间的地址,相应的,该一维数组的长度可以是该最大缓存空间的地址长度。
S202:若确定剩余存储空间大小不小于待写入数据的数据大小,则根据该写指针将待写入数据写入所述异步环形缓冲区的剩余存储空间;其中,当待写入数据写入至异步环形缓冲区中可写入数据的尾地址处并且该待写入数据未写入完全时,该待写入数据在异步环形缓冲区中可写入数据的首地址处继续写入。
可以理解,当剩余存储空间大小不小于待写入数据的数据大小时,表明当前异步环形缓冲区具有足够的存储空间去缓存待写入数据,因此,可以将该待写入数据写入异步环形缓冲区的剩余存储空间中。具体实现时,可以按照地址顺序,以写指针所指向的存储地址处开始缓存待写入数据。即,该待写入数据中的第一个数据,可以被写入至写指针所指向的存储地址A,而该待写入数据中的第二个数据,可以被写入至存储地址A的下一个存储地址B中,以此类推。
需要说明的是,在将待写入数据写入异步环形缓存区的过程中,若待写入数据写入至该异步环形缓冲区中可写入数据的尾地址处并且该待写入数据未写入完全时,该待写入数据在该异步环形缓冲区中可写入数据的首地址处继续写入。举例来说,假设异步环形缓存区的存储地址为0000(首地址)至2048(尾地址),则在将待写入数据写入尾地址2048后,若待写入数据中仍存在部分数据未写入至异步环形缓冲区中,则可以在该异步环形缓冲区的首地址0000处继续缓存待写入数据中未写入的数据。本实施例中,异步环形缓冲区中的“环形”是指数据在该缓冲区中进行存储时是连续的,即当数据缓存至存储地址2048位置后,从存储地址0000处继续缓存数据。相应的,从缓冲区中读取的数据也是连续的,从存储地址2048处读取已缓存数据之后,从存储地址0000处继续读取已缓存数据。
S203:根据异步环形缓冲区的写指针以及待写入数据的数据大小,更新异步环形缓冲区的写指针。
本实施例中,在将待写入数据写入异步环形缓冲区后,可以更新异步环形缓冲区中的写指针。具体实现时,当写指针所指向的存储地址与异步环形缓冲区中可写入数据的尾地址之间的存储空间大小大于待写入数据的大小时,更新后的写指针所指向的存储地址为(WP+W)。其中,“WP”为更新前写指针所指向的存储地址,“W”为待写入数据的大小。当写指针所指向的存储地址与异步环形缓冲区中可写入数据的尾地址之间的存储空间大小等于待写入数据的大小时,更新后的写指针所指向的存储地址即为异步环形缓冲区中可写入数据的首地址。当写指针所指向的存储地址与异步环形缓冲区中可写入数据的尾地址之间的存储空间大小小于待写入数据的大小时,写指针所指向的存储地址与异步环形缓冲区中可写入数据的尾地址之间的存储空间不足以存储整个待写入数据,则待写入数据中的剩余部分数据可以从异步环形缓冲区中可写入数据的首地址处开始进行存储,相应的,更新后的写指针所指向的存储地址即为(W-(LP-WP)),其中,“WP”为更新前写指针所指向的存储地址,“W”为待写入数据的大小,“LP”为异步环形缓冲区中可写入数据的尾地址。
实际应用中,为了保证向异步环形缓冲区中写入数据的过程中不受数据读操作的影响,在一些可能的实施方式中,可以在将待写入数据(数据包)写入异步环形缓冲区之前,申请互斥锁锁定数据写入操作,这样,在同一时间,只可以在异步环形缓冲区中进行数据包的写入操作,而无法进行数据的读出操作。
相应的,在完成将待写入数据(数据包)写入异步环形缓冲区后,可以进行数据的读取操作,比如,执行后续步骤S204至步骤S207以实现缓存数据的读取等,此时,为了避免对数据读取操作的影响,可以释放已经申请的针对于写入操作的互斥锁。
S204:根据异步环形缓冲区的最大缓存空间大小以及该异步环形缓冲区的读指针和写指针,确定该异步环形缓冲区的缓存数据大小。
本实施例中,在数据被缓存至异步环形缓冲区中后,可以将缓存的数据进行读出,以便将缓存的数据写入相应的硬件中,如flash存储器等。
而每次需要读取异步环形缓冲区中的数据时,可以先确定该异步环形缓冲区中已缓存的数据大小,以便后续能够确定出从异步环形缓冲区中可以读取多少数据。具体实现时,可以是根据异步环形缓冲区的最大缓存空间大小以及该异步环形缓冲区的读指针和写指针,确定出该异步环形缓冲区的缓存数据大小。比如,如图3所示,当读指针所指向的存储地址RP小于写指针所指向的存储地址WP时,该异步环形缓冲区中具有缓存数据的存储空间为RP至WP,缓存数据大小为((WP-RP)*每个存储地址所能存储的数据量)。而当读指针所指向的存储地址RP大于指针所指向的存储地址WP时,如图4所示,则,该异步环形缓冲区中具有缓存数据的存储空间为首地址至WP(WP-1),以及RP至尾地址,而缓存数据大小为该存储空间与每个存储地址所能存储的数据量之间的乘积;其中,首地址是指异步环形缓冲区中可缓存(写入)数据的首地址,类似的,尾地址是指异步环形缓冲区中可缓存(写入)数据的尾地址。当读指针所指向的存储地址RP等于指针所指向的存储地址WP时,如图5所示,则异步环形缓冲区中未缓存有数据。
S205:比较所确定出的缓存数据大小以及目标读取数据大小,确定目标数据大小,所述目标数据大小为所述缓存数据大小与所述目标读取数据大小中的较小值。
实际应用中,在从异步环形缓冲区中读取数据时,所读取的数据量是由所期望读取的数据大小(即目标读取数据大小)与异步环形缓冲区中所具有的缓存数据大小决定的,具体为目标读取数据大小以及缓存数据大小中的较小值。比如,假设期望读出的数据大小为100字节,而异步环形缓冲区中所具有的缓存数据只有90字节,则从异步环形缓冲区中最多只能读出90字节的数据,即最终读取的数据长度为100字节和90字节中的较小值;又比如,假设期望读出的数据大小为50字节,而异步环形缓冲区中所具有的缓存数据仍然为90字节,则从异步环形缓冲区中仅需读取50字节的缓存数据即可,也即最终读取的数据长度为50字节和90字节中的较小值。
S206:根据读指针以及所述目标数据大小,读取异步环形缓冲区中的缓存数据;其中,当读取至异步环形缓冲区中可读取数据的尾地址处并且待读取数据未读取完全时,在异步环形缓冲区中可读取数据的首地址处继续读取待读取数据。
具体实现时,可以按照地址顺序,以读指针所指向的存储地址处开始读取缓存数据(也即待读取数据)。即,从读指针所指向的存储地址A中读取第一个数据,然后,从存储地址A的下一个存储地址B中,读取第二个数据,以此类推。
需要说明的是,在异步环形缓存区中读取数据的过程中,若读取至异步环形缓冲区中可读取数据的尾地址处并且待读取数据未读取完全时,在异步环形缓冲区中可读取数据的首地址处继续读取待读取数据。举例来说,假设异步环形缓存区的存储地址为0000(首地址)至2048(尾地址),则在读取完尾地址2048中的缓存数据后,若数据读取过程未完成(即读取操作未结束)中,则可以在该异步环形缓冲区的首地址0000处继续读取以缓存的数据。本实施例中,异步环形缓冲区中的“环形”是指在从异步环形缓冲区中读取数据是连续的,即当读取至存储地址2048位置后,从存储地址0000处继续读取数据。
S207:根据读指针以及目标数据大小,更新异步环形缓冲区的读指针。
本实施例中,在完成缓存数据的读取后,可以更新异步环形缓冲区的读指针。具体实现时,按照地址顺序,当读取指针所指向的存储地址小于写指针所指向的存储地址时,更新后的读指针所指向的存储地址为(RP+R),其中,“RP”为更新前读指针所指向的存储地址,“R”为本次所读取数据的大小。而当读指针所指向的存储地址与写指针所指向的存储地址相等时,本次未从异步环形缓冲区中读取到缓存数据,则读指针所指向的存储地址保持不变。而读取指针所指向的存储地址小于写指针所指向的存储地址时,在读取至异步环形缓冲区中可读取数据的尾地址后,继续从异步环形缓冲区中可读取数据的首地址处读取数据,则更新后的读指针所指向的存储地址为(R-(LP-RP)),其中,“RP”为更新前读指针所指向的存储地址,“R”为待读取数据的大小,“LP”为异步环形缓冲区中可读取数据的尾地址(通常与可写入数据的尾地址相同)。
实际应用中,为了保证在异步环形缓冲区中读取数据的过程中不受数据写入操作的影响,在一些可能的实施方式中,可以在从异步环形缓冲区中读取待读取数据之前,申请互斥锁锁定数据读取操作,这样,在同一时间,只可以在异步环形缓冲区中进行数据的读取操作,而无法进行数据的写入操作。
相应的,在完成读取异步环形缓冲区中的缓存数据后,可以进行数据的写入操作,比如,可以继续缓存下一个数据包等(可以理解,在产品升级场景中,升级文件包括多个数据包)。此时,为了避免对下一数据包的写入操作的影响,可以释放已经申请的针对于读取操作的互斥锁。
本实施例中,若应用于产品升级场景中,在对***产品进行升级时,数据可以不断的写入该异步环形缓冲区中,从而在基于硬件总线将数据写入异步环形缓冲区中时,可以保证硬件总线发送数据包不会超时;而且,还可以同时从异步环形缓冲区中将写入的数据包读取并写入flash,即使写入某个数据包在写入flash的过程中出现时延抖动,也不会使得硬件总线出现数据包超时。由于采用异步环形缓冲区可以使得在写入或者读出时具有连续性,即数据在写入至缓冲区的尾地址后可以继续从该缓冲区的首地址处进行数据存储,相应的,在读取缓冲区的尾地址所存储的数据后可以继续从该缓冲区的首地址处读取数据,这使得数据写入以及数据读取可以采用异步操作,而这种边写边读的数据处理过程不仅可以减少数据最终写入flash等硬件存储器所需消耗的内存,而且,这相比于先将全部数据写入内存再从内存将的全部数据读出并写入硬件存储器的实施方式而言,耗时更短,效率更高。当然,本申请实施例还可以应用于其它应用场景中,不限于产品升级场景。
此外,本申请实施例还提供了一种基于异步环形缓冲区的数据写入装置。参阅图6,图6示出了本申请实施例中一种基于异步环形缓冲区的数据写入装置的结构示意图,该装置600包括:
确定模块601,用于根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的剩余存储空间大小;
写入模块602,用于若所述剩余存储空间大小不小于待写入数据的数据大小,则根据所述写指针将所述待写入数据写入所述异步环形缓冲区的剩余存储空间;
其中,当所述待写入数据写入至所述异步环形缓冲区中可写入数据的尾地址处并且所述待写入数据未写入完全时,所述待写入数据在所述异步环形缓冲区中可写入数据的首地址处继续写入;
更新模块603,用于根据所述异步环形缓冲区的写指针以及所述待写入数据的数据大小,更新所述异步环形缓冲区的写指针。
在一些可能的实施方式中,所述装置600还包括:
申请模块,用于在将所述待写入数据写入所述异步环形缓冲区之前,申请互斥锁锁定数据写入操作。
在一些可能的实施方式中,所述装置600还包括:
释放模块,用于在完成将所述待写入数据写入所述异步环形缓冲区之后,释放所述互斥锁。
在一些可能的实施方式中,所述异步环形缓冲区的最大缓存空间的地址用一维数组表征,所述一维数组的长度为所述最大缓存空间的地址长度。
值得注意的是,本实施例所描述的写入装置,对应于前述方法实施例中所描述的写入方法,其具体实现可参阅方法实施例中相关之处的描述,在此不做赘述。
另外,本申请实施例还提供了一种基于异步环形缓冲区的数据读取装置。参阅图7,图7示出了本申请实施例中一种基于异步环形缓冲区的数据读取装置的结构示意图,所述装置700包括:
确定模块701,用于根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的缓存数据大小;
比较模块702,用于比较所述缓存数据大小以及目标读取数据大小,确定目标数据大小,所述目标数据大小为所述缓存数据大小与所述目标读取数据大小中的较小值;
读取模块703,用于根据所述读指针以及所述目标数据大小,读取所述环形缓存区中的缓存数据;
其中,当读取至所述异步环形缓冲区中可读取数据的尾地址处并且所述待读取数据未读取完全时,在所述异步环形缓冲区中可读取数据的首地址处继续读取所述待读取数据;
更新模块704,用于根据所述读指针以及所述目标数据大小,更新所述异步环形缓冲区的读指针。
在一些可能的实施方式中,所述装置700还包括:
申请模块,用于在读取所述异步环形缓冲区中的缓存数据之前,申请互斥锁锁定数据写入操作。
在一些可能的实施方式中,所述装置700还包括:
释放模块,用于在完成读取所述异步环形缓冲区中的缓存数据之后,释放所述互斥锁。
在一些可能的实施方式中,所述异步环形缓冲区的最大缓存空间的地址用一维数组表征,所述一维数组的长度为所述最大缓存空间的地址长度。
值得注意的是,本实施例所描述的读取装置,对应于前述方法实施例中所描述的读取方法,其具体实现可参阅方法实施例中相关之处的描述,在此不做赘述。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请示例性的实施方式,并非用于限定本申请的保护范围。
Claims (10)
1.一种基于异步环形缓冲区的数据写入方法,其特征在于,所述方法包括:
根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的剩余存储空间大小;
若所述剩余存储空间大小不小于待写入数据的数据大小,则根据所述写指针将所述待写入数据写入所述异步环形缓冲区的剩余存储空间;
其中,当所述待写入数据写入至所述异步环形缓冲区中可写入数据的尾地址处并且所述待写入数据未写入完全时,所述待写入数据在所述异步环形缓冲区中可写入数据的首地址处继续写入;
根据所述异步环形缓冲区的写指针以及所述待写入数据的数据大小,更新所述异步环形缓冲区的写指针。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述待写入数据写入所述异步环形缓冲区之前,申请互斥锁锁定数据写入操作。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在完成将所述待写入数据写入所述异步环形缓冲区之后,释放所述互斥锁。
4.根据权利要求1所述的方法,其特征在于,所述异步环形缓冲区的最大缓存空间的地址用一维数组表征,所述一维数组的长度为所述最大缓存空间的地址长度。
5.一种基于异步环形缓冲区的数据读取方法,其特征在于,所述方法包括:
根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的缓存数据大小;
比较所述缓存数据大小以及目标读取数据大小,确定目标数据大小,所述目标数据大小为所述缓存数据大小与所述目标读取数据大小中的较小值;
根据所述读指针以及所述目标数据大小,读取所述异步环形缓冲区中的缓存数据;
其中,当读取至所述异步环形缓冲区中可读取数据的尾地址处并且所述待读取数据未读取完全时,在所述异步环形缓冲区中可读取数据的首地址处继续读取所述待读取数据;
根据所述读指针以及所述目标数据大小,更新所述异步环形缓冲区的读指针。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在读取所述异步环形缓冲区中的缓存数据之前,申请互斥锁锁定数据写入操作。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在完成读取所述异步环形缓冲区中的缓存数据之后,释放所述互斥锁。
8.根据权利要求5所述的方法,其特征在于,所述异步环形缓冲区的最大缓存空间的地址用一维数组表征,所述一维数组的长度为所述最大缓存空间的地址长度。
9.一种基于异步环形缓冲区的数据写入装置,其特征在于,所述装置包括:
确定模块,用于根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的剩余存储空间大小;
写入模块,用于若所述剩余存储空间大小不小于待写入数据的数据大小,则根据所述写指针将所述待写入数据写入所述异步环形缓冲区的剩余存储空间;
其中,当所述待写入数据写入至所述异步环形缓冲区中可写入数据的尾地址处并且所述待写入数据未写入完全时,所述待写入数据在所述异步环形缓冲区中可写入数据的首地址处继续写入;
更新模块,用于根据所述异步环形缓冲区的写指针以及所述待写入数据的数据大小,更新所述异步环形缓冲区的写指针。
10.一种基于异步环形缓冲区的数据读取装置,其特征在于,所述装置包括:
确定模块,用于根据异步环形缓冲区的最大缓存空间大小以及所述异步环形缓冲区的读指针以及写指针,确定所述异步环形缓冲区的缓存数据大小;
比较模块,用于比较所述缓存数据大小以及目标读取数据大小,确定目标数据大小,所述目标数据大小为所述缓存数据大小与所述目标读取数据大小中的较小值;
读取模块,用于根据所述读指针以及所述目标数据大小,读取所述环形缓存区中的缓存数据;
其中,当读取至所述异步环形缓冲区中可读取数据的尾地址处并且所述待读取数据未读取完全时,在所述异步环形缓冲区中可读取数据的首地址处继续读取所述待读取数据;
更新模块,用于根据所述读指针以及所述目标数据大小,更新所述异步环形缓冲区的读指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910829304.1A CN110704335A (zh) | 2019-09-03 | 2019-09-03 | 一种基于异步环形缓冲区的数据读取、写入方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910829304.1A CN110704335A (zh) | 2019-09-03 | 2019-09-03 | 一种基于异步环形缓冲区的数据读取、写入方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110704335A true CN110704335A (zh) | 2020-01-17 |
Family
ID=69193476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910829304.1A Pending CN110704335A (zh) | 2019-09-03 | 2019-09-03 | 一种基于异步环形缓冲区的数据读取、写入方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704335A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111865824A (zh) * | 2020-06-19 | 2020-10-30 | 重庆川仪自动化股份有限公司 | 一种串口通信中的双指针环形缓冲区设计方法及*** |
CN111913659A (zh) * | 2020-07-14 | 2020-11-10 | 长沙景嘉微电子股份有限公司 | 块数据处理方法、装置、***及存储介质 |
CN111966498A (zh) * | 2020-08-27 | 2020-11-20 | 南京电研电力自动化股份有限公司 | 一种配电房物联网网关数据快速处理方法、***及存储介质 |
CN112130765A (zh) * | 2020-09-17 | 2020-12-25 | 智新控制***有限公司 | Eeprom数据读写方法及装置 |
CN112199898A (zh) * | 2020-11-11 | 2021-01-08 | 北京三维天地科技股份有限公司 | 一种基于大数据的仪器设备故障预测与健康管理算法 |
CN112732448A (zh) * | 2021-01-18 | 2021-04-30 | 国汽智控(北京)科技有限公司 | 一种内存空间的分配方法、装置及计算机设备 |
CN113848454A (zh) * | 2021-09-09 | 2021-12-28 | 海光信息技术股份有限公司 | 一种芯片测试方法及芯片测试机 |
CN113961212A (zh) * | 2021-10-29 | 2022-01-21 | 重庆长安汽车股份有限公司 | 一种基于以太网的ota安装包部署方法及***、升级车辆控制器的方法 |
CN115934023A (zh) * | 2021-08-31 | 2023-04-07 | 华为技术有限公司 | 数据处理方法、数据处理装置以及相关设备 |
CN117196929A (zh) * | 2023-09-25 | 2023-12-08 | 沐曦集成电路(上海)有限公司 | 基于定长数据包的软硬件交互*** |
CN117312200A (zh) * | 2023-11-27 | 2023-12-29 | 沐曦集成电路(南京)有限公司 | 基于环形缓冲区的多通道数据dma*** |
CN117407148A (zh) * | 2022-07-08 | 2024-01-16 | 华为技术有限公司 | 数据写入方法、读取方法、装置、电子设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104038806A (zh) * | 2014-06-11 | 2014-09-10 | 深圳市九洲电器有限公司 | 一种应用界面显示方法及机顶盒 |
CN106559703A (zh) * | 2015-09-28 | 2017-04-05 | 青岛海信电器股份有限公司 | 一种音频数据的处理方法和装置 |
US20180137043A1 (en) * | 2013-12-30 | 2018-05-17 | Microsoft Technology Licensing, Llc | Re-Use of Invalidated Data in Buffers |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
-
2019
- 2019-09-03 CN CN201910829304.1A patent/CN110704335A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180137043A1 (en) * | 2013-12-30 | 2018-05-17 | Microsoft Technology Licensing, Llc | Re-Use of Invalidated Data in Buffers |
CN104038806A (zh) * | 2014-06-11 | 2014-09-10 | 深圳市九洲电器有限公司 | 一种应用界面显示方法及机顶盒 |
CN106559703A (zh) * | 2015-09-28 | 2017-04-05 | 青岛海信电器股份有限公司 | 一种音频数据的处理方法和装置 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
周霞: "针对数字电视码流的硬加速与同步控制策略研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111865824A (zh) * | 2020-06-19 | 2020-10-30 | 重庆川仪自动化股份有限公司 | 一种串口通信中的双指针环形缓冲区设计方法及*** |
CN111913659A (zh) * | 2020-07-14 | 2020-11-10 | 长沙景嘉微电子股份有限公司 | 块数据处理方法、装置、***及存储介质 |
CN111913659B (zh) * | 2020-07-14 | 2022-11-04 | 长沙景嘉微电子股份有限公司 | 块数据处理方法、装置、***及存储介质 |
CN111966498A (zh) * | 2020-08-27 | 2020-11-20 | 南京电研电力自动化股份有限公司 | 一种配电房物联网网关数据快速处理方法、***及存储介质 |
CN111966498B (zh) * | 2020-08-27 | 2023-08-25 | 南京电研电力自动化股份有限公司 | 一种配电房物联网网关数据快速处理方法、***及存储介质 |
CN112130765A (zh) * | 2020-09-17 | 2020-12-25 | 智新控制***有限公司 | Eeprom数据读写方法及装置 |
CN112199898A (zh) * | 2020-11-11 | 2021-01-08 | 北京三维天地科技股份有限公司 | 一种基于大数据的仪器设备故障预测与健康管理算法 |
CN112199898B (zh) * | 2020-11-11 | 2021-06-15 | 北京三维天地科技股份有限公司 | 一种基于大数据的仪器设备故障预测与健康管理方法 |
CN112732448A (zh) * | 2021-01-18 | 2021-04-30 | 国汽智控(北京)科技有限公司 | 一种内存空间的分配方法、装置及计算机设备 |
CN115934023B (zh) * | 2021-08-31 | 2024-06-18 | 华为技术有限公司 | 数据处理方法、数据处理装置以及相关设备 |
CN115934023A (zh) * | 2021-08-31 | 2023-04-07 | 华为技术有限公司 | 数据处理方法、数据处理装置以及相关设备 |
CN113848454A (zh) * | 2021-09-09 | 2021-12-28 | 海光信息技术股份有限公司 | 一种芯片测试方法及芯片测试机 |
CN113961212A (zh) * | 2021-10-29 | 2022-01-21 | 重庆长安汽车股份有限公司 | 一种基于以太网的ota安装包部署方法及***、升级车辆控制器的方法 |
CN113961212B (zh) * | 2021-10-29 | 2024-05-10 | 重庆长安汽车股份有限公司 | 一种基于以太网的ota安装包部署方法及***、升级车辆控制器的方法 |
CN117407148A (zh) * | 2022-07-08 | 2024-01-16 | 华为技术有限公司 | 数据写入方法、读取方法、装置、电子设备以及存储介质 |
CN117196929B (zh) * | 2023-09-25 | 2024-03-08 | 沐曦集成电路(上海)有限公司 | 基于定长数据包的软硬件交互*** |
CN117196929A (zh) * | 2023-09-25 | 2023-12-08 | 沐曦集成电路(上海)有限公司 | 基于定长数据包的软硬件交互*** |
CN117312200A (zh) * | 2023-11-27 | 2023-12-29 | 沐曦集成电路(南京)有限公司 | 基于环形缓冲区的多通道数据dma*** |
CN117312200B (zh) * | 2023-11-27 | 2024-02-02 | 沐曦集成电路(南京)有限公司 | 基于环形缓冲区的多通道数据dma*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704335A (zh) | 一种基于异步环形缓冲区的数据读取、写入方法及装置 | |
US9411689B2 (en) | Method and relevant apparatus for starting boot program | |
CN109597818A (zh) | 数据更新方法、装置、存储介质和设备 | |
CN110995776B (zh) | 区块链的区块分发方法、装置、计算机设备和存储介质 | |
US10970254B2 (en) | Utilization of tail portions of a fixed size block in a deduplication environment by deduplication chunk virtualization | |
KR101555210B1 (ko) | 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치 | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
US20120101996A1 (en) | Apparatus and method for snapshot image segmentation | |
CN111444192B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN111125040A (zh) | 管理重做日志的方法、装置及存储介质 | |
WO2018145392A1 (zh) | 差分升级方法及装置、终端、存储介质、处理器 | |
CN114443081A (zh) | 终端升级的方法及终端 | |
CN110716845A (zh) | 一种Android***的日志信息读取的方法 | |
CN108694052B (zh) | 一种固件升级方法、固件升级装置及固件升级*** | |
CN110083379A (zh) | 一种服务器部件升级方法及相关装置 | |
US9715398B2 (en) | Program code loading method of application and computing system using the same | |
CN110019063B (zh) | 计算节点数据容灾回放的方法、终端设备及存储介质 | |
CN109918381B (zh) | 用于存储数据的方法和装置 | |
CN112182010B (zh) | 脏页刷新方法和装置、存储介质和电子设备 | |
CN112346771B (zh) | 升级文件生成方法及装置 | |
CN110704091A (zh) | 一种固件升级方法及装置 | |
WO2020107469A1 (zh) | 程序处理方法、设备及存储介质 | |
CN108491160B (zh) | 一种数据写入方法及装置 | |
WO2020210955A1 (zh) | 应用程序启动的方法、装置、电子设备及存储介质 | |
CN113010195B (zh) | 一种***升级方法、存储介质及终端设备 |
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: 20200117 |