[发明专利]Linux系统平台上指定地址范围分配物理内存的方法无效
申请号: | 200710306110.0 | 申请日: | 2007-12-28 |
公开(公告)号: | CN101470667A | 公开(公告)日: | 2009-07-01 |
发明(设计)人: | 武波;陈玄同;刘文涵 | 申请(专利权)人: | 英业达股份有限公司 |
主分类号: | G06F12/06 | 分类号: | G06F12/06 |
代理公司: | 北京律诚同业知识产权代理有限公司 | 代理人: | 梁 挥;祁建国 |
地址: | 台湾省*** | 国省代码: | 中国台湾;71 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | linux 系统 平台 指定 地址 范围 分配 物理 内存 方法 | ||
技术领域
本发明涉及一种内存分配方法,尤其涉及一种Linux系统平台上指定地址范围分配物理内存的方法。
背景技术
目前,内存测试是硬件诊断方案中一项非常重要的功能,其流程主要由两部分组成:内存分配和测试算法。其中,测试算法规定了读写内存的规则,不同的测试算法会针对不同的内存错误类型进行检测,现有技术的测试算法的相关内容在一些内存测试算法的文献中都有专门的介绍,在此不再赘述。内存分配,是进行内存读写测试的重要前提,它将直接关系到测试效果能否达成,例如:能否测试到真正的物理内存或者是否会重复测试同一块内存等。然而,不同的操作系统平台管理物理内存的方式有所不同,并没有统一的规则,因此内存分配是相对比较复杂的,需要针对不同的操作系统平台分别加以考虑。
在Linux操作系统(一种可免费使用的多用户的计算机作业系统)平台上,由于用户态没有提供分配物理内存的方法,所以现有技术的做法只能通过驱动程序,在内核(Kernel)中实现分配物理内存的功能,然后对外提供接口。然而要使分配出的物理内存可以在用户态随意读写,还需要把分配到的物理内存映像到用户态的虚拟地址空间里,在这一点上现有技术中所使用的原理和方法都是相似的,在此不再赘述。而其中,主要的不同就在于分配物理内存的方法。
目前现有技术的分配物理内存的方法有:
方法一:一种分配指定物理内存页的方法。这种方法可以指定地址范围分配物理内存,此方法对于内存分配的最小单位为页,页的大小视Linux系统内核(Kernel)的配置所定。但是此方法每次只能分配一个内存页,效率太低,而且可能会占用相邻的其它内存页,造成不必要的资源浪费。因此,这种方法局限性较大,不适用于对大量物理内存的测试。
方法二:直接调用Linux系统内核(Kernel)提供的分配成块的连续物理内存的接口。这种方法可以分配大量的物理内存,适用于对大量物理内存的测试,但此方法的主要缺点是无法指定地址范围进行物理内存的分配(这是由于Linux系统内核中组织物理内存的数据结构的限制,使其不便于指定地址范围进行物理内存的分配),因而也就无法用于针对特定的内存单元或者指定插槽上的内存进行测试。
发明内容
本发明所要解决的技术问题在于提供一种Linux系统平台上指定地址范围分配物理内存的方法,应用于Linux操作系统下的物理内存的测试进程中,此方法可根据所要分配内存的指定地址范围及大小,对系统中大量的物理内存进行指定地址范围的分配,进而为Linux操作系统下的物理内存的测试提供了有效的支持。
位实现上述目的,本发明所提供的一种Linux系统平台上指定地址范围分配物理内存的方法,包含以下步骤:
获得所要分配内存的指定地址范围及大小;针对系统中每一个节点(Node),查看其包含的内存的地址范围是否与指定地址范围有交集;如果有交集,则对各节点中的每一个页区(Zone),查看其包含的内存的地址范围是否与指定地址范围有交集;如果仍有交集,则在各页区的每中央处理器页框高速缓存(Per-CPU Page Frame Cache)和伙伴系统(Buddy System)中的内存块链表中,查找符合上述大小及指定地址范围要求的内存块;将查找到的内存块从内存块链表中经拆分后取出;以及在各页区中重复查找符合上述大小及指定地址范围要求的内存块并将其拆分后取出,直至分配满足了所要求的大小、或者各页区中已没有符合指定地址范围的内存块、或者各页区的空闲内存已减少至系统内核安全的下限后,传送所有分配出来的内存块的信息,以用于对内存进行映像、检测和释放。
综上所述,本发明的优点在于:
本发明所提供的一种Linux系统平台上指定地址范围分配物理内存的方法,可实现指定地址范围的、大量的物理内存的分配,其通过改进整体分配流程,提供了一次可分配多个内存页/块的功能接口,并利用内核中的数据结构,改进查找方法,加快查找速度,同时,通过拆分内存块的方法,避免了对多余内存页的占用。因此,不仅结合了现有技术中两种分配物理内存的方法的优点,同时也克服了它们所具有的缺陷,进而为Linux操作系统下的物理内存的测试提供了有效的支持。其主要的优点包含:分配到的是实际的物理内存;可以指定地址范围进行分配;可以一次分配大量的内存;不会占用相邻的其它内存页,因而避免了现有技术中可能造成不必要的资源浪费的问题;可以用于针对特定的内存单元或者指定插槽上的内存进行测试。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英业达股份有限公司,未经英业达股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710306110.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:向多个存储介质复制数据的装置、系统及复制方法
- 下一篇:一种数据存储方法