CN114556309A - 内存空间的分配方法、装置及存储介质 - Google Patents
内存空间的分配方法、装置及存储介质 Download PDFInfo
- Publication number
- CN114556309A CN114556309A CN202080067360.7A CN202080067360A CN114556309A CN 114556309 A CN114556309 A CN 114556309A CN 202080067360 A CN202080067360 A CN 202080067360A CN 114556309 A CN114556309 A CN 114556309A
- Authority
- CN
- China
- Prior art keywords
- subspace
- memory
- memory space
- target
- space
- 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 102
- 230000007717 exclusion Effects 0.000 claims abstract description 26
- 238000005192 partition Methods 0.000 claims description 81
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 230000009286 beneficial effect Effects 0.000 abstract description 7
- 239000011800 void material Substances 0.000 description 16
- 238000012545 processing Methods 0.000 description 10
- 230000003068 static effect Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
Abstract
一种内存空间的分配方法、装置及存储介质。方法包括:获取针对离散化内存空间的内存分配请求;在离散化内存空间中,确定与内存分配请求相对应的至少一个目标内存空间,目标内存空间为未分配状态,且至少一个目标内存空间中的任意两个目标内存空间之间互斥;根据内存分配请求,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,目标子空间为未分配状态,且至少一个目标子空间中的任意两个子空间之间互斥。本实施例提供的技术方案,有效地实现了能够灵活地对离散内存空间进行内存分配,并且所获得的目标内存空间和目标子空间之间互斥,从而有效地降低了数据资源所需要占用的空间大小,有利于提高内存分配效率。
Description
技术领域
本发明实施例涉及内存分配技术领域,尤其涉及一种内存空间的分配方法、装置及存储介质。
背景技术
现有技术中,在进行内存分配操作时,可以采用内存链表的方式或者比特位映射关系(Bit map)的方式进行内存分配。其中,在采用内存链表的方式进行内存分配操作时,由于存在内部链表结构,导致待分配的部分内存空间被占用,此外,内部的分配及释放、合并的算法本身也会有一定的运行开销,因此,使得上述内存分配方法无法应用于资源敏感系统上,极大地会影响了内存分配的效率。而Bit map的内存分配方法主要是针对连续空间进行内存分配,无法保证分配后的内存空间之间互斥,此时,在利用上述所分配的内存空间进行数据运算时,容易出现数据运算报错,甚至无法实现正常的数据运算操作。
发明内容
本发明实施例提供一种内存空间的分配方法、装置及存储介质,可以针对离散内存空间实现内存分配操作,同时支持对多块互斥空间的内存分配操作,资源信息占用小,内存分配效率高,适用于资源敏感平台。
本发明实施例的第一方面,提供了一种内存空间的分配方法,包括:
获取针对离散化内存空间的内存分配请求;
在所述离散化内存空间中,确定与所述内存分配请求相对应的至少一个目标内存空间,所述目标内存空间为未分配状态,且所述至少一个目标内存空间中的任意两个目标内存空间之间互斥;
根据所述内存分配请求,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,所述目标子空间为未分配状态,且所述至少一个目标子空间中的任意两个子空间之间互斥。
本发明实施例的第二方面,提供了一种内存空间的分配装置,包括:
存储器,用于存储计算机程序;
处理器,用于运行所述存储器中存储的计算机程序以实现:
获取针对离散化内存空间的内存分配请求;
在所述离散化内存空间中,确定与所述内存分配请求相对应的至少一个目标内存空间,所述目标内存空间为未分配状态,且所述至少一个目标内存空间中的任意两个目标内存空间之间互斥;
根据所述内存分配请求,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,所述目标子空间为未分配状态,且所述至少一个目标子空间中的任意两个子空间之间互斥。
本发明实施例的第三方面,提供了一种计算机可读存储介质,所述存储介质为计算机可读存储介质,该计算机可读存储介质中存储有程序指令,所述程序指令用于实现上述第一方面所述的内存空间的分配方法。
本发明实施例提供的技术方案,有效地实现了能够灵活地对离散内存空间进行内存分配,具体的,通过获取到针对离散化内存空间的内存分配请求,而后可以基于内存分配请求获得与内存分配请求相对应的目标内存空间和位于目标内存空间下层的目标子空间,所获得的目标内存空间和目标子空间之间互斥,由于不存在内部链表结构,因此有效地降低了数据资源所需要占用的空间大小,有利于提高内存分配效率,从而使得该方法适合于资源敏感系统的内存分配,进一步提高了该方法的实用性和适用范围。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中提供的一种内存空间的结构示意图;
图2为现有技术中提供的一种针对连续内存空间进行内存分配时的内存链表示意图;
图3为本发明实施例提供的一种内存空间的分配方法的流程示意图;
图4为本发明实施例提供的离散化内存空间中包括多个内存空间的示意图;
图5为本发明实施例提供的内存空间中包括多个子空间的示意图;
图6为本发明实施例提供的在所述离散化内存空间中,确定与所述内存分配请求相对应的至少一个目标内存空间的流程示意图;
图7为本发明实施例提供的根据所述内存分配请求,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间的流程示意图;
图8为本发明实施例提供的另一种内存空间的分配方法的流程示意图;
图9为本发明实施例提供的根据所述内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息的流程示意图;
图10为本发明实施例提供的又一种内存空间的分配方法的流程示意图;
图11为本发明应用实施例提供的一种内存空间的分配方法的流程示意图一;
图12为本发明应用实施例提供的一种内存空间的分配方法的流程示意图二;
图13为本发明实施例提供的一种内存空间的分配装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
在通篇说明书及权利要求当中所提及的“包括”为一开放式用语,故应解释成“包括但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。
此外,“连接”一词在此包含任何直接及间接的连接手段。因此,若文中描述一第一装置连接于一第二装置,则代表所述第一装置可直接连接于所述第二装置,或通过其它装置间接地连接至所述第二装置。
应当理解,本文中使用的术语“及/或、和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
为了便于理解本申请的技术方案,下面对现有技术进行简要说明:
在计算机系统中,常见的内存空间包括:代码区、静态区、堆(heap)、栈(stack)等,其中,如图1所示,代码区和静态区可以采用静态存储方式,在程序编译时,代码区和静态区可以由系统分配固定的地址和存储空间,在程序运行过程中,代码区和静态区中数据存储的地址和存储空间保持不变。堆和栈可以采用动态存储方式,在程序运行的过程中,可以动态地对内存空间进行分配与释放。栈区由编译器自动进行分配和释放,主要用于存放临时变量和局部变量,堆区则一般由程序员控制分配与释放,在程序运行中,可以动态地申请指定大小的内存空间或释放空间。
针对连续的内存堆空间,可以采用动态内存分配(memory allocation,简称malloc)的方法进行内存分配,其具体的实现原理主要是要维护一个内存链表,如图2所示,其中,内存链表中可以包括:元数据区(meta data)和数据区(data),元数据区用于记录数据块的大小、占用状态以及链表指针等信息,data为数据区,用于存储相关数据。当存在内存空间申请时,可以搜索内存链表中空闲的数据区进行分配。
另一种可以简单实现内存分配的方式为:将内存空间划分为子空间块,而后为每个子空间块提供1bit的标识位,从而可以构成比特位映射关系(bit map),而后可以通过与子空间块相对应的标识位(0、1)来记录整个内存空间的占用情况。如下表1所示,可以将内存空间划分为n个子空间块,若以标识位“0”表示空闲,标识位“1”表示占用,则通过下表1可知,上述内存空间的第4个子空间块和第5个子空间块被占用,此时,则不可对上述被占用的子空间块进行占用,而其他子空间块处于空闲状态,进而可以对其他子空间块可以进行分配。
0 | 0 | 0 | 1 | 1 | 0 | ...... | 0 |
表1
由上述陈述内容可知,在采用内存链表的方式进行内存分配时,能够满足内存的准确分配。但是,由于存在内部链表结构,导致部分待分配的内存空间被占用,此外,内部的分配及释放、合并的算法本身也会有一定的运行开销,因此,使得上述内存分配方法无法应用于资源敏感系统上,适用性受限。
相比较而言,Bit map的内存分配方法可以在占用资源很小的情况下,高效地实现内存分配操作,然而,Bit map的内存分配方法主要是针对连续空间进行内存分配,无法保证分配后的内存空间之间互斥,此时,在利用上述所分配的内存空间进行数据运算时,容易出现数据运算报错,甚至无法实现正常的数据运算操作。
另外,随着芯片运算技术的飞速发展,向量运算的能力也不断提升,越来越多出现与之相对应的向量存储空间。向量存储空间具有如下特点:由多个独立空间块(block)组成,每个block的内部地址连续,任意两个block之间的地址离散。向量运算中的各个操作数来自不同block,由此产生了一种新的地址空间分配需求是:同时分配多块block级互斥空间。
因此,为了能够实现灵巧地对离散内存空间进行内存分配,同时支持对多块互斥空间的内存分配操作,资源信息占用小,内存分配效率高,适适用于资源敏感系统。本实施例提供了一种内存空间的分配方法、装置及存储介质,其中,分配方法通过获取针对离散化内存空间的内存分配请求,而后可以基于内存分配请求在离散化内存空间中确定至少一个未分配的目标内存空间,并且,至少一个目标内存空间中任意两个目标内存空间之间互斥,在确定至少一个目标内存空间之后,由于目标内存空间可以包括至少一个子空间,在获取到内存分配请求之后,则可以基于内存分配请求来确定位于每个目标内存空间下层的至少一个未分配的目标子空间,并且所获得的任意两个子空间之间互斥。
本实施例提供的上述技术方案,有效地实现了能够灵活地对离散内存空间进行内存分配,适用于获得与内存分配请求相对应的目标内存空间和位于目标内存空间下层的目标子空间,所获得的目标内存空间和目标子空间之间互斥,由于不存在需要占用内存空间的内部链表结构,因此有效地降低了数据资源所需要占用的空间大小,有利于提高内存分配效率,从而使得该方法适合于资源敏感系统的内存分配,进一步提高了该方法的实用性和适用范围。
下面结合附图,对本发明的一些实施方式作详细说明。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
图3为本发明实施例提供的一种内存空间的分配方法的流程示意图;参考附图3所示,本实施例提供了一种内存空间的分配方法,该方法的执行主体可以为内存空间的分配装置,可以理解的是,该内存空间的分配装置可以实现为软件、或者软件和硬件的组合,具体的,该方法可以包括:
步骤S301:获取针对离散化内存空间的内存分配请求。
步骤S302:在离散化内存空间中,确定与内存分配请求相对应的至少一个目标内存空间,目标内存空间为未分配状态,且至少一个目标内存空间中的任意两个目标内存空间之间互斥。
步骤S303:根据内存分配请求,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,目标子空间为未分配状态,且至少一个目标子空间中的任意两个子空间之间互斥。
下面对上述各个步骤的具体实现方式和实现效果进行详细说明:
步骤S301:获取针对离散化内存空间的内存分配请求。
其中,离散化内存空间可以包括多个独立空间块(block),如图4所示,多个独立空间块可以包括:block0、block1、block2......blockN,而上述每个block的内部地址连续,任意两个block之间的地址离散。
当用户针对离散化内存空间存在内存分配需求时,则可以生成内存分配请求,可以理解的是,上述内存分配请求可以在用于实现内存空间分配操作的分配装置中生成,或者,上述的内存分配请求可以在第三设备中生成,其中,第三设备与分配装置通信连接,分配装置通过第三装置即可获取到针对离散化内存空间的内存分配请求。具体的,一种针对内存分配请求的获取方式可以为:用户可以对分配装置输入执行操作,以根据执行操作生成内存分配请求;或者,另一种针对内存分配请求的获取方式可以为:用户可以对第三设备输入执行操作,从而使得第三设备可以生成内存分配请求,而后将内存分配请求发送至分配装置,从而使得分配装置可以准确地获取到内存分配请求。
当然的,本领域技术人员也可以采用其他的方式来获得内存分配请求,只要能够保证对内存分配请求进行获取的准确可靠性即可,在此不再赘述。
需要注意的是,离散化内存空间中所包括的空间块可以对应有不同的内存分配状态,内存分配状态可以包括:用于标识空间块处于未被分配的空闲状态和用于标识空间块处于已被分配的占用状态。而上述所获得的内存分配请求用于在离散化内存空间中确定满足需求的处于空闲状态的空间块,以便针对所分配的空间块进行相对应的数据处理操作,上述的数据处理操作可以包括:数据写入操作、数据读取操作、数据删除操作等等。
步骤S302:在离散化内存空间中,确定与内存分配请求相对应的至少一个目标内存空间,目标内存空间为未分配状态,且至少一个目标内存空间中的任意两个目标内存空间之间互斥。
其中,在获取到内存分配请求之后,则可以基于内存分配请求对离散化内存空间进行分析处理,以确定与内存分配请求相对应的至少一个目标内存空间。在一些实例中,在所确定的目标内存空间为离散化空间时,至少一个目标内存空间中每个目标内存空间中的地址信息连续,且至少一个目标内存空间中任意两个目标内存空间之间的地址信息离散;另外,所确定的目标内存空间可以为未分配状态,且至少一个目标内存空间中的任意两个目标内存空间互斥,以通过所确定的未分配的目标内存空间进行相对应的数据运算操作。
另外,本实施例对于确定与内存分配请求相对应的至少一个目标内存空间的具体实现方式不做限定,本领域技术人员可以根据具体的应用需求和设计需求进行设置,例如:在确定内存分配请求之后,可以确定与内存分配请求相对应的请求空间大小;而后可以确定离散化内存空间中每个内存空间所对应的分配状态,基于每个内存空间所对应的分配状态,在离散化内存空间中,可以基于内存分配请求来确定满足请求空间大小的、处于未分配状态的内存空间,而后将上述的内存空间确定为与内存分配请求相对应的至少一个目标内存空间,从而有效地实现了对至少一个目标内存空间进行确定的准确可靠性。
当然的,本领域技术人员也可以采用其他的方式来确定与内存分配请求相对应的至少一个目标内存空间,只要能够保证对与内存分配请求相对应的至少一个目标内存空间进行确定的准确可靠性即可,在此不再赘述。
步骤S303:根据内存分配请求,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,目标子空间为未分配状态,且至少一个目标子空间中的任意两个子空间之间互斥。
其中,对于目标内存空间而言,每个目标内存空间下层还可以包括一个或多个目标子空间,如图5所示,目标内存空间block0中可以包括多个子空间块,标内存空间block1中也可以包括多个子空间块,目标内存空间blockN中也可以包括多个子空间块。
此外,上述目标内存空间中所包括的子空间的分配状态可以包括空闲状态和占用状态,为了方便获取并确定子空间的分配状态,针对子空间可以设置有用于标识子空间的分配状态标识,例如,在子空间处于空闲状态时,则可以将子空间的分配状态标识确定为“0”;在子空间处于占用状态时,则可以将子空间的分配状态标识确定为“1”;当然的,本领域技术人员也可以采用其他的分配状态标识来标识子空间的分配状态,在此不再赘述。
具体实现时,针对不同的内存分配请求可以包括不同的目标内存空间需求,针对不同的目标内存空间需求可以确定不同的目标内存空间,而在不同的目标内存空间中,内存分配请求中还可以有与不同的内存分配请求相对应的不同大小的子空间需求。因此,在获取到内存分配请求之后,则可以基于内存分配请求来确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,所确定的至少一个目标子空间可以为未分配状态,且至少一个目标子空间中的任意两个子空间之间互斥,从而有效地保证了对至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间进行确定的准确可靠性。
本实施例提供的内存空间的分配方法,通过获取针对离散化内存空间的内存分配请求,并在离散化内存空间中确定与内存分配请求相对应的至少一个目标内存空间,而后根据内存分配请求来确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,从而有效地实现了能够灵活地对离散内存空间进行内存分配,获得与内存分配请求相对应的目标内存空间和位于目标内存空间下层的目标子空间,所获得的目标内存空间和目标子空间之间互斥,这样有利于降低数据资源所需要占用的空间大小,同时也便于提高内存分配效率,从而使得该方法可以适合于资源和性能敏感系统平台,进一步提高了该方法的实用性和适用范围。
图6为本发明实施例提供的在离散化内存空间中,确定与内存分配请求相对应的至少一个目标内存空间的流程示意图;在上述实施例的基础上,继续参考附图6所示,本实施例对于确定与内存分配请求相对应的至少一个目标内存空间的具体实现方式不做限定,本领域技术人员可以根据具体的应用需求和设计需求进行设置,较为优选的,本实施例中的在离散化内存空间中,确定与内存分配请求相对应的至少一个目标内存空间可以包括:
步骤S601:基于内存分配请求获取内存互斥表,内存互斥表中包括:在离散化内存空间中的待分配内存空间以及待分配内存空间的空间分配状态。
步骤S602:在离散化内存空间中,根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间。
其中,针对离散化内存空间可以对应有一内存互斥表,该内存互斥表中可以包括在离散化内存空间中的待分配内存空间以及待分配内存空间的空间分配状态。
在一些实例中,对于与离散化内存空间相对应的内存互斥表而言,其可以存储在静态区域或者动态区域中,以在获取到内存分配请求之后,通过访问上述的静态区域或者动态区域即可获取到与离散化内存空间相对应的内存互斥表。
在另一些实例中,内存互斥表可以为临时生成的变量信息,在获取到内存分配请求之后,则可以基于内存分配请求临时生成内存互斥表,以基于所生成的内存互斥表进行相对应的内存分配操作。可以理解的是,在内存分配操作完毕之后,所生成的内存互斥表可以被删除或者丢弃。
可以理解的是,对于内存互斥表的具体获取方式并不限于上述例举的实现方式,本领域技术人员还可以采用其他的方式来获取内存互斥表,只要能够保证对内存互斥表进行获取的准确可靠性即可。
在获取到内存互斥表之后,则可以在离散化内存空间中,根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间。在一些实例中,在离散化内存空间中,根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间可以包括:确定与内存分配请求相对应的请求空间大小;在离散化内存空间中,按照预设分配顺序识别出与请求空间大小相对应的未分配的至少一个内存空间;将上述所确定的未分配的至少一个内存空间确定为与内存分配请求相对应的至少一个目标内存空间。
具体的,在获取到内存分配请求之后,则可以对内存分配请求进行分析处理,以确定与内存分配请求相对应的请求空间大小,该请求空间大小与内存分配需求相对应,可以理解的是,不同的内存分配需求可以对应有不同的请求空间大小。
在获取到请求空间大小之后,则可以在离散化内存空间中,按照预设分配顺序识别出与请求空间大小相对应的未分配的至少一个内存空间,可以理解的是,至少一个内存空间所对应的空间大小可以大于或等于请求空间大小。在确定未分配的至少一个内存空间之后,则可以将所确定的未分配的至少一个内存空间确定为与内存分配请求相对应的至少一个目标内存空间,从而有效地保证了对至少一个目标内存空间进行确定的准确可靠性。
当然的,本领域技术人员也可以采用其他的方式来实现在离散化内存空间中,根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间,只要能够保证对至少一个目标内存空间进行确定的准确可靠性即可,在此不再赘述。
举例来说,离散化内存空间中包括:空间A、空间B、空间C和空间D,在获取到内存分配请求之后,则可以基于内存分配请求来确定与离散化内存空间相对应的内存互斥表,该内存互斥表中可以包括:空间A、空间B、空间C和空间D以及分别与空间A、空间B、空间C和空间D相对应的空间分配状态。假设空间A的空间分配状态为占用状态,空间B的空间分配状态为空闲状态,空间C的空间分配状态为空闲状态,空间D的空间分配状态为占用状态。
在获取到内存分配请求之后,可以确定内存分配请求相对应的请求空间大小,在请求空间大小对应于两个待分配的内存空间时,则可以按照预设顺序对上述的离散化内存空间进行分析比对,从而可以识别出与请求空间大小相对应的未分配的至少一个内存空间可以包括空间B和空间C,而后则可以将空间B和空间C确定为与内存分配请求相对应的至少一个目标内存空间,从而有效地保证了对至少一个目标内存空间进行确定的准确可靠性。
本实施例中,通过内存分配请求获取内存互斥表,而后在离散化内存空间中,根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间,这样不仅保证了对至少一个目标内存空间进行确定的准确可靠性,另外,由于内存互斥表可以存储在静态存储区域或者动态存储区域,或者内存互斥表还可以是临时变量,因此,在基于内存互斥表来确定至少一个目标内存空间时,此时的内存互斥表所占用的资源空间小,从而有利于提高内存的分配效率,进一步提高了该方法的实用性。
在一些实例中,本实施例中的方法还可以包括:在离散化内存空间中,未识别出与请求空间大小相对应的未分配的至少一个内存空间时,则生成用于标识内存空间分配失败的第一提示信息。
具体的,在离散化内存空间中并不存在与内存分配请求中请求空间大小相对应的内存空间时,则无法在离散化内存空间中识别出至少一个目标内存空间。此时,为了提高该方法使用的稳定可靠性,当在离散化内存空间中未识别出与请求空间大小相对应的未分配的至少一个内存空间时,则可以生成用于标识内存空间分配失败的第一提示信息,以通过第一提示信息来向用户提示此时的内存空间分配操作已失败。
举例来说,离散化内存空间中包括:空间A、空间B、空间C和空间D,在获取到内存分配请求之后,则可以基于内存分配请求来确定与离散化内存空间相对应的内存互斥表,该内存互斥表中可以包括:空间A、空间B、空间C和空间D以及分别与空间A、空间B、空间C和空间D相对应的空间分配状态,假设空间A的空间分配状态为占用状态,空间B的空间分配状态为空闲状态,空间C的空间分配状态为空闲状态,空间D的空间分配状态为占用状态。
在获取到内存分配请求之后,可以确定内存分配请求相对应的请求空间大小,在请求空间大小对应于三个待分配的内存空间时,此时,可以按照预设顺序对上述的离散化内存空间进行分析比对,而后可以确定离散化内存空间中并不存在与请求空间大小相对应的未分配的至少一个内存空间。此时,则说明上述的内存分配操作无法实现,进而可以生成用于标识内存空间分配失败的第一提示信息,所生成的第一提示信息可以为声音提示信息、灯光提示信息、信息提示信息等等,以使得用户可以通过第一提示信息及时获知到此时的内存分配操作已失败,进一步提高了该方法使用的灵活可靠性。
在另一些实例中,在根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间之后,本实施例中的方法还可以包括:对内存互斥表中所包括的至少一个目标内存空间的空间分配状态进行复位,以标识至少一个目标内存空间的空间分配状态为未分配状态。
其中,对于离散化内存空间中所包括的内存空间而言,在进行一次内存分配操作时,则可以获取到与内存分配请求相对应的至少一个目标内存空间之后,而后则可以基于所确定的目标内存空间进行相对应的数据运算操作,而在进行数据运算操作完毕之后,该数据运算操作所对应的目标内存空间可以被释放。
基于上述陈述内容可知,为了提高内存分配效率,保证数据运算操作的质量和效率,在根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间之后,则可以对内存互斥表中所包括的至少一个目标内存空间的空间分配状态进行复位,以标识至少一个目标内存空间的空间分配状态为未分配状态,以便下一次获取到内存分配请求时,则可以基于内存分配请求对所有处于未分配状态的内存空间进行内存分配操作,从而有利于提高内存分配操作的质量和效率。
图7为本发明实施例提供的根据内存分配请求,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间的流程示意图;在上述实施例的基础上,继续参考附图7所示,本实施例对至少一个目标子空间进行确定的具体实现方式不做限定,本领域技术人员可以根据具体的应用需求和设计需求进行设置,较为优选的,本实施例中的根据内存分配请求,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间可以包括:
步骤S701:基于内存分配请求获取子空间查找表,子空间查找表中包括:待分配子空间以及待分配子空间的子空间分配状态。
步骤S702:根据子空间查找表,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,目标子空间为未分配状态,且至少一个目标子空间中的任意两个子空间之间互斥。
其中,内存分配请求中所对应的内存空间需求可以包括针对目标内存空间的空间分配需求和针对位于目标内存空间下层的子空间分配需求。而针对离散化内存空间下层的内存空间,可以对应有一子空间查找表,该子空间查找表中可以包括位于内存空间中的待分配子空间以及待分配子空间的子空间分配状态。
在一些实例中,与离散化内存空间中所包括的内存空间相对应的子空间查找表而言,其可以存储在静态区域或者动态区域中。这样在获取到内存分配请求之后,可以通过访问上述的静态区域或者动态区域即可获取到与离散化内存空间中所包括的内存空间相对应的子空间查找表。
在另一些实例中,子空间查找表可以为临时生成的变量信息,在获取到内存分配请求之后,则可以基于内存分配请求来确定临时生成的子空间查找表。具体的,子空间查找表所对应的空间区域大小可以小于或等于所对应的目标内存空间的空间区域大小。可以理解的是,在内存分配操作完毕之后,所生成的子空间查找表可以被删除或者丢弃。
可以理解的是,对于子空间查找表的具体获取方式并不限于上述例举的实现方式,本领域技术人员还可以采用其他的方式来获取子空间查找表,只要能够保证对子空间查找表进行获取的准确可靠性即可。
在获取到子空间查找表之后,则可以在至少一个目标内存空间中每个目标内存空间中,根据子空间查找表来确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,所确定的目标子空间可以为未分配状态,且至少一个目标子空间中的任意两个子空间之间互斥。
在一些实例中,根据子空间查找表,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间可以包括:确定与内存分配请求相对应的请求子空间大小;在至少一个目标内存空间中每个目标内存空间中,根据子空间查找表采用位搜索的方式,识别出与请求子空间大小相对应的未分配的至少一个子空间;将上述所确定的未分配的至少一个子空间确定为与内存分配请求相对应的至少一个目标子空间。
具体的,在获取到内存分配请求之后,则可以对内存分配请求进行分析处理,以确定与内存分配请求相对应的请求子空间大小,而后可以在至少一个目标内存空间中的每个目标内存空间中,根据子空间查找表采用位搜索的方式,识别出与请求子空间大小相对应的未分配的至少一个子空间;可以理解的是,至少一个子空间所对应的空间大小可以大于或等于请求子空间大小。在确定未分配的至少一个子空间之后,则可以将所确定的未分配的至少一个子空间确定为与内存分配请求相对应的至少一个目标子空间,从而有效地保证了对至少一个目标子空间进行确定的准确可靠性。
当然的,本领域技术人员也可以采用其他的方式来实现根据子空间查找表,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,只要能够保证对至少一个目标子空间间进行确定的准确可靠性即可,在此不再赘述。
举例来说,离散化内存空间中某一目标内存空间中可以包括待分配的子空间a1、子空间a2、子空间a3和子空间a4,在获取到内存分配请求之后,则可以基于内存分配请求来确定与离散化内存空间相对应的子空间查找表,该子空间查找表中可以包括:待分配的子空间a1、子空间a2、子空间a3和子空间a4以及分别与子空间a1、子空间a2、子空间a3和子空间a4相对应的子空间分配状态,假设子空间a1的子空间分配状态为占用状态,子空间a2的子空间分配状态为空闲状态,子空间a3的子空间分配状态为空闲状态,子空间a4的子空间分配状态为占用状态。
在获取到内存分配请求之后,可以确定与内存分配请求相对应的请求子空间大小,在请求子空间大小对应于两个待分配的子空间时,则可以识别出与请求空间大小相对应的未分配的至少一个子空间可以包括子空间a2和子空间a3,而后则可以将子空间a2和子空间a3确定为与内存分配请求相对应的至少一个目标子空间,从而有效地保证了对至少一个目标子空间进行确定的准确可靠性。
在一些实例中,本实施例中的方法还可以包括:在根据子空间查找表,未确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间时,则生成用于标识子空间分配失败的第二提示信息。
具体的,在目标内存空间中并不存在与内存分配请求中请求子空间大小相对应的子空间时,则无法在目标内存空间中识别出至少一个目标子空间,为了提高该方法使用的稳定可靠性,当在目标内存空间中未识别出与请求子空间大小相对应的未分配的至少一个目标子空间时,则可以生成用于标识子空间分配失败的第二提示信息,以通过第二提示信息来向用户提示此时的子空间的内存分配操作已失败。
举例来说,目标内存空间中包括待分配的子空间a1、子空间a2、子空间a3和子空间a4,在获取到内存分配请求之后,则可以基于内存分配请求来确定与离散化内存空间相对应的子空间查找表,该子空间查找表中可以包括:待分配的子空间a1、子空间a2、子空间a3和子空间a4以及分别与子空间a1、子空间a2、子空间a3和子空间a4相对应的子空间分配状态,假设子空间a1的子空间分配状态为占用状态,子空间a2的子空间分配状态为空闲状态,子空间a3的子空间分配状态为空闲状态,子空间a4的子空间分配状态为占用状态。
在获取到内存分配请求之后,可以确定内存分配请求相对应的请求子空间大小,在请求子空间大小对应于三个待分配的子空间时,此时,目标内存空间中并不存在与请求子空间大小相对应的未分配的至少一个子空间,进而则可以确定子空间分配操作失败,并可以生成用于标识子空间分配失败的第二提示信息,所生成的第二提示信息可以为声音提示信息、灯光提示信息、信息提示信息等等,以使得用户可以通过第二提示信息及时获知到此时的子空间内存分配操作已失败,进一步提高了该方法使用的灵活可靠性。
在另一些实例中,在根据子空间查找表,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间之后,本实施例中的方法还可以包括:对子空间查找表中所包括的至少一个目标子空间的子空间分配状态标识进行置位,以标识至少一个目标子空间的子空间分配状态为已分配状态。
其中,对于目标内存空间中所包括的内存空间而言,在进行一次内存分配操作时,则可以确定与至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间。之后,基于所确定的至少一个目标子空间进行相对应的数据运算操作,而在进行数据运算操作完毕之后,该数据运算操作所对应的目标子空间已经被占用。
此时,为了避免对目标子空间的重复分配,则可以对子空间查找表中所包括的至少一个目标子空间的子空间分配状态标识进行置位,以标识至少一个目标子空间的子空间分配状态为已分配状态,这样可以实现在下一次获取到内存分配请求时,则可以基于内存分配请求对其他处于未分配状态的子空间进行内存分配操作,从而有利于提高内存分配操作的质量和效率。
图8为本发明实施例提供的另一种内存空间的分配方法的流程示意图;在上述实施例的基础上,继续参考附图8所示,在基于内存分配请求获取子空间查找表之前,本实施例中的方法还可以包括:
步骤S801:根据内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息。
其中,在获取到内存分配请求之后,可以对内存分配请求进行分析处理,以确定用于对内存空间进行空间划分操作的划分配置信息,具体的,划分配置信息可以包括以下至少之一:划分数量、划分区域大小、划分地址信息。可以理解的是,与内存空间相对应的划分数量、划分区域大小和划分地址信息所对应的具体数值可以根据不同的应用场景和应用需求进行调整。
此外,不同的划分配置信息可以对应有不同的内存划分操作,举例来说,在划分配置信息包括划分数量时,在获取到划分配置信息之后,则可以基于划分数量对内存空间进行均等划分,从而可以获得满足上述划分数量的子空间。在划分配置信息包括划分区域大小时,在获取到划分配置信息之后,则可以基于划分区域大小对内存空间进行划分,从而可以获得满足上述划分区域大小的多个子空间。在划分配置信息包括划分地址信息时,在获取到划分配置信息之后,则可以基于划分地址信息对内存空间进行划分,从而可以获得满足上述划分地址信息的多个子空间。
另外,用于对内存空间进行空间划分操作的划分配置信息可以是用户针对内存空间进行配置的,在对划分配置信息配置完毕之后,则可以将划分配置信息存储在预设区域中。在获取到内存分配请求之后,则可以基于内存分配请求访问预设区域,从而可以准确、有效地获得用于对内存空间进行空间划分操作的划分配置信息。
可以理解的是,划分配置信息可以不仅包括上述所限定的配置信息,本领域技术人员可以根据具体的应用需求和设计需求进行设置,例如:划分配置信息还可以包括处理数据大小,此时,在获取到处理数据大小之后,则可以可以基于划分地址信息对内存空间进行划分,以使得在满足数据处理操作的同时,可以使得内存空间的利用最大化。
举例来说,在内存空间的空间大小为128k时,在每个需要进行处理操作的操作数的数据大小为64k或者小于64k时,则可以基于数据量最大的数据对内存空间进行划分操作,即将内存空间平均划分为128k/64k=2块,从而可以使得每个操作数均可以找到对应的子空间,并且保证了数据处理效率。
相类似的,在内存空间的空间大小为128k时,在每个需要进行处理操作的操作数的数据大小均为4k时,则可以以上述数据大小对上述的内存空间进行划分操作,使得每个所划分的子空间大小为4k,这样在兼顾数据处理效率的同时,还可以避免内存空间的浪费。
步骤S802:基于划分配置信息将内存空间划分为多个子空间,并生成与多个子空间相对应的子空间查找表。
在获取到划分配置信息之后,则可以基于划分配置信息将内存空间划分为多个子空间。在一些实例中,同一个内存空间内所包括的多个子空间所对应的空间区域大小可以相同或不同,较为优选的,同一个内存空间内所包括的多个子空间所对应的空间区域大小可以相同。在将内存空间划分为多个子空间之后,可以针对多个子空间生成与多个子空间相对应的子空间查找表,该子空间查找表中可以包括:待分配子空间以及待分配子空间的子空间分配状态,以便基于子空间查找表实现内存分配操作。
本实施例中,在基于内存分配请求获取子空间查找表之前,通过内存分配请求来确定用于对内存空间进行空间划分操作的划分配置信息,而后基于划分配置信息将内存空间划分为多个子空间,从而有效地实现了可以根据不同的应用场景和应用需求将内存空间划分为多个不同的子空间,并可以生成与多个子空间相对应的子空间查找表,而后便于基于子空间查找表来进行内存分配操作,进一步提高了该方法的实用性和适用范围。
图9为本发明实施例提供的根据内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息的流程示意图;在上述实施例的基础上,继续参考附图9所示,本实施例对于确定用于对内存空间进行空间划分操作的划分配置信息的具体实现方式不做限定,本领域技术人员可以根据具体的应用场景和设计需求进行设置,较为优选的,本实施例中的根据内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息可以包括:
步骤S901:获取与内存分配请求相对应的至少一个运算数据长度。
其中,在获取到内存分配请求之后,则可以对内存分配请求进行分析处理,从而可以获得与内存分配请求相对应的至少一个运算数据长度,可以理解的是,上述的运算数据长度是指需要进行数据运算处理操作时所对应的操作数的数据大小。
另外,本实施例对于获取与内存分配请求相对应的至少一个运算数据长度的具体实现方式不做限定,本领域技术人员可以根据具体的应用需求和设计需求进行设置。在一些实例中,内存分配请求中可以包括运算数据长度,通过对内存分配请求进行特征提取操作,从而可以获得与内存分配请求相对应的至少一个运算数据长度。
在另一些实例中,预先设置有不同的内存分配请求与运算数据长度之间的映射关系,在获取到内存分配请求之后,则可以基于上述映射关系来确定与内存分配请求相对应的至少一个运算数据长度。
步骤S902:在至少一个运算数据长度中,获得最大的目标运算数据长度。
步骤S903:基于目标运算数据长度,确定用于对内存空间进行空间划分操作的划分配置信息。
在获取到至少一个运算数据长度之后,则可以将所有的运算数据长度进行分析比较,获得数据量最大的操作数所对应的目标运算数据长度。而后可以对目标运算数据长度进行分析处理,以确定用于对内存空间进行空间划分操作的划分配置信息。在一些实例中,在划分配置信息包括划分数量时,本实施例中的基于目标运算数据长度,确定用于对内存空间进行空间划分操作的划分配置信息可以包括:获取内存空间的总区域大小;基于总区域大小与目标运算数据长度之间的比值,确定用于对内存空间进行空间划分操作的划分数量。
具体的,在划分配置信息包括划分数量时,为了能够准确地获取到划分数量,以使得基于划分数量所划分的子空间能够满足数据运算操作,则可以获取内存空间的总区域大小,而后可以获得总区域大小与目标运算数据长度之间的比值,之后则可以对上述的比值进行分析处理,以确定用于对内存空间进行空间划分操作的划分数量。在一些实例中,对比值进行分析处理,确定用于对内存空间进行空间划分操作的划分数量可以包括:对比值进行向上取整操作,之后将进行取整操作之后的数量确定为用于对内存空间进行空间划分操作的划分数量,从而有效地保证了对划分数量进行确定的准确可靠性。
本实施例中,通过获取与内存分配请求相对应的至少一个运算数据长度,而后在至少一个运算数据长度中获得最大的目标运算数据长度,并基于目标运算数据长度来确定用于对内存空间进行空间划分操作的划分配置信息(划分数量),从而有效地保证了对划分配置信息中划分数量进行获取的准确可靠性。
图10为本发明实施例提供的又一种内存空间的分配方法的流程示意图;在上述任意一个实施例的基础上,继续参考附图10所示,本实施例中的方法还可以包括:
步骤S1001:获取内存释放请求。
步骤S1002:根据内存释放请求,确定待释放的内存空间以及位于内存空间内待释放的子空间。
步骤S1003:对内存空间和子空间进行释放操作。
其中,在针对所分配的内存空间执行完相对应的数据运算操作之后,则可以针对内存空间进行内存释放操作,此时可以生成并获得内存释放请求,该内存释放请求用于对进行数据运算操作的内存空间进行释放操作。在获取到内存释放请求之后,则可以对内存释放请求进行分析处理,以确定与内存释放请求相对应的待释放的内存空间以及位于内存空间内待释放的子空间。之后,可以对上述所确定的内存空间和子空间进行释放操作,以可以基于所释放的内存空间和子空间进行其他的数据运算操作,进一步提高了内存分配方法的实用性。
在另一些实例中,在对内存空间和子空间进行释放操作之后,本实施例中的方法还可以包括:
步骤S1101:对与内存空间相对应的内存互斥表中已释放的内存空间的空间分配状态进行复位,以标识已释放的内存空间为未分配状态;
具体的,在对内存空间进行释放操作之后,为了能够及时、可靠地对内存空间进行相对应的数据运算操作,则可以对内存空间相对应的内存互斥表中已释放的内存空间的空间分配状态进行复位,以标识已释放的内存空间为未分配状态,以便在之后的数据运算操作或者内存分配操作过程中可以对未分配的内存空间进行内存分配操作,这样有利于提高空间的利用率,进一步提高了该方法使用的稳定可靠性。
步骤S1102:对与子空间相对应的子空间查找表中已释放的子空间的子空间分配状态进行置位,以标识已释放的子空间为未分配状态。
相类似的,在对子空间进行释放操作之后,为了能够及时、可靠地对子空间进行相对应的数据运算操作,则可以对子空间相对应的子空间查找表中已释放的子空间的子空间分配状态进行置位,以标识已释放的子空间为未分配状态,以便在之后的数据运算操作或者内存分配操作过程中可以对未分配的子空间进行内存分配操作,这样有利于提高空间的利用率,进一步提高了该方法使用的稳定可靠性。
具体应用时,参考附图11所示,本应用实施例提供了一种双层空间的内存分配方法,该方法可以针对离散化空间进行内存分配操作,具体的,基于两层内存空间(内存空间以及位于内存空间下层的子空间)所对应的内存互斥表和子空间查找表来进行内存分配操作,同时支持多块互斥空间的内存分配操作,有利于降低资源的占用空间,并可以提高内存的分配效率,从而使得该方法可以适合于资源和性能较为敏感的系统或平台。具体的,该方法可以包括以下步骤:
步骤1:获取针对离散化内存空间的内存分配请求。
其中,离散化内存空间可以是双层的空间结构,即离散化内存空间可以包括一个或多个内存空间block,多个内存空间可以为:block0、block1、block2......blockN,每个内存空间可以包括多个子空间;并且,上述的每个block可以为独立的存储单元,其内部地址连续,各个block之间的地址离散。在进行向量数据进行运算的应用场景下,每个向量操作数对应有不同的block,在对向量操作数进行分配的过程中,需要保证所分配的各个block之间互斥。
在获取到内存分配请求之后,则可以基于内存分配请求对block和位于block下层的一个或多个子空间进行内存分配操作,从而使得该方法可以实现对内存空间block级别和位于内存空间下层的多个互斥子空间同时进行内存分配操作。
此外,针对内存空间而言,该方法还可以提供子空间颗粒度的配置接口,这样在进行内存分配操作之前,可以通过上述的配置接口、根据数据处理需求配置每个block的划分颗粒度。具体的,配置接口可以包括如下:
(1)颗粒度配置接口“void set_unit_length(size_t byte_len)”,用于配置block内子空间的长度,单位可以为byte。
(2)block层分配接口“void*malloc_block()”,用于分配空闲block,在成功分配之后,则可以返回block地址,在分配失败之后,则可以返回“NULL”。
(3)block层释放接口“void free_block(void*ptr_block)”,用于释放ptr_block所在的block。
(4)子空间分配接口“bool malloc_subspace(size_t len,void*ptr_s)”,用于分配单块长度为len的子空间,在分配成功之后,则赋值ptr_s为子空间的地址,并返回“True”;在分配失败之后,则赋值“NULL”,并返回“False”。
(5)子空间分配接口“bool malloc_subspace(size_t len1,void*ptr_s1,size_tlen2,void*ptr_s2)”,用于同时分配两块长度为len1、len2的block互斥子空间,在分配成功之后,则赋值ptr_s1、ptr_s2为子空间的地址,并返回“True”;在分配失败之后,则赋值“NULL”,并返回“False”。
(6)子空间分配接口“bool malloc_subspace(size_t len1,void*ptr_s1,size_tlen2,void*ptr_s2,size_t len3,void*ptr_s3)”,用于同时分配三块长度为len1、len2、len3的block互斥子空间,在分配成功之后,则赋值ptr_s1、ptr_s2、ptr_s3为子空间的地址,并返回“True”;在分配失败之后,则赋值“NULL”,并返回“False”。
(7)子空间分配接口“bool malloc_subspace(size_t len1,void*ptr_s1,size_tlen2,void*ptr_s2,size_t len3,void*ptr_s3,size_t len4,void*ptr_s4)”,用于同时分配四块长度为len1、len2、len3、len4的block互斥子空间,在分配成功之后,则赋值ptr_s1、ptr_s2、ptr_s3、ptr_s4为子空间的地址,并返回“True”;在分配失败之后,则赋值“NULL”,并返回“False”。
(8)子空间分配接口“void free_subspace(void*ptr_s,size_tunit_num)”,用于由ptr_s开始,释放unit_num块个子空间,以实现子空间的释放操作。
在针对内存空间和内存空间所对应的子空间配置完成之后,则可以根据划分颗粒度为各个block申请分配相对应的内存互斥表和子空间查找表,该内存互斥表用于记录各个block的占用情况,子空间查找表用于记录各block下层所包括的至少一个子空间的占用情况。具体的,在内存互斥表和子空间查找表中,可以用“0”来标识内存空间或者子空间处于未被占用状态,用“1”来标识内存空间或者子空间处于占用状态。
基于上述的陈述内容,在对block层空间进行内存分配操作时,可以通过子空间查找表查找全部子空间处于未被占用的block,而后则可以对上述处于未被占用的block进行内存分配操作。在对block进行内存分配操作之后,则可以对子空间查找表中的标识进行整体翻转,可以理解的是,上述的内存分配操作满足block互斥的需求,并且在进行内存释放时,可以提供预设接口对整块block的查找表进行复位,有利于完成block的释放操作。
在对block层中所包括的子空间进行内存分配操作时,可以通过子空间查找表进行位搜索,从而可以实现空间分配与释放操作;在一些实例中,本实施例提供的同时分配多块互斥子空间的实现方法,可以支持最多4块子空间的同时分配操作。
步骤2:基于内存分配请求,利用内存互斥表查找与内存分配请求相对应的至少一个目标内存空间。
具体的,可以基于内存分配请求控制预设指针blocki指向block0,即从blcok0开始查找处于未被占用的内存空间,在当前内存分配操作的过程中,当检测到第i个内存空间blocki处于未分配状态时,则可以将blocki确定为一目标内存空间。
步骤3:在获取到目标内存空间之后,则可以利用子空间查找表来确定与目标内存空间下层的至少一个目标子空间,所确定的至少一个目标子空间即为满足需求的未被占用的子空间。
步骤4:在查找到一空闲的目标子空间之后,可以将该目标子空间所在内存互斥表以及子空间查找表中继续进行下一个子空间的分配操作。
步骤5:直至找到所有需要进行内存分配操作的所有子空间都完成分配操作,则结束分配,并复位互斥表。
其中,如果在步骤2中,blocki在此次空间分配过程中处于已被分配状态,或者,步骤3中的blocki空闲空间不足时,则移动至后一块block重新进行查找。如果移动至block尾部仍无法满足内存分配需求时,则空间分配操作失败,此时,可以结束内存分配操作,并可以将互斥表及当次已分配的空间进行释放操作。
另一方面,在对子空间进行内存分配操作时,可以采用按位搜索的方式来查找与内存分配请求相对应的子空间,具体的,参考附图12所示,该方法可以包括如下步骤:
步骤S11:根据空间需求大小及颗粒度,确定待搜索的所有子空间,并初始化用于进行子空间查找操作的位搜索指针bitmask。
其中,在颗粒度为16byte,空间需求为128byte时,则可以确定bit mask为0b11111111。
步骤S12:在bit mask未超过block的查找表长度(总空间大小)的条件下,则可以按照查找表、参考位与“&bit mask”的方式,确定当前子空间区间是否可用。若子空间的标识位为“0”,则表明子空间处于可分配状态,并可以将该子空间的分配表置位,完成内存分配操作。
步骤S13:若子空间的标识位为“1”,则表明子空间处于不可分配状态,将bit mask做左移一位的操作,继续查找空闲的子空间内存。
在初始化或移位bit mask之后,若其长度超出查找表的有效长度,则表明无法在该block中查找到满足预设需求的空闲子空间,进而可以结束内存分配操作。
在另一些实例中,本实施例中的方法还可以包括内存释放操作,具体的,针对离散化内存空间而言,可以对应有block整体释放及子空间释放两种释放方式。其中,在对整个block进行内存释放操作时,则可以确定入参地址所对应的block,而后对上述所确定的block进行内存释放操作,并将该block的查找表整体复位。在对子空间进行内存释放操作时,则可以通过所提供子空间起始地址及释放颗粒数来确定待释放的子空间,并可以对所确定的子空间进行内存释放操作。
本应用实施例提供的内存分配方法,有效地实现了能够灵活地对离散内存空间进行内存分配,具体的,通过获取到针对离散化内存空间的内存分配请求,而后可以基于内存分配请求获得与内存分配请求相对应的目标内存空间和位于目标内存空间下层的目标子空间,所获得的目标内存空间和目标子空间之间互斥,由于不存在内部链表结构,因此有效地降低了数据资源所需要占用的空间大小,有利于提高内存分配效率,从而使得该方法适合于资源敏感系统的内存分配,进一步提高了该方法的实用性和适用范围。
图13为本发明实施例提供的一种内存空间的分配装置的结构示意图;参考附图13所示,本实施例提供了一种内存空间的分配装置,该分配装置用于执行图3所对应的内存空间的分配方法,具体的,该分配装置可以包括:
存储器12,用于存储计算机程序;
处理器11,用于运行存储器12中存储的计算机程序以实现:
获取针对离散化内存空间的内存分配请求;
在离散化内存空间中,确定与内存分配请求相对应的至少一个目标内存空间,目标内存空间为未分配状态,且至少一个目标内存空间中的任意两个目标内存空间之间互斥;
根据内存分配请求,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,目标子空间为未分配状态,且至少一个目标子空间中的任意两个子空间之间互斥。
其中,内存空间的分配装置的结构中还可以包括通信接口13,用于实现内存空间的分配装置与其他设备或通信网络通信。
在一些实例中,至少一个目标内存空间中每个目标内存空间中的地址信息连续,且至少一个目标内存空间中任意两个目标内存空间之间的地址信息离散。
在一些实例中,在处理器11在离散化内存空间中,确定与内存分配请求相对应的至少一个目标内存空间时,该处理器11可以用于执行:基于内存分配请求获取内存互斥表,内存互斥表中包括:在离散化内存空间中的待分配内存空间以及待分配内存空间的空间分配状态;在离散化内存空间中,根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间。
在一些实例中,在处理器11在离散化内存空间中,根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间时,该处理器11可以用于执行:确定与内存分配请求相对应的请求空间大小;在离散化内存空间中,按照预设分配顺序识别出与请求空间大小相对应的未分配的至少一个内存空间;将上述所确定的未分配的至少一个内存空间确定为与内存分配请求相对应的至少一个目标内存空间。
在一些实例中,本实施例中的处理器11可以用于执行:在离散化内存空间中,未识别出与请求空间大小相对应的未分配的至少一个内存空间时,则生成用于标识内存空间分配失败的第一提示信息。
在一些实例中,在根据内存互斥表确定与内存分配请求相对应的至少一个目标内存空间之后,本实施例中的处理器11可以用于执行:对内存互斥表中所包括的至少一个目标内存空间的空间分配状态进行复位,以标识至少一个目标内存空间的空间分配状态为未分配状态。
在一些实例中,在处理器11根据内存分配请求,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间时,该处理器11可以用于执行:基于内存分配请求获取子空间查找表,子空间查找表中包括:待分配子空间以及待分配子空间的子空间分配状态;根据子空间查找表,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,目标子空间为未分配状态,且至少一个目标子空间中的任意两个子空间之间互斥。
在一些实例中,在处理器11根据子空间查找表,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间时,该处理器11可以用于执行:确定与内存分配请求相对应的请求子空间大小;在至少一个目标内存空间中每个目标内存空间中,根据子空间查找表采用位搜索的方式,识别出与请求子空间大小相对应的未分配的至少一个子空间;将上述所确定的未分配的至少一个子空间确定为与内存分配请求相对应的至少一个目标子空间。
在一些实例中,子空间查找表所对应的空间区域大小小于或等于所对应的目标内存空间的空间区域大小。
在一些实例中,本实施例中的处理器11用于执行:在根据子空间查找表,未确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间时,则生成用于标识子空间分配失败的第二提示信息。
在一些实例中,在根据子空间查找表,确定至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间之后,本实施例中的处理器11用于执行:对子空间查找表中所包括的至少一个目标子空间的子空间分配状态标识进行置位,以标识至少一个目标子空间的子空间分配状态为已分配状态。
在一些实例中,在基于内存分配请求获取子空间查找表之前,本实施例中的处理器11用于执行:根据内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息;基于划分配置信息将内存空间划分为多个子空间,并生成与多个子空间相对应的子空间查找表。
在一些实例中,划分配置信息包括以下至少之一:划分数量、划分区域大小、划分地址信息。
在一些实例中,同一个内存空间内所包括的多个子空间所对应的空间区域大小相同或不同。
在一些实例中,在处理器11根据内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息时,该处理器11用于执行:获取与内存分配请求相对应的至少一个运算数据长度;在至少一个运算数据长度中,获得最大的目标运算数据长度;基于目标运算数据长度,确定用于对内存空间进行空间划分操作的划分配置信息。
在一些实例中,划分配置信息包括:划分数量;在处理器11基于目标运算数据长度,确定用于对内存空间进行空间划分操作的划分配置信息时,该处理器11用于执行:获取内存空间的总区域大小;基于总区域大小与目标运算数据长度之间的比值,确定用于对内存空间进行空间划分操作的划分数量。
在一些实例中,本实施例中的处理器11用于执行:获取内存释放请求;根据内存释放请求,确定待释放的内存空间以及位于内存空间内待释放的子空间;对内存空间和子空间进行释放操作。
在一些实例中,对内存空间和子空间进行释放操作之后,本实施例中的处理器11用于执行:对与内存空间相对应的内存互斥表中已释放的内存空间的空间分配状态进行复位,以标识已释放的内存空间为未分配状态;对与子空间相对应的子空间查找表中已释放的子空间的子空间分配状态进行置位,以标识已释放的子空间为未分配状态。
图13所示装置可以执行图3-图12所示实施例的方法,本实施例未详细描述的部分,可参考对图3-图12所示实施例的相关说明。该技术方案的执行过程和技术效果参见图3-图12所示实施例中的描述,在此不再赘述。
另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图3-图12所示方法实施例中内存空间的分配方法所涉及的程序。
以上各个实施例中的技术方案、技术特征在与本相冲突的情况下均可以单独,或者进行组合,只要未超出本领域技术人员的认知范围,均属于本申请保护范围内的等同实施例。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得计算机处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (37)
1.一种内存空间的分配方法,其特征在于,包括:
获取针对离散化内存空间的内存分配请求;
在所述离散化内存空间中,确定与所述内存分配请求相对应的至少一个目标内存空间,所述目标内存空间为未分配状态,且所述至少一个目标内存空间中的任意两个目标内存空间之间互斥;
根据所述内存分配请求,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,所述目标子空间为未分配状态,且所述至少一个目标子空间中的任意两个子空间之间互斥。
2.根据权利要求1所述的方法,其特征在于,所述至少一个目标内存空间中每个目标内存空间中的地址信息连续,且至少一个目标内存空间中任意两个目标内存空间之间的地址信息离散。
3.根据权利要求1所述的方法,其特征在于,在所述离散化内存空间中,确定与所述内存分配请求相对应的至少一个目标内存空间,包括:
基于所述内存分配请求获取内存互斥表,所述内存互斥表中包括:在所述离散化内存空间中的待分配内存空间以及待分配内存空间的空间分配状态;
在所述离散化内存空间中,根据所述内存互斥表确定与所述内存分配请求相对应的至少一个目标内存空间。
4.根据权利要求3所述的方法,其特征在于,在所述离散化内存空间中,根据所述内存互斥表确定与所述内存分配请求相对应的至少一个目标内存空间,包括:
确定与所述内存分配请求相对应的请求空间大小;
在所述离散化内存空间中,按照预设分配顺序识别出与所述请求空间大小相对应的未分配的至少一个内存空间;
将上述所确定的未分配的至少一个内存空间确定为与所述内存分配请求相对应的至少一个目标内存空间。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在所述离散化内存空间中,未识别出与所述请求空间大小相对应的未分配的至少一个内存空间时,则生成用于标识内存空间分配失败的第一提示信息。
6.根据权利要求3所述的方法,其特征在于,在根据所述内存互斥表确定与所述内存分配请求相对应的至少一个目标内存空间之后,所述方法还包括:
对所述内存互斥表中所包括的至少一个目标内存空间的空间分配状态进行复位,以标识至少一个目标内存空间的空间分配状态为未分配状态。
7.根据权利要求1所述的方法,其特征在于,根据所述内存分配请求,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,包括:
基于所述内存分配请求获取子空间查找表,所述子空间查找表中包括:待分配子空间以及待分配子空间的子空间分配状态;
根据所述子空间查找表,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,所述目标子空间为未分配状态,且所述至少一个目标子空间中的任意两个子空间之间互斥。
8.根据权利要求7所述的方法,其特征在于,根据所述子空间查找表,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,包括:
确定与所述内存分配请求相对应的请求子空间大小;
在所述至少一个目标内存空间中每个目标内存空间中,根据所述子空间查找表采用位搜索的方式,识别出与所述请求子空间大小相对应的未分配的至少一个子空间;
将上述所确定的未分配的至少一个子空间确定为与所述内存分配请求相对应的至少一个目标子空间。
9.根据权利要求8所述的方法,其特征在于,所述子空间查找表所对应的空间区域大小小于或等于所对应的目标内存空间的空间区域大小。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在根据所述子空间查找表,未确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间时,则生成用于标识子空间分配失败的第二提示信息。
11.根据权利要求7所述的方法,其特征在于,在根据所述子空间查找表,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间之后,所述方法还包括:
对所述子空间查找表中所包括的至少一个目标子空间的子空间分配状态标识进行置位,以标识至少一个目标子空间的子空间分配状态为已分配状态。
12.根据权利要求7所述的方法,其特征在于,在基于所述内存分配请求获取子空间查找表之前,所述方法还包括:
根据所述内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息;
基于所述划分配置信息将所述内存空间划分为多个子空间,并生成与所述多个子空间相对应的子空间查找表。
13.根据权利要求12所述的方法,其特征在于,所述划分配置信息包括以下至少之一:划分数量、划分区域大小、划分地址信息。
14.根据权利要求12所述的方法,其特征在于,同一个内存空间内所包括的所述多个子空间所对应的空间区域大小相同或不同。
15.根据权利要求12所述的方法,其特征在于,根据所述内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息,包括:
获取与所述内存分配请求相对应的至少一个运算数据长度;
在所述至少一个运算数据长度中,获得最大的目标运算数据长度;
基于所述目标运算数据长度,确定用于对内存空间进行空间划分操作的划分配置信息。
16.根据权利要求15所述的方法,其特征在于,所述划分配置信息包括:划分数量;基于所述目标运算数据长度,确定用于对内存空间进行空间划分操作的划分配置信息,包括:
获取所述内存空间的总区域大小;
基于所述总区域大小与所述目标运算数据长度之间的比值,确定用于对内存空间进行空间划分操作的划分数量。
17.根据权利要求1-16中任意一项所述的方法,其特征在于,所述方法还包括:
获取内存释放请求;
根据所述内存释放请求,确定待释放的内存空间以及位于所述内存空间内待释放的子空间;
对所述内存空间和所述子空间进行释放操作。
18.根据权利要求17所述的方法,其特征在于,对所述内存空间和所述子空间进行释放操作之后,所述方法还包括:
对与所述内存空间相对应的内存互斥表中已释放的内存空间的空间分配状态进行复位,以标识已释放的内存空间为未分配状态;
对与所述子空间相对应的子空间查找表中已释放的子空间的子空间分配状态进行置位,以标识已释放的子空间为未分配状态。
19.一种内存空间的分配装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于运行所述存储器中存储的计算机程序以实现:
获取针对离散化内存空间的内存分配请求;
在所述离散化内存空间中,确定与所述内存分配请求相对应的至少一个目标内存空间,所述目标内存空间为未分配状态,且所述至少一个目标内存空间中的任意两个目标内存空间之间互斥;
根据所述内存分配请求,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,所述目标子空间为未分配状态,且所述至少一个目标子空间中的任意两个子空间之间互斥。
20.根据权利要求19所述的装置,其特征在于,所述至少一个目标内存空间中每个目标内存空间中的地址信息连续,且至少一个目标内存空间中任意两个目标内存空间之间的地址信息离散。
21.根据权利要求19所述的装置,其特征在于,在所述处理器在所述离散化内存空间中,确定与所述内存分配请求相对应的至少一个目标内存空间时,所述处理器用于:
基于所述内存分配请求获取内存互斥表,所述内存互斥表中包括:在所述离散化内存空间中的待分配内存空间以及待分配内存空间的空间分配状态;
在所述离散化内存空间中,根据所述内存互斥表确定与所述内存分配请求相对应的至少一个目标内存空间。
22.根据权利要求21所述的装置,其特征在于,在所述处理器在所述离散化内存空间中,根据所述内存互斥表确定与所述内存分配请求相对应的至少一个目标内存空间时,所述处理器用于:
确定与所述内存分配请求相对应的请求空间大小;
在所述离散化内存空间中,按照预设分配顺序识别出与所述请求空间大小相对应的未分配的至少一个内存空间;
将上述所确定的未分配的至少一个内存空间确定为与所述内存分配请求相对应的至少一个目标内存空间。
23.根据权利要求22所述的装置,其特征在于,所述处理器还用于:
在所述离散化内存空间中,未识别出与所述请求空间大小相对应的未分配的至少一个内存空间时,则生成用于标识内存空间分配失败的第一提示信息。
24.根据权利要求21所述的装置,其特征在于,在根据所述内存互斥表确定与所述内存分配请求相对应的至少一个目标内存空间之后,所述处理器还用于:
对所述内存互斥表中所包括的至少一个目标内存空间的空间分配状态进行复位,以标识至少一个目标内存空间的空间分配状态为未分配状态。
25.根据权利要求19所述的装置,其特征在于,在所述处理器根据所述内存分配请求,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间时,所述处理器用于:
基于所述内存分配请求获取子空间查找表,所述子空间查找表中包括:待分配子空间以及待分配子空间的子空间分配状态;
根据所述子空间查找表,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间,所述目标子空间为未分配状态,且所述至少一个目标子空间中的任意两个子空间之间互斥。
26.根据权利要求25所述的装置,其特征在于,在所述处理器根据所述子空间查找表,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间时,所述处理器用于:
确定与所述内存分配请求相对应的请求子空间大小;
在所述至少一个目标内存空间中每个目标内存空间中,根据所述子空间查找表采用位搜索的方式,识别出与所述请求子空间大小相对应的未分配的至少一个子空间;
将上述所确定的未分配的至少一个子空间确定为与所述内存分配请求相对应的至少一个目标子空间。
27.根据权利要求26所述的装置,其特征在于,所述子空间查找表所对应的空间区域大小小于或等于所对应的目标内存空间的空间区域大小。
28.根据权利要求25所述的装置,其特征在于,所述处理器还用于:
在根据所述子空间查找表,未确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间时,则生成用于标识子空间分配失败的第二提示信息。
29.根据权利要求25所述的装置,其特征在于,在根据所述子空间查找表,确定所述至少一个目标内存空间中每个目标内存空间下层的至少一个目标子空间之后,所述处理器还用于:
对所述子空间查找表中所包括的至少一个目标子空间的子空间分配状态标识进行置位,以标识至少一个目标子空间的子空间分配状态为已分配状态。
30.根据权利要求25所述的装置,其特征在于,在基于所述内存分配请求获取子空间查找表之前,所述处理器还用于:
根据所述内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息;
基于所述划分配置信息将所述内存空间划分为多个子空间,并生成与所述多个子空间相对应的子空间查找表。
31.根据权利要求30所述的装置,其特征在于,所述划分配置信息包括以下至少之一:划分数量、划分区域大小、划分地址信息。
32.根据权利要求30所述的装置,其特征在于,同一个内存空间内所包括的所述多个子空间所对应的空间区域大小相同或不同。
33.根据权利要求30所述的装置,其特征在于,在所述处理器根据所述内存分配请求,确定用于对内存空间进行空间划分操作的划分配置信息时,所述处理器用于:
获取与所述内存分配请求相对应的至少一个运算数据长度;
在所述至少一个运算数据长度中,获得最大的目标运算数据长度;
基于所述目标运算数据长度,确定用于对内存空间进行空间划分操作的划分配置信息。
34.根据权利要求33所述的装置,其特征在于,所述划分配置信息包括:划分数量;在所述处理器基于所述目标运算数据长度,确定用于对内存空间进行空间划分操作的划分配置信息时,所述处理器用于:
获取所述内存空间的总区域大小;
基于所述总区域大小与所述目标运算数据长度之间的比值,确定用于对内存空间进行空间划分操作的划分数量。
35.根据权利要求19-34中任意一项所述的装置,其特征在于,所述处理器用于:
获取内存释放请求;
根据所述内存释放请求,确定待释放的内存空间以及位于所述内存空间内待释放的子空间;
对所述内存空间和所述子空间进行释放操作。
36.根据权利要求35所述的装置,其特征在于,对所述内存空间和所述子空间进行释放操作之后,所述处理器用于:
对与所述内存空间相对应的内存互斥表中已释放的内存空间的空间分配状态进行复位,以标识已释放的内存空间为未分配状态;
对与所述子空间相对应的子空间查找表中已释放的子空间的子空间分配状态进行置位,以标识已释放的子空间为未分配状态。
37.一种计算机可读存储介质,其特征在于,所述存储介质为计算机可读存储介质,该计算机可读存储介质中存储有程序指令,所述程序指令用于实现权利要求1-18中任意一项所述的内存空间的分配方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/134258 WO2022120522A1 (zh) | 2020-12-07 | 2020-12-07 | 内存空间的分配方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114556309A true CN114556309A (zh) | 2022-05-27 |
Family
ID=81668400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080067360.7A Pending CN114556309A (zh) | 2020-12-07 | 2020-12-07 | 内存空间的分配方法、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114556309A (zh) |
WO (1) | WO2022120522A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115933994A (zh) * | 2023-01-09 | 2023-04-07 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617531B (zh) * | 2022-11-16 | 2023-04-28 | 沐曦集成电路(上海)有限公司 | 一种快速检测离散资源的方法、装置、存储介质及设备 |
CN117311997B (zh) * | 2023-11-29 | 2024-02-23 | 苏州元脑智能科技有限公司 | 一种计算芯片的内存管理方法、装置及计算芯片 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427195B1 (en) * | 2000-06-13 | 2002-07-30 | Hewlett-Packard Company | Thread local cache memory allocator in a multitasking operating system |
CN105700856A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 根据记忆体存取类型的效益并配合积极层级的预取 |
CN105701022A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 基于内存访问类型以组块来分配的快取内存 |
CN105988724A (zh) * | 2015-02-12 | 2016-10-05 | 华为技术有限公司 | 多副本写入存储设备的方法及存储设备 |
CN106502918A (zh) * | 2016-09-19 | 2017-03-15 | 上海华为技术有限公司 | 一种内存调度方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6892284B2 (en) * | 2002-09-11 | 2005-05-10 | Intel Corporation | Dynamic memory allocation for assigning partitions to a logical port from two groups of un-assigned partitions based on two threshold values |
US9069656B2 (en) * | 2012-09-28 | 2015-06-30 | Apple Inc. | Obfuscating function resources while reducing stack consumption |
CN103455433B (zh) * | 2013-08-19 | 2016-08-10 | 曙光信息产业股份有限公司 | 内存管理方法及系统 |
CN104182356B (zh) * | 2014-09-19 | 2017-06-27 | 深圳市茁壮网络股份有限公司 | 一种内存管理方法、装置及终端设备 |
CN111475299B (zh) * | 2020-04-03 | 2024-05-07 | Oppo广东移动通信有限公司 | 内存分配方法、装置、存储介质及电子设备 |
-
2020
- 2020-12-07 WO PCT/CN2020/134258 patent/WO2022120522A1/zh active Application Filing
- 2020-12-07 CN CN202080067360.7A patent/CN114556309A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427195B1 (en) * | 2000-06-13 | 2002-07-30 | Hewlett-Packard Company | Thread local cache memory allocator in a multitasking operating system |
CN105700856A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 根据记忆体存取类型的效益并配合积极层级的预取 |
CN105701022A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 基于内存访问类型以组块来分配的快取内存 |
CN105988724A (zh) * | 2015-02-12 | 2016-10-05 | 华为技术有限公司 | 多副本写入存储设备的方法及存储设备 |
CN106502918A (zh) * | 2016-09-19 | 2017-03-15 | 上海华为技术有限公司 | 一种内存调度方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115933994A (zh) * | 2023-01-09 | 2023-04-07 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN115933994B (zh) * | 2023-01-09 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022120522A1 (zh) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114556309A (zh) | 内存空间的分配方法、装置及存储介质 | |
US9489409B2 (en) | Rollover strategies in a N-bit dictionary compressed column store | |
EP2645259B1 (en) | Method, device and system for caching data in multi-node system | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
US10572171B2 (en) | Storage system | |
KR102290540B1 (ko) | 네임스페이스/스트림 관리 | |
JP2858795B2 (ja) | 実記憶割り当て方法 | |
CN107066498B (zh) | 键值kv存储方法和装置 | |
WO2019001020A1 (zh) | 基于分布式系统的存储空间整理方法、装置及系统 | |
US20130007370A1 (en) | Method and apparatus for minimizing working memory contentions in computing systems | |
WO2017107015A1 (zh) | 存储空间的分配方法及存储设备 | |
CN112241320A (zh) | 资源分配方法、存储设备和存储系统 | |
US9734620B2 (en) | Apparatus and method for graphics state management | |
CN111984425A (zh) | 用于操作系统的内存管理方法、装置及设备 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN115599544A (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
US11474938B2 (en) | Data storage system with multiple-size object allocator for disk cache | |
CN113434470B (zh) | 数据分布方法、装置及电子设备 | |
US10152258B1 (en) | Big block allocation of persistent main memory | |
CN112650692A (zh) | 堆内存分配方法、装置及存储介质 | |
CN116340198B (zh) | 固态硬盘的数据写入方法、其装置及固态硬盘 | |
US10168911B1 (en) | Defragmentation of persistent main memory | |
CN112947863A (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 |