一种内存管理方法及相关装置与流程

文档序号:35027468发布日期:2023-08-05 14:42阅读:33来源:国知局
一种内存管理方法及相关装置与流程

本技术涉及计算机,尤其涉及一种内存管理方法及相关装置。


背景技术:

1、随着计算机技术的发展以及人们对工作、生活的追求不断提高,终端设备上安装的应用程序(application,app)越来越丰富。内存管理作为操作系统的核心子系统之一,内存分配效率直接影响整个产品的性能及其用户体验。匿名页内存是应用程序使用内存的主要形态,匿名页具有以下特点,匿名页必须是单页;匿名页初始必须是清零状态。即在发生缺页的时候,内核为其分配的内存页必须要是清零状态。对一个4k的内存进行清零,其开销是比较大的,显著增加缺页的时延开销。

2、因此,如何提供一种内存管理方法,以提高内存分配效率是亟待解决的问题。


技术实现思路

1、本技术实施例所要解决的技术问题在于,提供一种内存管理方法及相关装置,以提高内存分配效率。

2、第一方面,本技术实施案例提供一种内存管理方法,其特征在于,应用于电子设备,所述电子设备包括n个处理器cpu,和与所述n个cpu耦合的内存;所述方法包括:将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;判断所述目标待回收页是否为热页,所述热页为与目标cpu内部的高速缓存具有映射关系的内存页,所述目标cpu为所述n个cpu中的任意一个;若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标cpu对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标cpu分配内存页。

3、在本技术实施例中,当电子设备中的内存中的内存页需要回收(也可称为内存释放)时,即将待回收的内存页上记录的数据进行清零,进行清零之后再进一步判断该内存页是否与目标cpu的高速缓存建立了映射关系,也即是判断该内存页是否为热页,若是,则可以将该页的页标识添加至目标cpu的内存页链表的头部,以便目标cpu发生缺页中断(即目标cpu申请使用内存页)时,将清零回收后的内存页直接分配给该目标cpu使用,从而提升内存分配效率。而现有技术中,在进行内存页回收时,将获取到的待回收内存页的页标识直接添加至待分配内存页链表中,当目标cpu发生缺页中断时,需要将链表中的内存页进行清零处理,然后再分配给目标cpu使用。与现有技术相比,在内存页回收过程中,本技术实施例增加了对内存页进行清零的过程,以实现将内存清零的时间开销从内存分配时转移到内存回收时(即在分配内存页时无需进行清零步骤),避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升内存的分配效率。同时,由于将与目标cpu的高速缓存建立了映射关系的目标待回收页的页标识添加至内存页链表的头部,因此基于内存页链表为目标cpu分配内存页时,可为目标cpu优先分配清零后的热页(已与目标cpu的高速缓存建立映射关系的内存页),因此目标cpu可以直接对该页进行读或写等操作,避免了需与高速缓存建立映射关系而增加时间开销的问题,从而能够提升访问内存页的效率。

4、在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。

5、在本技术实施例中,匿名页,是没有文件背景的页面,如堆,栈,数据段等,无法与磁盘(即外部存储器)进行文件交换;匿名页可为应用程序动态分配的堆内存,可用于临时存储应用程序运行过程中产生的数据。单页可以指内存中的一个物理页(如可以为4k大小的物理页)。因此,将应用程序刚使用完的匿名页,或是系统中待回收的单页,进行清零后回收,以便处理器发生缺页中断时,将清零回收后的内存页分配给处理器使用,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升内存的利用率及内存的分配效率。

6、在一种可能的实现方式中,所述将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页,包括:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。

7、在本技术实施例中,将目标内存页进行清零时,可以先判断该目标内存页是否为直接映射内存(即物理地址已经与逻辑地址建立了映射关系的内存页),若是,则可以直接基于该目标内存页的逻辑地址进行数据清零(即擦除数据),以得到能够重新使用的内存页(即清零后的目标待回收页)。若否,则代表当前目标内存页没有逻辑地址,操作系统内核不能直接对该目标内存页进行操作,因此可先获取一段未使用的逻辑地址与该目标内存页的物理地址建立映射关系,进而可以对该目标内存页进行操作,然后通过该逻辑地址对目标内存页进行数据清零处理,以得到能够重新使用的内存页。进一步地,当处理器发生缺页中断时,可将清零回收后的内存页分配给处理器使用,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升内存的利用率及内存的分配效率。

8、在一种可能的实现方式中,所述方法还包括:若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标cpu对应的所述内存页链表的尾部。

9、在本技术实施例中,若目标待回收页不为热页(即为冷页),则可以将该目标待回收页添加至内存页链表的尾部,以便在进行内存分配时,优先分配在高速缓存中(即热页)的清零空闲页,然后再分配冷页(即不在高速缓存中的清零空闲页),从而提升内存分配效率。

10、在一种可能的实现方式中,所述方法还包括:当所述目标cpu申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。

11、在本技术实施例中,当目标cpu申请使用内存时,可先从目标cpu对应的内存页链表的头部开始分配目标待回收页,即优先分配清零后的热页,由于数据清零是在内存页回收时进行的,即将内存清零的时间开销转移到释放内存时,当处理器发生缺页中断时,可以直接分配清零后的内存页,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升分配内存页的效率。同时,由于优先分配清零后的热页,因此目标cpu可以直接对该目标待回收页进行读或写等操作,避免了需与高速缓存建立映射关系而增加时间开销的问题,提升了访问内存页的效率。

12、在一种可能的实现方式中,所述方法还包括:当所述目标cpu对应的所述内存页链表为空时,获取所述内存中的空闲内存页;将所述空闲内存页进行清零,并分配给所述目标cpu。

13、在本技术实施例中,当目标cpu申请使用内存页时,若目标cpu对应的内存页链表中没有清零后的内存页,为了避免目标cpu出现异常(即由于目标cpu没有清零内存页使用而导致的异常)的问题,可从buddy系统中获取一个可用内存页(即空闲页),然后将该空闲页进行清零后,再分配给该目标cpu使用,从而提升内存的利用率。

14、在一种可能的实现方式中,所述方法还包括:判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述n个cpu所使用的空闲物理内存页。

15、在本技术实施例中,每个内存页链表中能够记录的目标待回收页的数量是有限的,可以为一个预设值,因此可判断内存页链表中所记录的目标待回收页的数量是否超过预设值。若超过,则可以将一定数量的目标待回收页的页标识添加至内存管理链表,该内存管理链表可以为buddy系统中的链表,用于管理电子设备中多个cpu所使用的空闲物理内存页,从而提升内存利用率。

16、第二方面,本技术提供了一种内存管理装置,其特征在于,所述内存管理装置包括n个处理器cpu,和与所述n个cpu耦合的内存;所述n个处理器cpu中的目标cpu用于,将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;所述目标cpu为所述n个cpu中的任意一个;判断所述目标待回收页是否为热页,所述热页为与所述目标cpu内部的高速缓存具有映射关系的内存页,若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标cpu对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标cpu分配内存页。

17、在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。

18、在一种可能的实现方式中,所述目标cpu具体用于:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。

19、在一种可能的实现方式中,所述目标cpu还用于:若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标cpu对应的所述内存页链表的尾部。

20、在一种可能的实现方式中,所述目标cpu还用于:当所述目标cpu申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。

21、在一种可能的实现方式中,所述目标cpu还用于:当所述目标cpu对应的所述内存页链表为空时,获取所述内存中的空闲内存页;将所述空闲内存页进行清零,并分配给所述目标cpu。

22、在一种可能的实现方式中,所述目标cpu还用于:判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述n个cpu所使用的空闲物理内存页。

23、第三方面,本技术实施例提供的一种内存管理装置,应用于电子设备,所述电子设备包括n个处理器cpu,和所述n个cpu耦合的内存。第一处理单元,用于将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;第一判断单元,用于判断所述目标待回收页是否为热页,所述热页为与目标cpu内部的高速缓存具有映射关系的内存页,所述目标cpu为所述n个cpu中的任意一个;第一添加单元,用于若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标cpu对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标cpu分配内存页。

24、在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。

25、在一种可能的实现方式中,所述第一处理单元具体用于:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。

26、在一种可能的实现方式中,所述装置还包括:第二添加单元用于,若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标cpu对应的所述内存页链表的尾部。

27、在一种可能的实现方式中,所述装置还包括:第二处理单元用于,当所述目标cpu申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。

28、在一种可能的实现方式中,所述装置还包括:第三处理单元用于,当所述目标cpu对应的所述内存页链表为空时,获取所述内存中的空闲内存页的页标识;将所述页标识对应的空闲内存页进行清零,并分配给所述目标cpu。

29、在一种可能的实现方式中,所述装置还包括:第四处理单元,用于判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述n个cpu所使用的空闲物理内存页。

30、第四方面,本技术提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面任意一项所述的方法。

31、第五方面,本技术实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现第一方面提供的一种内存管理方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。

32、第六方面,本技术提供了一种芯片系统,该芯片系统包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能,例如,生成或处理上述内存管理方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。

33、第七方面,本技术提供一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述第一方面中任意一项所述的方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1