一种适用于嵌入式系统的应用安全访问内核方法与流程

文档序号:23395662发布日期:2020-12-22 14:03阅读:132来源:国知局
一种适用于嵌入式系统的应用安全访问内核方法与流程

本公开涉及嵌入式领域和实时操作系统领域,具体而言是指涉及一种适用于嵌入式系统的应用安全访问内核方法。



背景技术:

在传统的嵌入式实时操作系统上,操作系统内核和用户态程序内存空间都是可以相互访问且可读写的,用户态程序的内存空间十分容易被内核或者驱动写越界,导致后续的数据被错误数据覆盖,从而导致用户态程序在传输数据时候产生错乱,故需要一种安全可行的方法去尽可能的规避这个问题。这种设计思想对开发人员提出了更高的要求。

然而,内存空间是连续分布的,当数据写越界的时候,其实对于用户态程序来说是不知道的,一旦发生数据写越界,对于当前数据来说是不完整的,对于后续数据来说是错乱的,故需要在用户态程序申请内存空间时候,在尾部加上一个flag标志位,同时系统态程序中也需要申请相同大小的临时内存空间,写数据完毕后判断flag标志位是否被破坏,被破坏了就不把数据搬运到用户态程序,并及时释放掉这部分内存空间,如此而来就能到达安全可靠的避免数据写越界的问题出现。



技术实现要素:

本发明所要解决的技术问题在于提供一种适用于嵌入式系统的应用安全访问内核方法,以解决系统态程序把用户态程序内存空间写越界的问题。

本发明提供的实现的一种适用于嵌入式系统的应用安全访问内核方法,包括:

用户态程序申请的内存,其用于存放用户态程序所需的数据;

用户态程序申请的内存尾部的flag,其用于检测数据是否有写越界;

系统态程序申请的内存,其用于临时存放用户态所需的数据;

系统态程序申请的内存尾部flag,其用于检测数据是否有写越界。

进一步地,所述的用户态程序申请的内存,是排布在嵌入式芯片片内ram上的,用于存放用户态程序所需数据。

进一步地,所述的用户态程序申请的内存尾部的flag,是分布在用户态程序申请的内存空间之后的,内存空间与flag拼接成一个更大一些的内存空间。

进一步地,所述的系统态程序申请的内存,在需要个用户态程序申请出来的内存空间大小需要一致,起一个临时存放数据的作用,在使用完毕之后需要及时释放这段内存空间出来的。

进一步地,所述的系统态程序申请的内存尾部flag,是与用户态程序内存空间尾部的flag是一致的,写入数据完毕之后,需要判断这个flag是否有被破坏,若是完好的,说明数据并没有写越界,此时可以将这部分数据搬运到用户态程序中来,若已经被破坏,那么就不进行搬运,确保用户态程序所需要的内存空间中的数据是完好的,是不能被写越界的,此时需要及时释放系统态程序的这部分内存空间,当然,在flag没有被破坏的情况下进行数据搬运之后,也需要及时将系统态中的临时的内存空间释放掉,确保系统中的这部分内存不会一直被占用。

附图说明

为了更加清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单介绍,应当理解,以下附图仅仅示出了本公开的某些实施例,因此不应被看作是对本发明的限定,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获取前提相关的附图。

图1为本发明具体实施方式的一种适用于嵌入式系统的应用安全访问内核方法的框架图。

图2为本发明具体实施方式的整体流程图,阐述所实施的一种适用于嵌入式系统的应用安全访问内核方法的过程。

图3为本发明具体实施方式的用户态程序内存空间与系统态程序的临时内存空间之间的关系示意图。

图4为本发明具体实施方式的芯片片内ram与rom数据分布示意图。

具体实施方式

下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述,显然所描述的实施例仅仅是本发明的部分实施例,而不是全部的实施例。提供的实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而仅仅表示本发明的选定实施例。基于本发明的实施例,本领域的普通技术人员在没有做出创造性劳动的前提下所有获得的前提实施例,都属于本发明保护的范围。

本发明实施例提供一种适用于嵌入式系统的应用安全访问内核方法说明,图1所示,该方法由是用户态程序申请的内存11、用户态程序申请的内存尾部的flag12、系统态程序申请的内存13、系统态程序申请的内存尾部flag14组成。

用户态程序申请的内存11,其用于存放小程序的代码数据;

用户态程序申请的内存尾部的flag12,其用于存放小程序的堆栈数据以及赋有初值的全局变量;

系统态程序申请的内存13,其用于临时存放用户态所需的数据;

系统态程序申请的内存尾部flag14,其用于检测数据是否有写越界。

图2为本发明具体实施方式的整体流程图,阐述所实施的一种适用于嵌入式系统的应用安全访问内核方法的过程。所述流程从步骤s201开始。

在步骤s201中,用户态程序在运行过程中申请内存空间。

在步骤s202中,在用户态程序申请到内存空间之后在其尾部追加一个标志位flag,追加之后需要进行字节对齐操作,对齐之后与标志位flag形成一个新的连续的内存空间。

在步骤s203中,系统会根据用户态程序申请内存大小,临时的也申请相同大小的内存,也是需要在尾部追加一个标志位flag,最后需要进行字节对齐操作。

在步骤s204中,驱动或者系统会写入数据。

在步骤s205中,写入数据完毕之后,需要判断一下那块内存空间尾部的标志位flag时是否被破坏了。

在步骤s206中,如果flag完好,说明驱动或者系统的写数据操作并没有越界,可以将数据搬运到用户态程序空间中,最后释放掉系统态程序的临时内存空间。

在步骤s207,无论标志位是否有被破坏,临时的内存空间都是需要被释放掉的,如果flag被破坏了,说明数据写越界了,此时这个临时空间的数据不能搬运到用户态空间来。

图3为本发明具体实施方式的小程序运行过程的存储器数据排布以及mpu保护设定示意图。所述流程从步骤s301开始。

在步骤s301中,展示的是用户态程序申请了一块内存空间;

在步骤s302中,展示的是用户态程序申请的内存空间尾部追加flag,以及进行对齐操作;

在步骤s303中,展示的是在系统态程序中申请出来的临时的内存空间,大小,在加上flag并进行字节对齐之后的大小是需要和用户态程序中的内存空间大小保持一致的;驱动程序或者内核程序可以在其中填写数据;

在步骤s304中,展示的是系统态程序申请的内存空间尾部追加的一个标志位flag,加上标志位之后是需要进行字节对齐的,在驱动程序或者内核程序往其中写入数据之后,需要及时判断尾部的这个flag标志位是否被破坏,如果标志位完好,表示这段临时内存空间中的数据是完好的,并没有被驱动程序或者内核程序写穿,也不会影响后数据为完整性,此时可以将这数据搬运到用户态程序的内存空间中来,并及时释放在系统态程序中申请的这段临时的内存空间。

在步骤s305中,展示的是用户态程序申请的另一块内存空间;

在步骤s306中,展示的是用户态程序申请的内存空间尾部追加flag,以及进行对齐操作;

在步骤s307中,展示的是在系统态程序中申请出来的临时的内存空间,大小,在加上flag并进行字节对齐之后的大小是需要和用户态程序中的内存空间大小保持一致的;驱动程序或者内核程序可以在其中填写数据;

在步骤s308中,展示的是系统态程序申请的内存空间尾部追加的一个标志位flag,加上标志位之后是需要进行字节对齐的,在驱动程序或者内核程序往其中写入数据之后,需要及时判断尾部的这个flag标志位是否被破坏,如果标志位已经被破坏,表示该内存空间中的数据被写越界,或者被称为写穿,进一步的可以理解为数据是不完整的了,以及这部分内存空间之后的一部分数据是被写覆盖了的,此时,并不能把系统态程序中的临时内存空间中的数据搬运到用户态程序的内存空间中来,需要在内核中输出log提示标志位已经被破坏,并及时释放这段临时的内存空间。

图4为本发明具体实施方式的参数段经过拼接之后存储区数据排布以及mpu保护设定示意图。所述流程从步骤s401开始。

在步骤s401中,展示的是在系统运行起来之后,用户态程序在系统heap空间中申请出来的内存空间;

在步骤s402中,展示的是在上述步骤s401的内存空间尾部追加的标志位flag,需要进行字节对齐;

在步骤s403中,展示的是在系统运行过程中,系统态程序在系统heap空间中申请出来的临时内存空间,其大小与用户态程序申请的内存空间在添加标志位和字节对齐之后的大小一致;

在步骤s404中,展示的是在系统态程序申请的临时内存空间尾部追加的标志位flag,添加之后需要对整块内存空间进行字节对齐。

在步骤s405中,展示的是在驱动程序或者内核程序写入数据之后判断标志位flag没有被破坏的情况下,将数据搬运到用户态程序申请的内存空间,并及时把临时空间释放掉。

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