CN102156675B - 一种内存分配方法及装置 - Google Patents

一种内存分配方法及装置 Download PDF

Info

Publication number
CN102156675B
CN102156675B CN201010114512.2A CN201010114512A CN102156675B CN 102156675 B CN102156675 B CN 102156675B CN 201010114512 A CN201010114512 A CN 201010114512A CN 102156675 B CN102156675 B CN 102156675B
Authority
CN
China
Prior art keywords
memory
memory block
application
free
chained list
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
Application number
CN201010114512.2A
Other languages
English (en)
Other versions
CN102156675A (zh
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201010114512.2A priority Critical patent/CN102156675B/zh
Priority to PCT/CN2010/077322 priority patent/WO2011097884A1/zh
Publication of CN102156675A publication Critical patent/CN102156675A/zh
Application granted granted Critical
Publication of CN102156675B publication Critical patent/CN102156675B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

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

一种内存分配方法及装置
技术领域
本发明涉及嵌入式系统,尤其涉及一种内存分配方法及装置。
背景技术
随着后PC(个人电脑)时代的到来,嵌入式系统已日益广泛地应用于航空航天、国防通讯、交通运输、核电能源和医疗卫生等诸多安全关键实时系统(Safety Critical Real Time System,SCRTS),上述系统之所以称为SCRTS,是因为它们一旦失效将会导致生命财产的重大损失以及对环境的严重破坏。
内存管理是嵌入式系统的一个非常重要的问题,如果处理不好内存资源的分配,系统的可靠性将会大大降低,导致关键应用的中止、系统的崩溃,甚至引发灾难性事故,这当然是人们不愿看到的结果。
现有技术中,对嵌入式系统的内存管理通常采用分块方法和虚拟内存机制,实现地对系统内存资源进行分配与管理。
分块的内存管理方法思想比较简单,即将内存资源分成若干块,当需要内存资源时,获取一个资源块,使用完毕之后再将资源块释放,归还给系统。该方法存在如何确定资源块大小的问题,如果资源块过大,则利用率下降,如果资源块过小,则无法满足分配的需求。针对这个问题,提出了块资源池的思想,每个池中的块大小都不同,应用提出内存资源需求后,系统会根据需求在合适的池中获取资源块;应用结束后,再将资源块释放到对应的池中,分块的内存管理方法虽然效率较高,但由于内存资源有限,在系统满负荷运行时,很容易出现系统内存不足,导致一些关键应用无法运行,造成严重后果。
虚拟内存技术是一种有效的内存管理方法,通过虚拟内存技术可以将逻辑内存和物理内存分开,程序运行在逻辑内存空间,对于每个任务而言都能看到一个很大的内存空间。
图1为典型的虚拟内存分配方式,整个系统内存空间分为物理地址空间、虚拟地址空间和交换地址空间三部分,嵌入式系统中一般不需要交换地址空间,物理地址空间和虚拟地址空间分别由操作系统的物理地址管理模块和虚拟地址管理模块管理,交换地址空间由交换空间管理模块管理,虚拟内存和实际的物理内存通过页表进行动态映射,页面管理模块对页面进行管理,这使得应用可以申请比实际内存更大的内存资源运行。物理地址管理模块、虚拟地址管理模块和页表管理模块还与页面异常管理模块连接,实现异常管理。
但是,由于虚拟内存技术涉及到页表的映射查找,因此实现效率比较低下,系统的实时性得不到保障,这对于安全关键实时系统而言也是致命的。同时,虚拟内存技术往往需要硬件加速,这个硬件加速单元就是MMU(memory management unit,内存管理单元),其本质上就是一个lookup table(查找表),这要求采用虚拟内存技术的嵌入式系统都需要CPU集成MMU,否则,该套机制很难实现。
针对目前嵌入式系统内存管理所存在的问题,国内外的研究人员开发出了一些更完善的内存管理机制。在目前公开的关于嵌入式内存管理的文献中,绝大多数都是基于分块方法提出的改进优化手段,目的在于减少大量内存碎片产生,减少内存浪费,保证应用程序的需求。
例如,中国专利申请公开说明书CN200810056891.7的“嵌入式系统的内存管理方法及装置”;中国专利申请公开说明书200710121449.3的“嵌入式系统内存管理的方法”;中国专利申请公开说明书200410087169.1的“一种分配内存的方法”等,上述方案中均没有提及由于内存不足导致关键应用无法运行的解决方法。中国专利申请公开说明书200410041459.2的“一种嵌入式实时操作系统中内存分配的方法”,提出了动态调整内存分配策略,当内存资源分配完后,通过强制释放低优先级应用的内存,以保证高优先级应用的运行,然而,在目前应用交互越来越密切的趋势下,该方案很可能会导致整个系统的不稳定。
发明内容
本发明要解决的技术问题是提供一种内存分配方法及装置,解决嵌入式系统中由于内存不足导致应用无法运行的问题,实现在系统内存用尽后,为应用提供内存资源。
为解决上述技术问题,本发明的一种内存分配方法,包括:
将内存空间划分为内存普通区和内存保留区;
当接收到应用的内存申请请求后,判断内存普通区中的内存量是否达到应用申请的内存量,如果未达到,则判断应用是否为紧急应用,如果该应用为紧急应用,则从内存保留区中为该紧急应用分配内存资源。
进一步地,从内存保留区中为该紧急应用分配内存资源的方法包括:
从内存保留区的空闲内存链表中查找一个容量大于紧急应用所申请内存量的空闲内存块;
将该空闲内存块的容量与预先配置的内存容量阈值进行比较,若该空闲内存块的容量大于内存容量阈值,则将该空闲内存块拆分为使用块和未用块,使用块的容量等于内存容量阈值,将使用块分配给紧急应用。
进一步地,该方法还包括:
将使用块从空闲内存链表中删除,将未用块添加到块链表和空闲内存链表中。
进一步地,若空闲内存块的容量小于内存容量阈值,则将该空闲内存块分配给紧急应用,并将该空闲内存块从空闲内存链表中删除。
进一步地,该方法还包括:
当紧急应用结束后,将为该紧急应用分配的内存块释放给内存保留区。
进一步地,将为该紧急应用分配的内存块释放给内存保留区的方法包括:
从块链表中查询所释放的内存块的前一内存块的状态,若该前一内存块为空闲状态,则将该释放的内存块与该前一内存块合并,并将释放的内存块从块链表中删除;若该前一内存块为使用状态,则将所要释放的内存块添加到空闲内存链表中。
进一步地,该方法还包括:
从块链表中查询所要释放的内存块的后一内存块的状态,若该后一内存块为空闲状态,则将该释放的内存块与该后一内存块合并,并将该后一内存块从块链表和空闲内存链表中删除。
进一步地,一种内存分配装置,包括:引导模块和内存管理子系统;
引导模块,用于将内存空间划分为内存普通区和内存保留区;
内存管理子系统,用于在接收到应用的内存申请请求后,判断内存普通区中的内存量是否达到应用申请的内存量,如果未达到,则判断应用是否为紧急应用,如果该应用为紧急应用,则从内存保留区中为该紧急应用分配内存资源。
进一步地,内存管理子系统从内存保留区中为该紧急应用分配内存资源的方法包括:
从内存保留区的空闲内存链表中查找一个容量大于紧急应用所申请内存量的空闲内存块;
将该空闲内存块的容量与预先配置的内存容量阈值进行比较,若该空闲内存块的容量大于内存容量阈值,则将该空闲内存块拆分为使用块和未用块,使用块的容量等于内存容量阈值,将使用块分配给紧急应用。
进一步地,内存管理子系统,还用于当紧急应用结束后,将为该紧急应用分配的内存块释放给内存保留区,具体包括:从块链表中查询所释放的内存块的前一内存块的状态,若该前一内存块为空闲状态,则将该释放的内存块与该前一内存块合并,并将释放的内存块从块链表中删除;若该前一内存块为使用状态,则将所要释放的内存块添加到空闲内存链表中。
综上所述,本发明通过设置独立的内存保留区,防止系统因内存资源紧张而导致一些关键应用无法运行,保证了系统的稳定运行,同时,按阈值分配内存资源可以有效减少因大量小内存分配而产生的内存碎片,使嵌入式系统能够最大限度地高效可靠运行。
附图说明
图1为现有技术中的虚拟内存分配机制的模型图;
图2为本发明内存分配方法的流程图;
图3为本发明中块链表的结构示意图;
图4为本发明方法应用于Linux系统时内存保留区的结构示意图;
图5为本发明方法应用于Linux系统时的流程图;
图6为本发明内存分配装置的架构图。
具体实施方式
本实施方式通过设置独立于系统内存的内存保留区,在系统内存用尽后,为应用提供内存资源,保证了嵌入式系统的可靠运行。
下面结合附图对本发明的具体实施方式进行说明。
图2所示为本实施例的内存分配方法,包括:
步骤201:操作系统在初始化过程中,从内存中划分出一个区域作为内存保留区,供紧急情况下分配使用;
操作系统可分为两个部分,引导程序和内核,内存保留区是由操作系统的引导程序划分的。
内存保留区以外的内存资源作为内存普通区,供正常分配使用。
步骤202:操作系统在接收到应用的内存申请请求后,判断内存普通区中的内存量是否达到应用所申请的内存量,如果达到,则执行步骤203;否则,执行步骤204;
步骤203:操作系统直接从内存普通区中为应用分配内存,结束;
步骤204:操作系统判断应用是否为紧急应用,如果不是紧急应用,则执行步骤205;否则,执行步骤206;
应用在运行时需要申请内存,每个应用均有一个标识,可预先保存紧急应用的标识,接收到内存申请请求后,可根据申请内存的应用的标识判断该应用是否是紧急应用。紧急应用可能是紧急救生的应用等。
步骤205:操作系统将该应用挂起,等待内存普通区中的内存资源释放,结束;
步骤206:操作系统从内存保留区中为紧急应用分配内存资源;
步骤207:紧急应用运行结束后,将紧急应用占用的资源释放给内存保留区。
上述步骤206具体包括如下子步骤:
2061:搜索内存保留区中保存的该内存保留区的空闲内存链表,查找一个容量大于紧急应用所申请内存的空闲内存块;
2062:将查找到的空闲内存块的容量值与所设定的内存容量阈值进行比较,如果查找到的空闲内存块的容量值大于所设定的内存容量阈值,则执行步骤2063;否则,执行步骤2065;
2063:将此空闲内存块拆分为两个部分,一部分作为使用块,容量为设定的内存容量阈值,另一部分为未用块,是阈值以外的剩余部分,将使用块分配给紧急应用;
2064:将使用块从空闲内存链表中删除,将未用块添加到块链表和空闲内存链表;
块链表的作用是管理内存池中所有内存块,而空闲内存链表主要管理尚未使用的内存块。
将空闲内存块拆分为两部分后,使用块使用原空闲内存块的链表头已链接在块链表中,而未用块与块链表和空闲内存链表均无链接,因此,需要进行链接。
由于已对空闲内存块进行拆分,因此,需要在块链表中完成使用块和未用块的重链接。
2065:将查找到的空闲内存块分配给紧急应用,并从空闲内存链表中删除。
上述步骤207具体包括如下子步骤:
步骤207是将内存归还给内存保留区,此时要进行相邻空闲内存块的合并。
2071:从块链表中查询当前释放的内存块的前一块的状态,若为空闲,将此块与前块合并,并将所释放的内存块的链接信息从块链表中删除;如果前块为使用装置,则将当前内存块增加到空闲内存链表中;
释放的内存块的前一块的状态可通过查看块链表中的链接信息获知,如果在前一块在空闲内存链表中,则为空闲块;否则,为使用块。
释放的内存块与前块合并后,两个内存块变成了一个,所以释放的内存块的链接信息应删除,以前一块的链接信息为准。
2072:从块链表中查询后一块的状态,如果为空闲,则与后块合并,并且将后一块的链接信息从块链表和空闲内存链表中删除。
如果后一块为空闲,完成合并后,释放的内存块与前一块及后一块将组成一个内存块,如果后一块不为空闲,则不与后一块合并。
图3为块链表结构,从块链表中可以查询到内存块的前一内存块、后一内存块、前一空闲内存块和后一空闲内存块等信息。
本实施例的方法可应用在各种操作系统中,下面以在Linux操作系统中实现为例进一步说明本方法。实施例主要针对标准Linux内核的内存子系统进行了完善,提供了相应的增强功能。
本实施例在标准Linux版本的内存管理的基础上增加了在紧急情况下分配内存的机制,UB(user memory block,用户内存区)池中管理的内存实际分为两部分,一部分为在系统启动时预留的BIGPHYSAREA区域,此区域为系统启动时从物理内存中保留的内存区,对Linux内核不可见;另一部分为Linux内核所管理的普通内存区域。
如图4所示,本实施例中根据Linux系统的特性和功能对系统中的物理内存池进行了重划分,包括:内核管理空间(内存普通区)和BIGPHYSAREA区域,该BIGPHYSAREA区域包括DMA内存保留区、通用内存保留区、紧急情况UB池分配区和系统重启不破坏数据区,其中系统重启不破坏数据区位于BIGPHYSAREA空间的高端地址部分。
为保证本实施例方法在Linux中的实现,还在Linux中增加了以下关键的数据结构:
struct UB_info:UB头信息结构,系统每分配一个内存块都要增加头信息结构,UB_info里边包含了该内存块的相关信息。
struct UB_info{
Int_t type;(记录UB块分配方式)
Int32_t crc;(校验字)
struct list_head list;(UB块链表)
}
struct slab_area_info:记录了UB池信息结构。
struct slab_area_info{
Unsigned long size;(UB池总大小)
Unsigned long UB_cnt;(UB块个数)
}
struct arena_header:从BIGPHYAREA空间分配的紧急UB块结构。
struct arena_header{
size_t type;(UB块状态,空闲还是被使用)
size_t size;(当前UB块大小)
struct free_arena_header*next,*prev;(UB块链表)
};
struct free_arena_header:保留内存区中内存管理的主要结构,它驻留在各个内存块的顶端,图3示出了此种内存管理方式内存块之间链表指向关系。
struct free_arena_header{
   struct arena_header a;(UB块头地址)
   struct free_arena_header*next_free,*prev_free;(空闲UB块地址)
};
struct free_arena_header_malloc_head:预留BIGPHYAREA区域UB块的链表头。
对于紧急UB池的分配,当从Linux无法分配出内存时,只有从系统启动时预留的BIGPHYAREA空间中进行分配,以下就是此内存区域分配内存的具体步骤,如图5所示,包括:
501:在系统启动初始化之后,创建空闲内存链表头(即空闲内存链表的第一个节点),并且此头的双向链表指针指向系统启动后获取的BIGPHYAREA空间,链表所指的空闲区域大小为初始化后的整个BIGPHYAREA空间;
502:应用在运行过程中申请内存,系统判断普通内存区中资源是否充足;
503:如果充足,则直接分配内存;
从普通内存区中分配资源的具体步骤包括:
5031:对申请分配的内存空间进行修正,将申请分配空间大小改为size=size+sizeof(struct UB_info);
5032:调用kmalloc进行分配(kmalloc分配的内存在物理上是连续的),如果kmalloc分配成功,则在UB头中设置UB_MALLOC_K标志,返回给用户使用地址为p=address+sizeof(struct UB_info),如果分配失败,则调用vmalloc进行分配(vmalloc分配的内存在逻辑上连续,在物理上不要求连续);
5033:如果vmalloc分配成功,则在UB头中设置UB_MALLOC_V标志,返回给用户使用地址为p=address+sizeof(struct UB_info),如果vmalloc也分配失败,说明此时内核管理内存已不能分配出用户需求大小,此时将判断申请内存的应用是否为紧急应用。
504:如果普通内存区中已无足够内存可以分配,进一步判断该应用是否为紧急应用;
505:若不是则将该应用挂起,等待普通区内存资源释放;
506:如果该应用为紧急应用,则调用malloc_from_big()函数搜索BIGPHYAREA区域的保留内存区,并找到一个空闲块大小大于size的空闲块进行分配;
为紧急应用分配内存的具体方法如下:
5061:如果当前空闲块大于size+2*sizeof(struct free_arena_header),则将此块拆分为两部分,拆分出来的即将被使用的块标记为被使用,剩下的块链接同时链接到块链表和空闲内存链表,将使用块从空闲内存链表中删除;
5062:如果当前空闲块小于size+2*sizeof(struct free_arena_header),则直接将当前块标记为使用,从空闲内存链表删除;
5063:分配成功后在UB头中设置UB_MALLOC_BIG标志,返回给应用使用地址为p=address+sizeof(struct UB_info)位置;
507:紧急应用运行结束后,则从保留内存区释放内存空间。
释放此内存空间按如下步骤进行。
5071:对输入地址的有效性进行检查;
5072:从释放地址p+sizeof(UB_info)找到UB头,根据UB头信息记录判断出是kmalloc分配的内存,vmalloc分配的内存,还是从BIGPHYAREA中分配的内存;
5073:对释放地址进行修正address=p-sizeof(UB_info),并根据分配方式调用相应底层接口,与kmalloc和vmalloc相对应的释放接口分别为kfree和vfree,如果是通过malloc_from_big申请的内存,则调用kmem_free接口,用修正后地址进行内存释放;
5074:释放保留区内存时首先通过块链表判断当前释放块的前面块状态,当为空闲时,将此块和前面块合并,并从块链表中删除;如果前面块不为空闲块,则将当前块增加到空闲内存链表;
5075:判断后面块特性,如果也为空闲,则和后面块合并,并且将后面块从块链表和空闲内存链表中删除。
图6为本实施方式的内存分配装置,包括:引导模块和内存管理子系统;
引导模块,用于将内存空间划分为内存普通区和内存保留区;
内存管理子系统,用于在接收到应用的内存申请请求后,判断内存普通区中的内存量是否达到应用申请的内存量,如果未达到,则判断应用是否为紧急应用,如果该应用为紧急应用,则从内存保留区中为该紧急应用分配内存资源,内存管理子系统从内存保留区中为该紧急应用分配内存资源的方法包括:从内存保留区的空闲内存链表中查找一个容量大于紧急应用所申请内存量的空闲内存块;将该空闲内存块的容量与预先配置的内存容量阈值进行比较,若该空闲内存块的容量大于内存容量阈值,则将该空闲内存块拆分为使用块和未用块,使用块的容量等于内存容量阈值,将使用块分配给紧急应用。
内存管理子系统,还用于当紧急应用结束后,将为该紧急应用分配的内存块释放给内存保留区,具体包括:从块链表中查询所释放的内存块的前一内存块的状态,若该前一内存块为空闲状态,则将该释放的内存块与该前一内存块合并,并将释放的内存块从块链表中删除;若该前一内存块为使用状态,则将所要释放的内存块添加到空闲内存链表中。
本装置各部分的其它功能请参考方法内容的描述。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种内存分配方法,包括:
将内存空间划分为内存普通区和内存保留区;
当接收到应用的内存申请请求后,判断所述内存普通区中的内存量是否达到所述应用申请的内存量,如果未达到,则判断所述应用是否为紧急应用,如果该应用为紧急应用,则从所述内存保留区中为该紧急应用分配内存资源;其中,从所述内存保留区中为该紧急应用分配内存资源的方法包括:
从所述内存保留区的空闲内存链表中查找一个容量大于所述紧急应用所申请内存量的空闲内存块;
将该空闲内存块的容量与预先配置的内存容量阈值进行比较,若该空闲内存块的容量大于所述内存容量阈值,则将该空闲内存块拆分为使用块和未用块,所述使用块的容量等于所述内存容量阈值,将所述使用块分配给所述紧急应用。
2.如权利要求1所述的方法,其特征在于,该方法还包括:
将所述使用块从所述空闲内存链表中删除,将所述未用块添加到块链表和所述空闲内存链表中。
3.如权利要求1所述的方法,其特征在于:
若所述空闲内存块的容量小于所述内存容量阈值,则将该空闲内存块分配给所述紧急应用,并将该空闲内存块从所述空闲内存链表中删除。
4.如权利要求1所述的方法,其特征在于,该方法还包括:
当所述紧急应用结束后,将为该紧急应用分配的内存块释放给所述内存保留区。
5.如权利要求4所述的方法,其特征在于,所述将为该紧急应用分配的内存块释放给所述内存保留区的方法包括:
从块链表中查询所释放的内存块的前一内存块的状态,若该前一内存块为空闲状态,则将该释放的内存块与该前一内存块合并,并将所述释放的内存块从所述块链表中删除;若该前一内存块为使用状态,则将所要释放的内存块添加到空闲内存链表中。
6.如权利要求5所述的方法,其特征在于,该方法还包括:
从所述块链表中查询所要释放的内存块的后一内存块的状态,若该后一内存块为空闲状态,则将该释放的内存块与该后一内存块合并,并将该后一内存块从所述块链表和空闲内存链表中删除。
7.一种内存分配装置,包括:引导模块和内存管理子系统;
所述引导模块,用于将内存空间划分为内存普通区和内存保留区;
所述内存管理子系统,用于在接收到应用的内存申请请求后,判断所述内存普通区中的内存量是否达到所述应用申请的内存量,如果未达到,则判断所述应用是否为紧急应用,如果该应用为紧急应用,则从所述内存保留区中为该紧急应用分配内存资源;其中,所述内存管理子系统从所述内存保留区中为该紧急应用分配内存资源的方法包括:
从所述内存保留区的空闲内存链表中查找一个容量大于所述紧急应用所申请内存量的空闲内存块;
将该空闲内存块的容量与预先配置的内存容量阈值进行比较,若该空闲内存块的容量大于所述内存容量阈值,则将该空闲内存块拆分为使用块和未用块,所述使用块的容量等于所述内存容量阈值,将所述使用块分配给所述紧急应用。
8.如权利要求7所述的装置,其特征在于:
所述内存管理子系统,还用于当所述紧急应用结束后,将为该紧急应用分配的内存块释放给所述内存保留区,具体包括:从块链表中查询所释放的内存块的前一内存块的状态,若该前一内存块为空闲状态,则将该释放的内存块与该前一内存块合并,并将所述释放的内存块从所述块链表中删除;若该前一内存块为使用状态,则将所要释放的内存块添加到空闲内存链表中。
CN201010114512.2A 2010-02-12 2010-02-12 一种内存分配方法及装置 Active CN102156675B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201010114512.2A CN102156675B (zh) 2010-02-12 2010-02-12 一种内存分配方法及装置
PCT/CN2010/077322 WO2011097884A1 (zh) 2010-02-12 2010-09-26 内存分配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010114512.2A CN102156675B (zh) 2010-02-12 2010-02-12 一种内存分配方法及装置

Publications (2)

Publication Number Publication Date
CN102156675A CN102156675A (zh) 2011-08-17
CN102156675B true CN102156675B (zh) 2014-03-19

Family

ID=44367201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010114512.2A Active CN102156675B (zh) 2010-02-12 2010-02-12 一种内存分配方法及装置

Country Status (2)

Country Link
CN (1) CN102156675B (zh)
WO (1) WO2011097884A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753363A (zh) * 2019-01-31 2019-05-14 深兰科技(上海)有限公司 一种嵌入式系统内存管理方法及装置

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164339A (zh) * 2011-12-15 2013-06-19 北京信威通信技术股份有限公司 一种实现双内存托管的方法和系统
CN103186469A (zh) * 2011-12-27 2013-07-03 上海博泰悦臻电子设备制造有限公司 内存分配方法及装置、内存的回收方法
CN103218307B (zh) * 2013-04-18 2016-03-30 海信集团有限公司 内存管理系统和内存管理方法
CN104216781B (zh) * 2013-05-29 2019-10-08 上海联影医疗科技有限公司 显存分配方法及系统
CN104281528B (zh) * 2013-07-09 2018-02-16 浙江大华技术股份有限公司 一种数据存储方法及装置
TWI514142B (zh) * 2013-11-26 2015-12-21 Synology Inc 儲存系統及其控制方法
CN106897077B (zh) * 2013-12-02 2020-11-10 海信视像科技股份有限公司 应用程序控制方法
CN103744742A (zh) * 2013-12-31 2014-04-23 上海斐讯数据通信技术有限公司 一种内存坏块的修复方法
CN103744736B (zh) * 2014-01-09 2018-10-02 深圳Tcl新技术有限公司 内存管理的方法及Linux终端
CN104035769A (zh) * 2014-05-30 2014-09-10 北京金山安全软件有限公司 一种空间不足的处理方法及装置
CN104065906B (zh) * 2014-07-09 2017-02-15 珠海全志科技股份有限公司 数字录像设备的录像方法及装置
CN104111896B (zh) * 2014-07-30 2017-07-14 云南大学 大数据处理中的虚拟内存管理方法及其装置
CN104199781A (zh) * 2014-08-14 2014-12-10 深圳百科信息技术有限公司 一种基于共享内存的内存碎片分配方法和装置
US9678868B2 (en) 2014-10-31 2017-06-13 Xiaomi Inc. Method and device for optimizing memory
CN105653462B (zh) * 2014-11-11 2019-06-21 杭州海康威视数字技术股份有限公司 进行内存扩展的方法及装置
CN104410586B (zh) * 2014-12-11 2018-08-07 福建星网锐捷网络有限公司 一种vsu环境下的报文处理方法和装置
CN104572264B (zh) * 2014-12-31 2017-10-17 广东欧珀移动通信有限公司 控制应用运行的方法和移动终端设备
CN105824651B (zh) * 2015-01-06 2019-01-01 中国移动通信集团公司 一种智能卡内应用安装方法及装置
TWI588742B (zh) * 2015-07-27 2017-06-21 晨星半導體股份有限公司 應用程式的程式碼載入方法及應用其方法的電腦系統
WO2017070869A1 (zh) * 2015-10-28 2017-05-04 华为技术有限公司 一种内存配置方法、装置及系统
CN105404590B (zh) * 2015-11-10 2018-09-07 浪潮(北京)电子信息产业有限公司 一种内存块合并方法与系统
CN105512091B (zh) * 2015-12-03 2019-03-12 青岛海信移动通信技术股份有限公司 一种内存分配方法及装置
CN105302738B (zh) * 2015-12-09 2018-09-11 北京东土科技股份有限公司 一种内存分配方法及装置
CN108062247B (zh) * 2016-11-09 2021-09-14 腾讯科技(深圳)有限公司 一种内存管理方法及系统
CN108108307A (zh) * 2016-11-24 2018-06-01 中移(杭州)信息技术有限公司 一种资源处理方法及终端
CN108207020B (zh) * 2016-12-19 2021-03-02 中国电信股份有限公司 上行免调度传输方法、终端和基站
CN106708746B (zh) * 2016-12-30 2019-12-31 苏州浪潮智能科技有限公司 一种在线内存碎片整理方法和装置
CN106844050A (zh) * 2017-01-19 2017-06-13 郑州云海信息技术有限公司 一种内存分配方法及装置
CN107193753B (zh) * 2017-06-16 2020-08-04 深圳市万普拉斯科技有限公司 内存重整方法、装置、电子设备及可读存储介质
CN107506237A (zh) * 2017-07-07 2017-12-22 杭州联吉技术有限公司 一种网络摄像机及其内存整理方法和装置
CN107818014B (zh) * 2017-10-11 2020-06-09 晶晨半导体(上海)股份有限公司 一种内存分配方法以及多核并发的内存分配方法
CN108038062B (zh) * 2017-11-27 2021-05-04 北京锦鸿希电信息技术股份有限公司 嵌入式系统的内存管理方法和装置
CN108132841A (zh) * 2017-12-11 2018-06-08 杭州迪普科技股份有限公司 一种基于Linux系统的设备的内存分配方法及装置
CN109375985B (zh) * 2018-09-06 2021-04-06 新华三技术有限公司成都分公司 内存动态管理方法及装置
CN109445724B (zh) * 2018-10-12 2022-03-01 森大(深圳)技术有限公司 打印内存管理方法、装置及设备
CN109669877B (zh) * 2018-12-11 2023-04-04 腾讯科技(深圳)有限公司 内存管理方法、装置、终端及存储介质
CN109857678A (zh) * 2019-01-31 2019-06-07 深兰科技(上海)有限公司 一种嵌入式系统内存管理方法及装置
CN109976906A (zh) * 2019-03-08 2019-07-05 上海博达数据通信有限公司 一种linux系统的内存分配管理方法
CN110674052B (zh) * 2019-09-30 2022-03-22 广州虎牙科技有限公司 内存管理方法、服务器及可读存储介质
CN111813710B (zh) * 2020-09-11 2021-02-05 鹏城实验室 避免Linux内核内存碎片方法、设备及计算机存储介质
CN115858184B (zh) * 2023-03-03 2023-05-02 浪潮电子信息产业股份有限公司 一种rdma内存管理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064811A (en) * 1996-06-17 2000-05-16 Network Associates, Inc. Computer memory conservation system
CN1770125A (zh) * 2004-11-04 2006-05-10 华为技术有限公司 一种分配内存的方法
CN101174224A (zh) * 2007-11-28 2008-05-07 中兴通讯股份有限公司 一种基于VxWorks操作系统的内存管理方法
CN101286130A (zh) * 2007-04-11 2008-10-15 中兴通讯股份有限公司 一种嵌入式设备的复位故障定位的实现方法
CN101324850A (zh) * 2007-06-12 2008-12-17 中兴通讯股份有限公司 Linux内核动态加载方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004102698A (ja) * 2002-09-10 2004-04-02 Ntt Docomo Inc ダウンロード方法、領域管理装置、携帯通信端末、プログラムおよび記録媒体
EP1492006B1 (en) * 2003-06-24 2007-10-10 Research In Motion Limited Detection of out of memory and graceful shutdown

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064811A (en) * 1996-06-17 2000-05-16 Network Associates, Inc. Computer memory conservation system
CN1770125A (zh) * 2004-11-04 2006-05-10 华为技术有限公司 一种分配内存的方法
CN101286130A (zh) * 2007-04-11 2008-10-15 中兴通讯股份有限公司 一种嵌入式设备的复位故障定位的实现方法
CN101324850A (zh) * 2007-06-12 2008-12-17 中兴通讯股份有限公司 Linux内核动态加载方法
CN101174224A (zh) * 2007-11-28 2008-05-07 中兴通讯股份有限公司 一种基于VxWorks操作系统的内存管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753363A (zh) * 2019-01-31 2019-05-14 深兰科技(上海)有限公司 一种嵌入式系统内存管理方法及装置
CN109753363B (zh) * 2019-01-31 2021-06-29 深兰科技(上海)有限公司 一种嵌入式系统内存管理方法及装置

Also Published As

Publication number Publication date
CN102156675A (zh) 2011-08-17
WO2011097884A1 (zh) 2011-08-18

Similar Documents

Publication Publication Date Title
CN102156675B (zh) 一种内存分配方法及装置
US20210240636A1 (en) Memory Management Method and Apparatus
CN101997918B (zh) 异构san环境中的海量存储资源按需分配的实现方法
EP3796150B1 (en) Storage volume creation method and apparatus, server, and storage medium
CN104571955A (zh) 提高存储容量的方法和装置
CN102455976B (zh) 一种中间件内存管理的方法
US20220214907A1 (en) Virtual machine memory management method and device
CN102411639A (zh) 元数据的多副本存储管理方法和系统
CN104731799A (zh) 内存数据库管理装置
CN101938516B (zh) 一种面向用户的动态分配存储资源的方法
CN105786725A (zh) 基于异构混合内存的内存管理方法和系统
CN103218305A (zh) 存储空间的分配方法
CN108255608B (zh) 一种内存池的管理方法
US20220253252A1 (en) Data processing method and apparatus
CN103389945A (zh) 一种内存管理的方法及装置
US11797200B2 (en) Method for managing namespaces in a storage device and storage device employing the same
US20240192877A1 (en) Super block management method and apparatus
CN103116475A (zh) 一种自动精简配置扩容的方法
CN102541693A (zh) 数据的多副本存储管理方法和系统
CN101826055B (zh) 一种用于Linux系统数据缓存分配的管理方法
CN110445580B (zh) 数据发送方法及装置、存储介质、电子装置
CN105354757A (zh) 电力数据集成处理系统
WO2023169142A1 (zh) 一种存储装置及相关数据分区管理方法
CN113778688B (zh) 内存管理系统、内存管理方法、内存管理装置
CN112346848A (zh) 一种管理内存池的方法、装置及终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant