基于动态内存分配技术的进程地址空间管理方法及装置制造方法及图纸

技术编号:36301235 阅读:72 留言:0更新日期:2023-01-13 10:17
本发明专利技术的实施例提供一种基于动态内存分配技术的进程地址空间管理方法及装置,所述方法包括:将进程的动态映射地址空间划分为多个互不相交的内存区域,每个内存区域具有多个线性区,每一个内存区域对应一个CPU内核;对所述多个线性区,基于无锁跳跃表进行组织管理,所述无锁跳跃表包括多层链表,每层链表中包括至少一个线性区的索引对应的节点,且相邻两层链表中,上层链表是下层链表的子集。本发明专利技术的方案提高进程地址空间的可扩展性,极大地提升数据处理速度和效率。据处理速度和效率。据处理速度和效率。

【技术实现步骤摘要】
基于动态内存分配技术的进程地址空间管理方法及装置


[0001]本专利技术涉及计算机
,特别是指一种基于动态内存分配技术的进程地址空间管理方法及装置。

技术介绍

[0002]当前的操作系统,随着中央处理器CPU核数的增加,其性能得到极大的提高,其进程的管理主要还是进程地址空间中心化的管理,出现了随CPU核数增加而内核性能无法弹性扩展的问题。

技术实现思路

[0003]本专利技术提供了一种基于动态内存分配技术的进程地址空间管理方法及装置。可以充分释放和发挥众核并行效能,极大地提升数据处理速度和效率。
[0004]为解决上述技术问题,本专利技术的实施例提供以下方案:一种基于动态内存分配技术的进程地址空间管理方法,所述方法包括:将进程的动态映射地址空间划分为多个互不相交的内存区域,每个内存区域具有多个线性区,每一个内存区域对应一个CPU内核;对所述多个线性区,基于无锁跳跃表进行组织管理,所述无锁跳跃表包括多层链表,每层链表中包括至少一个线性区的索引对应的节点,且相邻两层链表中,上层链表是下层链表的子集。
[0005]可选的,基于动态内存分配技术的进程地址空间管理方法,还包括:接收到上层的多线程应用程序的调用时,将所述动态映射地址空间作为一个共享内存,提供给所述多线程应用程序。
[0006]可选的,所述进程的动态映射地址空间包括内存映射段mmap的区域;所述方法还包括:在操作系统调用内存映射段mmap操作后,创建新的线性区;将所述新的线性区插入所述动态映射地址空间。
[0007]可选的,基于动态内存分配技术的进程地址空间管理方法,还包括:通过调用内存映射删除函数,对所述进程的动态映射地址空间中的内存映射进行删除;所述内存映射删除函数根据所述第一参数和所述第二参数,通过调用删除执行函数,删除所述内存映射;所述第一参数是内存映射的起始地址,所述第二参数是内存映射的长度。
[0008]可选的,所述线性区用线性区描述符表示,所述线性区描述符保存有:线性区的区间大小、区间的开始和结束地址、区间的属性、区间所属的红黑树节点信息;每个线性区描述符保存有跳跃表中的一个节点。
[0009]可选的,基于动态内存分配技术的进程地址空间管理方法,还包括:接收对目标线性区的访问请求,所述访问请求携带所述目标线性区的索引;
在所述无锁跳跃表中的第一层链表中,按照所述索引进行查找与所述索引对应的节点,若查找到所述节点,则返回查找结果;否则,跳到第二层链表中继续查找,返回在第N层链表查找获得的查找结果,所述N大于或者等于2。
[0010]可选的,基于动态内存分配技术的进程地址空间管理方法,还包括:在线程从对象中删除一个节点时,通过风险指针指向被删除的节点所占用的内存空间;根据所述风险指针,回收所述被删除的内存空间。
[0011]本专利技术的实施例还提供一种进程地址空间管理装置,包括:划分模块,用于将进程的动态映射地址空间划分为多个互不相交的内存区域,每个内存区域具有多个线性区,每一个内存区域对应一个CPU内核;管理模块,用于对所述多个线性区,基于无锁跳跃表进行组织管理,所述无锁跳跃表包括多层链表,每层链表中包括至少一个线性区的索引对应的节点,且相邻两层链表中,上层链表是下层链表的子集。
[0012]本专利技术的实施例还提供一种计算设备,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如上所述的方法的步骤。
[0013]本专利技术的实施例还提供一种计算机可读存储介质,存储指令,当所述指令在计算机上运行时,使得计算机执行如上所述的方法。
[0014]本专利技术的上述方案至少包括以下有益效果:本专利技术的上述方案,通过将进程的动态映射地址空间划分为多个互不相交的内存区域,每个内存区域具有多个线性区,每一个内存区域对应一个CPU内核;对所述多个线性区,基于无锁跳跃表进行组织管理,所述无锁跳跃表包括多层链表,每层链表中包括至少一个线性区的索引对应的节点,且相邻两层链表中,上层链表是下层链表的子集;实现了基于无锁跳表的众核进程地址空间管理,由无锁跳表动态数据结构管理的内存区间的线性区可并行动态扩展,解决了当前主流操作系统随CPU核数增加而内核性能无法弹性扩展的问题,突破了现有架构下操作系统的性能瓶颈,能够充分释放和发挥众核并行效能,极大地提升了数据处理速度和效率。
附图说明
[0015]图1为本专利技术实施例的基于动态内存分配技术的进程地址空间管理方法的流程示意图;图2为本专利技术实施例的内存分段示意图;图3为本专利技术实施例的基于动态内存分配技术的进程地址空间管理系统的架构示意图;图4为本专利技术实施例的跳跃表的示意图;图5为本专利技术实施例的基于动态内存分配技术的进程地址空间管理装置的模块示意图。
具体实施方式
[0016]下面将参照附图更详细地描述本专利技术的示例性实施例。虽然附图中显示了本专利技术的示例性实施例,然而应当理解,可以以各种形式实现本专利技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术,并且能够将本专利技术的范围完整的传达给本领域的技术人员。
[0017]如图1所示,本专利技术提供一种基于动态内存分配技术的进程地址空间管理方法,所述方法包括:步骤11,将进程的动态映射地址空间划分为多个互不相交的内存区域,每个内存区域具有多个线性区,每一个内存区域对应一个CPU内核;步骤12,对所述多个线性区,基于无锁跳跃表进行组织管理,所述无锁跳跃表包括多层链表,每层链表中包括至少一个线性区的索引对应的节点,且相邻两层链表中,上层链表是下层链表的子集。
[0018]该实施例中,进程是操作系统进行资源分配的最小单位,而内存是进程运行必不可少的资源。操作系统一般会为每个进程分配独享的内存空间,这个独享的内存空间是操作系统为进程分配的虚拟内存空间,虚拟内存在真正被使用时才映射到物理内存上。进程每次访问自己内存空间的某个地址(虚拟地址)时,操作系统都需要把地址翻译成实际物理内存地址。
[0019]操作系统将整个物理内存划分为很多的页,页的大小一般为4K,不同操作系统实现可能会不同,之后在给进程进行内存分配时,都以页为单位。操作系统虚拟内存到物理内存的映射表,被称为页表。
[0020]如图2所示,本专利技术的实施例中,虚拟地址空间可分为两部分:内核态虚拟地址空间以及用户态虚拟地址空间;内核态虚拟地址空间映射内核的代码段,数据段等信息,并且与用户态虚拟地址的地址空间相互隔离。本专利技术的实施例中,进程的动态映射地址空间划分,是在用户态虚拟地址空间的内存映射段进行的。
[0021]虚拟地址空间采用“分段+分页”结合的方式实现。分段是将内存划分成各个段落(Segment),每个段落的长度可以不同,且虚拟地址空间中未使用的空间不会映射到物理内存中,所以操作系统不会为这段空间分配物理内存。
[0022]内核为刚创建的进程分配的物理内存可以很小,随着进程运行不断使用内存,内核再为进程按需分配物理内存。也就是本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于动态内存分配技术的进程地址空间管理方法,其特征在于,所述方法包括:将进程的动态映射地址空间划分为多个互不相交的内存区域,每个内存区域具有多个线性区,每一个内存区域对应一个CPU内核;对所述多个线性区,基于无锁跳跃表进行组织管理,所述无锁跳跃表包括多层链表,每层链表中包括至少一个线性区的索引对应的节点,且相邻两层链表中,上层链表是下层链表的子集。2.根据权利要求1所述的基于动态内存分配技术的进程地址空间管理方法,其特征在于,还包括:接收到上层的多线程应用程序的调用时,将所述动态映射地址空间作为一个共享内存,提供给所述多线程应用程序。3.根据权利要求1所述的基于动态内存分配技术的进程地址空间管理方法,其特征在于,所述进程的动态映射地址空间包括内存映射段mmap的区域;所述方法还包括:在操作系统调用内存映射段mmap操作后,创建新的线性区;将所述新的线性区插入所述动态映射地址空间。4.根据权利要求3所述的基于动态内存分配技术的进程地址空间管理方法,其特征在于,还包括:通过调用内存映射删除函数,对所述进程的动态映射地址空间中的内存映射进行删除;所述内存映射删除函数根据第一参数和第二参数,通过调用删除执行函数,删除所述内存映射;所述第一参数是内存映射的起始地址,所述第二参数是内存映射的长度。5.根据权利要求1所述的基于动态内存分配技术的进程地址空间管理方法,其特征在于,所述线性区用线性区描述符表示,所述线性区描述符保存有:线性区的区间大小、区间的开始和结束地址、区间的属性、区间所属的红黑树节点信息...

【专利技术属性】
技术研发人员:杨贻宏
申请(专利权)人:上海飞旗网络技术股份有限公司
类型:发明
国别省市:

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

1