动态内存保护方法技术

技术编号:39809820 阅读:18 留言:0更新日期:2023-12-22 02:45
本发明专利技术涉及计算机技术领域,公开了动态内存保护方法

【技术实现步骤摘要】
动态内存保护方法、装置、计算机设备及存储介质


[0001]本专利技术涉及计算机
,具体涉及动态内存保护方法

装置

计算机设备及存储介质


技术介绍

[0002]目前市面上的微控制器
(Microcontroller Unit

MCU)
普遍存在内存保护单元
(MPU)
数量有限的问题,这使得在静态配置情况下无法满足对每个任务进行单独的内存访问限制

由此带来一系列严重问题,如破坏性栈溢出

非预期访问

内存冲突等,尤其在任务过多


MPU
数量有限的情况下,无法完全杜绝这些问题

在许多嵌入式系统中,任务间的内存隔离尤为重要,特别是在多任务操作系统
(Real Time Operating System

RTOS)


如果任务之间的内存访问没有得到有效地限制和管理,可能会导致数据损坏

系统崩溃等严重问题

[0003]因此,亟需一种动态内存保护方法,能够实现精细的任务间内存隔离,确保每个任务只能访问其所需的内存区域,而不会干扰其他任务的数据


技术实现思路

[0004]有鉴于此,本专利技术提供了一种动态内存保护方法

装置

计算机设备及存储介质,以解决相关技术中由于任务之间的内存访问没有得到有效地限制和管理,导致数据损坏

系统崩溃的问题

[0005]第一方面,本专利技术提供了一种动态内存保护方法,包括:
[0006]预先加载关联表;所述关联表包含多个任务,以及与所述多个任务一一对应的多个内存访问区域;
[0007]当多任务系统启动任务或者切换任务时,从所述关联表中确定出与所述目标任务对应的目标内存访问区域,并将与所述目标内存访问区域对应的内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述内存访问权限对所述目标任务进行内存访问限制;
[0008]基于
CPU
对所述目标任务进行上下文切换处理,以执行所述目标任务

[0009]本专利技术提供的动态内存保护方法,通过在多任务系统启动任务或者切换任务时,从关联表中确定出与目标任务对应的目标内存访问区域,并将与目标内存访问区域对应的内存访问权限加载至内存保护单元中,以使内存保护单元根据内存访问权限对目标任务进行内存访问限制,能够实现精细的任务间内存隔离,确保每个任务只能访问其所需的内存区域,而不会干扰其他任务的数据

[0010]在一种可选的实施方式中,所述方法还包括:
[0011]判断第一任务是否发生堆栈溢出情况或者非预期访问情况;所述第一任务为当前运行的任务;
[0012]如果所述第一任务发生所述堆栈溢出情况或者所述非预期访问情况,则根据保障
机制触发异常中断;
[0013]确定与异常类型对应的异常处理机制,以及根据所述异常处理机制对异常事件进行处理

[0014]在一种可选的实施方式中,所述非预期访问情况包括当前访问内存地址中出现所述内存保护单元配置以外的内存地址

访问总线不可访问的地址

[0015]本专利技术提供的动态内存保护方法,通过在第一任务发生堆栈溢出情况或者非预期访问情况时,根据保障机制触发异常中断;确定与异常类型对应的异常处理机制,以及根据异常处理机制对异常事件进行处理,能够及时监控和处理任务的异常内存访问,保障操作系统的稳定性和可靠性

[0016]在一种可选的实施方式中,所述方法还包括:
[0017]当第二任务抢占所述第一任务的
CPU
控制权时,从所述关联表中确定出与所述第二任务对应的第二内存访问区域;
[0018]将与所述第二内存访问区域对应的第二内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述第二内存访问权限对所述第二任务进行内存访问限制;
[0019]当所述第一任务的执行周期达到预设周期,或者预设事件被触发时,从所述关联表中确定出与第三任务对应的第三内存访问区域;
[0020]将与所述第三内存访问区域对应的第三内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述第三内存访问权限对所述第三任务进行内存访问限制;
[0021]其中,所述第二任务的优先级高于第一任务的优先级

[0022]本专利技术提供的动态内存保护方法,通过在任务抢占或者任务的执行周期达到预设周期时,将与内存访问区域对应的内存访问权限加载至内存保护单元中;所述内存保护单元用于根据内存访问权限对任务进行内存访问限制,能够通过动态配置
MPU
资源,能够灵活适应不同任务的内存访问需求,为嵌入式系统提供更加强大和灵活的内存保护机制

[0023]在一种可选的实施方式中,基于
CPU
对所述目标任务进行上下文切换处理,包括:
[0024]暂停上一任务的执行状态,并将所述上一任务的上下文存储到内存中;
[0025]从所述内存中检索目标任务的上下文,并将其还原至
CPU
的寄存器中,以将
CPU
的控制器由所述上一任务转移至所述目标任务

[0026]在一种可选的实施方式中,当多任务系统启动任务或者切换任务时,从所述关联表中确定出与所述目标任务对应的目标内存访问区域,并将与所述目标内存访问区域对应的内存访问权限加载至内存保护单元中,包括:
[0027]当所述多任务系统同时启动多个第一任务时,利用内存保护单元对所述多个第一任务进行内存访问区域的关联配置;
[0028]当所述多任务系统切换任务时,利用内存保护单元对第二任务进行内存访问区域的关联配置;所述第二任务为下一个任务;
[0029]其中,所述关联配置包括为每个待执行任务分配对应的内存访问区域

[0030]本专利技术提供的动态内存保护方法,本专利技术通过在任务启动或任务切换时,利用内存保护单元对任务进行内存访问区域的关联配置,能够动态配置
MPU
资源,使得每个任务在运行时获得适当的内存访问权限,从而有效解决当前
MCU
中内存保护单元数量有限的问题

[0031]第二方面,本专利技术提供了一种动态内存保护装置,包括:
[0032]关联表加载模块,用于预先加载关联表;所述关联表包含多个任务,以及与所述多个任务一一对应的多个内存访问区域;
[0033]内存配置模块,用于当多任务系统启动任务或者切换任务时,从所述关联表中确定出与所述目标任务对应的目标内存访问区域,并将与所述目标内存访问区域对应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种动态内存保护方法,其特征在于,所述方法包括:预先加载关联表;所述关联表包含多个任务,以及与所述多个任务一一对应的多个内存访问区域;当多任务系统启动任务或者切换任务时,从所述关联表中确定出与目标任务对应的目标内存访问区域,并将与所述目标内存访问区域对应的内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述内存访问权限对所述目标任务进行内存访问限制;基于
CPU
对所述目标任务进行上下文切换处理,以执行所述目标任务
。2.
根据权利要求1所述的方法,其特征在于,所述方法还包括:判断第一任务是否发生堆栈溢出情况或者非预期访问情况;所述第一任务为当前运行的任务;如果所述第一任务发生所述堆栈溢出情况或者所述非预期访问情况,则根据保障机制触发异常中断;确定与异常类型对应的异常处理机制,以及根据所述异常处理机制对异常事件进行处理
。3.
根据权利要求2所述的方法,其特征在于,所述非预期访问情况包括当前访问内存地址中出现所述内存保护单元配置以外的内存地址

访问总线不可访问的地址
。4.
根据权利要求2或3所述的方法,其特征在于,所述方法还包括:当第二任务抢占所述第一任务的
CPU
控制权时,从所述关联表中确定出与所述第二任务对应的第二内存访问区域;将与所述第二内存访问区域对应的第二内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述第二内存访问权限对所述第二任务进行内存访问限制;当所述第一任务的执行周期达到预设周期,或者预设事件被触发时,从所述关联表中确定出与第三任务对应的第三内存访问区域;将与所述第三内存访问区域对应的第三内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述第三内存访问权限对所述第三任务进行内存访问限制;其中,所述第二任务的优先级高于第一任务的优先级
。5.
根据权利要求1或2所述的方法,其特征在于,基于
CPU
对所述目标任务进行上下文切换处理,包括:暂停上一任务的执行状态,并将所述上一任务的上下文存储到内存中;从所述内存中检索目标任务的上下文,并将其还原至
CPU
的寄存器中,以将...

【专利技术属性】
技术研发人员:刘坤
申请(专利权)人:镁佳北京科技有限公司
类型:发明
国别省市:

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

1