[发明专利]内存管理方法及系统有效
申请号: | 201310364517.4 | 申请日: | 2013-08-19 |
公开(公告)号: | CN103455433A | 公开(公告)日: | 2013-12-18 |
发明(设计)人: | 龚福才;宋怀明;苗艳超;刘新春;邵宗有 | 申请(专利权)人: | 曙光信息产业股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F9/44 |
代理公司: | 北京新知远方知识产权代理事务所(普通合伙) 11397 | 代理人: | 张艳 |
地址: | 300384 天津市西青区华*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 管理 方法 系统 | ||
技术领域
本发明涉及内存管理方法及系统。
背景技术
内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
因此,大量运行的程序需要经常使用内存空间。每个程序所需的内存空间必须通过向系统内核申请而得到。但是,如果实时地频繁地申请内存空间将导致如下的问题:
第一,程序运行速度减慢。通常,操作系统有一个记录空闲内存地址的链表。当系统收到一个程序的内存空间申请时,会遍历该链表,寻找第一个空间大于所申请内存空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给这个程序。对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确地释放这个内存空间。然而,由于找到的堆结点的大小不一定正好等于所申请内存空间的大小,系统会自动地将多余的那部分重新放入空闲链表中。因此,向系统申请内存空间的操作比较复杂,并且申请内存需消耗的时间也远远大于对内存操作的时间。如果程序在运行过程中实时地频繁申请内存空间,将会导致程序效率低下。
第二,碎片内存问题严重。“碎片内存”指的是一个系统中所有不可用的空闲内存。这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用。这一问题通常都会发生,原因在于空闲内存以小而不连续方式出现在不同的位置。如果程序运行过程中实时地申请内存空间,必然是这次需要多少内存空间就申请多少内存空间。由于同时运行的程序很多,可能就会存在多个程序同时在申请内存空间。如果内核按照页的方式来顺序分配内存空间,那么内存空间在刚刚开机时候大部分为空白可用状态。但是,随着运行时间的增长,所使用内存空间会慢慢的向后覆盖过去,前面使用完后释放掉的内存空间可能是小块的,但后续其他程序申请的内存空间比这个块大,那么这些小块的内存空间就分配不出去。因此,虽然例如系统显示有1G的剩余内存空间,但此时如果有一个程序启动起来要一次性申请500MB的连续内存空间,可能也会提示内存空间不足,因此没有大于500MB的连续内存空间可以分配。显然,这实际上造成了内存空间浪费和程序执行效率的下降。一个不断产生内存碎片的系统,不管产生的内存碎片多么小,只要时间足够长,就会将内存用完。这种情况在许多嵌入式系统中,特别是在高可用性系统中是不可接受的。
鉴于以上的种种原因,一个需要频繁使用大量内存空间的系统应当对系统申请得到的内存空间进行统一管理,并且将已经申请到的内存空间重复使用。并且,在系统刚刚启动的时候,就预先分配好基本足够多的内存以供以后使用,并且,尽量减少内存分配的次数。
图1示出了当前较常用的一种内存分配技术。在内存块的使用过程中,主要涉及到下面两种操作:
(1)使用和放弃使用内存块。当系统刚启动时,先申请一些内存空间块,并将全部的内存块指针或标识放入″可使用空间列表″,当系统需要内存块时,将某个内存块标识从″可使用空间列表″中移除,放入″已使用空间列表″中。当系统不需要某内存块时,将该内存块的标识再放回去。
(2)内存块扩容。当系统中已经申请的内存块已经全部使用时,需要重新申请内存块以供使用。这时,需要首先申请一个比现有内存空间更大的内存空间。然后,将已经使用的块中的数据全部拷贝到新的块中。最后,释放旧的内存空间。
在图1中,上方的左右箭头示出了上述第一种情形,即当需要使用某内存空间块时,将某块指针或标识向右移动,从“可使用空间列表”移动到“已使用空间列表”;当不需要使用某内存空间块时,将某块指针或标识向左移动,从“已使用空间列表”移动到“可使用空间列表”。右侧的上下箭头示出了上述第二种情况,即当内存空间块不足时,将某块指针或标识向右移动,分三步完成扩容:(1)申请更大的内存块;(2)拷贝旧数据块的数据至新的更大内存块;(3)释放旧数据块。
上述现有技术存在如下的问题:
(1)当内存块不足时,需要重新申请一个更大的连续内存块。随着系统的运行,可能更大的连续内存块越来越困难去申请。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业股份有限公司,未经曙光信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310364517.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:垃圾架式无烟焚烧炉
- 下一篇:一种圆管节点转换结构及其制作方法