一种内存申请方法、装置、终端及计算机可读存储介质

著录项
  • CN201811360057.7
  • 20181115
  • CN109522121A
  • 20190326
  • 郑州云海信息技术有限公司
  • 亓国强
  • G06F9/50
  • G06F9/50

  • 河南省郑州市郑东新区心怡路278号16层1601室
  • 河南(41)
  • 北京集佳知识产权代理有限公司
  • 罗满
摘要
本发明公开了一种内存申请方法,包括:根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;将各个可用内存资源信息存储在内存管理结构中;当接收到内存资源使用请求时,判断内存管理结构中是否存在可用内存资源信息;若存在,则根据内存资源使用请求,返回从内存管理结构中调取的相应可用内存资源信息;该方法采用一次性申请内存,频繁使用的方式,提高内存使用性能,极大减少内存申请次数,进而提升存储系统的IO性能,避免相关技术中需要在内存使用过程中大量执行申请内存、释放内存的操作;本发明还公开了一种内存申请装置、终端及计算机可读存储介质,具有上述有益效果。
权利要求

1.一种内存申请方法,其特征在于,包括:

根据存储性能需求确定内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;

将各个所述可用内存资源信息存储在内存管理结构中;

当接收到内存资源使用请求时,判断所述内存管理结构中是否存在所述可用内存资源信息;

若存在,则根据所述内存资源使用请求,返回从所述内存管理结构中调取的相应可用内存资源信息。

2.根据权利要求1所述的内存申请方法,其特征在于,当所述内存管理结构中不存在可用内存资源信息时,包括:

将所述内存资源使用请求放置到等待队列中;

当监测到所述内存管理结构中存在所述可用内存资源信息时,利用等待队列回调函数从所述等待队列中调取对应的内存资源使用请求。

3.根据权利要求1所述的内存申请方法,其特征在于,还包括:

当接收到内存资源释放请求时,将对应的可用内存资源信息存储至所述内存管理结构中。

4.根据权利要求1所述的内存申请方法,其特征在于,所述将各个所述可用内存资源信息存储在内存管理结构中,包括:

将各个所述可用内存资源信息存储在内存管理链表中。

5.根据权利要求1至4任一项所述的内存申请方法,其特征在于,所述根据存储性能需求确定内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息,包括:

根据所述存储性能需求确定所述内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;

在需要执行后续内存申请操作的可用内存资源信息内确定对应的指针字段指向后续所需内存资源。

6.一种内存申请装置,其特征在于,包括:

初始化内存申请模块,用于根据存储性能需求确定内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;将各个所述可用内存资源信息存储在内存管理结构中;

判断模块,用于当接收到内存资源使用请求时,判断所述内存管理结构中是否存在所述可用内存资源信息;

内存资源分配模块,用于若存在所述可用内存资源信息,则根据所述内存资源使用请求,返回从所述内存管理结构中调取的相应可用内存资源信息。

7.根据权利要求6所述的内存申请装置,其特征在于,包括:

内存资源等待模块,用于当所述内存管理结构中不存在可用内存资源信息时将所述内存资源使用请求放置到等待队列中;当监测到所述内存管理结构中存在所述可用内存资源信息时,利用等待队列回调函数从所述等待队列中调取对应的内存资源使用请求。

8.根据权利要求6或7所述的内存申请装置,其特征在于,所述初始化内存申请模块,包括:

初始化内存申请单元,用于根据所述存储性能需求确定所述内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;

二次内存申请单元,用于在需要执行后续内存申请操作的可用内存资源信息内确定对应的指针字段指向后续所需内存资源。

9.一种终端,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述的内存申请方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的内存申请方法的步骤。

说明书
技术领域

本发明涉及服务器技术领域,特别涉及一种内存申请方法、装置、终端及计算机可读存储介质。

随着大数据时代的到来,对存储设备的高负载、低时延的要求越来越高,这就要求存储设备的具备足够高的IOPS(Input/Output Operations Per Second,每秒进行读写(I/O)操作的次数),从而支撑日益膨胀的海量数据业务。目前,存储设备在申请内存时需要反复执行申请内存、释放内存、再申请内存的过程。由于在整个使用过程中存储设备需要大量执行申请内存、释放内存的操作,造成存储设备的IO性能降低。

本发明的目的是提供一种内存申请方法、装置、终端及计算机可读存储介质,能够提高存储设备的内存使用性能,极大减少内存申请次数,进而提升存储系统的IO性能。

为解决上述技术问题,本发明提供一种内存申请方法,包括:

根据存储性能需求确定内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;

将各个所述可用内存资源信息存储在内存管理结构中;

当接收到内存资源使用请求时,判断所述内存管理结构中是否存在所述可用内存资源信息;

若存在,则根据所述内存资源使用请求,返回从所述内存管理结构中调取的相应可用内存资源信息。

可选地,当所述内存管理结构中不存在可用内存资源信息时,包括:

将所述内存资源使用请求放置到等待队列中;

当监测到所述内存管理结构中存在所述可用内存资源信息时,利用等待队列回调函数从所述等待队列中调取对应的内存资源使用请求。

可选地,所述内存申请方法还包括:

当接收到内存资源释放请求时,将对应的可用内存资源信息存储至所述内存管理结构中。

可选地,所述将各个所述可用内存资源信息存储在内存管理结构中,包括:

将各个所述可用内存资源信息存储在内存管理链表中。

可选地,所述根据存储性能需求确定内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息,包括:

根据所述存储性能需求确定所述内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;

在需要执行后续内存申请操作的可用内存资源信息内确定对应的指针字段指向后续所需内存资源。

本发明还提供一种内存申请装置,包括:

初始化内存申请模块,用于根据存储性能需求确定内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;将各个所述可用内存资源信息存储在内存管理结构中;

判断模块,用于当接收到内存资源使用请求时,判断所述内存管理结构中是否存在所述可用内存资源信息;

内存资源分配模块,用于若存在所述可用内存资源信息,则根据所述内存资源使用请求,返回从所述内存管理结构中调取的相应可用内存资源信息。

可选地,所述内存申请装置包括:

内存资源等待模块,用于当所述内存管理结构中不存在可用内存资源信息时将所述内存资源使用请求放置到等待队列中;当监测到所述内存管理结构中存在所述可用内存资源信息时,利用等待队列回调函数从所述等待队列中调取对应的内存资源使用请求。

可选地,所述初始化内存申请模块,包括:

初始化内存申请单元,用于根据所述存储性能需求确定所述内存申请数量,并根据所述内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;

二次内存申请单元,用于在需要执行后续内存申请操作的可用内存资源信息内确定对应的指针字段指向后续所需内存资源。

本发明还提供一种终端,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述所述的内存申请方法的步骤。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的内存申请方法的步骤。

本发明所提供的一种内存申请方法,包括:根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;将各个可用内存资源信息存储在内存管理结构中;当接收到内存资源使用请求时,判断内存管理结构中是否存在可用内存资源信息;若存在,则根据内存资源使用请求,返回从内存管理结构中调取的相应可用内存资源信息。

可见,该方法在存储设备就根据存储性能需求确定内存申请数量,并一次性申请与内存申请数量对应的可用内存资源信息,后续在使用内存资源的过程中不需要再进行内存申请,只需要从内存管理结构中获取对应的已申请的可用内存资源信息,即可使用该可用内存资源信息对应的内存资源,并在使用完成后将该可用内存资源信息放回内存管理结构中即可(也即实现了一次申请的可用内存资源信息的重复使用);也就是说该方法采用一次性申请内存,频繁使用已申请内存的方式,提高了存储设备的内存使用性能,极大减少内存申请次数,进而提升存储系统的IO性能,避免了相关技术中需要在内存使用过程中大量执行申请内存、释放内存的操作;本发明还提供了一种内存申请装置、终端及计算机可读存储介质,具有上述有益效果,在此不再赘述。

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的内存申请方法的流程图;

图2为本发明实施例所提供的内存申请装置的结构框图。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,相关技术中系统需要使用内存时,必须要执行申请内存操作,并在内存使用完成后执行释放内存操作。可以理解的是,在整个使用过程中存储设备需要大量执行申请内存、释放内存的操作。这样大量的重复性操作会造成系统资源的占用,导致存储设备的IO性能降低。本实施例通过一次性申请内存,频繁使用已申请内存的方式解决上述问题。具体请参考图1,图1为本发明实施例所提供的内存申请方法的流程图;该方法可以包括:

S101:根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息。

由于本实施例为了减少内存申请次数,可以通过一次性申请内存,直接申请好内存,后续只需要频繁使用已申请内存即可。不需要再反反复复地执行申请内存以及释放内存的操作。进而可以实现提高存储设备的内存使用性能,极大减少内存申请次数,进而提升存储系统的IO性能的目的。

本实施例中并不限定步骤S101执行的时机。例如可以是在初始化时直接执行步骤S101;也可以是在接收到一次性内存申请命令时执行步骤S101。由于存储系统在开始正常工作时一般就会需要内存,因此为了提高存储系统的工作效率。优选的,本实施例中一次性将内存申请,可以直接在初始化的时候执行内存申请操作。这样在初始化完成后,存储系统就可以直接使用已申请好的可用内存资源信息,不需要再反复进行内存申请。

进一步,本实施例并不限定存储设备在一次性申请内存时需要申请的内存的数量。也就是说本实施例中并不对内存申请数量进行限定,例如用可以根据存储设备内存的大小以及存储性能需求确定内存申请数量,如存储服务一般执行的存储过程所需要的内存空间比较统一,因此可以按照存储领域常用内存空间大小作为内存申请数量确定的一个依据。当然本实施例不限定存储性能需求与内存申请数量之间的对应关系。用户可以根据实际应用场景进行确定。

本实施例在确定内存申请数量后,就执行内存申请操作,得到内存申请数量个可用内存资源信息。例如当内存申请数量为1000时,对应的可用内存资源信息的数量也为1000个。本实施例并不对可用内存资源信息得到内容进行限定,可以参考相关技术中申请内存后得到的申请后内存信息。例如可用内存资源信息可以是该可用内存区域的首地址信息。

需要说明的是,由于许多存储服务对应的存储操作的过程会涉及到多次内存需求。例如一个存储操作过程分为两个部分,第一个部分申请到内存并执行完成后,过一定时间,需要再次申请内存执行第二部分,以便完成整个存储操作。相关技术中针对该问题时,一般都是分两次申请内存。即重复执行两次申请内存、释放内存的操作。本实施例为了实现在这种情况下,减少内存申请次数,且减少后续申请内存的操作对IO处理效率的影响。本实施例中优选的,根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息可以包括:

根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;

在需要执行后续内存申请操作的可用内存资源信息内确定对应的指针字段指向后续所需内存资源。

具体的,本实施例中并不对需要执行后续内存申请操作的可用内存资源信息进行限定。用户可以根据实际情况选择已经申请好的可用内存资源信息作为需要执行后续内存申请操作的可用内存资源信息。当然,本实施例也不限定需要执行后续内存申请操作的可用内存资源信息的数量。

本实施例也不限定需要执行后续内存申请操作的次数。例如可以只有一次后续的内存申请(如二次内存申请),也可以是具有多次后续的内存申请。只要每次后续的内存申请都对应一个指针字段即可。该指针字段指向该后续的内存申请所需要的内存资源(如该后续的内存申请所需要的内存资源的首地址)。这里的指针字段指向后续所需内存资源是对应的执行后续内存申请操作的可用内存资源信息内的内存区域(也就是对应的执行后续内存申请操作的可用内存资源信息对应的内存区域的一部分)。例如,当一个执行后续内存申请操作的可用内存资源信息对应的内存区域为1-16,其具有一个指针字段,该指针字段指向8,则二次申请的内存资源对应的内存区域为8-16。

可以理解为,需要后续申请内存的也同时申请好各自对应的内存,具体可以通过设置字段,其中该字段可以为指针类型,在得到后续各个内存申请对应的内存资源后,将该内存资源赋值到对应指针字段。下面以二次申请为例对上述过程进行说明:需要二次申请内存的也同时申请好内存,具体可以通过设置字段,其中该字段可以为指针类型,二次申请对应内存资源后,将该内存资源赋值到对应指针字段。

S102:将各个可用内存资源信息存储在内存管理结构中。

由于后续已经申请好的可用内存资源信息需要反复使用,因此本实施例中利用内存管理结构对这些可用内存资源信息进行管理。本实施例中并不对内存管理结构进行限定。例如可以是链表结构。即本实施例中将各个可用内存资源信息存储在内存管理链表中。即将事先申请好的内存,统一挂载到内存管理链表中。通过内存管理链表来对可用内存资源信息进行管理。当用户需要内存资源时,将内存管理链表中的可用内存资源信息调取给对应用户。当用户使用完内存后,在将该可用内存资源信息存储至内存管理链表中。

S103:当接收到内存资源使用请求时,判断内存管理结构中是否存在可用内存资源信息;若是,则进入步骤S104;若否,则进入步骤S105。

本实施例中在接收到内存资源使用请求时,首先要判断内存管理结构中是否存在可用内存资源信息,并根据判定结果执行后续操作。例如若存在可用内存资源信息,则调取相应可用内存资源信息给用户;若不存在可用内存资源信息,则等待释放的可用内存资源信息后,再调取相应可用内存资源信息给用户。当然,本实施例并不对判断过程进行限定。例如可以是在接收到内存资源使用请求时,仅判断内存管理结构中是否存在可用内存资源信息。只要存在即表示该判断结果为存在,不存在即表示该判断结果为不存在。也可以是接收到内存资源使用请求时,首先根据内存资源使用请求确定其所需的可用内存资源信息数量,然后再判断内存管理结构中是否存在满足该数量的可用内存资源信息,此时只要存在满足该数量的可用内存资源信息时即表示该判断结果为存在,只要不存在满足该数量的可用内存资源信息时即表示该判断结果为不存在。

S104:根据内存资源使用请求,返回从内存管理结构中调取的相应可用内存资源信息。

可以理解的是,本实施例中从内存管理结构中调取的相应可用内存资源信息的数量是根据上述步骤的判断过程来确定的。例如可以是从内存管理结构中调取的一个可用内存资源信息;也可以是从内存管理结构中调取的相应满足该数量的可用内存资源信息。调取的过程可以理解为将相应的可用内存资源信息从内存管理结构中取出返回给对应的用户。此时内存管理结构中就不存在调取的相应的可用内存资源信息。具体的,使用内存时,摘取相应的链表节点(其中,该链表节点即可用内存资源信息)。

S105:执行等待可用内存资源信息的操作。

可以理解的是,若当前的内存管理结构中没有可用的可用内存资源信息。就无法给用户相应的内存资源供用户使用。此时用户只能等待,直到内存管理结构中存在该用户所需的可用内存资源信息为止。当然,本实施例并不对具体的等待形式进行限定。例如可以使用队列实现先入先出的等待顺序。具体的,若内存管理结构中没有可用的可用内存资源信息时,则将内存资源使用请求挂入等待队列。对应的,本实施例也可以是设置等待队列回调函数,待内存管理结构中存在可用内存资源信息时,回调等待队列中相关的内存资源使用请求。即优选的,当内存管理结构中不存在可用内存资源信息时可以包括:

将内存资源使用请求放置到等待队列中;

当监测到内存管理结构中存在可用内存资源信息时,利用等待队列回调函数从等待队列中调取对应的内存资源使用请求。以便根据该内存资源使用请求执行上述步骤S104。

当接收到内存资源释放请求时,本实施例还可以包括:

将对应的可用内存资源信息存储至内存管理结构中。

下面以内存管理链表为例说明该过程,即接收到内存资源释放请求时,将链表节点(也就是对应的可用内存资源信息)挂回内存管理链表中,以便后续继续使用。

基于上述技术方案,本发明实施例提供的内存申请方法,该方法在存储设备就根据存储性能需求确定内存申请数量,并一次性申请与内存申请数量对应的可用内存资源信息,后续在使用内存资源的过程中不需要再进行内存申请,只需要从内存管理结构中获取对应的已申请的可用内存资源信息,即可使用该可用内存资源信息对应的内存资源,并在使用完成后将该可用内存资源信息放回内存管理结构中即可,也即实现了一次申请的可用内存资源信息的重复使用;也就是说该方法采用一次性申请内存,频繁使用已申请内存的方式,提高了存储设备的内存使用性能,极大减少内存申请次数,进而提升存储系统的IO性能,避免了相关技术中需要在内存使用过程中大量执行申请内存、释放内存的操作。

下面对本发明实施例提供的内存申请装置、终端及计算机可读存储介质进行介绍,下文描述的内存申请装置、终端及计算机可读存储介质与上文描述的内存申请方法可相互对应参照。

请参考图2,图2为本发明实施例所提供的内存申请装置的结构框图;该装置可以包括:

初始化内存申请模块100,用于根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;将各个可用内存资源信息存储在内存管理结构中;

判断模块200,用于当接收到内存资源使用请求时,判断内存管理结构中是否存在可用内存资源信息;

内存资源分配模块300,用于若存在可用内存资源信息,则根据内存资源使用请求,返回从内存管理结构中调取的相应可用内存资源信息。

具体的,本实施例并不对内存管理结构的形式进行限定,例如可以是内存管理链表。

基于上述实施例,该装置包括:

内存资源等待模块,用于当内存管理结构中不存在可用内存资源信息时将内存资源使用请求放置到等待队列中;当监测到内存管理结构中存在可用内存资源信息时,利用等待队列回调函数从等待队列中调取对应的内存资源使用请求。

基于上述任意实施例,该装置还可以包括:

内存资源释放模块,用于当接收到内存资源释放请求时,将对应的可用内存资源信息存储至内存管理结构中。

基于上述任意实施例,初始化内存申请模块100可以包括:

初始化内存申请单元,用于根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;

二次内存申请单元,用于在需要执行后续内存申请操作的可用内存资源信息内确定对应的指针字段指向后续所需内存资源。

需要说明的是,基于上述任意实施例,装置可以是基于可编程逻辑器件实现的,可编程逻辑器件包括FPGA,CPLD,单片机,处理器等。该可编程逻辑器件可以集成在终端,例如存储设备中。

本发明实施例还提供一种终端,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现上述任意实施例的内存申请方法的步骤。如处理器用于执行计算机程序时实现根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;将各个可用内存资源信息存储在内存管理结构中;当接收到内存资源使用请求时,判断内存管理结构中是否存在可用内存资源信息;若存在,则根据内存资源使用请求,返回从内存管理结构中调取的相应可用内存资源信息。

具体的,本实施例中并不对终端的具体形式进行限定。例如可以是存储设备。

本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的内存申请方法的步骤。如计算机程序被处理器执行时实现根据存储性能需求确定内存申请数量,并根据内存申请数量执行对应的内存申请操作,得到各个可用内存资源信息;将各个可用内存资源信息存储在内存管理结构中;当接收到内存资源使用请求时,判断内存管理结构中是否存在可用内存资源信息;若存在,则根据内存资源使用请求,返回从内存管理结构中调取的相应可用内存资源信息。

该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、终端及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上对本发明所提供的一种内存申请方法、装置、终端及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

本文发布于:2024-09-24 18:26:58,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/85510.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议