CN101826054B - 一种微内存系统的内存管理方法 - Google Patents

一种微内存系统的内存管理方法 Download PDF

Info

Publication number
CN101826054B
CN101826054B CN2009100375887A CN200910037588A CN101826054B CN 101826054 B CN101826054 B CN 101826054B CN 2009100375887 A CN2009100375887 A CN 2009100375887A CN 200910037588 A CN200910037588 A CN 200910037588A CN 101826054 B CN101826054 B CN 101826054B
Authority
CN
China
Prior art keywords
memory
memory block
concordance list
little
block
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
CN2009100375887A
Other languages
English (en)
Other versions
CN101826054A (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.)
Guangzhou Ankai Microelectronics Co.,Ltd.
Original Assignee
Anyka Guangzhou Microelectronics 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 Anyka Guangzhou Microelectronics Technology Co Ltd filed Critical Anyka Guangzhou Microelectronics Technology Co Ltd
Priority to CN2009100375887A priority Critical patent/CN101826054B/zh
Publication of CN101826054A publication Critical patent/CN101826054A/zh
Application granted granted Critical
Publication of CN101826054B publication Critical patent/CN101826054B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

本发明公开了一种微内存系统的内存管理方法,只将内存块包含的部分信息常驻在内存中,将所述的部分信息组成该内存块的索引表;当内存块小于256K时,将内存块状态、内存块类型和内存块大小三个信息常驻在内存中,组成该小内存块的索引表;当内存块大于256K而小于4M时,将内存块状态、内存块类型、内存块大小和内存块ID索引号四个信息常驻在内存中,组成该大内存块的索引表;利用小内存的索引表和大内存的扩展索引表进行内存管理。本发明相对现有技术优点在于:利用了小内存的索引表和大内存的扩展索引表进行内存管理的方法,大大减少了常驻内存数据;分配释放内存不需要遍历导换页数据,提高了系统的速度和效率。

Description

一种微内存系统的内存管理方法
技术领域
本发明涉及一种内存管理方法,尤其涉及一种微内存系统的内存管理方法。
背景技术
现有技术中,LINUX和WINDOWS CE内存管理方法都是基于内存边界识别法来实现的。
内存边界标识法:是一种传统的动态存储分配算法,在每个内存区的头部和底部两个边界上分别设有标识,以识别该区域为占有块或空闲块,使得在回收用户释放的空闲块时容易判别在物理位置上与其相邻的内存区域是否为空闲块,以便将所有地址连续的空闲存储区组合成一个尽可能大的空闲块。
内存块的结构如图1所示,每个内存区的头部四个变量和底部两个变量记录内存块的信息。头部四个变量的信息包括:前驱内存块的地址(*llink),内存块空闲占用标志(tag),内存块的大小(size),后继内存块的地址(*rlink)。底部两个变量的信息包括:本内存块的地址(*uplink),内存块空闲占用标志(tag)。在头部和底部之间的空间为供用户使用的空间。所有的空闲内存块链接起来形成双重循环链表结构。
每个内存区中记录内存块的信息的标识的大量数据信息都要常驻在物理内存中。由于微内存系统,内存极其紧张,这种方法是不可取的,会影响微内存系统的运行速度和性能。而且该方法分配内存需要遍历整个内存链,而链中节点分布在多个零散的内存页(以4K为单位)中,这意味着分配一个内存需要导换多个页面在物理内存和nand flash中进出,内存分配是非常频繁的动作,此时频繁导换的效率微内存系统自然无法接受。
发明内容
本发明目的在于提供一种适合微内存系统的内存管理方法,减少常驻内存的数据,而且分配释放内存无需遍历导换页数据,大大提高系统的性能和速度。
本发明的目的可以通过以下方案实现:一种微内存系统的内存管理方法,其特征在于,只将内存块包含的部分信息常驻在内存中,将所述的部分信息组成该内存块的索引表;当内存块小于256K时,将内存块状态、内存块类型和内存块大小三个信息常驻在内存中,组成该小内存块的索引表;当内存块大于256K而小于4M时,将内存块状态、内存块类型、内存块大小和内存块ID索引号四个信息常驻在内存中,组成该大内存块的索引表;利用小内存的索引表和大内存的扩展索引表进行内存管理。
所述内存块小于256K时的索引表结构依次划分为:一个1位二进制数字记录该内存块状态,一个1位二进制数字记录该内存块类型,一个14位二进制数字记录该内存块大小。所述的索引表设定为占用两个字节空间,8位二进制为一个字节。
所述内存块大于256K而小于4M时的索引表结构依次划分为:一个1位二进制数字记录该内存块状态,一个1位二进制数字记录该内块存类型,一个4位二进制数字记录该内存块ID索引号,一个10位二进制数字记录该内存块大小的前10位数据;还需要扩展一个8位的二进制变量记录内存大小的后8位数据,将该扩展变量与所述的该内存块索引表组成扩展索引表常驻在内存中。所述的索引表设定为占用三个字节空间,8位二进制为一个字节。
所述的小于256K的内存块,该索引表中记录的类型为“小”。
所述的大于256K而小于4M的内存块,该索引表中记录的类型为“大”。
本发明相对现有技术优点在于:利用了小内存的索引表和大内存的扩展索引表进行内存管理的方法,大大减少了常驻内存数据;分配释放内存不需要遍历导换页数据,提高了系统的速度和效率。
附图说明
图1是现有技术中内存边界识别法的内存边界表示图;
图2是本发明实施例的内存空间分布示意图;
图3是本发明的内存块地址偏移示意图;
图4是本发明的内存分配、释放示意图。
具体实施方式
首先分配内存空间:假定一个堆容量为10个分配块,每个分配块长度为32字节,如图2所示,每个编号行代表一个状态。一个连续内存空间,分为空闲空间和分配空间两种:
分配空间:如编号5里的以(2,-4)开头的连续4个块空间,逗号前的2表示前面一个已分配空间的偏移地址,逗号后的-4表示从本块开始连续4个块为分配空间。
空闲空间:如编号5里的以(0,+3)开头的连续3个块空间,逗号前的0表示前面一个已分配空间的偏移地址,逗号后的+3表示从本块开始连续3个块为空闲空间。
然后提取内存块的索引表:把每个内存块信息内容用一个双字节整数(shortint类型)来表示,记录了代表的一个内存块的大小等相关信息:
  1   1   14
第一个数字:1位,表示该内存块状态(“使用”或者“空闲”);
第二个数字:1位,表示该内存块类型(“大”或者“小”);
第三个数字:14个位,表示内存块类型是“小”时,该内存块大小≤(214-1)×16=256K。
该双字节变量就作为对应内存块的索引表,同时双字节变量也限定了小内存块的大小为256K。
如果内存块大小大于256K时,也就是内存块类型是“大”,那么上面的小内存块就不能满足要求,需要把索引表的第三个数字14位分成两个部分:4位和10位:
1 1 4 10
第一个数字:1位,表示该内存块状态(“使用”或者“空闲”);
第二个数字:1位,表示该内存块类型(“大”或者“小”);
第三个数字:4位,用来表示关联的内存块ID索引号,内存块个数为7个;
第四个数字:10位,用来表示该内存块大小的前10位数据;
大内存块需要的额外的大小可由一个字符变量(char类型)来表示,字符变量用来表示该内存块大小的后8位数据,这样,内存块类型是“大”时,该内存块大小≤(218-1)×16=4096K=4M。
该扩展字符变量与上述的索引表组成了大内存块的扩展索引表。即双字节与字符变量组成的扩展索引表所表示的内存块大小在256K~4M之间。
系统内存块个数:小内存块个数为503,大内存块个数为6。所以常驻所有索引表需要的最大内存为:sizeof(GMEMInfo)=503*2+6*3=1024字节=1K,该1K大小的数据常驻内存。因此采用双字节变量作为索引表可以大大减少内存空间。此时分配释放内存无需遍历导换页数据。
如图3、4所示,由于每个内存块只有一个双字节整数变量,只纪录了代表的一个内存块的大小等相关信息,而没有记录该内存块的起始地址信息。因此所有的内存块也必须是物理相连的。
只需要把内存开始地址顺序的加上所有某个内存块之前大小,就得到了每个内存块的起始地址。从而为每个内存块节省一个长整型的偏移地址信息。
这样,当内存块n分裂为2个内存块时,(或内存块n与内存块n+1合并为1个内存块时),我们需要在有效内存块个数内移动内存块数组。
尽管每次内存块分裂或合并都要搬移一次内存块,但由于内存块搬移的平均大小为250*2=500字节,所以在内存管理单元系统中,该代价是可以接受的。
下面给出此方案下的内存分配策略和内存释放策略的操作流程。
当需要分配内存块时,采用内存分配函数:
1)首先从上次分配内存块处开始向前寻找足够大的可分配内存块;
2)判断该内存块是否是当前有效的内存管理单元映射页;
3)是:则分裂该内存块为2个内存块,跳至步骤5;
4)否:则继续向前寻找内存块。如果到内存块数组最大维数仍未分配成功,则从头开始遍历至上次分配内存块处(该过程重复步骤1,2,3或4,并记录第一个满足分配要求的内存块);如果仍未分配成功,则取第一个满足分配要求的内存块,此时不再判断内存块是否是当前有效的内存管理单元映射页;
5)向后移动整个内存块数组,重置上次分配内存块处(当前分配内存块的下一个内存块处)。
当需要释放内存块时,采用内存释放函数:
1)首先遍历内存块数组找到当前内存块内存偏移值等于欲释放内存值的内存块。
2)判断当前内存块的前后内存块是否处于释放状态。
是:则将内存块的失效首地址前移到左对齐页(判断是否落于前内存块范围内,否则失效首地址不移动),失效末地址后移到右对齐页(判断是否落于后内存块范围内,否则失效首地址不移动);
否:则合并这些内存块为1个内存块;
3)失效从首地址到末地址之间的对齐内存页;
4)向前移动整个内存块数组,重置上次分配内存块处(当前释放合并后的内存块处)。
通过本发明的方法,每个内存块只用一个双字节整数变量来标识内存块大小等信息,大大减少了常驻在内存中的数据量,提高了系统的性能和速度。

Claims (5)

1.一种微内存系统的内存管理方法,其特征在于,只将内存块包含的部分信息常驻在内存中,将所述的部分信息组成该内存块的索引表;当内存块小于256K时,称为小内存块,将内存块状态、内存块类型和内存块大小三个信息常驻在内存中,组成该小内存块的索引表;当内存块大于256K而小于4M时,称为大内存块,将内存块状态、内存块类型、内存块大小和内存块ID索引号四个信息常驻在内存中,组成该大内存块的扩展索引表;利用小内存的索引表和大内存的扩展索引表进行内存管理。
2.根据权利要求1所述的一种微内存系统的内存管理方法,其特征在于,所述内存块小于256K时的索引表结构依次划分为:一个1位二进制数字记录该内存块状态,一个1位二进制数字记录该内存块类型,一个14位二进制数字记录该内存块大小。
3.根据权利要求2所述的一种微内存系统的内存管理方法,其特征在于,所述的索引表设定为占用两个字节空间,8位二进制为一个字节。
4.根据权利要求1所述的一种微内存系统的内存管理方法,其特征在于,所述内存块大于256K而小于4M时的索引表结构依次划分为:一个1位二进制数字记录该内存块状态,一个1位二进制数字记录该内存块类型,一个4位二进制数字记录该内存块ID索引号,一个10位二进制数字记录该内存块大小的前10位数据;还需要扩展一个8位的二进制变量记录内存大小的后8位数据,将该8位的二进制变量与所述的该内存块索引表组成扩展索引表常驻在内存中。
5.根据权利要求4所述的一种微内存系统的内存管理方法,其特征在于,所述的扩展索引表设定为占用三个字节空间,8位二进制为一个字节。
CN2009100375887A 2009-03-04 2009-03-04 一种微内存系统的内存管理方法 Active CN101826054B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100375887A CN101826054B (zh) 2009-03-04 2009-03-04 一种微内存系统的内存管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100375887A CN101826054B (zh) 2009-03-04 2009-03-04 一种微内存系统的内存管理方法

Publications (2)

Publication Number Publication Date
CN101826054A CN101826054A (zh) 2010-09-08
CN101826054B true CN101826054B (zh) 2011-12-07

Family

ID=42689978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100375887A Active CN101826054B (zh) 2009-03-04 2009-03-04 一种微内存系统的内存管理方法

Country Status (1)

Country Link
CN (1) CN101826054B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506651B (zh) * 2020-11-27 2022-06-17 苏州浪潮智能科技有限公司 一种大数据量环境中数据运算的方法和设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4943910A (en) * 1987-04-14 1990-07-24 Kabushiki Kaisha Toshiba Memory system compatible with a conventional expanded memory
CN1255748C (zh) * 2003-11-24 2006-05-10 华中科技大学 一种存储虚拟化系统的元数据层次管理方法及其系统
CN1851671A (zh) * 2005-07-01 2006-10-25 华为技术有限公司 一种节省全局变量内存空间的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4943910A (en) * 1987-04-14 1990-07-24 Kabushiki Kaisha Toshiba Memory system compatible with a conventional expanded memory
CN1255748C (zh) * 2003-11-24 2006-05-10 华中科技大学 一种存储虚拟化系统的元数据层次管理方法及其系统
CN1851671A (zh) * 2005-07-01 2006-10-25 华为技术有限公司 一种节省全局变量内存空间的方法

Also Published As

Publication number Publication date
CN101826054A (zh) 2010-09-08

Similar Documents

Publication Publication Date Title
CN108038002B (zh) 一种嵌入式软件内存管理方法
CN108132842B (zh) 一种嵌入式软件内存管理系统
CN102841851B (zh) 闪存管理方法和闪存设备
CN104346357B (zh) 一种嵌入式终端的文件存取方法及系统
CN102508788B (zh) Ssd及ssd垃圾回收方法和装置
CN103425435B (zh) 磁盘存储方法及磁盘存储系统
CN106708427A (zh) 一种适用于键值对数据的存储方法
EP3309685A1 (en) Method and apparatus for writing data to cache
CN105117417A (zh) 一种读优化的内存数据库Trie树索引方法
CN101655861A (zh) 基于双计数布鲁姆过滤器的哈希方法和哈希装置
CN101320351A (zh) 内存的分配、清理和释放方法及内存管理的装置
CN104238962A (zh) 向缓存中写入数据的方法及装置
CN103019884A (zh) 基于虚拟机快照的内存页去重方法及装置
CN104731799A (zh) 内存数据库管理装置
CN105389376B (zh) 基于连续块的无碎片化多媒体数据存储方法及系统
CN103838853A (zh) 一种基于不同存储介质的混合文件系统
CN102819494B (zh) 一种闪存顺序写入时的优化方法
CN102999441B (zh) 一种细粒度内存访问的方法
CN103412884A (zh) 一种异构存储介质下嵌入式数据库的管理方法
CN108304259B (zh) 内存管理方法及系统
CN105204783A (zh) 一种基于数据生存期的固态盘垃圾回收方法
CN101826054B (zh) 一种微内存系统的内存管理方法
CN101610197A (zh) 一种缓冲区管理方法及其系统
CN102521157B (zh) 一种在fpga上实现板载存储资源管理的系统和方法
CN108563586A (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
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 510663 301-303, 401-402, area C1, 182 science Avenue, Science City, Guangzhou high tech Industrial Development Zone, Guangdong Province

Patentee after: Guangzhou Ankai Microelectronics Co.,Ltd.

Address before: 301-303 401-402, zone C1, No. 182, science Avenue, Science City, Guangzhou high tech Industrial Development Zone

Patentee before: ANYKA (GUANGZHOU) MICROELECTRONICS TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 510555 No. 107 Bowen Road, Huangpu District, Guangzhou, Guangdong

Patentee after: Guangzhou Ankai Microelectronics Co.,Ltd.

Address before: 510663 301-303, 401-402, area C1, 182 science Avenue, Science City, Guangzhou high tech Industrial Development Zone, Guangdong Province

Patentee before: Guangzhou Ankai Microelectronics Co.,Ltd.