[发明专利]一种Linux系统下内存管理方法有效
申请号: | 201610197192.9 | 申请日: | 2016-03-31 |
公开(公告)号: | CN105893269B | 公开(公告)日: | 2018-08-21 |
发明(设计)人: | 雷康;陈亮;王凤纯;胡志勇;肖伟明;余道敏 | 申请(专利权)人: | 武汉虹信技术服务有限责任公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F12/10 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 严彦 |
地址: | 430073 湖北省武汉市武汉东湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种Linux系统下内存管理方法,在Linux环境下使用大页内存,在大页内存基础上执行内存配置工作过程,内存申请过程和内存释放过程;内存配置工作过程,包括通过计算虚拟地址和物理地址的关系,得到映射的hugepage属于哪个numa节点,并按照物理地址进行排序;内存申请过程包括内存池配置申请和普通内存申请。本发明保持了内存静态分配的高效率的优点,采用2MB的hugepage页取代4kB节省了页的查询时间,并减少TLB miss的可能,而且hugepage内存不会被交换到磁盘上,保证了内存永远为申请的应用程序使用,在内存申请时优先使用本地内存提高了内存访问速度。 | ||
搜索关键词: | 一种 linux 系统 内存 管理 方法 | ||
【主权项】:
1.一种Linux系统下内存管理方法,其特征在于:在Linux环境下使用大页内存,在大页内存基础上执行内存配置工作过程,内存申请过程和内存释放过程,内存配置工作过程,包括通过计算虚拟地址和物理地址的关系,得到映射的hugepage属于哪个numa节点,并按照物理地址进行排序,其中,numa表示非统一内存访问架构;内存申请过程包括内存池配置申请和普通内存申请,通过以下步骤实现,步骤a1,根据内存池的配置,计算每个内存池需要的内存大小以及每个内存池中保存内存块信息的大小;步骤a2,在numa节点中找到合适的内存分配给各个内存池以及内存池信息记录,然后将内存池初始化,并将相关信息保存到内存池信息记录中;步骤a3,在应用程序申请内存时,首先判断申请内存是否指定了numa节点,如果指定了numa节点,则在指定numa节点上分配,进行步骤a4;未指定numa节点,则在应用程序所属的numa节点上分配,然后进入步骤a4;步骤a4,判断申请大小是否为内存池范围内,如果在范围内,进行步骤a5;如果不在范围内,进行步骤a6;步骤a5,判断内存池是否存在空闲的内存,如果存在,则分配一块内存给应用程序,修改内存池信息,将该内存块从空闲链中摘去;如果不存在,则从其它numa节点的内存池中申请一块内存,结束本流程;步骤a6,将hugepage中除去内存池之外的内存都视为free heap,所有申请超过内存池大小的都从free heap中申请,并将内存地址、申请大小保存到内存信息中;内存释放过程,包括以下步骤,步骤b1,释放内存时,首先判断要释放的内存是否属于内存池,如果属于内存池,进行步骤b2;如果不属于内存池,进行步骤b3;步骤b2,此时释放内存属于内存池,将内存重新挂回空闲链,结束本流程;步骤b3,此时释放内存不属于内存池,则应该属于free heap,根据释放内存地址,得到内存块信息,判断内存是否合法,如果不合法,进行步骤b4;如果合法,将内存设置为空闲,并根据内存大小进行偏移,判断上一个内存块是否空闲,如果空闲,则将两块内存合并成一个大的空闲内存,结束本流程;步骤b4,此时释放内存不合法,退出整个应用程序。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉虹信技术服务有限责任公司,未经武汉虹信技术服务有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610197192.9/,转载请声明来源钻瓜专利网。
- 上一篇:一种快装式安装有孔刀片的夹具
- 下一篇:一种用于工装有孔刀片的夹具