内存分配方法、装置、存储介质及电子设备制造方法及图纸

技术编号:23982876 阅读:17 留言:0更新日期:2020-04-29 12:09
本申请实施例公开了一种内存分配方法、装置、存储介质及电子设备,其中,本申请实施例当接收到内存分配请求时,确定内存分配请求对应的内存需求量;获取由空闲内存页的页帧号构成的内存空间链表;按照页帧号在所述内存空间链表中的排列顺序,从所述内存空间链表中确定出与所述内存需求量匹配的第一目标页帧号;基于第一目标页帧号响应内存分配请求。通过这种内存分配方式,可以将已分配内存块集中管理,从整体上减小了内存空间的碎片化程度,提高了内存分配成功率。

Memory allocation method, device, storage medium and electronic equipment

【技术实现步骤摘要】
内存分配方法、装置、存储介质及电子设备
本申请涉及终端
,具体涉及一种内存分配方法、装置、存储介质及电子设备。
技术介绍
计算机系统的内存容量通常是有限的,而同一个计算机系统上却可以运行许多计算机应用程序,为了保证不同计算机应用程序高效地使用系统内存,就需要对系统内存进行有效管理,这是计算机领域中的一项关键技术。然而目前Linux操作系统在运行一段时间后,经过频繁的页交换之后,使物理内存中空闲页框的分布变得很分散、零碎,即出现大量的“内存碎片”。这些碎片的总容量可能足够大,但在空间上不连续。若内存碎片越来越多,就会导致内存分配成功率低。
技术实现思路
本申请实施例提供一种内存分配方法、装置、存储介质及电子设备,能够提高内存分配成功率。第一方面,本申请实施例提供一种内存分配方法,包括:当接收到内存分配请求时,确定所述内存分配请求对应的内存需求量;获取由空闲内存页的页帧号构成的内存空间链表,其中,所述内存空间链表中的页帧号按照由小到大的顺序排列;按照页帧号在所述内存空间链表中的排列顺序,从所述内存空间链表中确定出与所述内存需求量匹配的第一目标页帧号;基于所述第一目标页帧号响应所述内存分配请求。第二方面,本申请实施例还提供一种内存分配装置,包括:请求接收模块,用于当接收到内存分配请求时,确定所述内存分配请求对应的内存需求量;链表管理模块,用于获取由内存空间中的空闲内存页的页帧号构成的内存空间链表,其中,所述内存空间链表中的页帧号按照由小到大的顺序排列;内存页确定模块,用于按照页帧号在所述内存空间链表中的排列顺序,从所述内存空间链表中确定出与所述内存需求量匹配的第一目标页帧号;内存分配模块,用于基于所述第一目标页帧号响应所述内存分配请求。第三方面,本申请实施例还提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的内存分配方法。第四方面,本申请实施例还提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的内存分配方法。本申请实施例提供的技术方案,针对内存空间中的空闲内存页,维护有一个内存空间链表,该内存空间链表由空闲内存页的页帧号构成,并且所述内存空间链表中的页帧号按照由小到大的顺序排列,当接收到内存分配请求,需要进行内存分配时,获取该链表,按照页帧号在所述内存空间链表中的排列顺序,从所述内存空间链表中确定出与所述内存需求量匹配的第一目标页帧号,基于第一目标页帧号响应内存分配请求,通过这种内存分配方式,可以在内存分配时,无论是从链表的哪一端选择页帧号,都可以使得分配的内存页比较集中,从整体上减小了内存空间的碎片化程度,提高了内存分配成功率。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的内存分配方法的第一种流程示意图。图2为本申请实施例提供的内存分配方法的内存空间示意图。图3为本申请实施例提供的内存分配方法的内存空间链表的示意图。图4为本申请实施例提供的内存分配方法的第二种流程示意图。图5为本专利技术实施例提供的内存分配方法的释放页面的处理流程示意图。图6为本申请实施例提供的内存分配装置的结构示意图。图7为本申请实施例提供的电子设备的第一种结构示意图。图8为本申请实施例提供的电子设备的第二种结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。本申请实施例提供一种内存分配方法,该内存分配方法的执行主体可以是本申请实施例提供的内存分配装置,或者集成了该内存分配装置的电子设备,其中该内存分配装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。请参阅图1,图1为本申请实施例提供的内存分配方法的第一种流程示意图。本申请实施例提供的内存分配方法的具体流程可以如下:101、当接收到内存分配请求时,确定所述内存分配请求对应的内存需求量。电子设备的系统和应用程序的进程的运行,都需要系统内核为其分配内存空间。并且随着系统的运行,内存空间中的内存页经过多次分配、释放操作,会产生很多不连续的、分散的空闲内存页,这样的空闲内存页即为内存碎片。并且随着系统的运行时间越长,内存碎片越多。当进程请求的内存量大,即请求的是大块内存(也称为高阶内存)时,即使内存空间中总的空闲内存页满足需求,但是由于大量的内存碎片存在,会导致分配不了连续的内存,造成内存分配失败。此时,就需要先对内存碎片进行整理,以得到连续的可分配内存空间,才能继续进行内存分配。其中,关于内存的阶数(order)的解释如下:由于内存分配一般都是按照2的整次幂进行分配,例如,分配order=2的内存,实际分配的是4K*22=16KB的内存,其中,一个内存页的大小为4KB。一般将内存需求量的阶数大于预设阶数的请求,称为高阶分配请求,即请求的是高阶内存。例如,预设阶数为2,则将order>2的连续内存空间称为高阶内存,反之,称为低阶内存。高阶内存对应的内存页的数量较多,例如,某进程请求32KB的内存,则需要为其分配连续的8个内存页。该请求可以认为是一个高阶分配请求。其中,在其他实施例中,一个内存页的大小还可以根据需要设置为其他值。由于碎片整理需要一定的时间,并且内存碎片整理需要涉及到内存页数据的搬迁,耗费时间长,此外,遇到一些内存页不可搬迁(例如内核页面)时,还需要继续回收,如果每一次接收到内存分配请求,都需要先进行内存碎片整理才能进行内存的分配,会导致内存分配效率低。102、获取由空闲内存页的页帧号构成的内存空间链表,其中,所述内存空间链表中的页帧号按照由小到大的顺序排列。为了解决上述问题,本申请提出的内存分配方案中,维护针对内存空间中的空闲内存页,维护有一个内存空间链表,该内存空间链表由空闲内存页的页帧号构成,并且所述内存空间链表中的页帧号按照由小到大的顺序排列。例如,内存空间链表中的页帧号可以按照由小本文档来自技高网...

【技术保护点】
1.一种内存分配方法,其特征在于,包括:/n当接收到内存分配请求时,确定所述内存分配请求对应的内存需求量;/n获取由空闲内存页的页帧号构成的内存空间链表,其中,所述内存空间链表中的页帧号按照由小到大的顺序排列;/n按照页帧号在所述内存空间链表中的排列顺序,从所述内存空间链表中确定出与所述内存需求量匹配的第一目标页帧号;/n基于所述第一目标页帧号响应所述内存分配请求。/n

【技术特征摘要】
1.一种内存分配方法,其特征在于,包括:
当接收到内存分配请求时,确定所述内存分配请求对应的内存需求量;
获取由空闲内存页的页帧号构成的内存空间链表,其中,所述内存空间链表中的页帧号按照由小到大的顺序排列;
按照页帧号在所述内存空间链表中的排列顺序,从所述内存空间链表中确定出与所述内存需求量匹配的第一目标页帧号;
基于所述第一目标页帧号响应所述内存分配请求。


2.如权利要求1所述的内存分配方法,其特征在于,所述内存空间链表中的页帧号按照由小到大从起始端排列至终止端;所述按照页帧号在所述内存空间链表中的排列顺序,从所述内存空间链表中确定出与所述内存需求量匹配的第一目标页帧号,包括:
当所述内存需求量小于预设内存阈值时,从所述内存空间链表的起始端确定出与内存需求量匹配的第一目标页帧号;
当所述内存需求量不小于所述预设内存阈值时,从所述内存空间链表的终止端确定出与所述内存需求量匹配的第一目标页帧号。


3.如权利要求1所述的内存分配方法,其特征在于,还包括:
当检测到有已分配页面释放时,确定所述已分配页面对应的第二目标页帧号;
确定所述第二目标页帧号在所述内存空间链表中的目标位置;
根据所述目标位置将所述目标页帧号添加至所述内存空间链表。


4.如权利要求3所述的内存分配方法,其特征在于,确定所述第二目标页帧号在所述内存空间链表中的目标位置,包括:
判断所述第二目标页帧号是否大于预设页帧号阈值;
当所述第二目标页帧号大于所述预设页帧号阈值时,从所述终止端起遍历所述内存空间链表,直至访问到页帧号小于所述第二目标页帧号的第三目标页帧号;
当所述第二目标页帧号不大于所述预设页帧号阈值时,从所述起始端起遍历所述内存空间链表,直至访问到页帧号大于所述第二目标页帧号的第三目标页帧号;
将所述第三目标页帧号所在的位置作为目标位置。


5.如权利要求3所述的内存分配方法,其特征在于,所述确定所述第二目标页帧号在所述内存空间链表中的目标位置,...

【专利技术属性】
技术研发人员:张诗明
申请(专利权)人:OPPO重庆智能科技有限公司
类型:发明
国别省市:重庆;50

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1