[发明专利]一种嵌入式操作系统的内存池分配方法有效
申请号: | 200610089365.1 | 申请日: | 2006-06-21 |
公开(公告)号: | CN101093455A | 公开(公告)日: | 2007-12-26 |
发明(设计)人: | 王泽民;徐立峰;曹刚 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京律诚同业知识产权代理有限公司 | 代理人: | 梁挥;徐金国 |
地址: | 518057广东省深圳市南山区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 操作系统 内存 分配 方法 | ||
技术领域
本发明涉及嵌入式实时操作系统领域,特别是涉及在嵌入式系统中,使用事先分配的内存池对应用申请的大小不确定的内存进行管理的实现方法。
背景技术
随着嵌入式实时系统在各个领域的广泛应用,嵌入式软件的开发也受到越来越多的瞩目。在满足系统实时性要求的前提下,如何提高内存分配的快速性、可靠性、高效性,是嵌入式软件系统需要重点研究的一个课题。内存分配的快速性从嵌入式系统对实时性的要求出发,要求内存在分配过程中尽可能的快,因此在嵌入式系统中,不可能采用通用操作系统中复杂而繁琐的内存分配策略,一般都采用简单、快速的内存分配方案;内存分配的可靠性则要求内存分配的请求必须得到满足,如果分配失败的话可能会带来灾难性的后果;而内存分配的高效性,则要求内存分配尽可能地少浪费。
目前,在嵌入式软件开发中,特别是在诸如电信、信息家电这些行业,由于对内存的申请和释放比较频繁,一般采用的内存分配方法是使用内存分块管理的内存池方式。在开源的嵌入式实时操作系统μCOS-II中也采用了该种内存分配方式。它的技术方案如图1所示,其中:a表示各个内存头信息,m、n、f均为任意整数。相同大小的内存块由实箭头构成一个链表。
为了避免由于内存频繁申请和释放而导致内存碎片,通用的内存池管理方式首先配置各种大小的内存块的数量,比如21字节大小的内存块m个,22字节大小的内存块n个,以此类推,2n字节大小的内存块f个(其中m、n、f均为任意整数),一般为了保证内存分配的可靠性,各种内存块大小保持一个较大的上限值,同时在内存头中保存每个内存块的信息。然后在空闲内存中分配一个大内存,专门用于满足用户的内存申请需求,该内存池大小为各种大小的内存块大小的总和,即:(21×m+22×n+…+2n×f+所有内存头大小)的值。
在进行内存申请时,根据申请内存的大小在相应的内存池中寻找满足大小需要的内存块,如果用户申请的内存是在2q-1~2q这样一个区间中(q为一个确定的整数,满足2q-1<申请内存大小<=2q),则取一个空闲的2q大小的内存块分配给应用;内存释放是根据内存块的的指针找到相应的头,再将其标记为自由内存并归还给相应的缓冲池的过程。
在该内存池分配方法中,不可能把内存块大小差距配置得很小、很均匀,比如内存块大小1,2,4,6...2n,因为内存块大小差距太小,需要保存的内存头指针就多,导致内存的申请和释放的查找耗时剧增,直接影响内存分配的快速性;同时,诸如内存头大小这样的额外的开销也大大增加。所以,一般各内存块是采取诸如2n这样的分配方式的。
这种通用的内存池管理方法针对频繁申请和释放的内存,可以高效,可靠的满足应用需要,同时也可以较好的避免内存碎片的问题。因此在目前的嵌入式软件开发中,有很大范围的应用。
但是,这种通用的内存池管理方式对内存的使用有时是有比较大的浪费的。因为,对于用户申请的内存UB,其对应的内存块是在2n-1<=UB<2n这样一个区间中,但是经过内存池选择出的内存块大小则是2n(必须要不小于2n,否则会导致内存申请失败),这样就存在(2n-UB)大小的空间浪费,特别是UB为2n-1+1的时候尤为明显,而且n值愈大,内存耗费愈大;如果存在一定数量的用户申请的内存,其大小落在靠近2n-1且大于2n-1附近的话,这种浪费就可能对嵌入式产品产生致命影响了,因为一方面,嵌入式系统对成本的要求使得内存在其中只是一种很有限的资源;而另一方面,即使不考虑成本的因素,系统有限的空间和有限的板面积决定了可配置的内存容量是很有限的。
如何扬长避短,既保持通用内存池管理的高效性等优点,又避免其可能存在的内存浪费是更好利用内存池管理方式的关键。
发明内容
本发明所要解决的技术问题是提供一种嵌入式操作系统的内存池分配方法,解决现有技术的内存浪费的问题。
为达到上述目的,本发明提供了一种嵌入式操作系统的内存池分配方法,其特点在于,包括如下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200610089365.1/2.html,转载请声明来源钻瓜专利网。