CN109144718A - 一种内存分配方法、内存释放方法以及相关设备 - Google Patents

一种内存分配方法、内存释放方法以及相关设备 Download PDF

Info

Publication number
CN109144718A
CN109144718A CN201810734430.4A CN201810734430A CN109144718A CN 109144718 A CN109144718 A CN 109144718A CN 201810734430 A CN201810734430 A CN 201810734430A CN 109144718 A CN109144718 A CN 109144718A
Authority
CN
China
Prior art keywords
memory
partitioning
task
memory partitioning
available
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
Application number
CN201810734430.4A
Other languages
English (en)
Inventor
吴平平
潘颖曦
蔡万伟
杨鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bitmain Technologies Inc
Beijing Bitmain Technology Co Ltd
Original Assignee
Beijing Bitmain Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Bitmain Technology Co Ltd filed Critical Beijing Bitmain Technology Co Ltd
Priority to CN201810734430.4A priority Critical patent/CN109144718A/zh
Publication of CN109144718A publication Critical patent/CN109144718A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本发明实施例公开了一种内存分配方法、内存释放方法以及相关设备,适用于计算机存储技术领域。可接收携带有任务和任务标识的内存分配请求;并可根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;以及,可在所述内存分区中为所述任务分配可用内存空间。相比于现有技术,当需要进行内存空间的分配时,可先在空闲内存中确定任务的任务标识所对应的内存分区,并可在该内存分区中为所述任务分配可用内存空间,使具备同一任务标识的任务处于连续的内存空间,而不被分散在非连续的内存空间中,从而防止了内存的碎片化,提升了内存的使用效率。

Description

一种内存分配方法、内存释放方法以及相关设备
技术领域
本发明涉及计算机存储技术领域,尤其涉及一种内存分配方法、内存释放方法以及相关设备。
背景技术
目前,业内常用的内存分配方式通常可为以下方式:
在接收到携带有相应任务的内存分配请求之后,可确定空闲内存中的下一可用内存空间,然后,可将确定的下一可用内存空间分配给该任务。但是,申请人在研究中发现,在实际的应用中,由于需要分配内存的任务的重要性和复杂度都是不同的,当非重要任务和重要任务交错出现时,可能就会导致整个内存出现碎片化,从而影响内存的使用效率。
也就是说,现有的内存分配方法存在内存使用效率较低的问题。
发明内容
第一方面,本发明实施例提供了一种内存分配方法,包括:
接收内存分配请求;所述内存分配请求中包括任务和任务标识;
根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;
在所述内存分区中为所述任务分配可用内存空间。
结合第一方面,在第一方面的第一种可能的实现方式中,所述任务标识与内存分区的对应关系是在接收内存分配请求之前,通过下述方式得到的:
将空闲内存划分为至少一组内存分区组;
将每一个内存分区组按照物理地址由低到高的顺序依次划分为连续的第一内存分区、第二内存分区和第三内存分区;
为每一个内存分区配置相应的任务标识,以建立任务标识与内存分区之间的对应关系。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区,包括:
当所述任务的任务标识为第一标识时,将所述第一内存分区作为与所述任务相对应的内存分区;
当所述任务的任务标识为第二标识时,将所述第二内存分区作为与所述任务相对应的内存分区;
当所述任务的任务标识为第三标识时,将所述第三内存分区作为与所述任务相对应的内存分区。
结合第一方面~第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述内存分区中为所述任务分配可用内存空间,包括:
确定所述内存分区所对应的内存链表;
读取所述内存链表,并从所述内存分区中确定出可用内存空间;
将所述可用内存空间分配给所述任务。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,读取所述内存链表,并从所述内存分区中确定出可用内存空间,包括:
确定所述内存分区的配置顺序;其中,所述第一内存分区的配置顺序为物理地址由低至高的顺序,所述第二内存分区的配置顺序为任意的顺序,所述第三内存分区的配置顺序为物理地址由高至低的顺序;
从所述内存分区的下一可用起始物理地址开始,沿所述内存分区的配置顺序为所述任务分配可用内存空间;其中,所述第一内存分区的下一可用起始物理地址为所述第一内存分区内可用的最低位物理地址,所述第二内存分区的下一可用物理起始地址为所述第二内存分区内的可用的任一物理地址,所述第三内存分区的下一可用起始物理地址为所述第三内存分区内可用的最高位物理地址。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述内存为SRAM,所述第一内存分区和第三内存分区分别位于所述SRAM的不同的BANK中。
结合第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,所述内存为DRAM,所述第一内存分区和第三内存分区分别位于所述DRAM的不同的CHANNEL中。
第二方面,本发明实施例提供了一种内存释放方法,包括:
针对任一待释放内存空间,确定所述待释放内存空间中任务的任务标识;
判断所述待释放内存空间是否满足释放条件;
若满足,则将所述待释放内存空间进行释放,并将释放后的内存空间记录到空闲内存中与所述任务标识相对应的内存分区中。
第三方面,本发明实施例提供了一种内存分配装置,包括:
接收模块,用于接收内存分配请求;所述内存分配请求中包括任务和任务标识;
选择模块,用于根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;
分配模块,用于在所述内存分区中为所述任务分配可用内存空间。
结合第三方面,在第三方面的第一种可能的实现方式中,所述内存分配装置还包括:
建立模块,用于在接收内存分配请求之前,将空闲内存划分为至少一组内存分区组;并,将每一个内存分区组按照物理地址由低到高的顺序依次划分为连续的第一内存分区、第二内存分区和第三内存分区;以及,为每一个内存分区配置相应的任务标识,以建立任务标识与内存分区之间的对应关系。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述选择模块,用于当所述任务的任务标识为第一标识时,将所述第一内存分区作为与所述任务相对应的内存分区;并,当所述任务的任务标识为第二标识时,将所述第二内存分区作为与所述任务相对应的内存分区;以及,当所述任务的任务标识为第三标识时,将所述第三内存分区作为与所述任务相对应的内存分区。
结合第三方面~第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述分配模块,用于确定所述内存分区所对应的内存链表;并,读取所述内存链表,并从所述内存分区中确定出可用内存空间;以及,将所述可用内存空间分配给所述任务。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述分配模块,用于确定所述内存分区的配置顺序;并从所述内存分区的下一可用起始物理地址开始,沿所述内存分区的配置顺序为所述任务分配可用内存空间;
其中,所述第一内存分区的配置顺序为物理地址由低至高的顺序,所述第二内存分区的配置顺序为任意的顺序,所述第三内存分区的配置顺序为物理地址由高至低的顺序,所述第一内存分区的下一可用起始物理地址为所述第一内存分区内可用的最低位物理地址,所述第二内存分区的下一可用物理起始地址为所述第二内存分区内的可用的任一物理地址,所述第三内存分区的下一可用起始物理地址为所述第三内存分区内可用的最高位物理地址。
结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述内存为SRAM,所述第一内存分区和第三内存分区分别位于所述SRAM的不同的BANK中。
结合第三方面的第四种可能的实现方式,在第三方面的第六种可能的实现方式中,所述内存为DRAM,所述第一内存分区和第三内存分区分别位于所述DRAM的不同的CHANNEL中。
第四方面,本发明实施例提供了一种内存释放装置,包括:
确定单元,用于针对任一待释放内存空间,确定所述待释放内存空间中任务的任务标识;
判断单元,用于判断所述待释放内存空间是否满足释放条件;
释放单元,用于若满足,则将所述待释放内存空间进行释放,并将释放后的内存空间记录到空闲内存中与所述任务标识相对应的内存分区中。
第五方面,本发明实施例提供了一种电子设备,包括本发明实施例中所述的内存分配装置以及本发明实施例中所述的内存释放装置。
第六方面,本发明实施例提供了一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,以执行本发明实施例中所述的内存分配方法。
第七方面,本发明实施例提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行本发明实施例中所述的内存分配方法。
第八方面,本发明实施例提供了一种计算机,包括:
存储设备,用于存储程序指令;
处理设备,用于调用所述存储器中存储的程序指令,以执行本发明实施例中所述的内存释放方法。
第九方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行本发明实施例中所述的内存释放方法。
本发明有益效果如下:
结合上述第一方面~第九方面,本发明实施例提供了一种内存分配方法、内存释放方法以及相关设备,可接收携带有任务和任务标识的内存分配请求;并可根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;以及,可在所述内存分区中为所述任务分配可用内存空间。相比于现有技术,在本发明实施例中,当需要进行内存空间的分配时,可先在空闲内存中确定任务的任务标识所对应的内存分区,并可在确定出的内存分区中为所述任务分配相应的可用内存空间。这样一来,具备同一任务标识的任务可处在相互连续的内存空间中,而不会被分散在非连续的内存空间中,从而防止了内存的碎片化,提升了内存的使用效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1所示为本发明实施例一中提供的内存分配方法的流程示意图;
图2所示为本发明实施例一中提供的内存分区组的结构示意图;
图3所示为本发明实施例一中提供的各内存分区的配置顺序的简单示意图;
图4所示为本发明实施例一中提供的内存释放方法的流程示意图;
图5所示为本发明实施例二中提供的内存分配装置的结构示意图;
图6所示为本发明实施例二中提供的内存释放装置的结构示意图;
图7所示为本发明实施例二中提供的电子设备的结构示意图;
图8所示为本发明实施例三中提供的计算机设备的结构示意图;
图9所示为本发明实施例五中提供的计算机的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一:
为了解决现有的内存分配方法所存在的内存碎片化较严重以及内存使用效率较低的问题,本发明实施例提供了一种内存分配方法,如图1所示,其为本发明实施例中所述的内存分配方法的流程示意图。具体地,由图1可知,在本发明实施例中,所述内存分配方法可包括以下步骤:
步骤101:接收内存分配请求;所述内存分配请求中包括任务和任务标识;
步骤102:根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;
步骤103:在所述内存分区中为所述任务分配可用内存空间。
其中,此处所述内存分配请求通常可以是相应的内存申请方发送的,此处的内存申请方通常可为相应的应用程序、计算机系统或者其他后台程序等,只要在需要内存时,可向内存管理系统等发送相应的内存分配请求即可,本发明实施例对此不作任何限定。
也就是说,在本发明实施例中,可接收携带有任务和任务标识的内存分配请求;并可根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;以及,可在所述内存分区中为所述任务分配可用内存空间。相比于现有技术,在本发明实施例中,当需要进行内存空间的分配时,可先在空闲内存中确定任务的任务标识所对应的内存分区,并可在确定出的内存分区中为所述任务分配相应的可用内存空间。这样一来,具备同一任务标识的任务可处在相互连续的内存空间中,而不会被分散在非连续的内存空间中,从而防止了内存的碎片化,提升了内存的使用效率。
可选地,在本发明实施例中,所述内存分配方法的执行主体通常可为相应内存分配装置,所述内存分配装置可为一集成装置集成在相应的电子设备中,如设置在相应的计算机、终端设备或者数字货币挖矿机之内;当然,所述内存分配装置还可为一独立装置独立于相应的电子设备,如设置在相应的计算机、终端设备或者数字货币挖矿机之外。
具体地,本发明实施例中所述的内存分配装置的具体可为电子设备等中的内存管理系统,当然,所述内存分配装置还可为其它任意能够实现内存分配和管理的系统,如相应的内存控制系统、内存处理系统等,对此不作任何限定。
需要说明的是,在本发明实施例中,任务的任务标识可为任意能够唯一表征任务类型或者任务等级的标识信息,且,所述任务标识通常可预先设定,如可在内存分配之前(或同时)为每一类任务设定相应的任务标识。
具体地,在本发明实施例中,内存管理系统通常可将各申请方发送给内存管理系统的任务划分为三类,例如,可预先将各申请方发送给内存管理系统的任务根据任务类型划分为第一类任务、第二类任务以及第三类任务,并可对每一类任务添加相应的任务标识,以表征各任务的类型,如对第一类任务添加任务标识A,对第二类任务添加任务标识B,对第三类任务添加任务标识C,对此不作赘述。
需要说明的是,内存管理系统对任务的划分除了可通过任务的类型划分之外,还可通过任务的重要性来划分,例如,可将重要性最高的任务划分为第一类任务,将重要性较高的任务划分为第二类任务,将重要性较低的任务划分为第三类任务,并可对每一类任务添加相应的任务标识,以表征各任务的重要性,如对第一类任务添加任务标识A,对第二类任务添加任务标识B,对第三类任务添加任务标识C,本发明实施例对此不作任何限定。
当然,内存管理系统对任务的划分还可通过任务的复杂度来划分,例如可将复杂度最高的任务划分为第一类任务,将复杂度较高的任务划分为第二类任务,将复杂度较低的任务划分为第三类任务,并可对每一类任务添加相应的任务标识,以表征各任务的复杂度,对此不作赘述。
可选地,所述任务标识与内存分区的对应关系是在接收内存分配请求之前,通过下述方式得到的:
将空闲内存划分为至少一组内存分区组;
将每一个内存分区组按照物理地址由低到高的顺序依次划分为连续的第一内存分区、第二内存分区和第三内存分区;
为每一个内存分区配置相应的任务标识,以建立任务标识与内存分区之间的对应关系。
例如,如图2所示,其为本发明实施例中提供的一组内存分区组的结构示意图。具体地,由图2可知,所述内存分区可包括物理地址由低到高、且连续的第一内存分区、第二内存分区以及第三内存分区。
需要说明的是,在本发明实施例中,任务标识与内存分区之间的对应关系除了可在接收到内存分配请求之前建立之外,还可在接收到内存分配请求之后(或者之时)建立的,对此不作任何限定。
可选地,根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区,可包括:
当所述任务的任务标识为第一标识时,将所述第一内存分区作为与所述任务相对应的内存分区;
当所述任务的任务标识为第二标识时,将所述第二内存分区作为与所述任务相对应的内存分区;
当所述任务的任务标识为第三标识时,将所述第三内存分区作为与所述任务相对应的内存分区。
例如,假设接收到的内存分配请求中携带的任务的任务标识为A,则可从空闲内存中用于存储A类任务的内存分区中为任务分配相应的可用内存;假设接收到的内存分配请求中携带的任务的任务标识为B,则可从空闲内存中用于存储B类任务的内存分区中为任务分配相应的可用内存;假设接收到的内存分配请求中携带的任务的任务标识为C,则可从空闲内存中用于存储C类任务的内存分区中为任务分配相应的可用内存,对此不作赘述。
具体地,在所述内存分区中为所述任务分配可用内存空间,可包括:
确定所述内存分区所对应的内存链表;
读取所述内存链表,并从所述内存分区中确定出可用内存空间;
将所述可用内存空间分配给所述任务。
需要说明的是,在本发明实施例中,每一个内存分区可对应一个唯一的内存链表,即,在本发明实施例中,每一个内存分区组中具备三个内存分区,因而每一个内存分区组可具备三条内存链表,以与三个内存分区一一对应。通过读取内存链表,即可确定与该内存链表对应的内存分区中的各可用内存空间和各不可用内存空间,对此不作赘述。
例如,假设确定出的内存分区所对应的内存链表为链表L,则可按照读取顺序读取所述链表L,并确定出下一可用的内存空间,然后将该内存空间分配给相应的任务,以向申请方返回该可用内存空间的物理地址,从而实现内存的分配,对此不作赘述。
具体地,读取所述内存链表,并从所述内存分区中确定出可用内存空间,可包括:
确定所述内存分区的配置顺序;其中,所述第一内存分区的配置顺序为物理地址由低至高的顺序,所述第二内存分区的配置顺序为任意的顺序,所述第三内存分区的配置顺序为物理地址由高至低的顺序;
从所述内存分区的下一可用起始物理地址开始,沿所述内存分区的配置顺序为所述任务分配可用内存空间;其中,所述第一内存分区的下一可用起始物理地址为所述第一内存分区内可用的最低位物理地址,所述第二内存分区的下一可用物理起始地址为所述第二内存分区内的可用的任一物理地址,所述第三内存分区的下一可用起始物理地址为所述第三内存分区内可用的最高位物理地址。
需要说明的是,此处所述的内存分区的配置顺序通常可与该内存分区的内存链表的读取顺序一一对应,对此不作赘述。
例如,如图3所示,其为本发明实施例中提供的各内存分区的配置顺序的简单示意图。具体地,由图3可知,第一内存分区和第三内存分区的配置顺序均为指向第二内存分区的顺序,第二内存分区的配置顺序可任意。
可选地,所述内存可为SRAM(Static Random Access Memory,静态随机存取存储器),所述第一内存分区和第三内存分区分别位于所述SRAM的不同的BANK(逻辑存储库)中。
需要说明的是,由于在实际应用中,当两个任务在申请内存时,如果分配的内存空间处于同一BANK,就可能会影响任务的处理效率。
以数字货币挖矿机为例,当内存管理系统接收到三个任务,分别为挖矿任务A、温度读取任务B以及重要计算任务C,则可确定挖矿任务是最重要的任务,重要计算任务为较重要的任务,温度读取任务是非重要的任务,因此,可在第一内存分区中为挖矿任务A分配相应的可用内存,可在第二内存分区中为温度读取任务分配相应的可用内存,可在第三内存分区中为重要计算任务C分配可用内存,由于挖矿任务和重要计算任务都是重要任务,因此可将他们分别设置在不同的BANK中,以提升任务的处理效率。
可选地,所述内存可为动态随机存取存储器DRAM,所述第一内存分区和第三内存分区分别位于所述DRAM的不同的CHANNEL(通道)中。
基于与上述SRAM相同的原理,在实际内存的分配过程中,为了提升任务的处理效率,还可为重要的任务分配不处于同一个CHANNEL的内存分区中,此处不再赘述。
类似地,基于与前述内存分配方法相同的发明构思,本发明实施例还提供了一种内存释放方法,如图4所示,其为本发明实施例中提供的内存释放方法的流程示意图。具体地,所述内存释放方法可包括以下步骤:
步骤401:针对任一待释放内存空间,确定所述待释放内存空间中任务的任务标识;
步骤402:判断所述待释放内存空间是否满足释放条件;
步骤403:若满足,则将所述待释放内存空间进行释放,并将释放后的内存空间记录到空闲内存中与所述任务标识相对应的内存分区中。
也就是说,在本发明实施例中,可针对任一待释放内存空间,确定所述待释放内存空间中任务的任务标识,并可判断所述待释放内存空间是否满足释放条件,以及,若满足,则将所述待释放内存空间进行释放,并将释放后的内存空间记录到空闲内存中与所述任务标识相对应的内存分区中。相比于现有技术,在本发明实施例中,可将释放出的内存空间记录到与释放前任务的任务标识相对应的内存分区中,从而在后续内存的分配和使用时,能够保证同一任务标识的任务处于相互连续的内存空间中,而不是被分散在不连续的内存空间中,从而防止了内存的碎片化,提升了内存的使用效率。
需要说明的是,本发明实施例中,所述内存释放方法的执行主体仍可为所述内存管理系统,所述内存释放方法可与前述的内存分配方法相互对应,相同内容可参见前述内容,此处不再赘述。
本发明实施例提供了一种内存分配方法和内存释放方法,可接收携带有任务和任务标识的内存分配请求;并可根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;以及,可在所述内存分区中为所述任务分配可用内存空间。相比于现有技术,在本发明实施例中,当需要进行内存空间的分配时,可先在空闲内存中确定任务的任务标识所对应的内存分区,并可在确定出的内存分区中为所述任务分配相应的可用内存空间。这样一来,具备同一任务标识的任务可处在相互连续的内存空间中,而不会被分散在非连续的内存空间中,从而防止了内存的碎片化,提升了内存的使用效率。
实施例二:
基于与本发明实施例一相同的发明构思,本发明实施例二提供了一种内存分配装置,如图5所示,其为本发明实施例中所述的内存分配装置的结构示意图。具体地,所述内存分配装置可包括:
接收模块51,可用于接收内存分配请求;所述内存分配请求中包括任务和任务标识;
选择模块52,可用于根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;
分配模块53,可用于在所述内存分区中为所述任务分配可用内存空间。
也就是说,本发明实施例提供了一种内存分配装置,包括用于接收内存分配请求;所述内存分配请求中包括任务和任务标识的接收模块、用于根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区的选择模块以及用于在所述内存分区中为所述任务分配可用内存空间的分配模块。相比于现有技术,在本发明实施例中,当需要进行内存空间的分配时,可先在空闲内存中确定任务的任务标识所对应的内存分区,并可在确定出的内存分区中为所述任务分配相应的可用内存空间。这样一来,具备同一任务标识的任务可处在相互连续的内存空间中,而不会被分散在非连续的内存空间中,从而防止了内存的碎片化,提升了内存的使用效率。
进一步地,所述内存分配装置还可包括:
建立模块54,可用于在接收内存分配请求之前,将空闲内存划分为至少一组内存分区组;并,将每一个内存分区组按照物理地址由低到高的顺序依次划分为连续的第一内存分区、第二内存分区和第三内存分区;以及,为每一个内存分区配置相应的任务标识,以建立任务标识与内存分区之间的对应关系。
具体地,所述选择模块52,可用于当所述任务的任务标识为第一标识时,将所述第一内存分区作为与所述任务相对应的内存分区;并,当所述任务的任务标识为第二标识时,将所述第二内存分区作为与所述任务相对应的内存分区;以及,当所述任务的任务标识为第三标识时,将所述第三内存分区作为与所述任务相对应的内存分区。
具体地,所述分配模块53,可用于确定所述内存分区所对应的内存链表;并,读取所述内存链表,并从所述内存分区中确定出可用内存空间;以及,将所述可用内存空间分配给所述任务。
具体地,所述分配模块53,可用于确定所述内存分区的配置顺序;并从所述内存分区的下一可用起始物理地址开始,沿所述内存分区的配置顺序为所述任务分配可用内存空间;
其中,所述第一内存分区的配置顺序为物理地址由低至高的顺序,所述第二内存分区的配置顺序为任意的顺序,所述第三内存分区的配置顺序为物理地址由高至低的顺序,所述第一内存分区的下一可用起始物理地址为所述第一内存分区内可用的最低位物理地址,所述第二内存分区的下一可用物理起始地址为所述第二内存分区内的可用的任一物理地址,所述第三内存分区的下一可用起始物理地址为所述第三内存分区内可用的最高位物理地址。
可选地,所述内存为静态随机存取存储器SRAM,所述第一内存分区和第三内存分区分别位于所述SRAM的不同的逻辑存储库BANK中。
可选地,所述内存为动态随机存取存储器DRAM,所述第一内存分区和第三内存分区分别位于所述DRAM的不同的通道CHANNEL中。
相应地,本发明实施例还提供了一种内存释放装置,如图6所示,其为本发明实施例中提供的内存释放装置的结构示意图。具体地,由图6可知,所述内存释放装置可包括:
确定单元61,可用于针对任一待释放内存空间,确定所述待释放内存空间中任务的任务标识;
判断单元62,可用于判断所述待释放内存空间是否满足释放条件;
释放单元63,可用于若满足,则将所述待释放内存空间进行释放,并将释放后的内存空间记录到空闲内存中与所述任务标识相对应的内存分区中。
相应地,本发明实施例还提供了一种电子设备,如图7所示,其为本发明实施例中提供的电子设备的结构示意图。具体地,由图7可知,所述电子设备可包括本发明实施例中所述的内存分配装置71以及本发明实施例中所述的内存释放装置72。
需要说明的是,在本发明实施例中,所述内存分配装置71和所述内存释放装置72可为独立的独立装置,也可为集成在一起的集成装置。当然,所述内存分配装置71和所述内存释放装置72还可为所述电子设备中的内存管理系统。
可选地,本发明实施例中,所述电子设备可为任意的终端、计算机等,如可为PC(Personal Computer,个人电脑)、手机、平板电脑、智能相机、数字货币挖矿机等,对此不作赘述。
本发明实施例二提供了一种内存分配装置、内存释放装置以及电子设备,包括用于接收内存分配请求;所述内存分配请求中包括任务和任务标识的接收模块、用于根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区的选择模块以及用于在所述内存分区中为所述任务分配可用内存空间的分配模块。相比于现有技术,在本发明实施例中,当需要进行内存空间的分配时,可先在空闲内存中确定任务的任务标识所对应的内存分区,并可在确定出的内存分区中为所述任务分配相应的可用内存空间。这样一来,具备同一任务标识的任务可处在相互连续的内存空间中,而不会被分散在非连续的内存空间中,从而防止了内存的碎片化,提升了内存的使用效率。
实施例三:
本发明实施例三提供了一种计算机设备,如图8所示,其为本发明实施例中所述的计算机设备的结构示意图。该计算机设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。具体地,本发明实施例中所述的计算机设备可以包括中央处理器(Center Processing Unit,CPU)801、存储器802、输入设备803以及输出设备804等,输入设备803可以包括键盘、鼠标、触摸屏等,输出设备804可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器802可以包括只读存储器(ROM)和随机存取存储器(RAM),并向中央处理器801提供存储器802中存储的程序指令和数据。在本发明实施例中,存储器802可以用于存储内存分配方法的程序。
中央处理器801通过调用存储器802存储的程序指令,中央处理器801可用于按照获得的程序指令执行:接收内存分配请求;所述内存分配请求中包括任务和任务标识;根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;在所述内存分区中为所述任务分配可用内存空间。
实施例四:
本发明实施例四提供了一种计算机存储介质,用于储存为上述计算机设备所用的计算机程序指令,其包含用于执行上述内存分配方法的程序。
所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。
实施例五:
本发明实施例五提供了一种计算机,如图9所示,其为本发明实施例中所述的计算机的结构示意图。该计算机具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。具体地,本发明实施例中所述的计算机可以包括中央处理设备(Center Processing Unit,CPU)901、存储设备902、输入装置903以及输出装置904等,输入装置903可以包括键盘、鼠标、触摸屏等,输出装置904可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储设备902可以包括只读存储器(ROM)和随机存取存储器(RAM),并向中央处理设备901提供存储设备902中存储的程序指令和数据。在本发明实施例中,存储设备902可以用于存储内存释放方法的程序。
中央处理器901通过调用存储设备902存储的程序指令,中央处理设备901可用于按照获得的程序指令执行:针对任一待释放内存空间,确定所述待释放内存空间中任务的任务标识;判断所述待释放内存空间是否满足释放条件;若满足,则将所述待释放内存空间进行释放,并将释放后的内存空间记录到空闲内存中与所述任务标识相对应的内存分区中。
实施例四:
本发明实施例四提供了一种计算机存储介质,用于储存为上述计算机设备所用的计算机程序指令,其包含用于执行上述内存释放方法的程序。
所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。
本领域技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (21)

1.一种内存分配方法,其特征在于,包括:
接收内存分配请求;所述内存分配请求中包括任务和任务标识;
根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;
在所述内存分区中为所述任务分配可用内存空间。
2.如权利要求1所述的内存分配方法,其特征在于,所述任务标识与内存分区的对应关系是在接收内存分配请求之前,通过下述方式得到的:
将空闲内存划分为至少一组内存分区组;
将每一个内存分区组按照物理地址由低到高的顺序依次划分为连续的第一内存分区、第二内存分区和第三内存分区;
为每一个内存分区配置相应的任务标识,以建立任务标识与内存分区之间的对应关系。
3.如权利要求2所述的内存分配方法,其特征在于,根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区,包括:
当所述任务的任务标识为第一标识时,将所述第一内存分区作为与所述任务相对应的内存分区;
当所述任务的任务标识为第二标识时,将所述第二内存分区作为与所述任务相对应的内存分区;
当所述任务的任务标识为第三标识时,将所述第三内存分区作为与所述任务相对应的内存分区。
4.如权利要求1~3任一项所述的内存分配方法,其特征在于,在所述内存分区中为所述任务分配可用内存空间,包括:
确定所述内存分区所对应的内存链表;
读取所述内存链表,并从所述内存分区中确定出可用内存空间;
将所述可用内存空间分配给所述任务。
5.如权利要求4所述的内存分配方法,其特征在于,读取所述内存链表,并从所述内存分区中确定出可用内存空间,包括:
确定所述内存分区的配置顺序;其中,所述第一内存分区的配置顺序为物理地址由低至高的顺序,所述第二内存分区的配置顺序为任意的顺序,所述第三内存分区的配置顺序为物理地址由高至低的顺序;
从所述内存分区的下一可用起始物理地址开始,沿所述内存分区的配置顺序为所述任务分配可用内存空间;其中,所述第一内存分区的下一可用起始物理地址为所述第一内存分区内可用的最低位物理地址,所述第二内存分区的下一可用物理起始地址为所述第二内存分区内的可用的任一物理地址,所述第三内存分区的下一可用起始物理地址为所述第三内存分区内可用的最高位物理地址。
6.如权利要求5所述的内存分配方法,其特征在于,所述内存为静态随机存取存储器SRAM,所述第一内存分区和第三内存分区分别位于所述SRAM的不同的逻辑存储库BANK中。
7.如权利要求5所述的内存分配方法,其特征在于,所述内存为动态随机存取存储器DRAM,所述第一内存分区和第三内存分区分别位于所述DRAM的不同的通道CHANNEL中。
8.一种内存释放方法,其特征在于,包括:
针对任一待释放内存空间,确定所述待释放内存空间中任务的任务标识;
判断所述待释放内存空间是否满足释放条件;
若满足,则将所述待释放内存空间进行释放,并将释放后的内存空间记录到空闲内存中与所述任务标识相对应的内存分区中。
9.一种内存分配装置,其特征在于,包括:
接收模块,用于接收内存分配请求;所述内存分配请求中包括任务和任务标识;
选择模块,用于根据所述任务标识与内存分区的对应关系,从空闲内存中选出与所述任务标识相对应的内存分区;
分配模块,用于在所述内存分区中为所述任务分配可用内存空间。
10.如权利要求9所述的内存分配装置,其特征在于,所述内存分配装置还包括:
建立模块,用于在接收内存分配请求之前,将空闲内存划分为至少一组内存分区组;并,将每一个内存分区组按照物理地址由低到高的顺序依次划分为连续的第一内存分区、第二内存分区和第三内存分区;以及,为每一个内存分区配置相应的任务标识,以建立任务标识与内存分区之间的对应关系。
11.如权利要求10所述的内存分配装置,其特征在于,
所述选择模块,用于当所述任务的任务标识为第一标识时,将所述第一内存分区作为与所述任务相对应的内存分区;并,当所述任务的任务标识为第二标识时,将所述第二内存分区作为与所述任务相对应的内存分区;以及,当所述任务的任务标识为第三标识时,将所述第三内存分区作为与所述任务相对应的内存分区。
12.如权利要求9~11任一项所述的内存分配装置,其特征在于,
所述分配模块,用于确定所述内存分区所对应的内存链表;并,读取所述内存链表,并从所述内存分区中确定出可用内存空间;以及,将所述可用内存空间分配给所述任务。
13.如权利要求12所述的内存分配装置,其特征在于,
所述分配模块,用于确定所述内存分区的配置顺序;并从所述内存分区的下一可用起始物理地址开始,沿所述内存分区的配置顺序为所述任务分配可用内存空间;
其中,所述第一内存分区的配置顺序为物理地址由低至高的顺序,所述第二内存分区的配置顺序为任意的顺序,所述第三内存分区的配置顺序为物理地址由高至低的顺序,所述第一内存分区的下一可用起始物理地址为所述第一内存分区内可用的最低位物理地址,所述第二内存分区的下一可用物理起始地址为所述第二内存分区内的可用的任一物理地址,所述第三内存分区的下一可用起始物理地址为所述第三内存分区内可用的最高位物理地址。
14.如权利要求13所述的内存分配装置,其特征在于,所述内存为静态随机存取存储器SRAM,所述第一内存分区和第三内存分区分别位于所述SRAM的不同的逻辑存储库BANK中。
15.如权利要求14所述的内存分配装置,其特征在于,所述内存为动态随机存取存储器DRAM,所述第一内存分区和第三内存分区分别位于所述DRAM的不同的通道CHANNEL中。
16.一种内存释放装置,其特征在于,包括:
确定单元,用于针对任一待释放内存空间,确定所述待释放内存空间中任务的任务标识;
判断单元,用于判断所述待释放内存空间是否满足释放条件;
释放单元,用于若满足,则将所述待释放内存空间进行释放,并将释放后的内存空间记录到空闲内存中与所述任务标识相对应的内存分区中。
17.一种电子设备,其特征在于,包括权利要求9~15任一项所述的内存分配装置以及权利要求16所述的内存释放装置。
18.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,以执行权利要求1~7任一项所述的内存分配方法。
19.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行权利要求1~7任一项所述的内存分配方法。
20.一种计算机,其特征在于,包括:
存储设备,用于存储程序指令;
处理设备,用于调用所述存储器中存储的程序指令,以执行权利要求8所述的内存释放方法。
21.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行权利要求8所述的内存释放方法。
CN201810734430.4A 2018-07-06 2018-07-06 一种内存分配方法、内存释放方法以及相关设备 Pending CN109144718A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810734430.4A CN109144718A (zh) 2018-07-06 2018-07-06 一种内存分配方法、内存释放方法以及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810734430.4A CN109144718A (zh) 2018-07-06 2018-07-06 一种内存分配方法、内存释放方法以及相关设备

Publications (1)

Publication Number Publication Date
CN109144718A true CN109144718A (zh) 2019-01-04

Family

ID=64799795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810734430.4A Pending CN109144718A (zh) 2018-07-06 2018-07-06 一种内存分配方法、内存释放方法以及相关设备

Country Status (1)

Country Link
CN (1) CN109144718A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109815162A (zh) * 2019-01-28 2019-05-28 Oppo广东移动通信有限公司 内存管理方法、装置、移动终端及存储介质
CN111090521A (zh) * 2019-12-10 2020-05-01 Oppo(重庆)智能科技有限公司 内存分配方法、装置、存储介质及电子设备
CN111309482A (zh) * 2020-02-20 2020-06-19 浙江亿邦通信科技有限公司 矿机控制器任务分配系统、装置及其可存储介质
CN111414254A (zh) * 2020-03-19 2020-07-14 Oppo广东移动通信有限公司 设备管理方法、装置、存储介质及电子设备
WO2024060682A1 (zh) * 2022-09-19 2024-03-28 Oppo广东移动通信有限公司 内存管理方法、装置、内存管理器、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499034A (zh) * 2009-03-05 2009-08-05 北京中星微电子有限公司 内存管理方法
CN101826032A (zh) * 2009-03-06 2010-09-08 英伟力新能源科技(上海)有限公司 一种高效实时多任务操作系统内核
US20160092341A1 (en) * 2014-09-25 2016-03-31 Zhiqiang Ma Using hardware performance counters to detect stale memory objects
CN105787360A (zh) * 2016-03-02 2016-07-20 杭州字节信息技术有限公司 一种嵌入式系统内存安全访问控制的技术实现方法
CN106897132A (zh) * 2017-02-27 2017-06-27 郑州云海信息技术有限公司 一种服务器任务调度的方法以及装置
CN108132842A (zh) * 2017-12-15 2018-06-08 天津津航计算技术研究所 一种嵌入式软件内存管理系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499034A (zh) * 2009-03-05 2009-08-05 北京中星微电子有限公司 内存管理方法
CN101826032A (zh) * 2009-03-06 2010-09-08 英伟力新能源科技(上海)有限公司 一种高效实时多任务操作系统内核
US20160092341A1 (en) * 2014-09-25 2016-03-31 Zhiqiang Ma Using hardware performance counters to detect stale memory objects
CN105787360A (zh) * 2016-03-02 2016-07-20 杭州字节信息技术有限公司 一种嵌入式系统内存安全访问控制的技术实现方法
CN106897132A (zh) * 2017-02-27 2017-06-27 郑州云海信息技术有限公司 一种服务器任务调度的方法以及装置
CN108132842A (zh) * 2017-12-15 2018-06-08 天津津航计算技术研究所 一种嵌入式软件内存管理系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109815162A (zh) * 2019-01-28 2019-05-28 Oppo广东移动通信有限公司 内存管理方法、装置、移动终端及存储介质
CN111090521A (zh) * 2019-12-10 2020-05-01 Oppo(重庆)智能科技有限公司 内存分配方法、装置、存储介质及电子设备
CN111309482A (zh) * 2020-02-20 2020-06-19 浙江亿邦通信科技有限公司 矿机控制器任务分配系统、装置及其可存储介质
CN111309482B (zh) * 2020-02-20 2023-08-15 浙江亿邦通信科技有限公司 基于哈希算法的区块链任务分配系统、装置及可存储介质
CN111414254A (zh) * 2020-03-19 2020-07-14 Oppo广东移动通信有限公司 设备管理方法、装置、存储介质及电子设备
WO2024060682A1 (zh) * 2022-09-19 2024-03-28 Oppo广东移动通信有限公司 内存管理方法、装置、内存管理器、设备及存储介质

Similar Documents

Publication Publication Date Title
CN109144718A (zh) 一种内存分配方法、内存释放方法以及相关设备
KR101959153B1 (ko) 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템
CN106407207B (zh) 一种实时新增数据更新方法和装置
CN109376122A (zh) 一种文件管理方法、系统及区块链节点设备和存储介质
CN111984425B (zh) 用于操作系统的内存管理方法、装置及设备
CN106095589A (zh) 一种分配分区的方法、装置及系统
CN103544153A (zh) 一种基于数据库的数据更新方法和系统
CN107894922B (zh) Ram资源分配方法
US10417192B2 (en) File classification in a distributed file system
CN108399102A (zh) 一种资源分配方法和装置
CN104077266B (zh) 多内核操作系统实现方法和实现装置及系统
CN111813517A (zh) 任务队列的分配方法、装置、计算机设备及介质
CN105389216A (zh) 一种剪切板数据缓存处理方法、装置和电子设备
CN113419672A (zh) 一种存储容量管理方法、系统及存储介质
CN109753353A (zh) 虚拟机资源分配方法、装置及电子设备
EP4425892A1 (en) Resource operating method and apparatus, electronic device, and storage medium
CN116578410A (zh) 资源管理方法、装置、计算机设备和存储介质
CN116886626A (zh) 一种业务数据限流方法、装置、计算机设备及存储介质
CN115375231A (zh) 储位分配方法和装置、电子设备、计算机可读介质
US10901972B2 (en) Table partition configuration method, apparatus and system for database system
CN111143071A (zh) 基于mcs系统的缓存分区管理方法、系统及相关组件
CN110096352A (zh) 进程管理方法、装置及计算机可读存储介质
CN109062713A (zh) 一种提高系统命令行界面接口的调用效率方法及装置
CN109445863A (zh) 一种基于fpga的数据处理方法、装置、设备及介质
CN109634524A (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