面向多核处理器的内存管理系统技术方案

技术编号:13775060 阅读:52 留言:0更新日期:2016-09-30 19:32
本申请提供了一种面向多核处理器的内存管理系统,其特征在于所述系统将进程访存行为划分为静态与动态属性。其静态属性用于描述进程所表现的通常性的内存需求行为(单页以及突发式的请求);动态属性用于描述进程在其生命周期活动过程中对内存需求表现出的特性。基于对静态及动态属性的分析,引入了进程内与进程间内存操作模块。该系统一方面可以有效提升系统分配效率,同时可以有效降低多核间内存资源锁的竞争。

【技术实现步骤摘要】

本申请涉及多核处理器内存管理
,具体而言,涉及一种面向多核处理器的内存管理系统及其内存管理方法。
技术介绍
多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。Samsung、Freescale、TI等半导体厂商针对智能手机平台相继推出了双核、四核处理器。多核体系相对单核而言,对内存带宽的需求更加苛刻。共享内存的CMP多核系统,在智能手机领域占据主要地位,而多核处理器进一步加剧了内存资源的竞争。Android采用一种集中式的伙伴分配算法,按照FCFS的原则处理每一次内存资源的请求与释放操作。伙伴分配算法把所有的空闲页框分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,512和1024个连续的页框。对1024个页框的最大请求对应着4MB大小的连续RAM块。每个块的第一个页框的物理地址是该块大小的整数倍。例如,大小为16个页框的块,其起始地址是16×212(212=4096,这是一个常规页的大小)的倍数。伙伴分配算法的原理如下:当进行分配内存时,首先寻找大小合适的内存块(大于等于所需大小并且最接近2的幂);如果找到了,分配给应用程序;否则,分出合适的内存块。然后对半分离出高于所需大小的空闲内存块,如果分到最低限度,分配这个大小。继续寻找合适大小的块,如此重复,直到找到一个合适的块。而释放内存时,先释放该内存块,再寻找其相邻的块,看其是否释放了。如果相邻块也释放了,合并这两个块,重复上述步骤直到遇上未释放的相邻块,或者达到最高上限(即所有内存都释放了)。内存管理系统作为内存资源的管理者与调度者,对于系统性能的影响至关重要。将通过一个简单的实例(算法1)来分析进程的行为。在算法1的例子中,该程序首先动态申请一块内存资源;然后对内存资源进行读写;最后,使用完毕后释放。从操作系统的角度看到的进程对于内存资源的操作又表现为什么形式呢?正如图1中所描述的内存管理框架那样,从用户态的角度而言,一个程序一方面可以直接使用系统调用来管理内存区域,但是更多的时候都是使用“C库”提供的malloc()和free()函数动态分配与释放内存。当应用程序调用malloc后,此行为一般不会立即反应到OS中,这是因为“C库”为了保持较高的分配效率而减少与操作系统的交互,通常会预先分配一块大于用户请求的内存(默认256K),并通过某种算法管理这块内存来满足用户的内存分配要求。同样,对于应用程序释放掉的内存,“C库”也并不是立即归还到操作系统,而是在达到某种条件后才释放(默认为大小超过2M时)。从操作系统的层次,如采用Android作为本文的研究对象,其在初始设计内存管理系统时,基于内存外部碎片的考虑(过多的外部碎片会导致内存申请失败,从而换出某些进程影响系统性能),采用了一种集中式的内存管理系统(伙伴算法)。但是正如图1所示,当多核多进程对内存资源进行操作时,每CPU核心需要首先通过自旋锁来获取内存资源的使用权,随着申请/释放越来越多,进程等待的时间可能会越来越长。本专利技术因此而来。
技术实现思路
本申请旨在提供一种面向多核处理器进程进行内存页分配的方法,以解决现有技术中的问题。为了实现上述目的,根据本申请的一个方面,提供了一种面向多核处理器进程进行内存页分配的方法,其特征在于,所述方法包括:(1)依据进程的静态属性,借助于进程信息获取当前进程的状态,并判断当前进程的状态是处于创建状态还是活动状态,然后依据进程所表现出的动态属性差异执行步骤(2)操作;(2)如果当前进程的状态是处于创建状态,则向其他进程的空闲内存页中申请空闲内存页;否则,进行步骤(3);(3)判断当前进程的空闲内存页链表是否是空;如果当前进程的空闲内存页链表非空,则当前进程直接从自身的空闲内存页中申请内存页;否则向其他进程的空闲内存页中申请空闲内存页。本专利技术将进程访存行为划分为静态与动态属性。其静态属性用于描述进程所表现的通常性的内存需求行为(单页以及突发式的请求);动态属性用于描述进程在其生命周期活动过程中对内存需求表现出的特性;所述动态属性包括创建状态、活动状态、释放状态;所述创建状态为进程在被创建时的状态;所述活动状态为根据进程的实际行为持续的进行申请、访问、释放内存的状态;所述释放状态为进程运行完毕释放资源时的状态。本专利技术基于对进程的静态属性及动态属性的分析,引入了进程内与进程间内存操作模块。进一步的技术方案是,所述方法中,进程的状态获取是通过获取进程的PID及其关联的进程信息得到的。进一步的技术方案是,所述方法中,其他进程为同一进程组的其他进程;优选的,其他进程为同一处理器核心同一进程组的其他进程;最优选的,其他进程为同一处理器核心同一应用程序同一进程组的其他进程。进一步的技术方案是,所述方法还包括为当前进程预先设置有page_list与free_list链表,其中page_list链表用于存放当前进程正在使用的内存页,free_list链表用于存放当前进程所拥有的空闲资源。进一步的技术方案是,所述方法中当前进程直接从自身的空闲内存页中申请内存页是通过get_page函数来获得,所述get_page函数用于对进程自身的free_list链表中内存页资源进行申请空闲内存页操作。进一步的技术方案是,所述方法中向其他进程的空闲内存页中申请空闲内存页是通过get_page_from_thread函数实现的,所述get_page_from_thread函数用于当前进程向同一进程组的其他进程申请空闲的内存资源的操作。进一步的技术方案是,所述方法中还包括当前进程通过free_page函数释放进程本身不使用的内存页资源,所述free_page函数用于释放进程本身内存页资源,并将相应内存页资源加入到空闲内存页链表中的操作。进一步的技术方案是,所述方法中还包括当前进程还通过free_page_to_thread函数释放空闲内存资源给其他进程,所述 free_page_to_thread函数用于当前进程释放空闲内存页资源给同一进程组的其他进程的操作。本专利技术提供的另一目的在于提供一种与权利要求1相应的面向多核处理器进程释放内存页资源的方法,其特征在于所述方法包括:(1)判断当前进程的状态是否处于活动状态,如果当前进程的状态处于活动状态,则将释放相应的内存页资源到进程结构体中,并在空闲内存页链表中记录;否则进行步骤(2);(2)判断当前进程的状态是否处于释放状态,如果当前进程的状态处于释放状态,则将释放相应的内存页资源,并将相应的内存页资源传递给其他进程;否则,不进行任何操作。本专利技术提供的又一目的在于提供一种面向多核处理器的内存管理系统,其特征在于所述系统包括:进程内内存操作模块,所述模块为每一个进程设置有page_list与free_list链表,其中page_list链表用于存放当前进程正在使用的内存页,free_list链表用于存放当前进程所拥有的空闲资源用于进程,所述模块用于进程自身的内存页资源分配和释放操作;以及进程间内存操作模块,用于进程向同一进程组申请或者释放内存页资源的操作;其中,进程内内存操作模块包括get_page与free_page模块;进程间内存操作模块包括get_page_from_th本文档来自技高网
...

【技术保护点】
一种面向多核处理器进程进行内存页分配的方法,其特征在于,所述方法包括:(1)根据进程信息获取当前进程的状态,并判断当前进程的状态是处于创建状态还是活动状态,然后依据进程所表现出的动态属性差异执行步骤(2)操作;(2)如果当前进程的状态是处于创建状态,则向其他进程的空闲内存页中申请空闲内存页;否则,进行步骤(3);(3)判断当前进程的空闲内存页链表是否是空;如果当前进程的空闲内存页链表非空,则当前进程直接从自身的空闲内存页中申请内存页;否则向其他进程的空闲内存页中申请空闲内存页。

【技术特征摘要】
1.一种面向多核处理器进程进行内存页分配的方法,其特征在于,所述方法包括:(1)根据进程信息获取当前进程的状态,并判断当前进程的状态是处于创建状态还是活动状态,然后依据进程所表现出的动态属性差异执行步骤(2)操作;(2)如果当前进程的状态是处于创建状态,则向其他进程的空闲内存页中申请空闲内存页;否则,进行步骤(3);(3)判断当前进程的空闲内存页链表是否是空;如果当前进程的空闲内存页链表非空,则当前进程直接从自身的空闲内存页中申请内存页;否则向其他进程的空闲内存页中申请空闲内存页。2.根据权利要求1所述的方法,其特征在于,所述方法中,动态属性用于描述进程在其生命周期活动过程中对内存需求表现出的特性;所述动态属性包括创建状态、活动状态、释放状态;所述创建状态为进程在被创建时的状态;所述活动状态为根据进程的实际行为持续的进行申请、访问、释放内存的状态;所述释放状态为进程运行完毕释放资源时的状态。3.根据权利要求1所述的方法,其特征在于,所述方法中,其他进程为同一进程组的其他进程;优选的,其他进程为同一处理器核心同一进程组的其他进程;最优选的,其他进程为同一处理器核心同一应用程序同一进程组的其他进程。4.根据权利要求1所述的方法,其特征在于,所述方法还包括为当前进程预先设置有page_list与free_list链表,其中page_list链表用于存放当前进程正在使用的内存页,free_list链表用于存放当前进程所拥有的空闲资源。5.根据权利要求4所述的方法,其特征在于,所述方法中当前进程直接从自身的空闲内存页中申请内存页是通过get_page函数来获得,所述get_page函数用于对进程自身的free_list链表中内存页资源进行申请空闲内存页操作。6.根据权利要求4所述的方法,其特征在于,所述方法中向其他进程的空闲内存页中申请空闲内存页是通过get_page_from_thread函数实现的,所述get_page_from_thread函数用于当前进程向同一进程组的其他进程申请空闲的内存资源的操作。7.根据权利要求4所述的方法,其特征在于,所述方法中还包括当前进程通过free_page函数释放进程本身不使用的内存页...

【专利技术属性】
技术研发人员:朱宗卫熊开胜程修国
申请(专利权)人:苏州万特锐仪器有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1