动态内存保护方法、装置、计算机设备及存储介质与流程

文档序号:36450128发布日期:2023-12-21 14:48阅读:20来源:国知局
动态内存保护方法与流程

本发明涉及计算机,具体涉及动态内存保护方法、装置、计算机设备及存储介质。


背景技术:

1、目前市面上的微控制器(microcontroller unit,mcu)普遍存在内存保护单元(mpu)数量有限的问题,这使得在静态配置情况下无法满足对每个任务进行单独的内存访问限制。由此带来一系列严重问题,如破坏性栈溢出、非预期访问、内存冲突等,尤其在任务过多、而mpu数量有限的情况下,无法完全杜绝这些问题。在许多嵌入式系统中,任务间的内存隔离尤为重要,特别是在多任务操作系统(real time operating system,rtos)中。如果任务之间的内存访问没有得到有效地限制和管理,可能会导致数据损坏、系统崩溃等严重问题。

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


技术实现思路

1、有鉴于此,本发明提供了一种动态内存保护方法、装置、计算机设备及存储介质,以解决相关技术中由于任务之间的内存访问没有得到有效地限制和管理,导致数据损坏、系统崩溃的问题。

2、第一方面,本发明提供了一种动态内存保护方法,包括:

3、预先加载关联表;所述关联表包含多个任务,以及与所述多个任务一一对应的多个内存访问区域;

4、当多任务系统启动任务或者切换任务时,从所述关联表中确定出与所述目标任务对应的目标内存访问区域,并将与所述目标内存访问区域对应的内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述内存访问权限对所述目标任务进行内存访问限制;

5、基于cpu对所述目标任务进行上下文切换处理,以执行所述目标任务。

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

7、在一种可选的实施方式中,所述方法还包括:

8、判断第一任务是否发生堆栈溢出情况或者非预期访问情况;所述第一任务为当前运行的任务;

9、如果所述第一任务发生所述堆栈溢出情况或者所述非预期访问情况,则根据保障机制触发异常中断;

10、确定与异常类型对应的异常处理机制,以及根据所述异常处理机制对异常事件进行处理。

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

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

13、在一种可选的实施方式中,所述方法还包括:

14、当第二任务抢占所述第一任务的cpu控制权时,从所述关联表中确定出与所述第二任务对应的第二内存访问区域;

15、将与所述第二内存访问区域对应的第二内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述第二内存访问权限对所述第二任务进行内存访问限制;

16、当所述第一任务的执行周期达到预设周期,或者预设事件被触发时,从所述关联表中确定出与第三任务对应的第三内存访问区域;

17、将与所述第三内存访问区域对应的第三内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述第三内存访问权限对所述第三任务进行内存访问限制;

18、其中,所述第二任务的优先级高于第一任务的优先级。

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

20、在一种可选的实施方式中,基于cpu对所述目标任务进行上下文切换处理,包括:

21、暂停上一任务的执行状态,并将所述上一任务的上下文存储到内存中;

22、从所述内存中检索目标任务的上下文,并将其还原至cpu的寄存器中,以将cpu的控制器由所述上一任务转移至所述目标任务。

23、在一种可选的实施方式中,当多任务系统启动任务或者切换任务时,从所述关联表中确定出与所述目标任务对应的目标内存访问区域,并将与所述目标内存访问区域对应的内存访问权限加载至内存保护单元中,包括:

24、当所述多任务系统同时启动多个第一任务时,利用内存保护单元对所述多个第一任务进行内存访问区域的关联配置;

25、当所述多任务系统切换任务时,利用内存保护单元对第二任务进行内存访问区域的关联配置;所述第二任务为下一个任务;

26、其中,所述关联配置包括为每个待执行任务分配对应的内存访问区域。

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

28、第二方面,本发明提供了一种动态内存保护装置,包括:

29、关联表加载模块,用于预先加载关联表;所述关联表包含多个任务,以及与所述多个任务一一对应的多个内存访问区域;

30、内存配置模块,用于当多任务系统启动任务或者切换任务时,从所述关联表中确定出与所述目标任务对应的目标内存访问区域,并将与所述目标内存访问区域对应的内存访问权限加载至内存保护单元中;所述内存保护单元用于根据所述内存访问权限对所述目标任务进行内存访问限制;

31、任务执行模块,用于基于cpu对所述目标任务进行上下文切换处理,以执行所述目标任务。

32、在一种可选的实施方式中,所述装置还包括:

33、任务判断模块,用于判断第一任务是否发生堆栈溢出情况或者非预期访问情况;所述第一任务为当前运行的任务;

34、异常中断模块,用于如果所述第一任务发生所述堆栈溢出情况或者所述非预期访问情况,则根据保障机制触发异常中断;

35、异常处理模块,用于确定与异常类型对应的异常处理机制,以及根据所述异常处理机制对异常事件进行处理。

36、第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的动态内存保护方法。

37、第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的动态内存保护方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1