[发明专利]一种无MMU平台的应用系统内存管理的方法及系统有效
申请号: | 200710125532.8 | 申请日: | 2007-12-27 |
公开(公告)号: | CN101470665A | 公开(公告)日: | 2009-07-01 |
发明(设计)人: | 罗寿中 | 申请(专利权)人: | TCL集团股份有限公司 |
主分类号: | G06F12/06 | 分类号: | G06F12/06;G06F17/30 |
代理公司: | 深圳中一专利商标事务所 | 代理人: | 张全文 |
地址: | 516001广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 mmu 平台 应用 系统 内存 管理 方法 | ||
技术领域
本发明属于内存管理领域,尤其涉及一种无MMU平台的应用系统内存管理的方法及系统。
背景技术
针对有内存管理单元(Memory Management Unit,MMU)的处理器设计的一些桌面操作系统,如Windows、Linux,使用了虚拟存储器的概念。虚拟内存地址被送到MMU映射为物理地址,实际存储器被分割为相同大小的页面,采用分页的方式载入进程。
但是有很多应用系统,例如嵌入式系统,是针对没有MMU的处理器开发设计的,因此不能使用处理器的虚拟内存管理技术,它们对于内存的访问是直接通过访问实际物理地址实现的。而且很多应用系统对内存空间没有保护,各个进程实际上共享一个运行空间,一个进程在执行前,系统必须为它分配足够的连续地址空间,然后全部载入主存储器的连续空间。
由此可见,对于无MMU的应用系统的开发人员不得不参与系统的内存管理。从编译内核开始,开发人员必须告诉系统这块开发板到底拥有多少内存,在开发应用程序时,则必须考虑内存的分配情况并关注应用程序需要运行空间的大小。此外,由于采用实存储器管理策略,用户程序同内核以及其他用户程序在一个地址空间,程序开发时要保证不侵犯其它程序的地址空间,以使得程序不至于破坏系统的正常工作,或导致其他程序的运行异常。因此,对于无MMU的应用系统的开发人员对软件中的一些内存操作要格外小心。
这样的应用系统对内存分配有很高的要求,主要体现在:
1、内存能快速申请和释放,即快速性。系统对实时性的保证要求内存分配过程要尽可能地快;
2、内存分配保持原子性,即可靠性。也就是内存分配的请求必须得到满足,如果分配失败可能会带来灾难性的后果;
3、内存应该各尽其用,即高效性。内存分配要尽可能地少浪费。不可能为了保证满足所有的内存分配请求而将内存配置得无限大。
通常情况下,开发人员对内存的请求和释放都是直接调用系统调用来实现。例如在嵌入式系统ucLinux中,C库中malloc和free的实现是分别基于mmap和munmap两个系统调用来实现的。但是,对内存的频繁的请求肯定带来系统性能的损耗,同时也可能造成大量内存碎片的存在,从而导致无法预料的后果,而且也难于对应用系统的内存使用情况做很好的监控和调整。
在现有的一些应用系统的内存管理方法中,有的采用预分配多个固定长度内存块链表的方式,这种方式主要针对满足应用系统对小内存块的频繁需求,而却忽视了对大内存块的管理,从而降低了应用系统对内存使用的整体效率,无法很好地满足内存分配的可靠性和高效性,而且这种方式需要对应用程序的内存使用预先做出正确的估计,对于比较大些的系统,这种方式的实现具有非常大的难度;有的则直接采用链表的方式对内存块进行动态管理,这种方式将内存块不分大小统一链接在一起,每次分配内存时则通过对链表进行查找足够大的内存来实现,这种方式在具体实施时会由于应用系统对小块内存的频繁需求而耗费大量的CPU时间去查找能满足请求的内存,从而无法满足内存分配的快速性。
这些方式都没有对内存的使用进行系统而全面的管理,不但易造成内存资源的浪费,也不能同时满足应用系统对内存分配的快速性、可靠性和高效性,而且也无法很方便地实现对内存使用状况的统计,以及对内存泄漏和操作越界现象的防范和控制。
发明内容
本发明实施例的目的在于提供一种无MMU平台的应用系统内存管理的方法及系统,旨在解决现有针对无MMU的硬件平台的应用系统内存管理方法没有对内存进行全面、系统的管理,且没有根据应用系统对内存使用的大小进行分级处理,从而无法满足应用系统对内存使用的快速性、可靠性以及高效性的问题。
本发明实施例是这样实现的,一种无MMU平台的应用系统内存管理的方法,所述方法包括:
设置系统内存使用的阀值,对于大于阀值的大块内存建立内存管理模型PMP进行管理,对于小于等于阀值的小块内存建立内存管理模型SMP进行管理,所述内存管理模型PMP中建有双向链表FPL,管理PMP中所有大于阀值的空闲内存块,所述内存管理模型SMP中建有链表数组,管理SMP中所有小于等于阀值的空闲内存块,所述内存管理模型SMP中的链表数组中的每个数组元素管理一个由大小相同且固定的小空闲内存块构成的链表,且每个数组元素链表管理的内存大小按固定字节对齐;
接收系统请求分配内存的指令及参数,所述参数包括系统请求分配的内存长度;
当请求分配或需要释放的内存大于阀值时,则在PMP中查找匹配的内存块,并返回结果给系统,在所述内存管理模型PMP中实现内存的分配或释放;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于TCL集团股份有限公司,未经TCL集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710125532.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种16位机纵向结构数据采集方法
- 下一篇:硬盘背板与系统识别的方法