CN106844046B - 宽带载波内存管理方法 - Google Patents

宽带载波内存管理方法 Download PDF

Info

Publication number
CN106844046B
CN106844046B CN201611271191.0A CN201611271191A CN106844046B CN 106844046 B CN106844046 B CN 106844046B CN 201611271191 A CN201611271191 A CN 201611271191A CN 106844046 B CN106844046 B CN 106844046B
Authority
CN
China
Prior art keywords
memory
program
area
capacity
memory area
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
CN201611271191.0A
Other languages
English (en)
Other versions
CN106844046A (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.)
Beijing Tenghe Smart Energy Technology Co ltd
Original Assignee
Beijing Tenghe Smart Energy 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 Tenghe Smart Energy Technology Co ltd filed Critical Beijing Tenghe Smart Energy Technology Co ltd
Priority to CN201611271191.0A priority Critical patent/CN106844046B/zh
Publication of CN106844046A publication Critical patent/CN106844046A/zh
Application granted granted Critical
Publication of CN106844046B publication Critical patent/CN106844046B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本发明公开了宽带载波内存管理方法,涉及内存管理技术领域,该方法不易于产生碎片,并能快速检测内存使用状态。先将整块内存分成两部分内存,在程序申请到内存使用后,还需要对该程序所占用的内存地址进行编号,并设定该程序占用该内存地址的最大时间;在程序占用内存地址的最大时间以内释放该程序占用的内存地址;根据程序占用内存地址的最大时间查看该程序占用内存的状态,如果程序占用内存地址的时间超过该程序占用内存地址的最大时间,说明此内存地址上的内存没有释放,则需要检测此内存是否忘记释放,如果检测到此内存是忘记释放则进行自动释放,如果检测到此内存并没有忘记释放则等待内存释放。

Description

宽带载波内存管理方法
技术领域
本发明涉及内存管理技术领域,具体涉及宽带载波内存管理方法。
背景技术
宽带载波模块要管理最大2040个从节点。而且还有各种抄表任务,都需动态审请内存。在嵌入式***中,内存一般都比较小,内存资源十分紧张。嵌入式软件开发者在开发程序时总是要斤斤计较,以尽可能节省的方式使用内存,避免内存的浪费,从而在这方面花费了过多的精力。现有内存管理易产生内存碎片,碎片较多时,会耗尽内存,如果碎片累计到极端的情况下可能导致没有内存可用,最终导致程序瘫痪,***崩溃的灾难后果。
发明内容
本发明是为了解决现有内存易于产生碎片的不足,提供一种不易于产生碎片,内存使用状态的检测区域小,并能快速检测内存使用状态的宽带载波内存管理方法。
为了实现上述目的,本发明采用以下技术方案:
宽带载波内存管理方法,内存管理方法包括内存初始化、内存申请、内存释放和内存状态查看;
步骤(1)内存初始化
先将整块内存分成两部分内存,设这两部分内存分别为内存区A和内存区B,并且内存区A的内存容量小于内存区B的内存容量;
步骤(2)内存申请
步骤(1-2-1)在程序申请使用内存时,先查看内存区A中是否有内存可用,再查看程序要申请的内存容量;
步骤(1-2-2)如果内存区A中没有内存可用,则将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,然后跳转到步骤(1-2-5),
步骤(1-2-4)如果内存区A中有内存可用,
步骤(1-2-5)则判断内存区A中可用的内存容量是否大于或等于程序要申请的内存容量;
如果内存区A中可用的内存容量大于或等于程序要申请的内存容量,则程序直接向内存区A申请使用内存;
如果内存区A中可用的内存容量小于程序要申请的内存容量,
则程序先将内存区A中可用的内存申请用完,再将程序要申请的内存所剩下的内存向内存区B申请内存使用;
在程序申请到内存使用后,还需要对该程序所占用的内存地址进行编号,并设定该程序占用该内存地址的最大时间;
步骤(3)内存释放
在程序占用内存地址的最大时间以内释放该程序占用的内存地址;
步骤(4)内存状态查看
根据程序占用内存地址的最大时间查看该程序占用内存的状态,如果程序占用内存地址的时间超过该程序占用内存地址的最大时间,说明此内存地址上的内存没有释放,则需要检测此内存是否忘记释放,如果检测到此内存是忘记释放则进行自动释放,如果检测到此内存并没有忘记释放则等待此内存释放。
本方案的内存管理方法是让每个要在内存中运行的程序都有一段程序段在内存区A内运行,只要检测内存区A内的内存使用状态就能够知道整块内存的使用状态,实现不易于产生碎片,内存使用状态的检测区域小,能快速检测内存使用状态的目的。本方案的内存管理方法简单易用,简洁高效,并且不会产生内存碎片,而且还能快速检测内存使用状态,为嵌入式***开发人员快速检测内存使用状态提供了极大的方便。内存使用状态的检测区域小,只要检测内存区A中是否有程序在使用即能快速知道整个内存的使用状态。
本方案中,若干个程序在使用内存时,让每个程序的一部分程序段或者全部程序段都要使用内存区A中的内存;在任意一个程序要退出内存使用时,让要退出的这个程序位于内存区A中的这部分程序段或者全部程序段都跟着全部退出,所以我们只要检测内存区A中是否有程序在使用即能快速知道整个内存的使用状态。
作为优选,步骤(2-1)设内存区A的容量大小为H,设内存区B的容量大小为U;若设内存区A的容量大小是一个由N个存储块组成的二维数组,设内存区B的容量大小也是一个由M个存储块组成二维数组,若每个存储块的最小存储容量就是该存储块的最小内存单位C,则内存区A的容量大小H=N×C,内存区B的容量大小U=M×C;
设程序要申请的内存容量大小为J,并设程序在申请内存使用时,在内存区A中还有可用的内存容量大小为K,并且0≤K≤H,0≤J≤H+U;
步骤(2-2)程序在申请使用内存时,先查看内存区A中可用内存容量大小K,再查看程序要申请的内存容量大小J;
步骤(2-3)当K=0时,
步骤(2-4)则先将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,从而让内存区A中有可用的内存容量,并且此时内存区A中可用的内存容量K>0,然后跳转到步骤(2-6),
步骤(2-5)当K>0时,
步骤(2-6)如果程序要申请的内存容量大小J≤内存区A中可用的内存容量大小K时,则程序直接向内存区A申请使用内存;
如果程序要申请的内存容量大小J>内存区A中可用的容量大小K时,
则程序先向内存区A申请使用内存,并将内存区A中可用的容量大小K全部申请用完,然后程序再向内存区B申请使用内存,并且此时程序要向内存区B申请使用的内存容量大小为J-K。
作为优选,定义一个二维数组作为内存管理区,并用该二维数组的一行表示一个内存容量大小的最小存储单元,则该内存管理区的内存容量大小就等于该二维数组的行数个最小存储单元,二维数组每行的内存容量大小等于该二维数组的列数大小,以二维数组的每一行作为一个最小的申请单元,行数和列数根据程序的需要进行调整;
定义的二维数组包括定义二维数组的行数、定义二维数组的列数和定义静态的二维数组;再定义静态的一维数组,并且一维数组的元素个数与二维数组的行数一一对应;用该一维数组的元素来记录所述二维数组的行数申请情况的行位置编号标记;在内存申请时,是从二维数组中申请一定的行数,然后将相应的行数进行位置编号标记;具体是从已经定义的二维数组中申请一定的内存容量,然后返回申请到的内存容量在二维数组中的行位置,同时将该行位置编号标记在二维数组中相应位置处做好记录,并在一维数组中将相应的行位置记录处进行位置编号标记;在内存释放时,是将一维数组中相应的行位置记录处的行位置编号标记清零即可实现行位置对应的内存释放;在内存状态查看时,因为程序申请内存使用时是按行位置编号标记的,所以每次程序审请内存使用时都清楚它的编号;由于程序占用内存地址的最大时间在编写程序时已经设定,如果程序占用内存的时间超过该程序规定的最大占用时间,则判断该程序长时间没有释放,内存会自己检测该程序占用的内存是否忘记释放,然后进行内存自动释放;通过实时查看和不断的监测行位置编号标记,即可知道程序中是否有申请过内存而长时间没有进行释放的情况;通过统计每次内存申请时从二维数组中申请的行数和最大一次申请行数,就能获得内存的使用情况。
作为优选,分别设置内存初始化的统一对外接口函数、内存申请的统一对外接口函数、内存释放的统一对外接口函数和内存状态查看的统一对外接口函数;程序只需使用这四个统一对外接口函数即可进行内存初始化、内存申请、内存释放和内存状态查看。
作为优选,设任意程序所占用的内存地址编号为Li,其中i=0,1,2,3,┅┅;还设任意程序所占用的内存地址Li的最大时间为T;在步骤(4)中,如果检测到此内存并没有忘记释放则等待内存释放,则在使用该内存地址的程序设定的占用该内存地址的最大时间T的2倍时间时强制释放该内存地址。
作为优选,所述内存区A由若干个扇区组成,如果前一个程序已经将内存区A中可用的内存申请用完,并且前一个程序占据了内存区A中的至少两个扇区,当有后一个程序要向内存区A申请内存使用时,则先将前一个程序位于内存区A内一个扇区中使用的内存内的这段程序转移到内存区B中去使用,然后再让后一个程序申请使用内存区A内前一个程序转移后释放的这个扇区内的内存。
作为优选,所述内存区A由扇区P1、扇区P2和扇区P3组成,设程序包括程序Q1、程序Q2、程序Q3、程序Q4和程序Q5,并且设程序Q1、程序Q2、程序Q3、程序Q4和程序Q5依次向内存区A申请使用内存;如果程序Q1先向内存区A申请使用内存,并且此时的扇区P1、扇区P2和扇区P3都已经被程序Q1申请用完了,若当程序Q2向内存区A申请使用内存时,则需要先将程序Q1位于扇区P2中的程序段转移到内存区B中去使用内存,然后再将扇区P2内的内存给程序Q2使用;如果扇区P2内的内存不够程序Q2使用时,则程序Q2还需将超出部分的程序段向内存区B中去使用内存;如果在程序Q1和程序Q2都还没有释放内存,并且在程序Q2已经用完扇区P2内的内存的情况下,若程序Q3向内存区A申请使用内存时,则先将程序Q1位于扇区P3中的程序段转移到内存区B中去申请使用内存,然后再将扇区P3内的内存给程序Q3使用;如果扇区P3内的内存不够程序Q3用时,则程序Q3还需将超出部分的程序段向内存区B中去申请使用内存;如果程序Q1和程序Q2都还没有释放内存,并且程序Q2没有用完扇区P2内的内存的情况下,若程序Q3向内存区A申请使用内存时,则将扇区P2内剩下的内存给程序Q3用,如果扇区P2内剩下的内存不够程序Q3用时,程序Q3还需将超出部分程序段向内存区B中去申请使用内存;如果在程序Q1、程序Q2和程序Q3都还没有释放内存,并且程序Q1完全占用了扇区P1内的内存,程序Q2完全占用了扇区P2内的内存,程序Q3完全占用了扇区P3内的内存,若程序Q4和程序Q5都依次向内存区A申请使用内存时,则程序Q4和程序Q5排队等待,当内存区A有了可用的内存时再将内存区A内可用的内存依次给程序Q4和程序Q5使用。
本方案在使用时,只需要检测内存区A内是否有程序在使用即可实时知道内存的使用状态。由于不需要对整块内存区域进行检测,只需要对内存区A内是否有程序在运行进行检测,内存使用状态的检测区域小,能快速检测内存的使用状态,大大提高了检测速度,灵敏度高。
本发明能够达到如下效果:
本发明的内存管理方法简单易用,简洁高效,不易产生内存碎片,而且还能快速检测内存的使用状态,为嵌入式***开发人员快速检测内存使用状态提供了极大的方便。当监测到一块内存长时间没有释放,内存***会自己检测此内存是否忘记释放,自动释放,以便内存做更好的优化和调整。在使用时,只需要检测内存区A内是否有程序在使用即可实时知道内存的使用状态。由于不需要对整块内存区域进行检测,只需要对内存区A内是否有程序在运行进行检测,内存使用状态的检测区域小,能快速检测内存的使用状态,大大提高了检测速度,灵敏度高,可靠性好。
附图说明
图1是本发明程序从二维数组中连续申请了3个单元(即二维数组中的3行)、箭头指向申请到的内存的起始地址的一种示意图。
图2是本发明一维数组中写上相应的位置编号标记(即二维数组中的行号)的一种示意图。
图3是本发明一维数组中相应的位置编号标记清零的一种示意图。
图4是本发明整块内存分成内存区A和内存区B,以及内存区A由扇区P1、扇区P2和扇区P3组成的一种连接结构示意图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:宽带载波内存管理方法,参见图1、图2、图3、图4所示,内存管理方法包括内存初始化、内存申请、内存释放和内存状态查看;
步骤(1)内存初始化
先将整块内存分成两部分内存,设这两部分内存分别为内存区A和内存区B,并且内存区A的内存容量小于内存区B的内存容量;
步骤(2)内存申请
步骤(1-2-1)在程序申请使用内存时,先查看内存区A中是否有内存可用,再查看程序要申请的内存容量;
步骤(1-2-2)如果内存区A中没有内存可用,则将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,然后跳转到步骤(1-2-5),
步骤(1-2-4)如果内存区A中有内存可用,
步骤(1-2-5)则判断内存区A中可用的内存容量是否大于或等于程序要申请的内存容量;
如果内存区A中可用的内存容量大于或等于程序要申请的内存容量,则程序直接向内存区A申请使用内存;
如果内存区A中可用的内存容量小于程序要申请的内存容量,
则程序先将内存区A中可用的内存申请用完,再将程序要申请的内存所剩下的内存向内存区B申请内存使用;
在程序申请到内存使用后,还需要对该程序所占用的内存地址进行编号,并设定该程序占用该内存地址的最大时间;
步骤(3)内存释放
在程序占用内存地址的最大时间以内释放该程序占用的内存地址;
步骤(4)内存状态查看
根据程序占用内存地址的最大时间查看该程序占用内存的状态,如果程序占用内存地址的时间超过该程序占用内存地址的最大时间,说明此内存地址上的内存没有释放,则需要检测此内存是否忘记释放,如果检测到此内存是忘记释放则进行自动释放,如果检测到此内存并没有忘记释放则等待此内存释放。
步骤(2-1)设内存区A的容量大小为H,设内存区B的容量大小为U;若设内存区A的容量大小是一个由N个存储块组成的二维数组,设内存区B的容量大小也是一个由M个存储块组成二维数组,若每个存储块的最小存储容量就是该存储块的最小内存单位C,则内存区A的容量大小H=N×C,内存区B的容量大小U=M×C;
设程序要申请的内存容量大小为J,并设程序在申请内存使用时,在内存区A中还有可用的内存容量大小为K,并且0≤K≤H,0≤J≤H+U;
步骤(2-2)程序在申请使用内存时,先查看内存区A中可用内存容量大小K,再查看程序要申请的内存容量大小J;
步骤(2-3)当K=0时,
步骤(2-4)则先将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,从而让内存区A中有可用的内存容量,并且此时内存区A中可用的内存容量K>0,然后跳转到步骤(2-6),
步骤(2-5)当K>0时,
步骤(2-6)如果程序要申请的内存容量大小J≤内存区A中可用的内存容量大小K时,则程序直接向内存区A申请使用内存;
如果程序要申请的内存容量大小J>内存区A中可用的容量大小K时,
则程序先向内存区A申请使用内存,并将内存区A中可用的容量大小K全部申请用完,然后程序再向内存区B申请使用内存,并且此时程序要向内存区B申请使用的内存容量大小为J-K。
定义一个二维数组作为内存管理区,并用该二维数组的一行表示一个内存容量大小的最小存储单元,则该内存管理区的内存容量大小就等于该二维数组的行数个最小存储单元,二维数组每行的内存容量大小等于该二维数组的列数大小,以二维数组的每一行作为一个最小的申请单元,行数和列数根据程序的需要进行调整;
定义的二维数组包括定义二维数组的行数、定义二维数组的列数和定义静态的二维数组;再定义静态的一维数组,并且一维数组的元素个数与二维数组的行数一一对应;用该一维数组的元素来记录所述二维数组的行数申请情况的行位置编号标记;
在内存申请时,是从二维数组中申请一定的行数,然后将相应的行数进行位置编号标记;具体是从已经定义的二维数组中申请一定的内存容量,然后返回申请到的内存容量在二维数组中的行位置,同时将该行位置编号标记在二维数组中相应位置处做好记录,并在一维数组中将相应的行位置记录处进行位置编号标记;
在内存释放时,是将一维数组中相应的行位置记录处的行位置编号标记清零即可实现行位置对应的内存释放;
在内存状态查看时,因为程序申请内存使用时是按行位置编号标记的,所以每次程序审请内存使用时都清楚它的编号;由于程序占用内存地址的最大时间在编写程序时已经设定,如果程序占用内存的时间超过该程序规定的最大占用时间,则判断该程序长时间没有释放,内存会自己检测该程序占用的内存是否忘记释放,然后进行内存自动释放;
通过实时查看和不断的监测行位置编号标记,即可知道程序中是否有申请过内存而长时间没有进行释放的情况;
通过统计每次内存申请时从二维数组中申请的行数和最大一次申请行数,就能获得内存的使用情况。
分别设置内存初始化的统一对外接口函数、内存申请的统一对外接口函数、内存释放的统一对外接口函数和内存状态查看的统一对外接口函数;程序只需使用这四个统一对外接口函数即可进行内存初始化、内存申请、内存释放和内存状态查看。
设任意程序所占用的内存地址编号为Li,其中i=0,1,2,3,┅┅;还设任意程序所占用的内存地址Li的最大时间为T;在步骤(4)中,如果检测到此内存并没有忘记释放则等待内存释放,则在使用该内存地址的程序设定的占用该内存地址的最大时间T的2倍时间时强制释放该内存地址。
所述内存区A由若干个扇区组成,如果前一个程序已经将内存区A中可用的内存申请用完,并且前一个程序占据了内存区A中的至少两个扇区,当有后一个程序要向内存区A申请内存使用时,则先将前一个程序位于内存区A内一个扇区中使用的内存内的这段程序转移到内存区B中去使用,然后再让后一个程序申请使用内存区A内前一个程序转移后释放的这个扇区内的内存。
所述内存区A由扇区P1、扇区P2和扇区P3组成,设程序包括程序Q1、程序Q2、程序Q3、程序Q4和程序Q5,并且设程序Q1、程序Q2、程序Q3、程序Q4和程序Q5依次向内存区A申请使用内存;
如果程序Q1先向内存区A申请使用内存,并且此时的扇区P1、扇区P2和扇区P3都已经被程序Q1申请用完了,若当程序Q2向内存区A申请使用内存时,则需要先将程序Q1位于扇区P2中的程序段转移到内存区B中去使用内存,然后再将扇区P2内的内存给程序Q2使用;
如果扇区P2内的内存不够程序Q2使用时,则程序Q2还需将超出部分的程序段向内存区B中去使用内存;
如果在程序Q1和程序Q2都还没有释放内存,并且在程序Q2已经用完扇区P2内的内存的情况下,若程序Q3向内存区A申请使用内存时,则先将程序Q1位于扇区P3中的程序段转移到内存区B中去申请使用内存,然后再将扇区P3内的内存给程序Q3使用;
如果扇区P3内的内存不够程序Q3用时,则程序Q3还需将超出部分的程序段向内存区B中去申请使用内存;
如果程序Q1和程序Q2都还没有释放内存,并且程序Q2没有用完扇区P2内的内存的情况下,若程序Q3向内存区A申请使用内存时,则将扇区P2内剩下的内存给程序Q3用,如果扇区P2内剩下的内存不够程序Q3用时,程序Q3还需将超出部分程序段向内存区B中去申请使用内存;
如果在程序Q1、程序Q2和程序Q3都还没有释放内存,并且程序Q1完全占用了扇区P1内的内存,程序Q2完全占用了扇区P2内的内存,程序Q3完全占用了扇区P3内的内存,若程序Q4和程序Q5都依次向内存区A申请使用内存时,则程序Q4和程序Q5排队等待,当内存区A有了可用的内存时再将内存区A内可用的内存依次给程序Q4和程序Q5使用。
本实施例是让每个要在内存中运行的程序都有一段程序段在内存区A内运行,只要检测内存区A内的内存使用状态就能够知道整块内存的使用状态,实现不易于产生碎片,内存使用状态的检测区域小,能快速检测内存使用状态的目的。本实施例的内存管理方法简单易用,简洁高效,不易产生内存碎片,而且还能快速检测内存的使用状态,为嵌入式***开发人员快速检测内存使用状态提供了极大的方便。当监测到一块内存长时间没有释放,内存***会自己检测此内存是否忘记释放,自动释放,以便内存做更好的优化和调整。在使用时,只需要检测内存区A内是否有程序在使用即可实时知道整个内存的使用状态。
在本实施例中,若干个程序在使用内存时,让每个程序的一部分程序段或者全部程序段都要使用内存区A中的内存;在任意一个程序要退出内存使用时,让要退出的这个程序位于内存区A中的这部分程序段或者全部程序段都跟着全部退出,所以我们只要检测内存区A中是否有程序在使用即能快速知道整个内存的使用状态。由于不需要对整块内存区域进行检测,只需要对内存区A内是否有程序在运行进行检测,内存使用状态的检测区域小,能快速检测内存的使用状态,大大提高了检测速度,灵敏度高,可靠性好。
上面结合附图描述了本发明的实施方式,但实现时不受上述实施例限制,本领域普通技术人员可以在所附权利要求的范围内做出各种变化或修改。

Claims (7)

1.宽带载波内存管理方法,其特征在于,内存管理方法包括内存初始化、内存申请、内存释放和内存状态查看;
(1)内存初始化
先将整块内存分成两部分内存,设这两部分内存分别为内存区A和内存区B,并且内存区A的内存容量小于内存区B的内存容量;
(2)内存申请
(1-2-1)在程序申请使用内存时,先查看内存区A中是否有内存可用,再查看程序要申请的内存容量;
(1-2-2)如果内存区A中没有内存可用,则将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,然后跳转到步骤(1-2-5),
(1-2-4)如果内存区A中有内存可用,
(1-2-5)则判断内存区A中可用的内存容量是否大于或等于程序要申请的内存容量;
如果内存区A中可用的内存容量大于或等于程序要申请的内存容量,则程序直接向内存区A申请使用内存;
如果内存区A中可用的内存容量小于程序要申请的内存容量,
则程序先将内存区A中可用的内存申请用完,再将程序要申请的内存所剩下的内存向内存区B申请内存使用;
在程序申请到内存使用后,还需要对该程序所占用的内存地址进行编号,并设定该程序占用该内存地址的最大时间;
(3)内存释放
在程序占用内存地址的最大时间以内释放该程序占用的内存地址;
(4)内存状态查看
根据程序占用内存地址的最大时间查看该程序占用内存的状态,如果程序占用内存地址的时间超过该程序占用内存地址的最大时间,说明此内存地址上的内存没有释放,则需要检测此内存是否忘记释放,如果检测到此内存是忘记释放则进行自动释放,如果检测到此内存并没有忘记释放则等待此内存释放。
2.根据权利要求1所述的宽带载波内存管理方法,其特征在于,
(2-1)设内存区A的容量大小为H,设内存区B的容量大小为U;若设内存区A的容量大小是一个由N个存储块组成的二维数组,设内存区B的容量大小也是一个由M个存储块组成二维数组,若每个存储块的最小存储容量就是该存储块的最小内存单位C,则内存区A的容量大小H=N×C,内存区B的容量大小U=M×C;
设程序要申请的内存容量大小为J,并设程序在申请内存使用时,在内存区A中还有可用的内存容量大小为K,并且0≤K≤H,0≤J≤H+U;
(2-2)程序在申请使用内存时,先查看内存区A中可用内存容量大小K,再查看程序要申请的内存容量大小J;
(2-3)当K=0时,
(2-4)则先将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,从而让内存区A中有可用的内存容量,并且此时内存区A中可用的内存容量K>0,然后跳转到步骤(2-6),
(2-5)当K>0时,
(2-6)如果程序要申请的内存容量大小J≤内存区A中可用的内存容量大小K时,则程序直接向内存区A申请使用内存;
如果程序要申请的内存容量大小J>内存区A中可用的容量大小K时,
则程序先向内存区A申请使用内存,并将内存区A中可用的容量大小K全部申请用完,然后程序再向内存区B申请使用内存,并且此时程序要向内存区B申请使用的内存容量大小为J-K。
3.根据权利要求1所述的宽带载波内存管理方法,其特征在于,定义一个二维数组作为内存管理区,并用该二维数组的一行表示一个内存容量大小的最小存储单元,则该内存管理区的内存容量大小就等于该二维数组的行数个最小存储单元,二维数组每行的内存容量大小等于该二维数组的列数大小,以二维数组的每一行作为一个最小的申请单元,行数和列数根据程序的需要进行调整;
定义的二维数组包括定义二维数组的行数、定义二维数组的列数和定义静态的二维数组;再定义静态的一维数组,并且一维数组的元素个数与二维数组的行数一一对应;用该一维数组的元素来记录所述二维数组的行数申请情况的行位置编号标记;
在内存申请时,是从二维数组中申请一定的行数,然后将相应的行数进行位置编号标记;具体是从已经定义的二维数组中申请一定的内存容量,然后返回申请到的内存容量在二维数组中的行位置,同时将该行位置编号标记在二维数组中相应位置处做好记录,并在一维数组中将相应的行位置记录处进行位置编号标记;
在内存释放时,是将一维数组中相应的行位置记录处的行位置编号标记清零即可实现行位置对应的内存释放;
在内存状态查看时,因为程序申请内存使用时是按行位置编号标记的,所以每次程序审请内存使用时都清楚它的编号;由于程序占用内存地址的最大时间在编写程序时已经设定,如果程序占用内存的时间超过该程序规定的最大占用时间,则判断该程序长时间没有释放,内存会自己检测该程序占用的内存是否忘记释放,然后进行内存自动释放;
通过实时查看和不断的监测行位置编号标记,即可知道程序中是否有申请过内存而长时间没有进行释放的情况;
通过统计每次内存申请时从二维数组中申请的行数和最大一次申请行数,就能获得内存的使用情况。
4.根据权利要求1所述的宽带载波内存管理方法,其特征在于,分别设置内存初始化的统一对外接口函数、内存申请的统一对外接口函数、内存释放的统一对外接口函数和内存状态查看的统一对外接口函数;程序只需使用这四个统一对外接口函数即可进行内存初始化、内存申请、内存释放和内存状态查看。
5.根据权利要求1所述的宽带载波内存管理方法,其特征在于,设任意程序所占用的内存地址编号为Li,其中i=0,1,2,3,┅┅;还设任意程序所占用的内存地址Li的最大时间为T;在步骤(4)中,如果检测到此内存并没有忘记释放则等待内存释放,则在使用该内存地址的程序设定的占用该内存地址的最大时间T的2倍时间时强制释放该内存地址。
6.根据权利要求1所述的宽带载波内存管理方法,其特征在于,所述内存区A由若干个扇区组成,如果前一个程序已经将内存区A中可用的内存申请用完,并且前一个程序占据了内存区A中的至少两个扇区,当有后一个程序要向内存区A申请内存使用时,则先将前一个程序位于内存区A内一个扇区中使用的内存内的这段程序转移到内存区B中去使用,然后再让后一个程序申请使用内存区A内前一个程序转移后释放的这个扇区内的内存。
7.根据权利要求6所述的宽带载波内存管理方法,其特征在于,所述内存区A由扇区P1、扇区P2和扇区P3组成,设程序包括程序Q1、程序Q2、程序Q3、程序Q4和程序Q5,并且设程序Q1、程序Q2、程序Q3、程序Q4和程序Q5依次向内存区A申请使用内存;
如果程序Q1先向内存区A申请使用内存,并且此时的扇区P1、扇区P2和扇区P3都已经被程序Q1申请用完了,若当程序Q2向内存区A申请使用内存时,则需要先将程序Q1位于扇区P2中的程序段转移到内存区B中去使用内存,然后再将扇区P2内的内存给程序Q2使用;
如果扇区P2内的内存不够程序Q2使用时,则程序Q2还需将超出部分的程序段向内存区B中去使用内存;
如果在程序Q1和程序Q2都还没有释放内存,并且在程序Q2已经用完扇区P2内的内存的情况下,若程序Q3向内存区A申请使用内存时,则先将程序Q1位于扇区P3中的程序段转移到内存区B中去申请使用内存,然后再将扇区P3内的内存给程序Q3使用;
如果扇区P3内的内存不够程序Q3用时,则程序Q3还需将超出部分的程序段向内存区B中去申请使用内存;
如果程序Q1和程序Q2都还没有释放内存,并且程序Q2没有用完扇区P2内的内存的情况下,若程序Q3向内存区A申请使用内存时,则将扇区P2内剩下的内存给程序Q3用,如果扇区P2内剩下的内存不够程序Q3用时,程序Q3还需将超出部分程序段向内存区B中去申请使用内存;
如果在程序Q1、程序Q2和程序Q3都还没有释放内存,并且程序Q1完全占用了扇区P1内的内存,程序Q2完全占用了扇区P2内的内存,程序Q3完全占用了扇区P3内的内存,若程序Q4和程序Q5都依次向内存区A申请使用内存时,则程序Q4和程序Q5排队等待,当内存区A有了可用的内存时再将内存区A内可用的内存依次给程序Q4和程序Q5使用。
CN201611271191.0A 2016-12-31 2016-12-31 宽带载波内存管理方法 Active CN106844046B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611271191.0A CN106844046B (zh) 2016-12-31 2016-12-31 宽带载波内存管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611271191.0A CN106844046B (zh) 2016-12-31 2016-12-31 宽带载波内存管理方法

Publications (2)

Publication Number Publication Date
CN106844046A CN106844046A (zh) 2017-06-13
CN106844046B true CN106844046B (zh) 2021-06-11

Family

ID=59117054

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611271191.0A Active CN106844046B (zh) 2016-12-31 2016-12-31 宽带载波内存管理方法

Country Status (1)

Country Link
CN (1) CN106844046B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032440A (zh) * 2018-01-11 2019-07-19 武汉斗鱼网络科技有限公司 一种内存管理方法及相关装置

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1489334A (zh) * 2002-10-11 2004-04-14 深圳市中兴通讯股份有限公司 一种静态动态结合的存储区管理的方法
CN101093455A (zh) * 2006-06-21 2007-12-26 中兴通讯股份有限公司 一种嵌入式操作***的内存池分配方法
CN101122883A (zh) * 2006-08-09 2008-02-13 中兴通讯股份有限公司 一种避免内存碎片化的内存分配方法
CN101221536A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 嵌入式***的内存管理方法及装置
CN101320351A (zh) * 2008-06-27 2008-12-10 华中科技大学 内存的分配、清理和释放方法及内存管理的装置
CN101923511A (zh) * 2009-06-11 2010-12-22 华为技术有限公司 一种内存管理方法和内存管理***
CN102760080A (zh) * 2011-04-26 2012-10-31 腾讯科技(深圳)有限公司 一种内存管理的方法和装置
CN102915276A (zh) * 2012-09-25 2013-02-06 武汉邮电科学研究院 一种用于嵌入式***的内存控制方法
US9021421B1 (en) * 2012-05-07 2015-04-28 Google Inc. Read and write barriers for flexible and efficient garbage collection
CN104679666A (zh) * 2013-12-02 2015-06-03 上海联影医疗科技有限公司 一种嵌入式***内存的管理方法及管理***
CN104866548A (zh) * 2015-05-08 2015-08-26 深圳市金立通信设备有限公司 一种内存管理方法
CN105302737A (zh) * 2015-11-24 2016-02-03 浪潮(北京)电子信息产业有限公司 一种内存分配管理方法及***
CN105468461A (zh) * 2016-01-15 2016-04-06 浪潮(北京)电子信息产业有限公司 一种内存分区的方法及***
CN106155917A (zh) * 2015-04-28 2016-11-23 北京信威通信技术股份有限公司 内存管理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271550B2 (en) * 2006-10-27 2012-09-18 Hewlett-Packard Development Company, L.P. Memory piece categorization

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1489334A (zh) * 2002-10-11 2004-04-14 深圳市中兴通讯股份有限公司 一种静态动态结合的存储区管理的方法
CN101093455A (zh) * 2006-06-21 2007-12-26 中兴通讯股份有限公司 一种嵌入式操作***的内存池分配方法
CN101122883A (zh) * 2006-08-09 2008-02-13 中兴通讯股份有限公司 一种避免内存碎片化的内存分配方法
CN101221536A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 嵌入式***的内存管理方法及装置
CN101320351A (zh) * 2008-06-27 2008-12-10 华中科技大学 内存的分配、清理和释放方法及内存管理的装置
CN101923511A (zh) * 2009-06-11 2010-12-22 华为技术有限公司 一种内存管理方法和内存管理***
CN102760080A (zh) * 2011-04-26 2012-10-31 腾讯科技(深圳)有限公司 一种内存管理的方法和装置
US9021421B1 (en) * 2012-05-07 2015-04-28 Google Inc. Read and write barriers for flexible and efficient garbage collection
CN102915276A (zh) * 2012-09-25 2013-02-06 武汉邮电科学研究院 一种用于嵌入式***的内存控制方法
CN104679666A (zh) * 2013-12-02 2015-06-03 上海联影医疗科技有限公司 一种嵌入式***内存的管理方法及管理***
CN106155917A (zh) * 2015-04-28 2016-11-23 北京信威通信技术股份有限公司 内存管理方法及装置
CN104866548A (zh) * 2015-05-08 2015-08-26 深圳市金立通信设备有限公司 一种内存管理方法
CN105302737A (zh) * 2015-11-24 2016-02-03 浪潮(北京)电子信息产业有限公司 一种内存分配管理方法及***
CN105468461A (zh) * 2016-01-15 2016-04-06 浪潮(北京)电子信息产业有限公司 一种内存分区的方法及***

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A Low Overhead Dynamic Memory Management System for Constrained Memory Embedded Systems;Supratim Das;《2015 2nd International Conference on Computing for Sustainable Global Development (INDIACom)》;20150504;第809-815页 *
RTOS动态分区内存管理机制的优化设计;叶新栋等;《单片机与嵌入式***应用》;20090930(第9期);第9-11页 *
一种适用嵌入式***的自适应动态内存管理方案;王铮等;《计算机技术与发展》;20070310;第17卷(第3期);第48-54页 *

Also Published As

Publication number Publication date
CN106844046A (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
US10157142B2 (en) Offload data transfer engine for a block data transfer interface
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
US8572337B1 (en) Systems and methods for performing live backups
US20170351452A1 (en) Dynamic host memory buffer allocation
US20120260020A1 (en) Non-volatile semiconductor memory module enabling out of order host command chunk media access
CN103999060A (zh) 固态存储管理
CN105474192A (zh) 数据到非易失性存储器的事件触发的存储
EP2927779B1 (en) Disk writing method for disk arrays and disk writing device for disk arrays
EP3216027B1 (en) Test of semiconductor storage power consumption on basis of executed access commands
US8631189B2 (en) Storage apparatus and storage system
KR20170068373A (ko) 메모리 데이터 보호 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법
CN113867645B (zh) 数据迁移和数据读写方法、装置、计算机设备及存储介质
US10789170B2 (en) Storage management method, electronic device and computer readable medium
CN109901890B (zh) 一种控制器加载多核固件的方法、装置、计算机设备及存储介质
US10643736B2 (en) Method, apparatus and electronic device for read/write speed testing
CN112148221B (zh) 一种磁盘冗余阵列的巡检方法、装置、设备及存储介质
CN113867644B (zh) 磁盘阵列优化方法、装置、计算机设备及存储介质
DE102020107491A1 (de) Speichersystem und verfahren zu dessen betrieb
US10831684B1 (en) Kernal driver extension system and method
CN106844046B (zh) 宽带载波内存管理方法
US7461299B2 (en) Monitoring writes to cache as part of system error handling
CN110618872B (zh) 混合内存动态调度方法及***
US20190212945A1 (en) Apparatus and method of managing multi solid state disk system
CN104618191A (zh) 一种主机与裸存储块之间的通信故障检测方法和装置
CN114780208A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 102200, No. 2, No. 207, block A2, Changsheng Road, No. 18, Changping District Science Park, Beijing

Applicant after: BEIJING TENGINEER AIOT TECH Co.,Ltd.

Address before: 102200, No. 2, No. 207, block A2, Changsheng Road, No. 18, Changping District Science Park, Beijing

Applicant before: Beijing great wisdom energy technology Co.,Ltd.

Address after: 102200, No. 2, No. 207, block A2, Changsheng Road, No. 18, Changping District Science Park, Beijing

Applicant after: Beijing great wisdom energy technology Co.,Ltd.

Address before: 102200, No. 2, No. 207, block A2, Changsheng Road, No. 18, Changping District Science Park, Beijing

Applicant before: Beijing tenghe Power Information Technology Co.,Ltd.

Address after: 102200, No. 2, No. 207, block A2, Changsheng Road, No. 18, Changping District Science Park, Beijing

Applicant after: Beijing tenghe Power Information Technology Co.,Ltd.

Address before: 102200, No. 2, No. 207, block A2, Changsheng Road, No. 18, Changping District Science Park, Beijing

Applicant before: HAOHONG GUANGTAI (BEIJING) TECHNOLOGY CO.,LTD.

GR01 Patent grant
GR01 Patent grant