段页结合的内存管理方法

阅读: 评论:0

著录项
  • CN201910763767.2
  • 20190819
  • CN112395078A
  • 20210223
  • 无锡江南计算技术研究所
  • 郑岩;王星焱;黄高阳;林海南;刘松;邹通
  • G06F9/50
  • G06F9/50

  • 江苏省无锡市滨湖区山水东路699号
  • 江苏(32)
  • 苏州创元专利商标事务所有限公司
  • 王健
摘要
本发明公开一种段页结合的内存管理方法,包括以下步骤:S1、获取整个服务器上可供使用的物理内存;S2、从可供使用的物理内存中预留一段或多段连续物理内存,并将预留的连续物理内存加入段式物理内存资源池;S3、将可供使用的物理内存中未被加入段式物理内存资源池的剩余物理内存加入页式物理内存资源池;S4、当计算部件需要物理内存时,通过段式内存申请接口向段式物理内存资源池申请物理内存;S5、当普通用户程序需要物理内存时,操作系统内核将申请的物理内存空间大小与处理器支持的大页页面大小进行比较。本发明通过灵活的内存管理策略,解决了特殊计算部件对大块连续物理内存的需求,同时兼顾普通用户程序内存使用的需求,灵活适应不同的内存需求场景。
权利要求

1.一种段页结合的内存管理方法,其特征在于:包括以下步骤:

S1、操作系统内核启动,并获取整个服务器上可供使用的物理内存;

S2、操作系统初始化,操作系统内核根据内核引导参数配置中的预留连续物理内存容量参数,从可供使用的物理内存中预留一段或多段连续物理内存,并将预留的连续物理内存加入段式物理内存资源池,采用段式内存管理算法进行管理,所述段式物理内存资源池可支持利用段式内存申请接口从段式物理内存资源池中申请连续的段式物理内存空间,并支持相应的释放接口;

S3、将可供使用的物理内存中未被加入段式物理内存资源池的剩余物理内存加入页式物理内存资源池,采用操作系统传统的内存管理算法进行管理;

S4、当计算部件需要物理内存时,通过段式内存申请接口向段式物理内存资源池申请物理内存,从而获得大段连续物理内存;

S5、当普通用户程序需要物理内存时,由系统调用进入操作系统内核,操作系统内核将申请的物理内存空间大小与处理器支持的大页页面大小进行比较,当申请的物理内存空间大小小于处理器支持的大页页面大小时,通过原有的操作系统内核内存申请接口向页式物理内存资源池申请物理内存,当申请的物理内存空间大小大于处理器支持的大页页面大小时,计算所需的大页页面个数,利用段式内存申请接口向段式物理内存资源池申请物理内存,将普通用户程序申请的物理内存空间大小减去向段式物理内存资源池申请物理内存空间大小,获得待申请的物理内存空间大小,并通过原有操作系统内核内存申请接口向页式物理内存资源池申请所述待申请的物理内存。

2.根据权利要求1所述的段页结合的内存管理方法,其特征在于:在S5中,所述待申请的物理内存空间大小等于普通用户程序申请的物理内存空间大小减去向段式物理内存资源池申请的大页页面个数乘以大页页面大小。

3.根据权利要求1所述的段页结合的内存管理方法,其特征在于:所述大页页面大小为2MB~1GB。

说明书
技术领域

本发明涉及一种段页结合的内存管理方法,属于计算机技术领域。

特殊加速计算部件对大块连续物理内存的使用有明确的要求,一是需求容量大,动辄数GB,二是高可用性,申请失败意味着计算任务无法部署,需要尽可能避免该情况发生。为满足上述需求,通常将大块内存预留做特殊加速部件专属内存,进行特殊管理。例如:Linux系统目前的页式内存管理易导致内存使用的碎片化,即便经过整理后也无法保证大段连续物理内存的成功申请,因此为满足特殊加速部件对大块连续物理内存的申请,一般采取开机阶段预留内存,并进行特殊管理的方式。但专属内存失去了通用性和灵活性,普通计算任务利用传统内存申请接口无法申请该专属内存空间。因此,如何在解决特殊计算部件对大块连续物理内存的需求的同时兼顾普通用户程序内存使用的需求,成为本领域技术人员努力的方向。

本发明的目的是提供一种段页结合的内存管理方法,该段页结合的内存管理方法通过灵活的内存管理策略,解决了特殊计算部件对大块连续物理内存的需求,同时兼顾普通用户程序内存使用的需求,灵活适应不同的内存需求场景。

为达到上述目的,本发明采用的技术方案是:一种段页结合的内存管理方法,包括以下步骤:

S1、操作系统内核启动,并获取整个服务器上可供使用的物理内存;

S2、操作系统初始化,操作系统内核根据内核引导参数配置中的预留连续物理内存容量参数,从可供使用的物理内存中预留一段或多段连续物理内存,并将预留的连续物理内存加入段式物理内存资源池,采用段式内存管理算法进行管理,所述段式物理内存资源池可支持利用段式内存申请接口从段式物理内存资源池中申请连续的段式物理内存空间,并支持相应的释放接口;

S3、将可供使用的物理内存中未被加入段式物理内存资源池的剩余物理内存加入页式物理内存资源池,采用操作系统传统的内存管理算法进行管理;

S4、当计算部件需要物理内存时,通过段式内存申请接口向段式物理内存资源池申请物理内存,从而获得大段连续物理内存;

S5、当普通用户程序需要物理内存时,由系统调用进入操作系统内核,操作系统内核将申请的物理内存空间大小与处理器支持的大页页面大小进行比较,当申请的物理内存空间大小小于处理器支持的大页页面大小时,通过原有的操作系统内核内存申请接口向页式物理内存资源池申请物理内存,当申请的物理内存空间大小大于处理器支持的大页页面大小时,计算所需的大页页面个数,利用段式内存申请接口向段式物理内存资源池申请物理内存,将普通用户程序申请的物理内存空间大小减去向段式物理内存资源池申请物理内存空间大小,获得待申请的物理内存空间大小,并通过原有操作系统内核内存申请接口向页式物理内存资源池申请所述待申请的物理内存。

上述技术方案中进一步改进的技术方案如下:

1. 上述方案中,在S5中,所述待申请的物理内存空间大小等于普通用户程序申请的物理内存空间大小减去向段式物理内存资源池申请的大页页面个数乘以大页页面大小。

2. 上述方案中,所述大页页面大小为2MB~1GB。

由于上述技术方案的运用,本发明与现有技术相比具有下列优点:

本发明段页结合的内存管理方法,其主要应用于国产申威处理器异构众核平台,通过灵活的内存管理策略,解决了特殊计算部件对大块连续物理内存的需求,同时兼顾普通用户程序内存使用的需求,支持段式内存页式使用,提供了系统内存的可用性,灵活适应不同的内存需求场景。

附图1为段页结合的内存管理方法流程图。

实施例:一种段页结合的内存管理方法,包括以下步骤:

S1、操作系统内核启动,并获取整个服务器上可供使用的物理内存;

S2、操作系统初始化,操作系统内核根据内核引导参数配置中的预留连续物理内存容量参数,从可供使用的物理内存中预留一段或多段连续物理内存,并将预留的连续物理内存加入段式物理内存资源池,采用段式内存管理算法进行管理,所述段式物理内存资源池可支持利用段式内存申请接口从段式物理内存资源池中申请连续的段式物理内存空间,并支持相应的释放接口;

S3、将可供使用的物理内存中未被加入段式物理内存资源池的剩余物理内存加入页式物理内存资源池,采用操作系统传统的内存管理算法进行管理;

S4、当计算部件需要物理内存时,通过段式内存申请接口向段式物理内存资源池申请物理内存,从而获得大段连续物理内存;

S5、当普通用户程序需要物理内存时,由系统调用进入操作系统内核,操作系统内核将申请的物理内存空间大小与处理器支持的大页页面大小进行比较,当申请的物理内存空间大小小于处理器支持的大页页面大小时,通过原有的操作系统内核内存申请接口向页式物理内存资源池申请物理内存,当申请的物理内存空间大小大于处理器支持的大页页面大小时,计算所需的大页页面个数,利用段式内存申请接口向段式物理内存资源池申请物理内存,将普通用户程序申请的物理内存空间大小减去向段式物理内存资源池申请物理内存空间大小,获得待申请的物理内存空间大小,并通过原有操作系统内核内存申请接口向页式物理内存资源池申请所述待申请的物理内存。

在S5中,所述待申请的物理内存空间大小等于普通用户程序申请的物理内存空间大小减去向段式物理内存资源池申请的大页页面个数乘以大页页面大小。

上述大页页面大小为2 MB。

实施例进一步解释如下:

操作系统所采用的内存管理有两个阶段,第一阶段是操作系统内核启动时先获取整个服务器上可供使用的内存段,该阶段采用段式管理,第二阶段是页式管理,用于用户程序或操作系统自身所需内存的申请释放。

本发明针对上述情况,具体流程如下:

操作系统引导,根据参数配置从操作系统标准bootmem中预留大段连续物理内存,将预留的物理内存加入段式内存资源池,采用段式内存管理;

剩余的物理内存加入页式内存资源池,由操作系统传统的内存管理算法进行管理;

需要大段连续物理内存时,可利用新增操作系统接口向段式内存资源池申请物理内存;

利用传统操作系统内存申请接口去申请内存时,分两种情况处理:

当申请的空间小于处理器支持的大页页面大小时,利用普通操作系统内存申请接口申请小页空间,该空间位于页式内存资源池,大页页面大小通常为小页页面的整数倍,如Intel处理器常规小页页面大小为4KB,大页页面大小为2MB;

当申请的空间大于处理器支持的大页页面大小时,满足大页页面的部分向段式内存资源池申请段式内存,剩余部分向页式内存资源池申请小页空间。

其中,第一步是该方法的准备阶段,只有在引导阶段才能预留连续的大段物理内存,构建段式内存资源池,第四步则充分体现了段页结合的内存管理特点,使得传统内存申请接口也可以透明的使用段式内存资源池中的内存空间。

通过在系统开机阶段预留大量内存,将段式内存管理和页式内存管理结合起来,在内核中建立区分于页式内存资源池的段式内存资源池,并针对性新增段式内存申请接口和兼容传统内存申请接口,既保障连续大段物理内存申请,解决了操作系统上连续大段物理内存申请的成功率问题,同时兼顾传统页式内存申请接口,使得采用传统内存申请接口的普通用户程序,也可以透明的使用两种内存资源池中的内存资源。

为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:

Bootmem:Linux内核初始化阶段的内存管理系统,采用连续段式管理,当页式管理系统启用后,bootmem系统即停用。

采用上述段页结合的内存管理方法时,其主要应用于国产申威处理器异构众核平台,通过灵活的内存管理策略,解决了特殊计算部件对大块连续物理内存的需求,同时兼顾普通用户程序内存使用的需求,支持段式内存页式使用,提供了系统内存的可用性,灵活适应不同的内存需求场景。

上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

本文发布于:2023-04-13 09:54:54,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/86417.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图