内存管理方法、装置、设备及存储介质制造方法及图纸

技术编号:38901834 阅读:17 留言:0更新日期:2023-09-22 14:20
本发明专利技术实施例提供了一种内存管理方法、装置、设备及存储介质,涉及计算机技术领域。在本发明专利技术中,当目标线程触发OS/CPU启动TLB填写时,OS/CPU首先确定目标线程所需内存区域对应的页表项是否同时具有写和执行权限,若是,则确定该内存区域同时具有动态代码生成和执行需求,进而对该页表项配置目标线程的线程描述符中预设标记位指示的权限,并作为TLB表项写入TLB,如此,可使目标线程在当前处理器上只能够以预设标记位指示的权限访问该TLB表项指示的内存。对于同一应用程序进程中的动态代码生成线程和动态代码执行线程,可以通过预设标记位的不同标记,对同一内存配置不同的操作权限,提高了动态代码所在内存区域的安全性。提高了动态代码所在内存区域的安全性。提高了动态代码所在内存区域的安全性。

【技术实现步骤摘要】
内存管理方法、装置、设备及存储介质


[0001]本专利技术涉及计算机
,特别是涉及一种内存管理方法、装置、一种电子设备以及一种存储介质。

技术介绍

[0002]通常情况下,动态语言一般通过解释器解释执行,为了提升运行效率,引入了即时编译器(JIT编译器,Just In Time Compiler),即在解释运行的过程中的适当时机,将源代码编译成目标机器的二进制代码,直接在目标处理器上运行。即时编译器作为应用程序运行时的一部分,与即时编译器动态生成的代码运行在同一地址空间,即应用程序对应的进程空间,动态生成的代码位于代码生成区域(Code Generate Area,CGA),这意味着代码生成区域所在的内存区间需要至少同时具备写(W)和执行(X)权限,也即该内存区间即支持写入动态代码(即动态代码的生成),又支持执行动态生成的代码。但如此一来,使得恶意代码具有了非法写入并执行的可能,这将大大降低该内存区间的安全性。

技术实现思路

[0003]鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的内存管理方法,以解决动态代码生成过程中,代码生成区域对应的内存区间因同时具有写权限和执行权限,导致该内存区间安全性较低的问题。
[0004]相应的,本专利技术实施例还提供了一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
[0005]为了解决上述问题,本专利技术实施例公开了一种内存管理方法,应用于电子设备,所述电子设备中包括目标线程、操作系统以及中央处理器;所述方法包括:
[0006]所述目标线程触发操作系统或中央处理器启动TLB的填写,其中,所述目标线程为所述中央处理器上当前运行的线程;
[0007]所述操作系统或所述中央处理器确定所述目标线程所需的内存区域对应的页表项是否同时具有写权限和执行权限;
[0008]在所述页表项同时具有所述写权限和所述执行权限的情况下,所述操作系统或所述中央处理器确定所述页表项所指示的所述内存区域同时具有动态代码生成需求和动态代码执行需求;
[0009]所述操作系统或所述中央处理器根据所述目标线程的线程描述符中的预设标记位,对所述页表项配置所述预设标记位所指示的操作权限,并将配置操作权限后的所述页表项作为所述目标线程对应的TLB表项写入所述TLB中,以使所述目标线程仅能以所述TLB表项中配置的操作权限访问所述TLB表项所指示的内存区域;
[0010]其中,所述预设标记位用于指定对应线程对所需内存区域仅具有所述写权限和所述执行权限中的一种操作权限,所述目标线程包括同一应用程序进程中的动态代码生成线程和动态代码执行线程中的至少一种,所述动态代码生成线程的预设标记位与所述动态代
码执行线程的预设标记位被配置为不同标记。
[0011]可选地,所述方法还包括:
[0012]当一个线程的内存访问请求触发缺页异常时,若触发缺页的内存区域同时具有所述写权限和所述执行权限,且触发缺页的操作与所述线程的所述预设标记位的标记所指示的操作权限不匹配,则所述操作系统或所述中央处理器确定触发缺页的所述操作为非允许的异常操作;
[0013]所述操作系统或所述中央处理器执行所述非允许的异常操作所对应的预设异常处理操作。
[0014]可选地,在所述目标线程触发操作系统或中央处理器启动TLB的填写之前,还包括:
[0015]在所述操作系统内核的线程描述符中定义所述预设标记位,并声明所述预设标记位用于指示对应线程对同时具有写权限和执行权限的页表项仅具有所述写权限和所述执行权限中的一种。
[0016]可选地,在所述中央处理器启动TLB的填写的情况下,在所述目标线程触发操作系统或中央处理器启动TLB的填写之前,还包括:
[0017]在所述中央处理器的微码中配置预设寄存器,并配置所述预设寄存器的第一预设字段用于指示在TLB填写时,是否对同时具有写权限和执行权限的页表项调整写入TLB的操作权限,以及配置所述预设寄存器的第二预设字段用于指示在填写TLB时,当所述第一预设字段使能时,根据当前运行线程的预设标记位所指示的操作权限,对同时具有写权限和执行权限的页表项进行操作权限的配置。
[0018]可选地,所述方法还包括:
[0019]在所述动态代码生成线程与所述动态代码执行线程之间进行线程上下文切换时,所述操作系统根据切换后的线程的预设标记位,将所述预设寄存器的所述第一预设字段配置为使能,将所述第二预设字段配置为所述预设标记位的值。
[0020]可选地,在所述中央处理器启动TLB的填写的情况下,所述操作系统或所述中央处理器根据所述目标线程的线程描述符中的预设标记位,对所述页表项配置所述预设标记位所指示的操作权限,包括:
[0021]所述中央处理器读取所述预设寄存器;
[0022]当所述预设寄存器的所述第一预设字段使能时,所述中央处理器对所述页表项配置所述第二预设字段的值所指示的操作权限。
[0023]可选地,在所述目标线程触发操作系统或中央处理器启动TLB的填写之前,还包括:
[0024]所述应用程序进程创建所述动态代码生成线程;
[0025]所述动态代码生成线程通过系统调用,将所述动态代码生成线程的预设标记位配置为指示仅能够使用写权限的第一标记。
[0026]可选地,在所述目标线程触发操作系统或中央处理器启动TLB的填写之前,还包括:
[0027]所述应用程序进程创建所述动态代码执行线程;
[0028]所述动态代码执行线程通过系统调用,将所述动态代码执行线程的预设标记位配
置为指示仅能够使用执行权限的第二标记。
[0029]可选地,所述系统调用被配置为在一个线程的生命周期中只允许被所述线程调用一次,以使所述线程在所述生命周期内只允许配置一次所述预设标记位。
[0030]可选地,所述目标线程触发操作系统或中央处理器启动TLB的填写,包括:
[0031]所述目标线程发出内存访问请求,触发所述操作系统或所述中央处理器处理所述请求;
[0032]所述操作系统或所述中央处理器响应于所述请求产生TLB未命中时,启动TLB的填写。
[0033]可选地,所述动态代码生成线程包括即时编译器线程,所述动态代码执行线程包括解释器线程。
[0034]本专利技术实施例还公开了一种电子设备,包括有存储器、以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上的处理器执行所述一个或者一个以上的程序,所述程序包含用于进行以下操作的指令:
[0035]目标线程触发操作系统或中央处理器启动TLB的填写,其中,所述目标线程为所述中央处理器上当前运行的线程;
[0036]所述操作系统或所述中央处理器确定所述目标线程所需的内存区域对应的页表项是否同时具有写权限和执行权限;
[0037]在所述页表项同时具有所述写权限和所述执行权限的情况下,所述操作系统本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存管理方法,其特征在于,所述方法包括:目标线程触发操作系统或中央处理器启动TLB的填写,其中,所述目标线程为所述中央处理器上当前运行的线程;所述操作系统或所述中央处理器确定所述目标线程所需的内存区域对应的页表项是否同时具有写权限和执行权限;在所述页表项同时具有所述写权限和所述执行权限的情况下,所述操作系统或所述中央处理器确定所述页表项所指示的所述内存区域同时具有动态代码生成需求和动态代码执行需求;所述操作系统或所述中央处理器根据所述目标线程的线程描述符中的预设标记位,对所述页表项配置所述预设标记位所指示的操作权限,并将配置操作权限后的所述页表项作为所述目标线程对应的TLB表项写入所述TLB中,以使所述目标线程仅能以所述TLB表项中配置的操作权限访问所述TLB表项所指示的内存区域;其中,所述预设标记位用于指定对应线程对所需内存区域仅具有所述写权限和所述执行权限中的一种操作权限,所述目标线程包括同一应用程序进程中的动态代码生成线程和动态代码执行线程中的至少一种,所述动态代码生成线程的预设标记位与所述动态代码执行线程的预设标记位被配置为不同标记。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当一个线程的内存访问请求触发缺页异常时,若触发缺页的内存区域同时具有所述写权限和所述执行权限,且触发缺页的操作与所述线程的所述预设标记位的标记所指示的操作权限不匹配,则所述操作系统或所述中央处理器确定触发缺页的所述操作为非允许的异常操作;所述操作系统或所述中央处理器执行所述非允许的异常操作所对应的预设异常处理操作。3.根据权利要求1所述的方法,其特征在于,在所述目标线程触发操作系统或中央处理器启动TLB的填写之前,还包括:在所述操作系统内核的线程描述符中定义所述预设标记位,并声明所述预设标记位用于指示对应线程对同时具有写权限和执行权限的页表项仅具有所述写权限和所述执行权限中的一种。4.根据权利要求1所述的方法,其特征在于,在所述中央处理器启动TLB的填写的情况下,在所述目标线程触发操作系统或中央处理器启动TLB的填写之前,还包括:在所述中央处理器的微码中配置预设寄存器,并配置所述预设寄存器的第一预设字段用于指示在TLB填写时,是否对同时具有写权限和执行权限的页表项调整写入TLB的操作权限,以及配置所述预设寄存器的第二预设字段用于指示在填写TLB时,当所述第一预设字段使能时,根据当前运行线程的预设标记位所指示的操作权限,对同时具有写权限和执行权限的页表项进行操作权限的配置。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述动态代码生成线程与所述动态代码执行线程之间进行线程上下文切换时,所述操作系统根据切换后的线程的预设标记位,将所述预设寄存器的所述第一预设字段配置为使能,将所述第二预设字段配置为所述预设标记位的值。
6.根据权利要求5所述的方法,其特征在于,在所述中央处理器启动TLB的填写的情况下,所述操作系统或所述中央处理器根据所述目标线程的线程描述符中的预设标记位,对所述页表项配置所述预设标记位所指示的操作权限,包括:所述中央处理器读取所述预设寄存器;当所述预设寄存器的所述第一预设字段使能时,所述中央处理器对所述页表项配置所述第二预设字段的值所指示的操作权限。7.根据权利要求1所述的方法,其特征在于,在所述目标线程触发操作系统或中央处理器启动TLB的填写之前,还包括:所述应用程序进程创建所述动态代码生成线程;所述动态代码生成线程通过系统调用,将所述动态代码生成线程的预设标记位配置为指示仅能够使用写权限的第一标记。8.根据权利要求1所述的方法,其特征在于,在所述目标线程触发操作系统或中央处理器启动TLB的填写之前,还包括:所述应用程序进程创建所述动态代码执行线程;所述动态代码执行线程通过系统调用,将所述动态代码执行线程的预设标记位配置为指示仅能够使用执行权限的第二标记。9.根据权利要求7

8任一项所述的方法,其特征在于,所述系统调用被配置为在一个线程的生命周期中只允许被所述线程调用一次,以使所述线程在所述生命周期内只允许配置一次所述预设标记位。10.根据权利要求1

8任一项所述的方法,其特征在于,所述目标线程触发操作系统或中央处理器启动TLB的填写,包括:所述目标线程发出内存访问请求,触发所述操作系统或所述中央处理器处理所述请求;所述操作系统或所述中央处理器响应于所述请求产生TLB未命中时,启动TLB的填写。11.根据权利要求1

8任一项所述的方法,其特征在于,所述动态代码生成线程包括即时编译器线程,所述动态代码执行线程包括解释器线程。12.一种内存管理装置,其特征在于,所述装置包括:第一确定模块,用于在目标线程触发操作系统或中央处理器启动TLB的填写的情况下,确定所述目标线程所需的内存区域对应的页表项是否同时具有写权限和执行权限;其中,所述目标线程为所述中央处理器上当前运行的线程;第二确定模块,用于在所述页表项同时具有所述写权限和所述执行权限的情况下,确定所述页表项所指示的所述内存区域同时具有动态代码生成需求和动态代码执行需求;第一配置模块,用于根据所述目标线程的线程描述符中的预设标记位,对所述页表项配置所述预设标记位所指示的操作权限,并将配置操作权限后的所述页表项作为所述目标线程对应的TLB表项写入所述TLB中,以使所述目标线程仅能以所述TL...

【专利技术属性】
技术研发人员:黄沛
申请(专利权)人:龙芯中科技术股份有限公司
类型:发明
国别省市:

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

1