CN116107762A - 内存分配方法、装置、电子设备和存储介质 - Google Patents
内存分配方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116107762A CN116107762A CN202310376727.9A CN202310376727A CN116107762A CN 116107762 A CN116107762 A CN 116107762A CN 202310376727 A CN202310376727 A CN 202310376727A CN 116107762 A CN116107762 A CN 116107762A
- Authority
- CN
- China
- Prior art keywords
- memory
- size
- target
- offset information
- service data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 164
- 238000004590 computer program Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供一种内存分配方法、装置、电子设备和存储介质,涉及计算机技术领域,其中方法包括:接收第一目标进程的内存分配请求;内存分配请求中包括存储业务数据所需的内存空间的大小;在共享内存中查找与内存空间的大小匹配的至少一个未使用的内存块;将至少一个未使用的内存块的偏移信息和内存空间的大小写入环形队列的存储单元中,并将偏移信息返回至所述第一目标进程。本发明在环形队列的存储单元中存储的是未使用的内存块的偏移信息和内存空间的大小,并不是业务数据,业务数据是存储在共享内存中未使用的内存块中,可以自适应地为不同长度的业务数据分配所需数量的内存块,实现了内存块的合理利用,从而提高了内存的利用率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存分配方法、装置、电子设备和存储介质。
背景技术
当今计算机算力越来越高,进程间业务数据交换越来越频繁,进程间可以通过共享内存空间实现业务数据交换。
相关技术中,通常在共享内存空间中设置环形队列,环形队列中每个存储单元的大小相同,在存储单元中存储业务数据,每个进程通过访问环形队列以实现业务数据的交换。
但上述相关技术中,当进程间需要交换不同长度的业务数据时,通常以最大长度的业务数据确定存储单元的大小,这样,若业务数据的长度小于最大长度,同样需要使用上述确定的存储单元来存储长度较小的业务数据,导致存储单元中剩余的内存空闲,存在内存利用率低的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种内存分配方法、装置、电子设备和存储介质。
本发明提供一种内存分配方法,包括:接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小;
在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块;
将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
根据本发明提供的一种内存分配方法,所述方法还包括:
基于所述第一目标进程对应的目标业务数据,在所述至少一个未使用的内存块中确定目标内存块;
通过所述第一目标进程,基于所述偏移信息将所述目标业务数据写入所述目标内存块。
根据本发明提供的一种内存分配方法,所述方法还包括:
接收第二目标进程的数据读取请求;
基于所述环形队列的头指针当前指向的位置确定目标存储单元;
基于所述目标存储单元中的目标偏移信息和目标内存空间的大小,在所述共享内存中读取对应的业务数据。
根据本发明提供的一种内存分配方法,所述内存分配请求中还包括所述业务数据的数据类型;所述方法还包括:
将所述数据类型写入所述存储单元中;所述数据类型用于解析所述业务数据。
根据本发明提供的一种内存分配方法,所述环形队列中各存储单元存储的数据类型不全相同。
根据本发明提供的一种内存分配方法,所述方法还包括:
接收第三目标进程的内存释放请求;所述内存释放请求中包括至少一个已使用的内存块的偏移信息和所述内存空间的大小;所述第三目标进程与所述第一目标进程共用所述共享内存;
基于所述偏移信息和所述内存空间的大小释放对应的至少一个所述内存块。
根据本发明提供的一种内存分配方法,在所述将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中之后,所述方法还包括:
将所述至少一个未使用的内存块的使用状态标记为已使用;
所述基于所述偏移信息和所述内存空间的大小释放对应的至少一个所述内存块,包括:
基于所述偏移信息和所述内存空间的大小,将对应的至少一个所述内存块的使用状态更新为未使用。
本发明还提供一种内存分配装置,包括:
第一接收单元,用于接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小;
查找单元,用于在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块;
第一写入单元,用于将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述内存分配方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述内存分配方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述内存分配方法。
本发明提供的内存分配方法、装置、电子设备和存储介质,在接收到第一目标进程的内存分配请求时,在共享内存中查找与内存分配请求中包括的业务数据所需的内存空间的大小匹配的至少一个未使用的内存块,并将至少一个未使用的内存块的偏移信息和内存空间的大小写入环形队列的存储单元中,并将偏移信息返回至第一目标进程,这样,进程间在交换业务数据时,可以基于环形队列的存储单元中存储的偏移信息和内存空间的大小来访问共享内存。可知,本发明在环形队列的存储单元中存储的是未使用的内存块的偏移信息和内存空间的大小,并不是业务数据,业务数据是存储在共享内存中未使用的内存块中,可以自适应地为不同长度的业务数据分配所需数量的内存块,实现了内存块的合理利用,从而提高了内存的利用率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的内存分配方法的流程示意图;
图2是本发明提供的进程间内存分配的示意图之一;
图3是本发明提供的进程间内存分配的示意图之二;
图4是本发明提供的进程间内存释放后的内存块标识示意图;
图5是本发明提供的内存分配装置的结构示意图;
图6是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图4描述本发明的内存分配方法。
图1是本发明实施例提供的内存分配方法的流程示意图,其中,本发明实施例的执行主体可以为电子设备,电子设备上运行有第一目标进程,如图1所示,该内存分配方法包括以下步骤:
步骤101、接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小。
示例地,电子设备的处理器在接收到第一目标进程的内存分配请求时,对内存分配请求进行解析,得到内存分配请求中包括的存储业务数据所需的内存空间的大小。
步骤102、在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块。
图2是本发明实施例提供的进程间内存分配的示意图之一,如图2所示,共享内存空间中包括共享内存201,共享内存201由一段连续的内存构成,共享内存201包括多个内存块,且共享内存201可以提供获取接口和释放接口,每个内存块的大小相同。共享内存201可以存储不同业务对应的业务数据,所以共享内存201中的内存块的大小可以由每个业务所需的内存空间共同决定。
示例地,在上述步骤101中获取到存储业务数据所需的内存空间的大小后,处理器可以基于内存空间的大小,通过共享内存提供的获取接口在共享内存201中确定至少一个未使用的内存块,由于每个内存块的大小是确定的,从而可以确定与内存空间的大小相匹配的未使用的内存块的信息。例如,如图2所示,共享内存中标记为1的内存块表示已使用的内存块,标记为0的内存块表示未使用的内存块,假设存储业务数据所需的内存空间的大小为46千字节(Kilobyte,KB),每个内存块的大小为10KB,此时可以在共享内存201中从第一个标记为0的内存块开始确定与46千字节匹配的标识为0的内存块,具体可以确定内存块集合2011,该内存块集合2011由5个未使用的内存块组成。
步骤103、将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
其中,环形队列是一种数组形式的环形数据结构,在逻辑上将数组的头和尾相连,形成循环队列。当数组尾满的时候,则判断数组头是否为空,若不为空,则继续存放数据。环形队列由数组线性空间模拟实现。
示例地,第一目标进程为了将业务数据存储到至少一个未使用的内存块,处理器可以遍历共享内存201确定第一个未使用的内存块,并基于业务数据所需的内存空间的大小确定对应的至少一个未使用的内存块,处理器将第一个未使用的内存块对应的偏移信息和至少一个未使用的内存块占用的内存空间的大小写入环形队列尾指针指示的存储单元中,并将偏移信息返回至第一目标进程。这样,第一目标进程在需要使用这些未使用的内存块存储业务数据时,就可以基于偏移信息和内存空间的大小,将业务数据写入对应的内存块中。例如,如图3所示,处理器遍历共享内存201,可以确定至少一个未使用的内存块的偏移信息为2,将该偏移信息2和内存空间的大小46 KB写入环形队列的存储单元,并将偏移信息2返回给第一目标进程。由于第一目标进程已知内存空间的大小,因此第一目标进程基于偏移信息2和内存空间的大小46 KB将业务数据写入内存块集合2011中。
进一步的,当存在多个业务数据时,以第一业务数据大小为5KB为例,假设每个内存块的大小为1KB,这样,可以确定第一业务数据占用共享内存的5个内存块,第一业务数据的索引值可设置为0。对于第二业务数据,以第二业务数据大小为10兆字节(Megabytes,M)为例,这样第二业务数据占用共享内存的10240个内存块,第二业务数据的索引值可设置为1。以此类推,针对第N个业务数据,处理器确定第N个业务数据在共享内存中占用的内存块,并将第N个业务数据的索引值设置为N-1,其中,N为大于等于1的整数。
需要说明的是,图3是本发明实施例提供的进程间内存分配的示意图之二,如图3所示,在确定内存块集合2011后,将内存块集合2011中的每个未使用的内存块标记为1,以表示内存块集合2011已分配给第一目标进程。
本发明实施例提供的内存分配方法,在接收到第一目标进程的内存分配请求时,在共享内存中查找与内存分配请求中包括的业务数据所需的内存空间的大小匹配的至少一个未使用的内存块,并将至少一个未使用的内存块的偏移信息和内存空间的大小写入环形队列的存储单元中,并将偏移信息返回至第一目标进程,这样,进程间在交换业务数据时,可以基于环形队列的存储单元中存储的偏移信息和内存空间的大小来访问共享内存。可知,本发明在环形队列的存储单元中存储的是未使用的内存块的偏移信息和内存空间的大小,并不是业务数据,业务数据是存储在共享内存中未使用的内存块中,可以自适应地为不同长度的业务数据分配所需数量的内存块,实现了内存块的合理利用,从而提高了内存的利用率。
在一实施例中,该内存分配方法还可以包括以下步骤:
基于所述第一目标进程对应的目标业务数据,在所述至少一个未使用的内存块中确定目标内存块;
通过所述第一目标进程,基于所述偏移信息将所述目标业务数据写入所述目标内存块。
示例地,第一目标进程在申请到业务数据所需的内存空间时,可以基于实际需求将业务运行过程中产生的每个目标业务数据存储至该段内存空间中,处理器基于每个目标业务数据的长度在至少一个未使用的内存块中确定对应数量的目标内存块。一种情况,业务运行过程中只产生了一个目标业务数据,将与该目标业务数据的长度匹配的所有内存块均作为目标内存块;例如,如图3所示,当目标业务数据的大小为46KB时,则将内存块集合2011的5个未使用的内存块均作为目标内存块,第一目标进程基于偏移信息2可以将目标业务数据写入所有的目标内存块中。
另一种情况,业务运行过程中产生了多个目标业务数据,以第一目标业务数据和第二目标业务数据为例,处理器可以在内存块集合2011中确定与第一目标业务数据的长度匹配的第一目标内存块的数量,并将第一目标业务数据存储在这些第一目标内存块中;并在内存块集合2011剩余的内存块中确定与第二目标业务数据的长度匹配的第二目标内存块的数量,并将第二目标业务数据存储在这些第二目标内存块中。例如,当第一目标业务数据的大小为28KB,每个内存块的大小为10KB时,将内存块集合2011的前3个未使用的内存块均作为第一目标内存块,第一目标进程基于偏移信息2可以将第一目标业务数据写入这三个第一目标内存块中;当第二目标业务数据的大小为19KB时,处理器将内存块集合2011的后2个未使用的内存块作为第二目标内存块,第一目标进程基于偏移信息5可以将第二目标业务数据写入这两个第二目标内存块中。
本发明实施例提供的内存分配方法,可以为第一目标进程的业务数据一次申请所需的内存空间的大小,使得第一目标进程可以基于目标业务数据的长度在申请的所有内存块中确定对应的目标内存块,并基于偏移信息将目标业务数据写入对应的目标内存块中。使得处理器无需为每个目标业务数据频繁的申请目标内存块,减少了交互次数,提高了业务数据写入效率。
在一实施例中,该内存分配方法还可以包括以下步骤:
接收第二目标进程的数据读取请求;
基于所述环形队列的头指针当前指向的位置确定目标存储单元;
基于所述目标存储单元中的目标偏移信息和目标内存空间的大小,在所述共享内存中读取对应的业务数据。
示例地,处理器在接收到第二目标进程的数据读取请求后,基于环形队列先进先出的原理,确定环形队列的头指针所指向的位置,基于该位置确定目标存储单元,由于目标存储单元中存储有目标偏移信息和目标内存空间的大小,所以可以基于目标偏移信息和目标内存空间的大小在共享内存中确定对应的业务数据。例如,如图3所示,基于头指针所指向的位置可以确定目标存储单元为301,假设目标存储单元301中存储的偏移信息为2,目标内存空间的大小为46KB,共享内存中每个内存块的大小为10KB,则处理器基于偏移信息2以及目标内存空间的大小为46KB,在共享内存201中确定内存块集合2011,第二目标进程在内存块集合2011的内存块中读取对应的业务数据。
本发明实施例提供的内存分配方法,当处理器接收到第二目标进程的数据读取请求时,可以确定环形队列中的目标存储单元,基于目标存储单元中的偏移信息和内存空间的大小,在共享内存中快速的确定存储业务数据的内存块,从而第二目标进程可以快速的在共享内存中读取对应的业务数据,提高了目标进程间的数据交换效率。
在一实施例中,所述内存分配请求中还包括所述业务数据的数据类型,该内存分配方法还可以包括以下步骤:
将所述数据类型写入所述存储单元中;所述数据类型用于解析所述业务数据。
示例地,第一目标进程的内存分配请求中还包括业务数据的数据类型,处理器将数据类型写入到环形队列的存储单元中,环形队列的存储单元中包括业务数据的数据类型、至少一个未使用的内存块的偏移信息和内存空间的大小。不同业务数据的数据类型可能相同也可能不同。
当第二目标进程需要读取共享内存中存储的业务数据时,可以基于环形队列的目标存储单元中的业务数据的数据类型,确定数据解析方式,以对上述步骤中读取到的业务数据进行解析。例如,环形队列的第一存储单元中存储第一数据类型,第二存储单元中存储第二数据类型,第二目标进程可以基于第一数据类型的解析方式,对第一存储单元对应的共享内存中的业务数据进行解析,可以基于第二数据类型的解析方式,对第二存储单元对应的共享内存中的业务数据进行解析。
本发明实施例提供的内存分配方法,环形队列的存储单元还可以存储业务数据的类型,便于目标进程在读取到存储单元对应的共享内存中的业务数据后,基于存储单元中存储的业务数据的数据类型对对应的业务数据进行解析。
在一实施例中,所述环形队列中各存储单元存储的数据类型不全相同。
示例地,环形队列中各存储单元存储的数据类型可以相同,也可以不同。
例如,第一存储单元中可以存储第一数据类型,第二存储单元中可以存储第二数据类型,第三存储单元可以存储第一数据类型。
本发明实施例提供的内存分配方法,在目标进程间交换数据时,目标进程间可以交换不同数据类型的业务数据,从而降低了目标进程间交换数据时对数据类型的限制。
在一实施例中,该内存分配方法还可以包括以下步骤:
接收第三目标进程的内存释放请求;所述内存释放请求中包括至少一个已使用的内存块的偏移信息和所述内存空间的大小;所述第三目标进程与所述第一目标进程共用所述共享内存;
基于所述偏移信息和所述内存空间的大小释放对应的至少一个所述内存块。
示例地,在接收到第三目标进程的内存释放请求后,可基于内存释放请求中包括的已使用的内存块的偏移信息和内存空间的大小,通过共享内存提供的释放接口确定共享内存中的内存块,将该内存块进行释放。例如,如图3所示,已使用的内存块的偏移信息为2,内存空间的大小为46KB,确定图3中的内存块集合2011,将该内存块集合2011中的内存块释放。
需要说明的是,第三目标进程可以为第一目标进程,也可以为与第一目标进程共用共享内存的除第一目标进程之外的其他目标进程。
本发明实施例提供的内存分配方法,在接收到内存释放请求时,基于内存释放请求将共享内存中对应的内存空间释放掉,以实现共享内存的循环利用,提高了目标进程间共享内存的利用率。
在一实施例中,在所述将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中之后,该内存分配方法还可以包括以下步骤:
将所述至少一个未使用的内存块的使用状态标记为已使用;
上述基于所述偏移信息和所述内存空间的大小释放对应的至少一个所述内存块,具体可通过以下方式实现:
基于所述偏移信息和所述内存空间的大小,将对应的至少一个所述内存块的使用状态更新为未使用。
示例地,在上述步骤103确定至少一个未使用的内存块后,将至少一个未使用的内存块的使用状态标记为1,以表示该至少一个未使用的内存块已分配给第一目标进程。
在释放过程中,可基于已使用的内存块的偏移信息和内存空间的大小确定共享内存中的内存块,以释放该内存块中的内存。例如,图4为本发明提供的进程间内存释放后的内存块标识示意图;如图4所示,对共享内存401中内存块集合4011的内存块进行释放后,将内存块集合4011中的5个内存块均标记为0。
本发明实施例提供的内存分配方法,通过标记的方式,使得其他目标进程可以更快的判断内存块的使用状态,以向共享内存中快速存储业务数据,从而提高了目标进程间的数据交互效率。
下面对本发明提供的内存分配装置进行描述,下文描述的内存分配装置与上文描述的内存分配方法可相互对应参照。
图5是本发明实施例提供的内存分配装置的结构示意图。如图5所示,该内存分配装置500包括第一接收单元501、查找单元502和第一写入单元503;其中:
第一接收单元501,用于接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小;
查找单元502,用于在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块;
第一写入单元503,用于将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
本发明提供的内存分配装置,在接收到第一目标进程的内存分配请求时,在共享内存中查找与内存分配请求中包括的业务数据所需的内存空间的大小匹配的至少一个未使用的内存块,并将至少一个未使用的内存块的偏移信息和内存空间的大小写入环形队列的存储单元中,并将偏移信息返回至第一目标进程,这样,进程间在交换业务数据时,可以基于环形队列的存储单元中存储的偏移信息和内存空间的大小来访问共享内存。可知,本发明在环形队列的存储单元中存储的是未使用的内存块的偏移信息和内存空间的大小,并不是业务数据,业务数据是存储在共享内存中未使用的内存块中,可以自适应地为不同长度的业务数据分配所需数量的内存块,实现了内存块的合理利用,从而提高了内存的利用率。
基于上述任一实施例,所述内存分配装置500还包括:
第一确定单元,用于基于所述第一目标进程对应的目标业务数据,在所述至少一个未使用的内存块中确定目标内存块;
第二写入单元,用于通过所述第一目标进程,基于所述偏移信息将所述目标业务数据写入所述目标内存块。
基于上述任一实施例,所述内存分配装置500还包括:
第二接收单元,用于接收第二目标进程的数据读取请求;
第二确定单元,用于基于所述环形队列的头指针当前指向的位置确定目标存储单元;
读取单元,用于基于所述目标存储单元中的目标偏移信息和目标内存空间的大小,在所述共享内存中读取对应的业务数据。
基于上述任一实施例,所述内存分配请求中还包括所述业务数据的数据类型;所述内存分配装置500还包括:
第三写入单元,用于将所述数据类型写入所述存储单元中;所述数据类型用于解析所述业务数据。
基于上述任一实施例,所述环形队列中各存储单元存储的数据类型不全相同。
基于上述任一实施例,所述内存分配装置500还包括:
第三接收单元,用于接收第三目标进程的内存释放请求;所述内存释放请求中包括至少一个已使用的内存块的偏移信息和所述内存空间的大小;所述第三目标进程与所述第一目标进程共用所述共享内存;
释放单元,用于基于所述偏移信息和所述内存空间的大小释放对应的至少一个所述内存块。
基于上述任一实施例,所述内存分配装置500还包括:
标记单元,用于将所述至少一个未使用的内存块的使用状态标记为已使用;
所述释放单元,具体用于基于所述偏移信息和所述内存空间的大小,将对应的至少一个所述内存块的使用状态更新为未使用。
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行内存分配方法,该方法包括:接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小;
在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块;
将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的内存分配方法,该方法包括:接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小;
在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块;
将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的内存分配方法,该方法包括:接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小;
在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块;
将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种内存分配方法,其特征在于,包括:
接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小;
在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块;
将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
2.根据权利要求1所述的内存分配方法,其特征在于,所述方法还包括:
基于所述第一目标进程对应的目标业务数据,在所述至少一个未使用的内存块中确定目标内存块;
通过所述第一目标进程,基于所述偏移信息将所述目标业务数据写入所述目标内存块。
3.根据权利要求2所述的内存分配方法,其特征在于,所述方法还包括:
接收第二目标进程的数据读取请求;
基于所述环形队列的头指针当前指向的位置确定目标存储单元;
基于所述目标存储单元中的目标偏移信息和目标内存空间的大小,在所述共享内存中读取对应的业务数据。
4.根据权利要求1所述的内存分配方法,其特征在于,所述内存分配请求中还包括所述业务数据的数据类型;所述方法还包括:
将所述数据类型写入所述存储单元中;所述数据类型用于解析所述业务数据。
5.根据权利要求4所述的内存分配方法,其特征在于,所述环形队列中各存储单元存储的数据类型不全相同。
6.根据权利要求1-5任一项所述的内存分配方法,其特征在于,所述方法还包括:
接收第三目标进程的内存释放请求;所述内存释放请求中包括至少一个已使用的内存块的偏移信息和所述内存空间的大小;所述第三目标进程与所述第一目标进程共用所述共享内存;
基于所述偏移信息和所述内存空间的大小释放对应的至少一个所述内存块。
7.根据权利要求6所述的内存分配方法,其特征在于,在所述将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中之后,所述方法还包括:
将所述至少一个未使用的内存块的使用状态标记为已使用;
所述基于所述偏移信息和所述内存空间的大小释放对应的至少一个所述内存块,包括:
基于所述偏移信息和所述内存空间的大小,将对应的至少一个所述内存块的使用状态更新为未使用。
8.一种内存分配装置,其特征在于,包括:
第一接收单元,用于接收第一目标进程的内存分配请求;所述内存分配请求中包括存储业务数据所需的内存空间的大小;
查找单元,用于在共享内存中查找与所述内存空间的大小匹配的至少一个未使用的内存块;
第一写入单元,用于将所述至少一个未使用的内存块的偏移信息和所述内存空间的大小写入环形队列的存储单元中,并将所述偏移信息返回至所述第一目标进程。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述内存分配方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述内存分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310376727.9A CN116107762A (zh) | 2023-04-11 | 2023-04-11 | 内存分配方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310376727.9A CN116107762A (zh) | 2023-04-11 | 2023-04-11 | 内存分配方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116107762A true CN116107762A (zh) | 2023-05-12 |
Family
ID=86267632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310376727.9A Pending CN116107762A (zh) | 2023-04-11 | 2023-04-11 | 内存分配方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116107762A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573364A (zh) * | 2023-11-30 | 2024-02-20 | 赛力斯汽车有限公司 | 一种内存池管理方法、装置及存储介质 |
CN117951045A (zh) * | 2023-12-28 | 2024-04-30 | 摩尔线程智能科技(成都)有限责任公司 | 数据处理方法及装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN101853238A (zh) * | 2010-06-01 | 2010-10-06 | 华为技术有限公司 | 通信处理器间消息通信方法和系统 |
CN109240800A (zh) * | 2018-09-11 | 2019-01-18 | 武汉光庭信息技术股份有限公司 | 一种基于Hypervisor多系统共享内存的管理方法 |
CN112214329A (zh) * | 2020-11-04 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、设备及计算机可读存储介质 |
CN114281484A (zh) * | 2021-12-29 | 2022-04-05 | 元心信息科技集团有限公司 | 数据传输方法、装置、设备及存储介质 |
WO2023051591A1 (zh) * | 2021-09-29 | 2023-04-06 | 华为技术有限公司 | 一种进程间通信方法及相关装置 |
-
2023
- 2023-04-11 CN CN202310376727.9A patent/CN116107762A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN101853238A (zh) * | 2010-06-01 | 2010-10-06 | 华为技术有限公司 | 通信处理器间消息通信方法和系统 |
CN109240800A (zh) * | 2018-09-11 | 2019-01-18 | 武汉光庭信息技术股份有限公司 | 一种基于Hypervisor多系统共享内存的管理方法 |
CN112214329A (zh) * | 2020-11-04 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、设备及计算机可读存储介质 |
WO2023051591A1 (zh) * | 2021-09-29 | 2023-04-06 | 华为技术有限公司 | 一种进程间通信方法及相关装置 |
CN114281484A (zh) * | 2021-12-29 | 2022-04-05 | 元心信息科技集团有限公司 | 数据传输方法、装置、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573364A (zh) * | 2023-11-30 | 2024-02-20 | 赛力斯汽车有限公司 | 一种内存池管理方法、装置及存储介质 |
CN117951045A (zh) * | 2023-12-28 | 2024-04-30 | 摩尔线程智能科技(成都)有限责任公司 | 数据处理方法及装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116107762A (zh) | 内存分配方法、装置、电子设备和存储介质 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
EP2219114B1 (en) | Method and apparatus for allocating storage addresses | |
US20190057032A1 (en) | Cache Coherence Management Method and Node Controller | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
CN111475105A (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
CN115168259A (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN114579404A (zh) | 冷热页统计方法以及装置 | |
CN111488293B (zh) | 多核系统中数据访问者目录的访问方法及设备 | |
CN111803917A (zh) | 资源的处理方法和装置 | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
US8543722B2 (en) | Message passing with queues and channels | |
CN114785662B (zh) | 一种存储管理方法、装置、设备及机器可读存储介质 | |
CN112068948B (zh) | 数据散列方法、可读存储介质和电子设备 | |
CN113626383A (zh) | 一种数据处理方法、装置及设备 | |
CN110825521B (zh) | 一种内存使用管理方法、装置及存储介质 | |
CN109165172B (zh) | 缓存数据处理方法及相关设备 | |
CN111435285B (zh) | 存储卷写数据方法、装置、电子设备及机器可读存储介质 | |
CN113342270A (zh) | 卷卸载方法、装置和电子设备 | |
CN112882831A (zh) | 一种数据处理方法及装置 | |
CN118567577B (zh) | 基于分布式块存储的数据访问方法、装置、电子设备 | |
KR100617370B1 (ko) | 저장 시스템에서 비트 맵에 의하여 관리되는 익스텐트를지원하는 페이지 할당 방법 | |
CN116126546B (zh) | 一种性能调优的方法、装置、电子设备及介质 | |
CN111274228B (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: 20230512 |