CN106502918B - 一种内存调度方法及装置 - Google Patents
一种内存调度方法及装置 Download PDFInfo
- Publication number
- CN106502918B CN106502918B CN201610830230.XA CN201610830230A CN106502918B CN 106502918 B CN106502918 B CN 106502918B CN 201610830230 A CN201610830230 A CN 201610830230A CN 106502918 B CN106502918 B CN 106502918B
- Authority
- CN
- China
- Prior art keywords
- memory
- memory block
- demand
- sub
- target
- 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.)
- Active
Links
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明实施例公开了一种内存调度方法,用于简化内存划分,提高调度效率。本发明实施例方法包括:根据预置规则将内存划分成多个内存块,所述内存块的大小为固定值;当接收到目标任务请求时,确定所述目标任务请求对应的多个子需求,每一个所述子需求的大小均小于所述多个内存块中容量最大的内存块的大小;建立所述多个子需求与所述多个内存块的映射关系;根据所述多个子需求与所述多个内存块的映射关系向内存管理模块申请所述目标任务请求对应的内存块集合。本发明实施例还提供了一种调度装置,用于简化内存划分,提高调度效率。
Description
技术领域
本发明涉及通讯领域,尤其涉及一种内存调度方法及装置。
背景技术
随着用户对处理器性能的要求不断提高,功耗问题限制了单核处理器不断提高性能的发展途径,越来越多的多核处理器应运而生。在多核处理器中,多个处理器并行运算,需要处理的任务被分解成若干个部分,根据一定的调度原则,由负责调度的功能模块,将每个部分调度到一个核上执行。而在一个多核处理器中,存储器的容量、速度和价格三者经常互相矛盾,存储器的速度越快,则价格越高;容量越大,则速度越慢。所以多核处理器通常采用由多级存储器组成的存储体系,从而较好地解决存储器大容量、高速度和低成本这三者间的矛盾。
基于多核多级存储的并行架构,由集中的调度功能模块或称为调度核心负责任务的调度和分配,现有技术中,调度功能模块(或调度核心)将内存分为不同的区间或等级,相同大小等级的空闲内存块放在同一链表上,比如第一级按照2的幂进行分级,第二级将第一级的结果进一步线性划分,分成1个等级、2个等级、4个等级或8个等级,同时维护一个按照地址顺序的空闲内存链表。当接收到任务请求时,将任务的所有子需求求和,按求和后的内存需求总量申请内存,在申请内存时,根据申请大小计算其等级,如果空闲内存链表无空闲内存时,则在其高一级的链表上分配,如果在高一级链表上没有空闲内存块,则再到更高级别的链表上分配,直到找到空闲内存块或分配失败。如果有空闲内存链表,则使用链表头部的空闲内存块,如果内存块大于申请大小,则将内存块分割,将剩余的内存块与前后的空闲内存块合并,如果不能合并,则挂接到对应的等级链表上。
上述方式不管是内存划分,还是申请内存,都需要进行较复杂的计算,方案实现复杂度高。并且调度核心在申请和释放内存时,都可能要做合并处理,效率不可控,当任务较多,计算量会很大,效率就会很低。
发明内容
本发明实施例提供了一种内存调度方法及装置,用于简化内存划分,提高调度效率。
有鉴于此,本发明实施例第一方面提供了一种内存调度方法,该方法包括:
调度装置预先根据预置规则将内存划分成多个大小为固定值的内存块,当系统接收到目标任务请求后,会根据预置规则将目标任务请求对应的内存需求划分成多个子需求,使得每一个子需求的大小均小于内存中容量最大的内存块的大小,系统划分目标任务请求后,将目标任务请求传送到调度装置,当调度装置接收到目标任务请求时,首先确定目标任务请求对应的多个子需求,并建立这多个子需求与多个内存块的映射关系,再根据这多个子需求与多个内存块的映射关系向内存管理模块申请目标任务请求对应的内存块集合。
本发明实施例中,调度装置可以将内存划分成多个内存块,其中,内存块的大小为固定值,当调度装置接收到目标任务请求时,确定目标任务请求对应的子需求,每一个子需求的大小均小于多个内存块中容量最大的内存块的大小,因此每个子需求均能在划分出来的内存块中找到对应的内存块,从而调度装置能够建立子需求与内存块的映射关系,再根据映射关系向内存管理模块申请内存。本方案中内存划分的方式也比较简单,不需要作复杂的计算处理,并且每一个子需求对应一个内存块,不需要对内存进行合并处理就能完成内存的调度,即使任务较多时,也能维持较高的效率完成调度。
结合本发明实施例的第一方面,在本发明实施例第一方面的第一种实现方式中,调度装置建立多个子需求与多个内存块的映射关系的过程具体包括:
调度装置判断目标任务请求对应的已分配集合是否为空,若确定该已分配集合为空,则调度装置确定内存中能够满足目标子需求的最小内存块,将该最小内存块放入该已分配集合中,并建立目标子需求与该最小内存块的映射关系;若确定该已分配集合不为空,则调度装置判断该已分配集合中是否存在剩余内存能够满足目标子需求的目标内存块,若确定存在目标内存块,则调度装置确定目标内存块中剩余内存最小的最小目标内存块,并将该最小目标内存块放入该已分配集合中,同时建立目标子需求与最小目标内存块的映射关系;若确定不存在目标内存块,则调度装置返回执行上述步骤确定内存中能够满足目标子需求的最小内存块,将该最小内存块放入已分配集合中,并建立目标子需求与该最小内存块的映射关系。
需要说明的是,目标子需求为目标任务请求对应的多个子需求中任意一个子需求,调度装置针对每一个子需求通过上述方式找到与该子需求对应的内存块,由此即可建立目标任务请求对应的多个子需求与内存中多个内存块的映射关系。本发明实施例提供了一种调度装置建立多个子需求与多个内存块的映射关系的具体实现方式,提高了方案的可实现性。
结合本发明实施例的第一方面或第一方面的第一种实现方式,在本发明实施例第一方面的第二种实现方式中,调度装置根据多个子需求与多个内存块的映射关系向内存管理模块申请目标任务对应的内存集合之后,调度装置可以执行如下操作:
当调度装置确定目标任务请求对应的任务结束时,调度装置告知内存管理模块目标任务对应的内存集合中各个内存块对应的内存块标记,使得内存管理模块根据该内存标记释放内存块集合中的所有内存块,即将这些内存块的状态标识为空闲。
本发明实施例中,调度装置确定任务结束后,告知内存管理模块任务对应的内存块集合中各个内存块对应的内存标记,内存管理模块就能直接释放这些内存块,不需要作计算和合并处理,释放过程简单快速,能够进一步提高调度效率。
结合本发明实施例的第一方面或第一方面的第一种实现方式,在本发明实施例第一方面的第三种实现方式中,内存为近端存储空间,近端存储空间指的是核访问效率较高的内存空间。
本发明实施例提供了内存划分的具体场景,提高了方案的可实现性。
结合本发明实施例的第一方面或第一方面的第一种实现方式,在本发明实施例第一方面的第四种实现方式中,调度装置根据预置规则将内存划分成多个内存块的过程可以包括:
调度装置根据业务需求将内存划分成多种大小为固定值的内存块,每种内存块对应不同的固定值,且每种内存块的数量大于预置阈值。
本发明实施例提供了一种划分内存块的具体实现方式,提高了方案的可实现性。
本发明实施例的第二方面提供了一种调度装置,该装置包括:
划分模块,用于根据预置规则将内存划分成多个内存块,每个内存块的大小均为固定值;
确定模块,用于当接收到目标任务请求时,确定目标任务请求对应的多个子需求,每一个子需求的大小均小于多内存块中容量最大的内存块的大小;
建立模块,用于建立多个子需求与划分模块划分的多个内存块的映射关系;
申请模块,用于根据建立模块建立的多个子需求与多个内存块的映射关系向内存管理模块申请目标任务请求对应的内存块集合。
本发明实施例中,划分模块可以将内存划分成多个内存块,其中,内存块的大小为固定值,当接收到目标任务请求时,确定模块可以确定目标任务请求对应的子需求,每一个子需求的大小均小于内存中容量最大的内存块的大小,因此每个子需求均能在划分出来的内存块中找到对应的内存块,从而建立模块能够建立子需求与内存块的映射关系,申请模块再根据映射关系向内存管理模块申请内存。本方案中内存划分的方式也比较简单,不需要作复杂的计算处理,并且每一个子需求对应一个内存块,不需要对内存进行合并处理就能完成内存的调度,即使任务较多时,也能维持较高的效率完成调度。
结合本发明实施例的第二方面,在本发明实施例第二方面的第一种实现方式中,建立模块包括:
第一确定单元,用于当确定目标任务请求对应的已分配集合为空,或已分配集合中不存在剩余内存能够满足目标子需求的目标内存块时,确定内存中能满足目标子需求的最小内存块,目标子需求为多个子需求中的任意一个子需求;
第一建立单元,用于将第一确定单元确定的最小内存块放入已分配集合中,并建立目标子需求与最小内存块的映射关系;
第二确定单元,用于当确定目标任务请求对应的已分配集合不为空且已分配集合中存在剩余内存能够满足目标子需求的目标内存块时,确定目标内存块中剩余内存最小的最小目标内存块;
第二建立单元,用于建立目标子需求与第二确定单元确定的最小目标内存块的映射关系。
本发明实施例提供了一种建立模块建立多个子需求与多个内存块的映射关系的具体实现方式,提高了方案的可实现性。
结合本发明实施例的第二方面或第二方面的第一种实现方式,在本发明实施例第二方面的第二种实现方式中,该装置还包括:
告知模块,用于当确定目标任务请求对应的任务结束时,告知内存管理模块内存块集合中各个内存块对应的内存块标记,以使得内存管理模块释放内存块集合中的内存块。
本发明实施例中调度装置还可以包括告知模块,用于告知内存管理模块内存块集合中各个内存块对应的内存标记,使得内存管理模块能够根据该内存标记直接释放内存块,不需要做计算或合并处理,释放内存块的过程方便快速,能够进一步提高调度效率。
结合本发明实施例的第二方面或第二方面的第一种实现方式,在本发明实施例第二方面的第三种实现方式中,划分模块包括:
第一划分单元,用于根据预置规则将近端存储空间划分成多个内存块。
本发明实施例提供了一种划分模块划分内存块的具体实现方式,提高了方案的可实现性。
结合本发明实施例的第二方面或第二方面的第一种实现方式,在本发明实施例第二方面的第四种实现方式中,划分模块包括:
第二划分单元,用于根据业务需求将内存划分成多种大小为固定值的内存块,每种内存块对应不同的固定值,且每种内存块的数量大于预置阈值。
本发明实施例提供了另一种划分模块划分内存块的具体实现方式,提高了方案的灵活性。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,调度装置可以将内存划分成多个内存块,其中,内存块的大小为固定值,当调度装置接收到目标任务请求时,确定目标任务请求对应的子需求,每一个子需求的大小均小于内存中容量最大的内存块的大小,因此每个子需求均能在划分出来的内存块中找到对应的内存块,从而调度装置能够建立子需求与内存块的映射关系,再根据映射关系向内存管理模块申请内存。本方案中内存划分的方式也比较简单,不需要作复杂的计算处理,并且每一个子需求对应一个内存块,不需要对内存进行合并处理就能完成内存的调度,即使任务较多时,也能维持较高的效率完成调度。
附图说明
图1为本发明实施例中内存调度方法的一个实施例示意图;
图2为本发明实施例中内存调度方法的另一实施例示意图;
图3为本发明实施例中调度装置的一个实施例示意图;
图4为本发明实施例中调度装置的另一实施例示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本发明实施例适用于任何实时并行系统,具体可以基于多核多级存储的并行架构,也可以基于其他架构,具体此处不作限定。
下面以多核多级存储的并行架构的为例对本发明应用的系统架构进行说明,在多核芯片中,一部分核用于负责生成任务,一部分核用于执行任务,任务在某个核上执行所需要的数据,在任务执行时需要存储在核访问效率最高的内存中,但是任务执行前,所需数据一般存储在核访问效率低的存储空间中。数据在低速存储空间与高速存储空间之间的搬移可以由核负责,也可以由调度核心负责。当调度核心负责数据搬移时,同时还负责管理核访问效率高的内存空间,以便决定将数据搬移到的具体地址。
还应理解,本发明实施例中调度装置包括调度核心(功能调度模块),调度核心可以是由一个或多个核上的软件实现,也可以由独立的专用硬件实现,具体此处不作限定。
基于上述系统架构,本发明实施例提供了一种内存调度方法及装置,用于简化内存划分,提高调度效率。
请参阅图1,本发明实施例中内存调度方法的一个实施例包括:
步骤101、调度装置根据预置规则将内存划分成多个内存块;
调度装置根据预置规则将内存划分成多个内存块,每一个内存块的大小都是固定不变的,为固定值。
步骤102、调度装置确定目标任务请求对应的多个子需求;
当调度装置接收目标任务请求时,确定目标任务请求对应的多个子需求。需要说明的是,本发明实施例中,目标任务在传达到调度装置前,该目标任务的内存需求会被划分成多个子需求,具体会根据内存的划分规则(即预置规则)划分子需求,使得每一个子需求的大小均小于划分的多个内存块中容量最大的内存块的大小。
步骤103、调度装置建立多个子需求与多个内存块的映射关系;
调度装置确定目标任务请求对应的多个子需求后,建立者多个子需求与内存块的映射关系。需要说明的是,这里的映射关系指的是子需求到内存块的映射,每一个子需求在内存上均能找到一个与之对应的内存块。
步骤104、调度装置根据多个子需求与多个内存块的映射关系向内存管理模块申请目标任务请求对应的内存块集合。
调度装置建立多个子需求与多个内存块的映射关系后,根据该映射关系向内存管理模块申请目标任务请求对应的内存块集合,以使得任务执行核执行目标任务。这里目标任务请求对应的内存块集合指的是,所有与子需求存在映射关系的内存块的集合。
本发明实施例中,调度装置可以将内存划分成多个内存块,其中,内存块的大小为固定值,当调度装置接收到目标任务请求时,确定目标任务请求对应的子需求,每一个子需求的大小均小于内存中容量最大的内存块的大小,因此每个子需求均能在划分出来的内存块中找到对应的内存块,从而调度装置能够建立子需求与内存块的映射关系,再根据映射关系向内存管理模块申请内存。本方案中内存划分的方式也比较简单,不需要作复杂的计算处理,并且每一个子需求对应一个内存块,不需要对内存进行合并处理就能完成内存的调度,即使任务较多时,也能维持较高的效率完成调度。
为了便于理解,下面对本发明实施例中的内存调度方法进行详细描述,请参阅图2,本发明实施例中内存调度方法的另一实施例包括:
步骤201、调度装置根据预置规则将内存划分成多个内存块;
调度装置根据预置规则将内存划分成多个内存块,每一个内存块的大小都是固定不变的,为固定值。具体地,调度装置可以根据业务需求将内存划分成多种大小固定值的内存块,每种内存块对应不同的固定值,且每种内存块数量大于预置阈值。进一步地,还可以对内存块的种类(相同的固定值为一类)进行限制,使内存块的种类数目小于预置阈值。
可以理解的是,除了上述划分规则,规划装置还可以根据其他预置的规则对内存块进行划分,具体此处不作限定。
还需要理解的是,本发明实施例中内存可以是核访问效率最高的近端存储空间,可以是任务执行核的私有内存,也可以是其他存储空间,具体此处不作限定。
步骤202、调度装置确定目标任务请求对应的多个子需求;
当调度装置接收目标任务请求时,确定目标任务请求对应的多个子需求。需要说明的是,本发明实施例中,目标任务在传达到调度装置前,该目标任务的内存需求会被划分成多个子需求,具体会根据内存的划分规则(即预置规则)划分子需求,使得每一个子需求的大小均小于划分的多个内存块中容量最大的内存块的大小。
步骤203、调度装置判断目标任务请求对应的已分配集合是否为空,若是,则执行步骤204,若否,则执行步骤206;
调度装置确定目标任务请求对应的多个子需求后,判断目标任务请求对应的已分配集合是否为空,若是,则执行步骤204,若否,则执行步骤206。需要说明的是,已分配集合指的是已经与目标任务请求对应的子需求确定对应关系的内存块的集合,即已分配了子需求的内存块的集合。还需要说明的是,已分配集合还能够指示集合中各个内存块对应的剩余内存,剩余内存指的是该内存块放入已分配的子需求后剩余的内存容量。
步骤204、调度装置确定内存中能满足目标子需求的最小内存块,并执行步骤205;
当调度装置确定目标任务请求对应的已分配集合为空,或确定已分配集合中不存在剩余内存能够满足目标子需求的目标内存块时,调度装置确定内存中能够满足目标子需求的最小内存块,具体地调度装置需要先确定内存中处于空闲状态的内存块,再确定这些空闲状态的内存块中放入目标子需求后剩余容量最小的内存块即最小内存块。需要说明的是,目标子需求为目标任务请求对应的多个子需求中的任意一个子需求。
步骤205、调度装置将最小内存块放入已分配集合中,并建立目标子需求与最小内存块的映射关系;
调度装置确定最小内存块后,将最小内存块放入目标任务请求对应的已分配集合中,并建立目标子需求与最小内存块的映射关系。调度装置将最小内存块放入目标任务请求对应的已分配集合中,即将最小内存块标记为已分配子需求的内存块,同时标记该内存块放入目标子需求后剩余的内存容量。
步骤206、调度装置判断已分配集合中是否存在剩余内存能够满足目标子需求的目标内存块,若是,则执行步骤207,若否,则返回执行步骤204;
当调度装置确定目标任务请求对应的已分配集合不为空时,调度装置查找目标任务请求对应的已分配集合中的每一个内存块,判断是否存在剩余内存能够满足目标子需求的目标内存块,若是,则执行步骤207,若否,则执行步骤204。
步骤207、调度装置确定目标内存块中剩余内存最小的最小目标内存块,并执行步骤208;
当调度装置确定目标任务请求对应的已分配集合中存在剩余内存能够满足目标子需求的目标内存块时,调度装置确定目标内存块中剩余内存最小的最小目标内存块,并执行步骤208。
步骤208、调度装置建立目标子需求与最小目标内存块的映射关系。
调度装置确定最小目标内存块后,建立目标子需求与最小目标内存块的映射关系,同时更新该最小目标内存块的剩余内存。
步骤209、调度装置根据多个子需求与多个内存块的映射关系向内存管理模块申请目标任务请求对应的内存块集合。
调度装置针对目标任务请求对应的所有子需求,通过上述方式步骤202至步骤209中的方式建立映射关系后,根据建立的映射关系向内存管理模块申请目标任务请求对应的内存块集合,以使得任务执行核执行目标任务。这里目标任务请求对应的内存块集合指的是,所有与子需求存在映射关系的内存块的集合,即目标任务请求对应的已分配集合中包含的内存块的集合。
需要说明的是,本发明实施例中任务执行核完成目标任务(即目标任务请求对应的任务结束)之后,调度装置可以告知内存管理模块该内存块集合中各个内存块对应的内存标记,以使得内存管理模块释放该内存块集合中的内存块,即将该内存块集合中的内存块的状态标识为空闲。也可以执行其他操作,具体此处不作限定。
本发明实施例中,调度装置可以将内存划分成多个内存块,其中,内存块的大小为固定值,当调度装置接收到目标任务请求时,确定目标任务请求对应的子需求,每一个子需求的大小均小于内存中容量最大的内存块的大小,因此每个子需求均能在划分出来的内存块中找到对应的内存块,从而调度装置能够建立子需求与内存块的映射关系,再根据映射关系向内存管理模块申请内存。本方案中内存划分的方式也比较简单,不需要作复杂的计算处理,并且每一个子需求对应一个内存块,不需要对内存进行合并处理就能完成内存的调度,即使任务较多时,也能维持较高的效率完成调度。
其次,本发明实施例提供了一种任务调度装置建立多个子需求与多个内存块的映射关系的具体实现方式,提高了方案的可实现性。
再次,本发明实施例调度装置确定任务结束后,告知内存管理模块任务对应的内存块集合中各个内存块对应的内存标记,内存管理模块就能直接释放这些内存块,不需要作计算和合并处理,释放过程简单快速,能够进一步提高调度效率。
为了便于理解,下面以一实际应用场景对本发明实施例中的内存调度方法进行描述:
调度核心根据业务需求将任务执行核A的私有内存划分成2个18KB的内存块(记为A1,A2)和2个10KB的内存块(记为A3,A4),系统接收到运行微信的请求(目标任务请求),根据将请求划分成3个对应内存分别为12KB,5KB和11KB的子需求。
调度核心接收到目标任务请求后,确定目标任务请求的内存需求对应的子需求分别为12KB,5KB和11KB,并选定任务执行核A执行该目标任务,而A的私有内存中空闲内存块为A1、A2、A3和A4。
调度核心确定目标任务请求对应的子需求和A中的空闲内存块后,针对每一个子需求,确定A的私有内存中与之对应的内存块。
首先为12KB的子需求(目标子需求)寻找对应的内存块,调度核心判断目标任务请求对应的已分配集合是否为空,由于还未开始建立子需求和内存块的映射关系,故调度核心确定已分配集合为空,调度核心确定A的私有内存中能够容纳12KB子需求的空闲内存块为A1、和A2。由于A1和A2大小相等,故任选其一与12KB子需求建立映射,这里选择A1(最小内存块),调度核心将A1放入已分配集合中,并建立A1与12KB的子需求的映射关系,同时标记A1对应的剩余内存为6KB。
然后为11KB的子需求(目标子需求)寻找对应的内存块,调度核心判断目标任务请求对应的已分配集合是否为空,已存在内存块A1,故调度核心确定已分配集合不为空,调度核心进一步判断已分配集合中是否存在剩余内存能够满足11KB子需求的目标内存块,A1的剩余内存为6KB,故调度核心确定已分配集合中不存在剩余内存能够满足11KB子需求的目标内存块,调度核心确定A的私有内存中能够容纳11KB的内存块为A2,调度核心将A2放入已分配集合中,并建立A2与11KB的子需求的映射关系,同时标记A2对应的剩余内存为7KB。
接着为5KB的子需求(目标子需求)寻找对应的内存块,调度核心判断目标任务请求对应的已分配集合是否为空,已存在内存块A1和A2,故调度核心确定已分配集合不为空,调度核心进一步判断已分配集合中是否存在剩余内存能够满足5KB子需求的目标内存块,确定A1和A2(目标内存块)的剩余内存均能够满足5KB子需求,A1的剩余内存小于A2的剩余内存,故确定A1位最小目标内存块,调度核心建立A1与5KB子需求的映射关系,同时标记A1对应的剩余内存为1KB。
根据上述建立的映射关系(A1对应12KB子需求和5KB子需求,A2对应11KB子需求),调度核心向内存管理模块请求将A1用于运行12KB及5KB子需求,将A2用于运行11KB子需求。申请通过后,内存管理模块将A1和A2的状态更改为已分配,任务执行核A执行目标任务(即运行微信),具体地,A的私有内存中的A1用于运行12KB的子需求和5KB的子需求,A2用于运行11KB的子需求。
当系统退出微信时,任务执行核A停止运行微信(即任务结束)后,调度核心告知内存管理模块目标任务对应的内存块集合中各个内存块对应的内存标记(A1和A2),内存管理模块根据内存标记,将内存块A1和内存块A2的状态更改为空闲。
上面介绍了本发明实施例中的内存调度方法,下面介绍本发明实施例中的调度装置,请参阅图3,本发明实施例中调度装置的一个实施例包括:
划分模块301,用于根据预置规则将内存划分成多个内存块,内存块的大小为固定值;
确定模块302,用于当接收到目标任务请求时,确定目标任务请求对应的多个子需求,每一个子需求的大小均小于多个内存块中容量最大的内存块的大小;
建立模块303,用于建立确定模块302确定的多个子需求与划分模块301划分的多个内存块的映射关系;
申请模块304,用于根据建立模块303建立的多个子需求与多个内存块的映射关系向内存管理模块申请目标任务请求对应的内存块集合。
本发明实施例中,划分模块301可以将内存划分成多个内存块,其中,内存块的大小为固定值,当接收到目标任务请求时,确定模块302可以确定目标任务请求对应的子需求,每一个子需求的大小均小于内存中容量最大的内存块的大小,因此每个子需求均能在划分出来的内存块中找到对应的内存块,从而建立模块303能够建立子需求与内存块的映射关系,申请模块304再根据映射关系向内存管理模块申请内存。本方案中内存划分的方式也比较简单,不需要作复杂的计算处理,并且每一个子需求对应一个内存块,不需要对内存进行合并处理就能完成内存的调度,即使任务较多时,也能维持较高的效率完成调度。
为了便于理解,下面对本发明实施例中的调度装置进行详细介绍,请参阅图4,本发明实施例中调度装置的另一实施例包括:
划分模块401,用于根据预置规则将内存划分成多个内存块,每个内存块的大小均为固定值;
确定模块402,用于当接收到目标任务请求时,确定目标任务请求对应的多个子需求,每一个子需求的大小均小于多个内存块中容量最大的内存块的大小;
建立模块403,用于建立确定模块402确定的多个子需求与划分模块301划分的多个内存块的映射关系;
申请模块404,用于根据建立模块建立403的多个子需求与多个内存块的映射关系向内存管理模块申请目标任务请求对应的内存块集合。
其中,建立模块403包括:
第一确定单元4031,用于当确定目标任务请求对应的已分配集合为空,或已分配集合中不存在剩余内存能够满足目标子需求的目标内存块时,确定内存中能满足目标子需求的最小内存块,目标子需求为多个子需求中的任意一个子需求;
第一建立单元4032,用于将第一确定单元确定的最小内存块放入已分配集合中,并建立目标子需求与最小内存块的映射关系;
第二确定单元4033,用于当确定已分配集合不为空且已分配集合中存在剩余内存能够满足目标子需求的目标内存块时,确定目标内存块中剩余内存最小的最小目标内存块;
第二建立单元4034,用于建立目标子需求与第二确定单元确定的最小目标内存块的映射关系。
可选地,本发明实施例中调度装置还可以包括:
告知模块405,用于当确定目标任务请求对应的任务结束时,告知内存管理模块目标任务请求对应的内存块集合中各个内存块对应的内存块标记,以使得内存管理模块释放内存块集合中的内存块。
可选地,本发明实施例中划分模块401可以包括:
第一划分单元4011,用于根据预置规则将近端存储空间划分成多个内存块;
和/或,
第二划分单元4012,用于根据业务需求将内存划分成多种大小为固定值的内存块,每种内存块对应不同的固定值,且每种内存块的数量大于预置阈值。
本发明实施例中,划分模块401可以将内存划分成多个内存块,其中,内存块的大小为固定值,当接收到目标任务请求时,确定模块402可以确定目标任务请求对应的子需求,每一个子需求的大小均小于内存中容量最大的内存块的大小,因此每个子需求均能在划分出来的内存块中找到对应的内存块,从而建立模块403能够建立子需求与内存块的映射关系,申请模块404再根据映射关系向内存管理模块申请内存。本方案中内存划分的方式也比较简单,不需要作复杂的计算处理,并且每一个子需求对应一个内存块,不需要对内存进行合并处理就能完成内存的调度,即使任务较多时,也能维持较高的效率完成调度。
其次,本发明实施例提供了一种建立模块403建立多个子需求与多个内存块的映射关系的具体实现方式,提高了方案的可实现性。
再次,本发明实施例中调度装置还可以包括告知模块405,用于告知内存管理模块内存块集合中各个内存块对应的内存标记,使得内存管理模块能够根据该内存标记直接释放内存块,不需要做计算或合并处理,释放内存块的过程方便快速,能够进一步提高调度效率。
进一步地,本发明实施例中的划分模块401还可以通过多种方式划分内存块,提高了方案的灵活性。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种内存调度方法,其特征在于,包括:
根据预置规则将内存划分成多个内存块,所述内存块的大小为固定值;
当接收到目标任务请求时,确定所述目标任务请求对应的多个子需求,每一个所述子需求的大小均小于所述多个内存块中容量最大的内存块的大小;
建立所述多个子需求与所述多个内存块的映射关系;
根据所述多个子需求与所述多个内存块的映射关系向内存管理模块申请所述目标任务请求对应的内存块集合。
2.根据权利要求1所述的方法,其特征在于,所述建立所述的多个子需求与所述多个内存块的映射关系包括:
当确定所述目标任务请求对应的已分配集合为空,或所述目标任务请求对应的已分配集合中不存在剩余内存能够满足目标子需求的目标内存块时,确定所述内存中能满足所述目标子需求的最小内存块,所述目标子需求为所述多个子需求中的任意一个子需求;
将所述最小内存块放入所述已分配集合中,并建立所述目标子需求与所述最小内存块的映射关系;
当确定所述目标任务请求对应的已分配集合不为空且所述已分配集合中存在剩余内存能够满足目标子需求的目标内存块时,确定所述目标内存块中剩余内存最小的最小目标内存块;
建立所述目标子需求与所述最小目标内存块的映射关系。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述多个子需求与所述多个内存块的映射关系向内存管理模块申请所述目标任务对应的内存集合之后包括:
当确定所述目标任务请求对应的任务结束时,告知所述内存管理模块所述内存块集合中各个内存块对应的内存块标记,以使得所述内存管理模块释放所述内存块集合中的内存块。
4.根据权利要求1或2所述的方法,其特征在于,所述方法应用于多核多级存储的并行架构,所述内存为执行所述目标任务的核的私有内存。
5.根据权利要求1或2所述的方法,其特征在于,所述根据预置规则将内存划分成多个内存块包括:
根据业务需求将内存划分成多种大小为固定值的内存块,每种内存块对应不同的固定值,且每种内存块的数量大于预置阈值。
6.一种调度装置,其特征在于,包括:
划分模块,用于根据预置规则将内存划分成多个内存块,所述内存块的大小为固定值;
确定模块,用于当接收到目标任务请求时,确定所述目标任务请求对应的多个子需求,每一个所述子需求的大小均小于所述多个内存块中容量最大的内存块的大小;
建立模块,用于建立所述确定模块确定的多个子需求与所述划分模块划分的多个内存块的映射关系;
申请模块,用于根据所述建立模块建立的所述多个子需求与多个内存块的映射关系向内存管理模块申请所述目标任务请求对应的内存块集合。
7.根据权利要求6所述的装置,其特征在于,所述建立模块包括:
第一确定单元,用于当确定所述目标任务请求对应的已分配集合为空,或所述已分配集合中不存在剩余内存能够满足目标子需求的目标内存块时,确定所述内存中能满足所述目标子需求的最小内存块,所述目标子需求为所述多个子需求中的任意一个子需求;
第一建立单元,用于将所述第一确定单元确定的所述最小内存块放入所述已分配集合中,并建立所述目标子需求与所述最小内存块的映射关系;
第二确定单元,用于当确定所述目标任务请求对应的已分配集合不为空且所述已分配集合中存在剩余内存能够满足目标子需求的目标内存块时,确定所述目标内存块中剩余内存最小的最小目标内存块;
第二建立单元,用于建立所述目标子需求与所述第二确定单元确定的所述最小目标内存块的映射关系。
8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
告知模块,用于当确定所述目标任务请求对应的任务结束时,告知所述内存管理模块所述内存块集合中各个内存块对应的内存块标记,以使得所述内存管理模块释放所述内存块集合中的内存块。
9.根据权利要求6或7所述的装置,其特征在于,所述调度装置应用于多核多级存储的并行架构;所述划分模块包括:
第一划分单元,用于根据预置规则将所述内存划分成多个内存块,所述内存为执行所述目标任务的核的私有内存。
10.根据权利要求6或7所述的装置,其特征在于,所述划分模块包括:
第二划分单元,用于根据业务需求将内存划分成多种大小为固定值的内存块,每种内存块对应不同的固定值,且每种内存块的数量大于预置阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610830230.XA CN106502918B (zh) | 2016-09-19 | 2016-09-19 | 一种内存调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610830230.XA CN106502918B (zh) | 2016-09-19 | 2016-09-19 | 一种内存调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106502918A CN106502918A (zh) | 2017-03-15 |
CN106502918B true CN106502918B (zh) | 2019-10-18 |
Family
ID=58290099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610830230.XA Active CN106502918B (zh) | 2016-09-19 | 2016-09-19 | 一种内存调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106502918B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984423B (zh) * | 2017-05-31 | 2020-10-27 | 龙芯中科技术有限公司 | 一种系统级芯片的地址空间验证方法和系统 |
CN107273061A (zh) * | 2017-07-12 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种固态硬盘创建多namespace的方法及系统 |
CN110727517A (zh) * | 2019-10-12 | 2020-01-24 | 福建顶点软件股份有限公司 | 一种基于分区设计的内存分配方法和装置 |
CN114556309A (zh) * | 2020-12-07 | 2022-05-27 | 深圳市大疆创新科技有限公司 | 内存空间的分配方法、装置及存储介质 |
CN115904859A (zh) * | 2021-09-30 | 2023-04-04 | 中兴通讯股份有限公司 | 内存占用量预估方法、装置及存储介质 |
CN113900829B (zh) * | 2021-12-10 | 2022-04-12 | 深圳比特微电子科技有限公司 | 用于设备的内存管理方法、内存管理设备和计算系统 |
CN114328298B (zh) * | 2022-03-14 | 2022-06-21 | 南京芯驰半导体科技有限公司 | 一种用于向量存取的片内存储器地址映射系统及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853215A (zh) * | 2010-06-01 | 2010-10-06 | 恒生电子股份有限公司 | 一种内存分配方法及装置 |
CN102915276A (zh) * | 2012-09-25 | 2013-02-06 | 武汉邮电科学研究院 | 一种用于嵌入式系统的内存控制方法 |
US8407443B1 (en) * | 2006-05-11 | 2013-03-26 | Nvidia Corporation | Off-chip out of order memory allocation for a unified shader |
CN104580447A (zh) * | 2014-12-29 | 2015-04-29 | 中国科学院计算机网络信息中心 | 一种基于访问热度的时空数据服务调度方法 |
CN104778125A (zh) * | 2015-04-03 | 2015-07-15 | 无锡天脉聚源传媒科技有限公司 | 一种内存管理方法及系统 |
CN105354147A (zh) * | 2014-08-20 | 2016-02-24 | 腾讯科技(深圳)有限公司 | 一种内存池管理方法及管理系统 |
CN105468542A (zh) * | 2014-09-03 | 2016-04-06 | 杭州华为数字技术有限公司 | 地址分配方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101593161B1 (ko) * | 2014-10-02 | 2016-02-15 | 한국전자통신연구원 | 메모리 관리 장치 및 방법 |
-
2016
- 2016-09-19 CN CN201610830230.XA patent/CN106502918B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407443B1 (en) * | 2006-05-11 | 2013-03-26 | Nvidia Corporation | Off-chip out of order memory allocation for a unified shader |
CN101853215A (zh) * | 2010-06-01 | 2010-10-06 | 恒生电子股份有限公司 | 一种内存分配方法及装置 |
CN102915276A (zh) * | 2012-09-25 | 2013-02-06 | 武汉邮电科学研究院 | 一种用于嵌入式系统的内存控制方法 |
CN105354147A (zh) * | 2014-08-20 | 2016-02-24 | 腾讯科技(深圳)有限公司 | 一种内存池管理方法及管理系统 |
CN105468542A (zh) * | 2014-09-03 | 2016-04-06 | 杭州华为数字技术有限公司 | 地址分配方法及装置 |
CN104580447A (zh) * | 2014-12-29 | 2015-04-29 | 中国科学院计算机网络信息中心 | 一种基于访问热度的时空数据服务调度方法 |
CN104778125A (zh) * | 2015-04-03 | 2015-07-15 | 无锡天脉聚源传媒科技有限公司 | 一种内存管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106502918A (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106502918B (zh) | 一种内存调度方法及装置 | |
CN110162388A (zh) | 一种任务调度方法、系统及终端设备 | |
CN109213597A (zh) | 资源分配方法、装置、计算机设备及计算机可读存储介质 | |
CN106209682A (zh) | 业务调度方法、装置和系统 | |
CN105991478B (zh) | 服务器资源分配方法及其系统 | |
CN106407207A (zh) | 一种实时新增数据更新方法和装置 | |
CN112416585A (zh) | 面向深度学习的gpu资源管理与智能化调度方法 | |
CN105099951B (zh) | 一种资源调度方法及管理设备 | |
CN104461737B (zh) | 一种内存管理方法和装置 | |
CN103902384B (zh) | 为虚拟机分配物理机的方法及装置 | |
CN110866687A (zh) | 任务分配方法及装置 | |
CN109002377A (zh) | 一种处理器检测方法、处理器检测装置以及计算机设备 | |
CN105354147B (zh) | 一种内存池管理方法及管理系统 | |
CN110334993B (zh) | 一种对播种货位进行管控的方法、装置及计算机设备 | |
CN108170517A (zh) | 一种容器分配方法、装置、服务器及介质 | |
CN107864211A (zh) | 集群资源调度方法及系统 | |
CN110196775A (zh) | 一种计算任务处理方法、装置、设备以及可读存储介质 | |
CN105373434A (zh) | 资源管理系统及方法 | |
CN102855137B (zh) | 用于自动化部件的编程的方法和程序设计系统 | |
CN115658311A (zh) | 一种资源的调度方法、装置、设备和介质 | |
CN106874080B (zh) | 基于分布式服务器集群的数据计算方法及系统 | |
Kilby et al. | Flexible routing combing constraint programming, large neighbourhood search, and feature-based insertion | |
CN112465371B (zh) | 一种资源数据分配方法、装置及设备 | |
CN108595259A (zh) | 一种基于全局管理的内存池管理方法 | |
CN109783220A (zh) | 内存分配方法、装置、计算机系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |