网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
搜索关键字: 所有资讯 行业动态 市场趋势 政策法规 新品发布 技术资讯 价格快报 展会资讯
  • 达普IC芯片交易网 > 新闻中心 > 存储设计 > 正文
  • RSS
  • 移动中间件的动态内存管理
    http://www.ic72.com 发布时间:2009/5/13 10:54:46
    一、  概述

    内存管理对于每个程序员来说都是至关重要的,这点勿庸置疑。程序员不应当是限于使用内存管理,而应当理解内存管理的原理和方法。

    计算机硬件和操作系统发展到现在,对于一般的应用编程来说,内存似乎是不太重要的因素了,每个线程似乎都享有独立的4GB空间(当然,这是虚拟空间,是计算机硬件和操作系统联合作用的结果)。但是对于手机这种嵌入式开发来说,由于应用处于内存受限的环境中,所以内存管理,这个曾经的话题又被提到重要的位置,并且非常重要。

    对于移动中间件来说,因为要提供平台和系统无关性,并且在程序用到的存储空间中,只有动态内存和操作系统关系紧密(其他的自动变量存储在栈中,由编译器负责,而全局变量存储在文件的数据段),所以对于动态内存的管理来说,中间件更要亲力为之,简而言之,就是利用中间件自己的内存分配和释放函数来替换标准的函数如malloc()和free()。

    首先,我们看一下一个应用程序存储的简单示意图:

    通常,动态内存的分配器维护着图中堆区域(heap),堆是一个二进制零的区域,并且向上增长。在unix系统中,由内核维护着一个变量brk,这个变量指向堆的顶部。

    动态内存的分配器将堆视为一组不同大小的块的集合,每个块都是一个连续的存储器块,要么是已分配的,要么是空闲的。已分配块供应用程序使用。

    分配器通常由两种方式工作,两种方式都要求应用显式地分配内存块,不同在于由哪个实体负责释放已分配的内存块。

    §           显式分配器(explicit allocator)要求程序显式地释放任何已分配的内存块。例如C语言中的malloc和free,C++中的new和delete也属于这种形式。

    §           隐式分配器(implicit allocator)要求分配器检测合适一个已分配块不再被应用程序使用,然后就释放这个块。这种方法也叫作垃圾收集技术,如java就是使用这种技术来释放已分配的块。

    接下来,结合中间件的特点来说明动态内存管理的方法(大部分的原理相同)。

    二、  概述

    中间件内存管理方式是:首先从底层申请一块足够大的静态内存空间,把这块空间当作系统动态内存的heap,在这个基础上进行内存的动态分配和释放。这样做的好处是动态的管理都是由中间件完成,和下层的操作系统无关。使得中间件移植更加方便,并且使得上层的编程变得更加方便和快捷统一。

    1.        初始化和静态空间的取得

    在中间件初始化的时候,要申请一个静态的数组。具体动态空间的取得如下所示:

    HEAP_MAX_SIZE =0x00380000(3.5M)

    static unsigned      HeapMemory[HEAP_MAX_SIZE/4];
     


    www.ic72.com 达普IC芯片交易网
  • 行业动态
  • 市场趋势
  • 政策法规
  • 新品发布
  • Baidu

    IC快速检索:abcdefghijklmnopqrstuvwxyz0123456789
    COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
    客户服务:service@IC72.com 库存上载:IC72@IC72.com
    (北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
    京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质