[发明专利]内存分配方法及系统有效
申请号: | 201310074180.3 | 申请日: | 2013-03-08 |
公开(公告)号: | CN103106147A | 公开(公告)日: | 2013-05-15 |
发明(设计)人: | 李顺芬;陈小刚;周密;宋志棠 | 申请(专利权)人: | 中国科学院上海微系统与信息技术研究所 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 上海光华专利事务所 31219 | 代理人: | 李仪萍 |
地址: | 200050 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 分配 方法 系统 | ||
技术领域
本发明涉及内存管理领域,特别是涉及一种内存分配方法及系统。
背景技术
内存是计算机系统中储存指令代码和各种数据的主要部件,如果内存短缺或者管理不当,将导致整个系统反应迟缓,甚至崩溃。所以,建立稳定、高效的内存管理策略是一个很重要的且必须面对的问题。
在现有的Linux操作系统的伙伴算法中,先将所有空闲页面分为10个块组,每组中,各内存块包含2的幂次方个空闲页面,例如,第0组中各内存块各自均包含20=1个空闲页面,第1组中各内存块各自均包含21=2个空闲页面,……第9组中各内存块各自均包含29=512个空闲页面,且每一内存块组的内存块形成一个链表。可见,在该种算法中,每一内存块组中各内存块包含的空闲页面数量是相同的。
以下将通过一个简单的例子来说明该Linux操作系统的伙伴算法的工作过程:
假如现操作系统需要一包含128个空闲页面的内存块,则该伙伴算法系统先在包含128个空闲页面的内存块组的链表中查找,以确定是否有包含128个空闲页面的内存块,如果有,就直接提供该操作系统使用;如果没有,该伙伴算法系统会在包含256个空闲页面的内存块构成的内存块组的链表中查找,如果该内存块组中有可用的空闲内存块,该伙伴算法系统会把该空闲内存块的256个空闲页面分为两等份,一份提供给操作系统使用,另一份插入到包含128个空闲页面的内存块构成的内存块组中。如果在包含256个空闲页面的内存块组的链表中也没有找到可用的空闲页块,就继续在更大的块组,即在包含256个空闲页面的内存块构成的内存块组的链表中查找,如果该内存块组中有可用的空闲内存块,该伙伴算法系统会把该空闲内存块的512个空闲页面分出128个页面提供给操作系统使用,然后从剩余的384个页面中取出256个页面插入到块大小为256个页面的链表中,然后把剩余的128个页面插入到块大小为128个页面的链表中;如果512个页面的链表中还没有可用的空闲内存块,该伙伴算法系统就放弃查询,并发出出错信号。
内存的释放是分配的逆过程,也可以看作是伙伴的合并过程。当释放一个被占用的内存块时,先在其对应的链表中考查是否有伙伴内存块存在,如果没有伙伴内存块,就直接把该要释放的内存块挂入链表头;如果有,则从链表中摘下伙伴内存块,并合并成形成合并内存块,然后继续考查合并后的合并内存块在所属内存块组的链表中是否还有伙伴内存块存在,直到合并至已包含29=512个页面为止。其中,满足以下条件的两个内存块互为伙伴内存块:
(1)两个内存块各自包含的页面数量相同;
(2)两个内存块的物理地址连续。
上述伙伴算法的优点是分配和回收速度快、算法简单,当一个大小为2n字节的内存块释放后,存储管理系统只需要搜索2n字节大小的内存块以判定是否需要合并。
虽然伙伴算法是有名的经典算法,但也并非完美无缺;首先,从伙伴算法原理可知,所有的内存请求都必须以2的幂次方大小为单位,若需要一个包含129个页面的内存块时,系统必须提供包含256个页面的空闲内存块来使用,由于实际仅使用129个页面,剩余的127个页面显然被浪费了,也就是近50%的内存资源被浪费,可见,该种算法容易导致内存利用率较低。
此外,伙伴算法的效率也容易出现问题:由于伙伴算法涉及比较多的计算、以及链表和位图的操作,导致开销比较大;例如,如果每次2n大小的伙伴块合并到2n+1的链表队列中,那么2n大小的链表中的内存块就会因为合并操作而减少,由此,当系统需要2n大小的内存块时,就需要将2n+1大小的内存块又进行拆分,可见,如此合并又拆分的过程是无效率的。
因而,如何提出一种新的内存分配方法,既能很好的继承伙伴算法的优点又能克服伙伴算法的不足,实现快速分配、回收内存,同时提高内存使用效率,实为本领域从业者亟待解决的问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种内存使用效率高的内存分配方法及系统。
为实现上述目的及其他相关目的,本发明提供一种内存分配方法,其至少包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院上海微系统与信息技术研究所,未经中国科学院上海微系统与信息技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310074180.3/2.html,转载请声明来源钻瓜专利网。