掌桥专利:专业的专利平台
掌桥专利
首页

内存访问方法、微处理器、客户端及计算机存储介质

文献发布时间:2023-06-19 09:55:50


内存访问方法、微处理器、客户端及计算机存储介质

技术领域

本发明实施例涉及通信技术领域,尤其涉及一种内存访问方法、微处理器、客户端及计算机存储介质。

背景技术

在微处理器领域,内存保护是一种必备的安全手段。现有技术中存在的内存访问方法都有各自的优缺点,有的容易受到微处理器等硬件结构的限制,有的操作复杂,容易降低系统效率,有的只能实现保护的作用,对于异常访问却不能提供检测的手段。

发明内容

本发明实施例提供了一种内存访问方法、微处理器、客户端及计算机存储介质,可以防止内存意外被访问或修改,同时也可以实时发现受保护区域的异常操作,从而提高内存访问的安全性。

本发明的第一方面是为了提供一种内存访问的方法,包括:

获取内存访问请求,所述内存访问请求中包括待访问地址和访问密钥;

确定与所述待访问地址相对应的内存区域和标准密钥;

在所述访问密钥与所述标准密钥相匹配时,利用内存保护单元将所述内存区域的内存属性调整至允许访问状态。

本发明的第二方面是为了提供一种微处理器,包括:

存储器,用于存储计算机程序;

处理器,用于运行所述存储器中存储的计算机程序以实现:

获取内存访问请求,所述内存访问请求中包括待访问地址和访问密钥;

确定与所述待访问地址相对应的内存区域和标准密钥;

在所述访问密钥与所述标准密钥相匹配时,利用内存保护单元将所述内存区域的内存属性调整至允许访问状态。

本发明的第三方面是为了提供一种内存访问方法,包括:

向微处理器发送内存保护请求,所述内存保护请求中包括待保护的地址信息;

接收所述微处理器根据所述内存保护请求发送的密钥信息和内存访问通道,所述密钥信息与所述地址信息相对应。

本发明的第四方面是为了提供一种客户端,包括:

存储器,用于存储计算机程序;

处理器,用于运行所述存储器中存储的计算机程序以实现:

向微处理器发送内存保护请求,所述内存保护请求中包括待保护的地址信息;

接收所述微处理器根据所述内存保护请求发送的密钥信息和内存访问通道,所述密钥信息与所述地址信息相对应。

本发明的第五方面是为了提供一种计算机可读存储介质,所述存储介质为计算机可读存储介质,该计算机可读存储介质中存储有程序指令,所述程序指令用于第一方面所述的内存访问方法。

本发明的第六方面是为了提供一种计算机可读存储介质,所述存储介质为计算机可读存储介质,该计算机可读存储介质中存储有程序指令,所述程序指令用于第三方面所述的内存访问方法。

本发明实施例提供的内存访问方法、微处理器、客户端及计算机存储介质,通过获取内存访问请求,确定与所述待访问地址相对应的内存区域和标准密钥,在所述访问密钥与所述标准密钥相匹配时,则利用内存保护单元将所述内存区域的内存属性调整至允许访问状态,基于秘钥进而利用内存保护单元调整内存访问状态,这样不仅可以防止内存意外被访问或修改,并且也实现了对内存的有效保护,从而保证了内存访问的安全可靠性,有效地提高了该方法的实用性。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为现有技术提供的上下界保护方法的示意图;

图2为现有技术提供的进程栈保护方法的示意图;

图3为本发明实施例提供的一种内存访问方法的流程示意图一;

图4为本发明实施例提供的一种内存访问方法的流程示意图二;

图5为本发明实施例提供的一种内存访问方法的流程示意图三;

图6为本发明实施例提供的一种内存访问方法的流程示意图四;

图7为本发明实施例提供的识别针对所述内存区域的非法访问用户的流程示意图;

图8为本发明实施例提供的一种内存访问方法的流程示意图五;

图9为本发明实施例提供的一种内存访问方法的流程示意图六;

图10为本发明实施例提供的另一种内存访问方法的流程示意图一;

图11为本发明实施例提供的另一种内存访问方法的流程示意图二;

图12为本发明应用实施例提供的一种内存访问方法的流程示意图一;

图13为本发明应用实施例提供的一种内存访问方法的示意图一;

图14为本发明应用实施例提供的一种内存访问方法的流程示意图二;

图15为本发明应用实施例提供的一种内存访问方法的示意图二;

图16为本发明实施例提供的一种微处理器的结构示意图;

图17为本发明实施例提供的一种客户端的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

为了便于理解本实施例中技术方案的具体实现过程,下面对微处理器的工作原理进行相关说明:

在微处理器技术领域,内存保护是一个经久不衰的命题。而无论哪种类型的内存保护方式,均有各自的优缺点:有的受到微处理器硬件结构的限制,有的内存保护过程操作复杂,降低了数据处理效率;有的只能实现保护的作用,对于异常访问却不能提供检测。

对于微处理器而言,可以包括高端的微处理器和低端的微处理器,其中,高端的微处理器中含有内存管理单元(Memory Management Unit,简称MMU),该MMU用来实现虚拟内存管理,从而将内存地址分为虚拟地址和物理地址。对于使用者而言,用户可以查看到的是虚拟地址,而虚拟地址与实际的物理地址都是隔离开的,从而达到内存保护的目的。

在低端的微处理器中没有设置MMU,而是设置有一个内存保护单元(MemoryProtection Unit,简称MPU),具体的,MPU是一种以区域作为单位,提供内存区域属性设置的硬件结构。通常情况下,MPU可以有8个或更多的区域。每个区域对应设置有内存区域以及内存属性,其中,内存属性包括读写(该区域是否可以读写)、执行(该区域是否可以直接取址执行)、缓存与写缓存等属性。同时,不同的区域在设置内存区域时允许发生重叠,并且,不同的区域可以对应有不同的优先级,当区域的内存区域发生重叠时,高优先级的区域将会覆盖低优先级的区域设置的属性。当内存操作与区域设置的属性不同时,将会立即产生硬件的异常操作,并通知微处理器。因此,可以利用读写属性的设置来实现内存的保护,利用异常操作来发现内存的非法操作。

针对低端的微处理器,可以采用两种内存保护的方式,一种方式是不使用MPU,仅利用软件处理算法实现的内存保护方法,如上下界保护方法;另外一种方式是使用MPU的保护方法,如结合操作系统(operating system,简称OS)的进程栈保护方法。

具体的,上下界保护方法的过程包括:预先设置有上下界寄存器,其中,上下界寄存器中保存有正在执行的程序所使用的内存的起始地址和终止地址,在数据执行的过程中,对内存操作通过统一的软件处理算法进行检查,判断所访问的地址是否在上下界的范围内。若不在,则确定当前访问为非法访问;否则即是合法访问。参考附图1所示,“1#”和“3#”的内存访问地址超出了内存区域所定义的上下界地址,因此,可以确定“1#”和“3#”的内存访问操作为非法操作;而“2#”的内存访问地址符合地址要求,则将能进行成功访问。

另外,进程栈保护方法是一种利用操作系统OS与硬件结合的栈内存保护方法,通过该方法可以实现当前正在运行进程的栈内存与其它进程栈内存之间的保护,有效的阻止了栈溢出的发生,并实现了栈内空间的保护。如图2所示,其具体的实现原理如下:

(1)预先分配出一块内存空间,用于进程栈的栈背景空间,在此空间中分配出所有进程的栈。

(2)利用MPU的低优先级的区域(背景区域)将栈空间设置为不可读写,不可执行。

(3)在启动进程时,将要启动的进程的栈空间利用MPU的高优先级的区域(进程区域)设置为可读写,不可执行。此时,由于MPU的高优先级覆盖低优先级的原则,使得只有启动的进程栈空间可以读写,其他进程栈则不能读写,从而实现了其他进程栈的保护,防止栈溢出或异常指针修改。

(4)在进程切换时,将进程区域设置为将要切换的栈空间,从而使得下一个要启动的进程变为可读写,已经切换出去的进程变为不可读写。

然而,上述的内存保护方法存在以下缺陷:

(1)大多数微处理器领域的内存保护手段大多是基于软件层面的保护,比如:上述的上下界保护法。但是,基于软件层面的保护方法存在异常工作的风险,可能导致保护功能失效。

(2)对于软件层面的保护措施而言,由于需要对每次操作的地址进行检查,从而使得访问效率有所降低。

(3)软件层面的保护措施的实现机理都是基于访问地址的检查(比如:上下界保护法),所以内存访问时,需要通过固定的软件通道进行访问。因此,当系统的异常访问没有经过其固定的内存通道时,其保护措施将会失效。比如:广泛存在的异常指针内存访问。当异常的指针指向保护区域,但因为没有经过固定的内存通道使得没有起到保护作用。

(4)利用MPU的保护方法大多数只实现了进程栈的保护,难以实现任意内存地址的保护。

(5)上述内存保护方法基本都是基于进程的内存保护,对于进程内部的保护则没有有效的措施。

(6)上述内存保护都是针对单个进程或者单个用户的保护手段,难以实现多用户之间的内存共享,并共享保护。

下面结合附图,对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

图3为本发明实施例提供的一种内存访问方法的流程示意图;参考附图3所示,为了解决上述问题,本实施例提供了一种内存访问方法,该方法可以防止内存意外被访问或修改,同时也可以实时发现受保护区域的异常操作,从而提高内存访问的安全性。具体应用时,该内存访问方法的执行主体可以为微处理器,该微处理器可以为低端的微处理器,该微处理器可以实现为软件、或者软件和硬件的组合。具体的,该方法可以包括:

S101:获取内存访问请求,内存访问请求中包括待访问地址和访问密钥。

所述内存访问请求可以由第一虚拟用户发送。其中,第一虚拟用户可以为以下任意一种表现形式:进程、位于中央处理器上独立运行的软件模块、应用程序、终端设备等等,并且,第一虚拟用户的个数可以为一个或多个,可以理解的是,在不同的应用场景中,第一虚拟用户可以具有不同的表现形式。具体的,在第一虚拟用户向微处理器发送内存访问请求时,可以使得微处理器获取到内存访问请求,该内存访问请求中包括待访问地址和访问密钥,其中,访问密钥用于针对待访问地址实现内存访问操作。

S102:确定与待访问地址相对应的内存区域和标准密钥。

在获取到待访问地址之后,可以对待访问地址进行分析处理,以确定与访问地址相对应的内存区域和标准密钥。具体的,本实施例中对于确定与待访问地址相对应的内存区域和标准密钥的具体实现方式不做限定,本领域技术人员可以根据具体的应用场景和应用需求进行设置,例如:获取与待访问地址相对应的地址标识信息,根据地址标识信息确定与待访问地址相对应的内存区域和标准密钥,该标准密钥用于对内存访问请求进行合法性验证;在标准密钥与内存访问请求中包括的访问密钥相匹配时,则确定内存访问请求为合法请求;在标准密钥与内存访问请求中包括的访问密钥不匹配时,则确定内存访问请求为非法请求。

S103:在访问密钥与标准密钥相匹配时,利用内存保护单元将内存区域的内存属性调整至允许访问状态。

所述允许访问状态包括:允许所述第一虚拟用户针对所述内存区域执行相应的数据处理操作的状态。

在另一可选实施方式中,可以允许与第一虚拟用户身份关联的其他虚拟用户访问该内存区域,并执行相应的数据处理操作。

在访问密钥与标准密钥相匹配时,则确定内存访问请求为合法请求,此时,可以利用内存保护单元将内存区域中的内存属性调整至允许访问状态,其中,内存属性可以包括以下至少之一:读写属性、取址执行属性、缓存属性,从而使得第一虚拟用户可以针对内存区域执行与内存访问请求相对应的数据处理操作;其中,本实施例中的内存保护单元可以集成在微处理器中。

举例来说:在接收到内存访问请求之前,内存区域的内存属性为禁止访问状态,在内存访问请求为针对第一地址发送的读写请求时,可以获取读写请求中包括的第一访问密钥,确定与第一地址相对应的标准密钥,在第一访问密钥与标准密钥相匹配时,则利用内存保护单元将内存区域的读写属性调整至允许状态,以使第一虚拟用户针对内存区域执行与读写请求相对应的数据读写操作。或者,在内存访问请求为针对第二地址发送的取址执行请求时,可以获取取址执行请求中包括的第二访问密钥,确定与第二地址相对应的标准密钥,在第二访问密钥与标准密钥相匹配时,则利用内存保护单元将内存区域的取址执行属性调整至允许状态,以使第一虚拟用户针对内存区域执行与取址执行请求相对应的取址执行操作。

本实施例提供的内存访问方法,通过获取内存访问请求,确定与所述待访问地址相对应的内存区域和标准密钥,在所述访问密钥与所述标准密钥相匹配时,则利用内存保护单元将所述内存区域的内存属性调整至允许访问状态,基于秘钥进而利用内存保护单元调整内存访问状态,这样不仅可以防止内存意外被访问或修改,并且也实现了对内存的有效保护,从而保证了内存访问的安全可靠性,有效地提高了该方法的实用性。

图4为本发明实施例提供的另一种内存访问方法的流程示意图;在上述实施例的基础上,继续参考附图4所示,在获取内存访问请求之前,本实施例中的方法还可以包括:

S201:获取第二虚拟用户发送的内存保护请求,内存保护请求中包括待保护的地址信息。

其中,第二虚拟用户可以为以下任意一种表现形式:进程、位于中央处理器上独立运行的软件模块、应用程序等等,并且,第二虚拟用户的个数可以为一个或多个,可以理解的是,在不同的应用场景中,第二虚拟用户可以具有不同的表现形式。在具体应用场景中,第二虚拟用户可以与第一虚拟用户相同或不同。

在获取内存访问请求之前,为了能够实现对内存的有效保护,第二虚拟用户可以向微处理器发送内存保护请求,此时的内存保护请求中可以包括有待保护的地址信息,具体的,待保护的地址信息可以包括以下之一:进程栈的地址信息、非进程栈的地址信息;其中,与非进程栈的地址信息相对应的内存区域用于存储以下至少之一:认证信息、设备信息、配置信息、运行信息、状态信息。

S202:根据内存保护请求为地址信息分配相对应的内存区域。

在获取到内存保护请求之后,可以基于内存保护请求为待保护的地址信息分配相对应的内存区域,此时的内存区域可以对应有内存属性,内存属性可以包括以下至少之一:读写属性、取址执行属性、缓存属性等等,

S203:利用内存保护单元将内存区域的内存属性调整至禁止访问状态。

在为地址信息分配相对应的内存区域之后,可以利用内存保护单元将内存区域的内存属性调整至禁止访问状态,可以理解的是,在将内存区域的内存属性调整至禁止访问状态之后,任何用户都无法对该内存区域进行访问操作,例如:用户无法执行数据的读写操作、无法执行数据的缓存操作、无法实现取址执行操作;从而实现了对该内存区域进行有效地保护。

S204:生成与地址信息相对应的密钥信息,将密钥信息发送至第二虚拟用户。

在将内存区域的内存属性调整至禁止访问状态之后,为了能够使得合法用户能够对内存区域进行访问操作,可以生成与地址信息相对应的密钥信息,具体的,生成与地址信息相对应的密钥信息可以包括:

S2041:利用随机数生成器生成一与地址信息相对应的随机密钥信息。

具体的,预先设置有随机数生成器,该随机数生成器可以集成在微处理器中,在将地址信息的内存区域的内存属性调整为禁止访问状态之后,可以利用随机数生成器生成一与地址信息相对应的随机密钥信息。可以想到的是,由于通过随机数生成器生成随机密钥信息,从而有效地保证了与地址信息相对应的密钥信息并不是固定不变的,进一步保证了对内存区域进行保护的强度。

在获取到密钥信息之后,可以将密钥信息发送至第二虚拟用户,从而使得第二虚拟用户可以基于密钥信息实现对内存区域的合法访问操作。另外,在第二虚拟用户获取到密钥信息与地址信息之间的对应关系之后,可以将密钥信息与地址信息之间的对应关系共享至其他虚拟用户,例如,第二虚拟用户可以将密钥信息与地址信息之间的对应关系共享至第一虚拟用户,从而使得第一虚拟用户可以基于所共享的密钥信息来对内存区域进行合法的访问操作。具体的,第一虚拟用户可以向微处理器发送内存访问请求,该内存访问请求中包括访问密钥,此时,第一虚拟用户的访问密钥可以根据第二虚拟用户共享至第一虚拟用户的密钥信息所确定的,这样有效地实现了第一虚拟用户在第二虚拟用户的授权下,基于第二虚拟用户所共享的密钥信息实现对内存区域的合法访问操作。而在其他虚拟用户未利用正确的密钥信息向微处理器发送内存访问请求时,微处理器可以识别出该虚拟用户为非法用户,从而实现了可以发现对内存区域的非法访问操作。

本实施例中,通过获取第二虚拟用户发送的内存保护请求,根据内存保护请求为地址信息分配相对应的内存区域,利用内存保护单元将内存区域的内存属性调整至禁止访问状态,并生成与地址信息相对应的密钥信息,将密钥信息发送至第二虚拟用户,有效地实现了对待保护的地址信息相对应的内存区域的有效保护,并且还可以使得第二虚拟用户可以基于密钥信息对内存区域进行合法的访问操作,有效地防止了内存意外被访问或修改的情况,同时也可以实时发现受保护区域的异常访问操作,即可以获取到虚拟用户的非法访问操作,从而提高对内存进行访问的安全性。

在上述实施例的基础上,继续参考附图3所示,本实施例对于获取内存访问请求的具体实现方式不做限定,本领域技术人员可以根据具体的应用需求和设计需求进行设置,较为优选的,本实施例中的获取内存访问请求,包括:

S1011:获取第一虚拟用户通过内存访问通道发送的内存访问请求。

其中,内存访问通道可以是预先配置的与地址信息相对应的合法访问通道,在第一虚拟用户发送内存访问请求时,第一虚拟用户可以通过与地址信息相对应的内存访问通道发送内存访问请求,从而使得微处理器可以获取第一虚拟用户通过内存访问通道发送的内存访问请求,从而有效地保证了内存访问请求的合法性。

图5为本发明实施例提供的又一种内存访问方法的流程示意图;在上述实施例的基础上,继续参考附图5所示,在获取第一虚拟用户通过内存访问通道发送的内存访问请求之前,本实施例中的方法还可以包括:

S301:根据内存保护请求为地址信息分配相对应的内存访问通道。

S302:将内存访问通道发送至第二虚拟用户。

在获取到内存保护请求之后,可以针对内存保护请求中的地址信息分配相对应的内存访问通道,可以想到的是,不同的地址信息可以对应有相同或者不同的内存访问通道;而后将内存访问通道发送至第二虚拟用户,以使得第二虚拟用户可以通过该内存访问通道实现对内存区域的合法访问。

另外,第二虚拟用户获取到内存访问通道与地址信息之间的对应关系之后,可以将内存访问通道与地址信息之间的对应关系共享至其他虚拟用户,例如,第二虚拟用户可以将内存访问通道与地址信息之间的对应关系共享至第一虚拟用户,从而使得第一虚拟用户可以基于所共享的内存访问通道对内存区域进行合法访问操作。具体的,第一虚拟用户可以通过内存访问通道、针对地址信息向微处理器发送内存访问请求,此时,第一虚拟用户的内存访问通道即为第二虚拟用户共享至第一虚拟用户的内存访问通道,这样可以实现了第一虚拟用户可以基于第二虚拟用户所共享的内存访问通道实现对内存区域的合法访问操作。

可以理解的是,在第二虚拟用户对内存区域进行访问操作,需要利用与地址信息相对应的密钥信息和内存访问通道对内存区域进行访问,并且,只有内存访问通道和密钥信息均通过验证之后,才能够实现对内存区域的合法访问操作。相反的,在密钥信息未通过验证、内存访问通道通过验证或者内存访问通道未通过验证、密钥信息通过验证的情况下,第二虚拟用户均无法实现对内存区域的合法访问操作。

本实施例中,通过根据内存保护请求为地址信息分配相对应的内存访问通道,将内存访问通道发送至第二虚拟用户,有效地增加了对待保护的地址信息相对应的内存区域进行保护的强度,使得第二虚拟用户可以基于内存访问通道对内存区域进行合法的访问操作,有效地防止了内存意外被访问或修改的情况,同时也可以实时发现受保护区域的异常访问操作,即可以获取到虚拟用户的非法访问操作,从而提高了对内存进行访问的安全性。

在上述任意一个实施例的基础上,在生成与地址信息相对应的密钥信息之后,本实施例中的方法还可以包括:

S205:将密钥信息存储至预设区域中。

其中,预设区域可以包括在内存区域中、位于地址信息之前的区域;或者,预设区域可以与内存区域相邻。举例来说,预设区域为A0-A10,其中,A0区域即为位于地址信息之前的区域,在获取到密钥信息之后,可以将密钥信息存储至A0区域。或者,预设区域为A,与预设区域A相邻的区域包括区域B和区域C,在获取到密钥信息之后,可以将密钥信息存储在区域B或者区域C中。

当然的,本领域技术人员可以根据具体的应用场景选择其他的预设区域,只要能够实现将密钥信息存储在预设区域中即可,这样便于通过预设区域获取到所存储的密钥信息。

图6为本发明实施例提供的一种内存访问方法的流程示意图四;在上述任意一个实施例的基础上,参考附图6所示,本实施例中的方法还可以包括:

S401:识别针对内存区域的非法访问用户。

S402:生成与非法访问用户相对应的非法访问信息。

对于微处理器而言,访问内存区域的虚拟用户可以是合法访问用户或者非法访问用户,其中,合法访问用户可以是指发送的内存访问请求中的访问密钥与标准密钥相匹配、且访问通道与预设的内存访问通道相匹配的虚拟用户;而非法访问用户可以是指发送的内存访问请求中的访问密钥与标准密钥不匹配、和/或、访问通道与预设的内存访问通道不匹配的虚拟用户。具体的,一种实现识别针对内存区域的非法访问用户的方式可以包括:

S500:在访问密钥与标准密钥不匹配时,确定第一虚拟用户为非法访问用户。

具体的,在获取到第一虚拟用户发送的内存访问请求之后,可以获取内存访问请求中包括的访问密钥,而后将访问密钥与标准密钥之间进行分析匹配,在访问密钥与标准密钥不匹配时,即说明第一虚拟用户发送的访问密钥与预设的标准密钥不同,则可以确定此时的第一虚拟用户为非法访问用户。

另外,参考附图7所示,本实施还提供了另一种可实现识别针对内存区域的非法访问用户的方式,具体的,包括:

S501:利用内存保护单元识别第一虚拟用户发送内存访问请求的访问通道。

S502:在访问通道与预设的内存访问通道不匹配时,确定第一虚拟用户为非法访问用户。

具体的,在获取到第一虚拟用户发送的内存访问请求之后,可以利用内存保护单元识别第一虚拟用户发送内存访问请求的访问通道,而后将访问通道与预设的内存访问通道进行分析匹配,在访问通道与内存访问通道不匹配时,即说明第一虚拟用户发送的内存访问请求的访问通道与预设的存访问通道不同,则可以确定此时的第一虚拟用户为非法访问用户。

相反的,在访问通道与内存访问通道相匹配时,则可以获取到内存访问请求中包括的访问密钥,而后将访问密钥与标准密钥进行分析匹配,在访问密钥与标准密钥相匹配时,即说明第一虚拟用户发送的访问密钥与预设的标准密钥相同,则可以确定此时的第一虚拟用户为合法访问用户。

在识别出非法访问用户之后,可以生成与非法访问用户相对应的非法访问信息,该非法访问信息中可以包括非法访问用户的用户标识、访问记录、访问时间等等信息;通过所生成的非法访问信息可以提示用户,以使得用户可以及时获取到访问该微处理器中的异常访问操作,有效地防止了内存意外被访问或修改,同时也可以实时发现受保护区域的异常操作,进一步提高了该对内存区域进行保护的质量和效果。

图8为本发明实施例提供的一种内存访问方法的流程示意图五;在上述任意一个实施例的基础上,继续参考附图8所示,内存保护请求包括第一请求和第二请求,第一请求包括第一访问地址,第二请求包括第二访问地址,第一访问地址与第二访问地址之间存在重叠地址;此时,本实施例中的根据内存保护请求为地址信息分配相对应的内存区域以及与内存区域相对应的内存属性可以包括:

S601:根据第一请求为第一访问地址分配相对应的第一内存区域以及与第一内存区域相对应的第一内存属性。

S602:根据第二请求为第二访问地址分配相对应的第二内存区域以及与第二内存区域相对应的第二内存属性。

S603:获取第一内存区域的第一属性优先级和第二内存区域的第二属性优先级。

S604:根据第一属性优先级和第二属性优先级确定重叠地址的重叠内存属性。

具体的,在内存保护请求包括第一请求和第二请求时,第一请求和第二请求可以是两个不同的虚拟用户发送至微处理器的,此时,在微处理器接收到第一请求和第二请求之后,可以根据第一请求为第一访问地址分配相对应的第一内存区域,此时,第一内存区域可以对应有第一内存属性,并根据第二请求为第二访问地址分配相对应的第二内存区域,此时,第二内存区域可以对应第二内存属性。由于待保护的第一访问地址与第二访问地址之间存在重叠地址,因此,针对第一访问地址所分配的第一内存区域和针对第二访问地址所分配的第二内存区域之间也会存在重叠区域;而对于重叠区域的内存属性而言,需要识别第一内存区域和第二内存属性之间的属性优先级,即可以按照预设规则,确定第一内存区域的第一属性优先级和第二内存区域的第二属性优先级;而后基于根据第一属性优先级和第二属性优先级确定重叠地址的重叠内存属性。具体的,根据第一属性优先级和第二属性优先级确定重叠地址的重叠内存属性可以包括:

S6041:在第一属性优先级高于第二属性优先级时,将重叠地址的重叠内存属性确定为第一内存属性。或者,

S6042:在第一属性优先级低于第二属性优先级时,将重叠地址的重叠内存属性确定为第二内存属性。

在获取到第一属性优先级和第二属性优先级时,可以确定其中较高的属性优先级,而后将重叠地址的重叠内存属性确定为与较高的属性优先级相一致。具体的,在第一属性优先级高于第二属性优先级时,将重叠地址的重叠内存属性确定为第一内存属性,或者,在第一属性优先级低于第二属性优先级时,将重叠地址的重叠内存属性确定为第二内存属性。

举例来说:第一请求中包括的第一访问地址为:192.168.1.1-192.168.1.154;第二请求中包括的第二访问地址为:192.168.1.100-192.168.1.254;此时,第一访问地址与第二访问地址之间存在重叠地址为:192.168.1.100-192.168.1.154。而后对第一访问地址分配的第一内存区域为区域A,对第二访问地址分配的第二内存区域为区域B,其中,区域A与区域B之间存在重叠区域C,重叠区域C中用于存储上述的重叠地址;此时,可以将区域A和区域B构成的所有区域划分为三个部分:用于存储第一访问地址中的非重叠地址部分的区域A1、用于存储重叠地址的重叠区域C以及用于第二访问地址中的非重叠地址部分的区域B1,其中,区域A1与重叠区域C构成区域A,区域B1与重叠区域C构成区域B。

对于上述的区域A1、重叠区域C和区域B1而言,区域A1的内存属性符合第一属性优先级,区域B1的内存属性符合第二属性优先级,其中,第一属性优先级与第一请求相对应、第二属性优先级与第二请求相对应。而重叠区域C的内存属性符合第一属性优先级和第二属性优先级中具有较高优先级的属性信息,从而使得具有高优先级的虚拟用户可以访问重叠区域,而低优先级的虚拟无法访问重叠区域,实现了针对不同优先级别的虚拟用户设置不同的内存保护策略,进一步提高了内存保护方法使用的灵活可靠性。

图9为本发明实施例提供的一种内存访问方法的流程示意图六;在上述任意一个实施例的基础上,继续参考附图9所示,内存保护请求包括第一请求和第二请求,第一请求中包括第一访问地址和第一虚拟用户的身份标识,第二请求中包括第二访问地址和第二虚拟用户的身份标识;此时,本实施例中的生成与地址信息相对应的密钥信息可以包括:

S701:根据第一虚拟用户的身份标识确定与第一访问地址相对应的第一访问优先级,并根据第二虚拟用户的身份标识确定与第二访问地址相对应的第二访问优先级。

S702:生成与第一访问地址相对应的第一密钥信息,第一密钥信息满足第一访问优先级。

S703:生成与第二访问地址相对应的第二密钥信息,第二密钥信息满足第二访问优先级。

具体的,在内存保护请求包括第一请求和第二请求时,第一请求和第二请求可以分别是第一虚拟用户和第二虚拟用户发送至微处理器的,此时,在微处理器接收到第一请求和第二请求之后,可以识别第一请求中包括的第一虚拟用户的身份标识,而后根据第一虚拟用户的身份标识来确定与第一访问地址相对应的第一访问优先级,相类似的,可以识别第二请求中包括的第二虚拟用户的身份标识,而后根据第二虚拟用户的身份标识来确定与第二访问地址相对应的第二访问优先级,在第一访问地址与第二访问地址之间不存在重叠地址时,可以直接生成与第一访问地址相对应的第一密钥信息,第一密钥信息满足第一访问优先级;生成与第二访问地址相对应的第二密钥信息,第二密钥信息满足第二访问优先级。

而在第一访问地址与第二访问地址之间存在重叠地址时,对于重叠地址的部分,则会对应有满足第一访问优先级的第一密钥信息和满足第二访问优先级的第二密钥信息,此时,具有较高访问优先级的密钥信息会覆盖具有较低访问优先级的密钥信息。举例来说:重叠区域对应有具有较高访问优先级的第一密钥信息和具有较低访问优先级的第二密钥信息,那么与重叠区域相对应的密钥信息则为第一密钥信息,从而使得具有高优先级的虚拟用户可以访问重叠区域,而低优先级的虚拟无法访问重叠区域,实现了针对不同优先级别的虚拟用户设置不同的内存保护策略,进一步提高了内存保护方法使用的灵活可靠性。

图10为本发明实施例提供的另一种内存访问方法的流程示意图;参考附图10所示,为了解决上述问题,本实施例提供了一种内存访问方法,该方法可以防止内存意外被访问或修改,同时也可以实时发现受保护区域的异常操作,从而提高内存访问的安全性。具体应用时,该内存访问方法的执行主体可以为客户端,可以理解的是,该客户端可以实现为软件、或者软件和硬件的组合。具体的,该方法可以包括:

S801:向微处理器发送内存保护请求,内存保护请求中包括待保护的地址信息。

S802:接收微处理器根据内存保护请求发送的密钥信息和内存访问通道,密钥信息与地址信息相对应。

具体的,在客户端针对待保护的地址信息存在内存保护需求时,可以生成针对待保护的地址信息的内存保护请求,而后可以将内存保护请求发送至微处理器,以使得微处理器可以基于内存保护请求对待保护的地址信息分配相对应的内存区域,并对内存区域进行内存保护操作,而后可以返回与待保护的地址信息相对应的密钥信息和内存访问通道,使得客户端可以接收到与内存保护请求相对应的密钥信息和内存访问通道,此时的密钥信息和内存访问通道与待保护的地址信息相对应,从而实现了客户端可以通过内存访问通道和密钥信息进行合法的数据访问操作。

本实施例提供的内存访问方法,通过向微处理器发送内存保护请求,并接收微处理器根据内存保护请求发送的密钥信息和内存访问通道,有效地实现了客户端可以基于内存访问通道和密钥信息进行合法的数据访问操作,进一步防止了内存意外被访问或修改的情况,从而提高内存访问的安全性,有效地保证了该内存访问方法的实用性。

在上述实施例的基础上,继续参考附图10所示,为了提高该方法使用的灵活可靠性,本实施例中的方法还可以包括:

S901:将密钥信息与地址信息共享至其他客户端,以使其他客户端针对地址信息相对应的内存区域执行相对应的数据访问操作。

具体的,在客户端获取到密钥信息和地址信息之间的对应关系之后,可以将密钥信息与地址信息共享至其他客户端,从而使得其他客户端在该客户端的授权下,可以针对地址信息相对应的内存区域执行相对应的数据访问操作,有效地实现了具有合法权限的客户端可以对内存区域执行相对应的数据访问操作,而不具有合法权限的客户端无法对内存区域执行相对应的数据访问操作,进一步防止了内存意外被访问或修改的情况,提高了对内存访问进行保护的质量和效果。

图11为本发明实施例提供的另一种内存访问方法的流程示意图二;在上述实施例的基础上,继续参考附图11所示,本实施例中的方法还可以包括:

S1001:基于内存访问通道向微处理器发送内存访问请求,内存访问请求中包括待访问地址和访问密钥,以使微处理器根据访问密钥将与待访问地址相对应的内存区域的内存属性调整至允许访问状态。

S1002:针对内存区域执行与内存访问请求相对应的数据处理操作。

具体的,在向微处理器请求对待保护的地址信息执行相对应的内存保护操作之后,客户端也可以通过微处理器请求访问相对应的内存区域,具体的,客户端可以基于内存访问通道向微处理器发送内存访问请求,该内存访问请求中包括待访问地址和访问密钥,在微处理器接收到内存访问请求之后,则可以基于内存访问请求中包括的访问密钥来识别客户端的合法性,在确定客户端为合法访问用户之后,则可以根据访问密钥将与待访问地址相对应的内存区域的内存属性调整至运行访问状态,从而使得客户端可以针对内存区域执行与内存访问请求相对应的数据处理操作。

本实施例中,基于内存访问通道向微处理器发送内存访问请求,在微处理器根据访问密钥将与待访问地址相对应的内存区域的内存属性调整至允许访问状态之后,客户端针对内存区域执行与内存访问请求相对应的数据处理操作,从而以使具有合法权限的客户端可以针对内存区域执行与内存访问请求相对应的数据处理操作,这样不仅可以防止内存意外被访问或修改,并且也实现了对内存的有效保护,从而保证了对内存进行应用的安全可靠性,有效地提高了该方法的实用性。

具体应用时,本应用实施例提供了一种内存访问方法,该方法采用软硬结合的方式实现对内存的保护,具有高可靠性、高性能、小粒度、可共享的功能,同时,可保留发生非法访问内存的信息,发现非法访问的原因,防止在保护区域进行非法取址操作。此外,该方法在实现对内存的合法访问的同时,也可以实现内存属性和写缓存属性的设置,有利于解决内存数据同步的问题。具体的,如图12所示,该方法包括以下步骤:

step1:获取用户发送的内存保护请求,内存保护请求中包括待保护的地址信息。

step2:根据内存保护请求为地址信息分配相对应的内存区域。

step3:配置内存区域的地址信息。

step4:利用内存保护单元将内存区域的内存属性调整至禁止访问状态。

step5:生成与地址信息相对应的密钥信息,将密钥信息发送至用户。

具体的,用户可以利用需要保护的地址向内存保护单元MPU申请内存区域,当内存区域分配成功之后,可以将该地址的内存属性调整至禁止访问状态,例如:读写权限关闭(即关锁)、缓存权限关闭等等,禁止访问状态的内存区域将不可进行访问,若发生访问,将会立即生成异常访问信息,从而实现非法访问信息的定位。然后,利用随机数生成器生成一个随机密钥,并将该随机秘钥与地址进行绑定,即获取到与地址信息相对应的密钥信息,并可以将密钥信息存储于该内存区域的地址之前的位置,同时,还可以将所获取到的密钥信息发送至用户,如图13所示,从而使得用户可以根据所持有的密钥信息对内存区域进行解锁访问,从而实现了对内存区域的合法访问操作。

进一步的,在用户获取到密钥信息之后,还可以对该密钥信息进行共享,如图14所示,用户可以将自己的密钥信息交给其他用户,从而实现保护状态下的内存共享,从而实现了获得授权的其他用户可以通过共享的密钥信息对内存区域进行合法访问操作。

具体的,参考附图15所示,在用户对内存区域进行访问时,包括如下步骤:

step11:获取发送的内存访问请求,内存访问请求中包括待访问地址和访问密钥。

step12:确定与待访问地址相对应的内存区域和标准密钥,利用标准密钥对访问密钥进行验证。

step13:在标准密钥与访问密钥不匹配时,则说明访问密钥未通过验证,则可以向用户发送反馈信息;在标准密钥与访问密钥相匹配时,则说明访问密钥通过验证。

step14:在访问密钥通过验证之后,则可以将内存区域的内存属性调整至允许访问状态。此时,用户可以通过访问密钥对内存区域进行访问操作。

step15:在对内存区域进行访问操作之后,则可以再次将内存区域的内存属性调整至禁止访问状态,从而实现了对内存区域的安全访问操作。

本应用实施例提供的内存访问方法,在接收到虚拟用户发送的内存保护请求之后,基于内存保护请求对内存区域进行保护操作,从而实现了以虚拟用户的请求为单位申请内存保护区域,从而实现小粒度的内存保护,可实现进程内部的内存划分和保护;另外,本实施例中的微处理器采用MPU硬件单元进行内存保护,相比于软件层面的内存保护措施,由于减少了次读写地址的检查,从而具有更高的读写效率;并且,通过MPU设置读写属性,实现内存保护,相比于软件层面的内存保护等价可靠。此外,该方法还可以发现异常访问操作所造成的内存异常操作,具有更强的保护效果,具体的,在发生内存的非法访问操作时,通过MPU可以立即触发异常访问操作,并可以通知微处理器,使得微处理器可以进行异常处理,从而进行内存异常操作的定位。又一方面,本实施例中的方法可以实现密钥信息的共享,从而实现所保护内存的数据之间可以共享,进一步提高了该方法使用的灵活可靠性。

图16为本发明实施例提供的一种微处理器的结构示意图;参考附图16所示,本实施例提供了一种微处理器,该微处理器用于执行上述图3所示的内存访问方法。具体的,该微处理器可以包括:

第一存储器12,用于存储计算机程序;

第一处理器11,用于运行第一存储器12中存储的计算机程序以实现:

获取内存访问请求,内存访问请求中包括待访问地址和访问密钥;

确定与待访问地址相对应的内存区域和标准密钥;

在访问密钥与标准密钥相匹配时,利用内存保护单元将内存区域的内存属性调整至允许访问状态。

进一步的,所述内存访问请求由第一虚拟用户发送,所述允许访问状态包括:允许所述第一虚拟用户针对所述内存区域执行相应的数据处理操作的状态。

其中,微处理器的结构中还可以包括第一通信接口13,用于电子设备与其他设备或通信网络通信。

进一步的,内存属性包括以下至少之一:读写属性、取址执行属性、缓存属性。

进一步的,在获取内存访问请求之前,第一处理器11还用于:获取第二虚拟用户发送的内存保护请求,内存保护请求中包括待保护的地址信息;根据内存保护请求为地址信息分配相对应的内存区域;利用内存保护单元将内存区域的内存属性调整至禁止访问状态;生成与地址信息相对应的密钥信息,将密钥信息发送至第二虚拟用户。

进一步的,第一虚拟用户的访问密钥根据第二虚拟用户共享至第一虚拟用户的密钥信息确定。

进一步的,待保护的地址信息包括以下之一:进程栈的地址信息、非进程栈的地址信息。

进一步的,在第一处理器11生成与地址信息相对应的密钥信息时,第一处理器11用于:利用随机数生成器生成一与地址信息相对应的随机密钥信息。

进一步的,在第一处理器11获取内存访问请求时,第一处理器11用于:获取第一虚拟用户通过内存访问通道发送的内存访问请求。

进一步的,在获取第一虚拟用户通过内存访问通道发送的内存访问请求之前,第一处理器11还用于:根据内存保护请求为地址信息分配相对应的内存访问通道;将内存访问通道发送至第二虚拟用户。

进一步的,第一虚拟用户的内存访问通道为第二虚拟用户共享至第一虚拟用户的内存访问通道。

进一步的,在生成与地址信息相对应的密钥信息之后,第一处理器11还用于:将密钥信息存储至预设区域中。

进一步的,预设区域包括在内存区域中、位于地址信息之前的区域。

进一步的,预设区域与内存区域相邻。

进一步的,第一处理器11还用于:识别针对内存区域的非法访问用户;生成与非法访问用户相对应的非法访问信息。

进一步的,在第一处理器11识别针对内存区域的非法访问用户时,第一处理器11用于:在访问密钥与标准密钥不匹配时,确定第一虚拟用户为非法访问用户。

进一步的,在第一处理器11识别针对内存区域的非法访问用户时,第一处理器11用于:利用内存保护单元识别第一虚拟用户发送内存访问请求的访问通道;在访问通道与预设的内存访问通道不匹配时,确定第一虚拟用户为非法访问用户。

进一步的,内存保护请求包括第一请求和第二请求,第一请求包括第一访问地址,第二请求包括第二访问地址,第一访问地址与第二访问地址之间存在重叠地址;在第一处理器11根据内存保护请求为地址信息分配相对应的内存区域以及与内存区域相对应的内存属性时,第一处理器11还用于:根据第一请求为第一访问地址分配相对应的第一内存区域以及与第一内存区域相对应的第一内存属性;根据第二请求为第二访问地址分配相对应的第二内存区域以及与第二内存区域相对应的第二内存属性;获取第一内存区域的第一属性优先级和第二内存区域的第二属性优先级;根据第一属性优先级和第二属性优先级确定重叠地址的重叠内存属性。

进一步的,在第一处理器11根据第一属性优先级和第二属性优先级确定重叠地址的重叠内存属性时,第一处理器11还用于:在第一属性优先级高于第二属性优先级时,将重叠地址的重叠内存属性确定为第一内存属性;或者,在第一属性优先级低于第二属性优先级时,将重叠地址的重叠内存属性确定为第二内存属性。

进一步的,内存保护请求包括第一请求和第二请求,第一请求中包括第一访问地址和第一虚拟用户的身份标识,第二请求中包括第二访问地址和第二虚拟用户的身份标识;在第一处理器11生成与地址信息相对应的密钥信息时,第一处理器11还用于:根据第一虚拟用户的身份标识确定与第一访问地址相对应的第一访问优先级,并根据第二虚拟用户的身份标识确定与第二访问地址相对应的第二访问优先级;生成与第一访问地址相对应的第一密钥信息,第一密钥信息满足第一访问优先级;生成与第二访问地址相对应的第二密钥信息,第二密钥信息满足第二访问优先级。

图16所示的微处理器可以执行图3-图9、图12-图15所示实施例的方法,本实施例未详细描述的部分,可参考对图3-图9、图12-图15所示实施例的相关说明。该技术方案的执行过程和技术效果参见图3-图9、图12-图15所示实施例中的描述,在此不再赘述。

另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图3-图9、图12-图15所示方法实施例中的内存访问方法所涉及的程序。

图17为本发明实施例提供的一种客户端的结构示意图;参考附图17所示,本实施例提供了一种客户端,该客户端用于执行上述图10所示的内存访问方法。具体的,该客户端可以包括:

第二存储器22,用于存储计算机程序;

第二处理器21,用于运行第二存储器22中存储的计算机程序以实现:

向微处理器发送内存保护请求,内存保护请求中包括待保护的地址信息;

接收微处理器根据内存保护请求发送的密钥信息和内存访问通道,密钥信息与地址信息相对应。

其中,客户端的结构中还可以包括第二通信接口23,用于电子设备与其他设备或通信网络通信。

进一步的,第二处理器21还用于:将密钥信息与地址信息共享至其他客户端,以使其他客户端针对地址信息相对应的内存区域执行相对应的数据访问操作。

进一步的,第二处理器21还用于:基于内存访问通道向微处理器发送内存访问请求,内存访问请求中包括待访问地址和访问密钥,以使微处理器根据访问密钥将与待访问地址相对应的内存区域的内存属性调整至允许访问状态;针对内存区域执行与内存访问请求相对应的数据处理操作。

图17所示的客户端可以执行图10-图15所示实施例的方法,本实施例未详细描述的部分,可参考对图10-图15所示实施例的相关说明。该技术方案的执行过程和技术效果参见图10-图15所示实施例中的描述,在此不再赘述。

另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图10-图15所示方法实施例中的内存访问方法所涉及的程序。

以上各个实施例中的技术方案、技术特征在与本相冲突的情况下均可以单独,或者进行组合,只要未超出本领域技术人员的认知范围,均属于本申请保护范围内的等同实施例。

在本发明所提供的几个实施例中,应该理解到,所揭露的相关遥控装置和方法,可以通过其它的方式实现。例如,以上所描述的遥控装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,遥控装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得计算机处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

相关技术
  • 内存访问方法、微处理器、客户端及计算机存储介质
  • 直接内存访问控制方法、系统、计算机设备及存储介质
技术分类

06120112349248