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

操作系统的内存保护方法及存储器

文献发布时间:2024-04-18 20:01:23


操作系统的内存保护方法及存储器

技术领域

本发明涉及数据处理技术领域,具体涉及一种操作系统的内存保护方法及存储器。

背景技术

在嵌入式系统中,内存用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。当需要运行相应的应用程序时,操作系统会从存储器中调取相应的代码、数据等存放至内存中,以供应用运行时读取、执行、写入。为实现较好的嵌入式系统的安全性、稳定性和可靠性,通常还需要配置相应的内存保护机制对内存的访问、操作权限进行管理,避免错误访问。

现有技术中,已存在有较多的用于内存保护的技术方案,比如,中国专利CN201811619460.7公开了一种内存访问方法、内存访问控制器和片上系统,该方法包括:接收步骤,经由总线从内存访问模块接收内存访问请求,所述内存访问请求包括所述内存访问模块的标识、要访问的内存区域名;检测处理步骤,根据当前存储的内存访问请求以及预定的内存访问控制表,对所述内存访问请求进行检测,根据检测结果对所述内存访问请求进行相应的处理,并得到更新存储的内存访问请求,检测返回步骤,对所述更新存储的内存访问请求进行检测,根据检测结果将所述内存访问请求的访问结果传送给对应的内存访问模块。本发明可以有效地保护内存,避免敏感信息的泄漏,同时可以高效地访问内存。

但是,在实际实施过程中,发明人发现,该类技术方案由于依赖软件层对内存访问请求进行拦截,并对指定的页面的数据进行处理,确定可访问后再放行,其在线程切换时重新对整个内存保护单元进行设置导致时间消耗大,影响实时性。

发明内容

针对现有技术中存在的上述问题,现提供一种操作系统的内存保护方法;另一方面,还提供用于实施该内存保护方法的存储器。

具体技术方案如下:

一种操作系统的内存保护方法,包括:

步骤S1:针对所述操作系统中的应用程序运行时将要创建的处理线程,预先确定访问权限;

步骤S2:依照所述访问权限构建所述处理线程对应于内存区域的权限映射表,以确定所述处理线程实际可使用的内存分区;

所述内存分区依照所述处理线程待访问的内存数据的数据类别进行确定,每个所述内存分区分别用于存放一个所述数据类别的内存数据;

步骤S3:运行所述处理线程,所述处理线程在运行时依照所述权限映射表仅访问特定的所述内存分区中的数据。

另一方面,所述步骤S1包括:

步骤S11:针对所述处理线程获取所述处理线程的所属应用;

步骤S12:获取所述所属应用的分类信息;

所述分类信息包括:不可信应用和可信应用;

步骤S13:依照所述分类信息确定所述处理线程的访问权限。

另一方面,所述访问权限包括多组数据类别权限,每组数据类别权限分别对应于一个数据类别,每组数据类别权限还分别包括任务访问权限和中断访问权限;

当所述处理线程通过任务运行时,基于所述任务访问权限确定所述处理线程对每个所述数据类别所对应的所述内存分区的实际访问权限;

当所述处理线程通过中断运行时,基于所述中断访问权限确定所述处理线程对每个所述数据类别所对应的所述内存分区的实际访问权限;

所述实际访问权限为:无权限或只读或执行或读写。

另一方面,所述数据类别包括:所述所属应用以外的代码,所述所属应用以外的数据、所述所属应用的私有数据、所述处理线程的代码、所述处理线程的数据、所述处理线程的栈、所述所属应用的其他线程的代码、所述其他线程的数据、所述其他线程的栈和外围设备接口。

另一方面,多个所述内存分区组成一个内存分区组,每个所述内存分区组分别针对一个所述所属应用的内存数据构建。

另一方面,于所述步骤S3之后还包括:

步骤S4:获取所述处理线程的运行状态,并在所述运行状态发生切换时,重新确定所述处理线程的访问权限,并调整所述内存分区。

另一方面,所述步骤S4包括:

步骤S41:获取所述运行状态并判断是否发生线程切换;

若是,转向步骤S42;

若否,返回所述步骤S41;

步骤S42:依照线程切换后所述处理线程需要访问的分区编号确定所述处理线程的更新应用类别;

所述更新应用类别包括:自所述可信应用切换至另一个所述可信应用、自所述不可信应用切换至另一个所述不可信应用、自所述可信应用切换至所述不可信应用、自所述不可信应用切换至所述可信应用;

步骤S43:依照所述更新应用类别确定待初始化分区,随后对所述待初始化分区进行初始化形成可用内存分区;

线程切换后的所述处理线程对所述可用内存分区进行访问以获取内存数据。

另一方面,于执行所述步骤S43的过程中还包括:

判断所述处理线程是否需要跨越所述内存分区组,并依照判断结果调整所述待初始化分区。

一种存储器,所述存储器中存储有计算机指令,所述计算机指令适用于在计算机设备中执行,当所述计算机设备执行所述计算机指令时,执行上述的内存保护方法。

上述技术方案具有如下优点或有益效果:

针对现有技术中的内存保护机制负载较大、时效性较差的问题,本方案中,围绕应用程序在运行时会创建的处理线程,预先配置了对应的访问权限,并在该处理线程运行时,依照访问权限配置对应于具体的数据类别的内存分区并建立映射,使得处理线程在切换时仅重新设置该线程所属分区对应权限表的特定区域访问权限实现了较好的内存保护效果,节省了功耗并提升实时性。

附图说明

参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。

图1为本发明实施例的整体示意图;

图2为本发明实施例中步骤S1子步骤示意图;

图3为本发明实施例中步骤S4示意图;

图4为本发明实施例中步骤S4子步骤示意图。

具体实施方式

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

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。

本发明包括:

一种操作系统的内存保护方法,如图1所示,包括:

步骤S1:针对操作系统中的应用程序运行时将要创建的处理线程,预先确定访问权限;

步骤S2:依照访问权限构建处理线程对应于内存区域的权限映射表,以确定处理线程实际可使用的内存分区;

内存分区依照处理线程待访问的内存数据的数据类别进行确定,每个内存分区分别用于存放一个数据类别的内存数据;

步骤S3:运行处理线程,处理线程在运行时依照权限映射表仅访问特定的内存分区中的数据。

具体地,针对现有技术中的内存保护机制负载较大、时效性较差的问题,本实施例中,针对操作系统在运行时产生的处理线程,预先分配有对应的访问权限,该访问权限关联于处理线程在运行时可访问的数据类别,比如,所属应用以外的代码,所属应用以外的数据等。随后,在实际运行应用程序时,依照应用程序包含的相关数据的数据类别,可以对物理内存进行划分并配置多个内存分区,每个内存分区中分别用于存放一个数据类别的内存数据,比如代码、私有数据、栈等。需要说明的是,依照应用程序运行需要的数据,其可能建立有多个内存分区,该内存分区与实际的物理内存地址对应,但并非所有的内存分区均为当前的处理线程可访问或可操作的内存分区。在建立内存分区后,基于对当前的处理线程配置的访问权限可以确定处理线程可访问的内存分区,并建立对应的映射关系形成权限映射表。在实际运行时,该处理线程仅能够通过权限映射表对特定的内存分区执行特定的操作,比如,只读、执行、写入等,从而实现较为精细的内存保护机制,不易使得其他数据泄露,同时线程在切换时仅重新设置该线程所属分区对应权限表的特定区域访问权限,且权限表是在操作系统启动时计算好的,后续的线程在切换时直接读取使用。。

在实施过程中,如图2所示,步骤S1包括:

步骤S11:针对处理线程获取处理线程的所属应用;

步骤S12:获取所属应用的分类信息;

分类信息包括:不可信应用和可信应用;

步骤S13:依照分类信息确定处理线程的访问权限。

其中,访问权限包括多组数据类别权限,每组数据类别权限分别对应于一个数据类别;

数据类别包括:所属应用以外的代码,所属应用以外的数据、所属应用的私有数据、处理线程的代码、处理线程的数据、处理线程的栈、所属应用的其他线程的代码、其他线程的数据、其他线程的栈和外围设备接口。

其中,该操作系统中,其对于线程的配置为静态配置,在系统运行过程中不会动态创建线程,因此整体的内存布局和线程位置确定。每个处理线程均有其所属应用,依照预先划定的分级可分为不可信应用和可信应用。则,针对不可信应用和可信应用,可以对每类应用产生的处理线程可访问的数据类别进行配置,并在后续创建内存分区的过程中,围绕上述的数据类别分别建立对应的内存分区,以控制处理线程所能操作的内存数据。

需要说明的是,上述的分类信息仅是一种较为简单的实施例,其在实施过程中可能还会有其他划分,比如,将可信应用细分为具有保护的可信应用和不具有保护的可信应用等。

进一步地,为实现更为准确的控制效果,每组数据类别权限还分别包括任务访问权限和中断访问权限;

当处理线程通过任务运行时,基于任务访问权限确定处理线程对每个数据类别所对应的内存分区的实际访问权限;

当处理线程通过中断运行时,基于中断访问权限确定处理线程对每个数据类别所对应的内存分区的实际访问权限;

实际访问权限为:无权限或只读或执行或读写。

具体来说,考虑到实际系统执行时,需要通过任务调度(Task)或中断触发(ISR)的方式来启动相应的应用程序并创建处理线程。因此,通过选择在对每个数据类别配置访问权限时,进一步结合进程线程创建时的应用场景对访问权限进行控制,能够实现更为准确的配置效果。

依照上述的机制,可以形成一个较为完整的权限配置表,如表1所示:

表1

依照该权限配置表,可以在创建对应于数据类别的内存分区后,依照权限配置表配置不同的触发情况下,处理线程对特定数据类别的内存分区的访问权限。同时,在创建内存分区后,多个内存分区组成一个内存分区组,每个内存分区组分别针对一个所属应用的内存数据构建,使得处理线程能够访问特定的内存分区内的数据,并执行对应操作。

在一个实施例中,如图3所示,于步骤S3之后还包括:

步骤S4:获取处理线程的运行状态,并在运行状态发生切换时,重新确定处理线程的访问权限,并调整内存分区。

具体地,考虑到实际运行过程中处理线程可能会发生线程切换,进而导致内存管理机制失效的问题,本实施例中,在建立了处理线程与内存分区之间的映射关系后,还进一步对处理线程的状态进行监听,从而获取处理线程的运行状态,当发生线程切换时,重新确定对应的内存分区,以此来实现较好的保护效果,同时,由于不需要对线程本身的操作过程进行识别,减少了资源的占用。

在一个实施例中,如图4所示,步骤S4包括:

步骤S41:获取运行状态并判断是否发生线程切换;

若是,转向步骤S42;

若否,返回步骤S41;

步骤S42:依照线程切换后处理线程需要访问的分区编号确定处理线程的更新应用类别;

更新应用类别包括:自可信应用切换至另一个可信应用、自不可信应用切换至另一个不可信应用、自可信应用切换至不可信应用、自不可信应用切换至可信应用;

步骤S43:依照更新应用类别确定待初始化分区,随后对待初始化分区进行初始化形成可用内存分区;

线程切换后的处理线程对可用内存分区进行访问以获取内存数据。

具体地,为实现较好的分配效果,本实施例中,还构建了上述的识别过程,依照线程切换后处理线程需要访问的分区编号确定处理线程切换后,其理论上的安全等级的变化,进而选择需要初始化、重新确定访问权限和映射关系的内存区域,提高了切换过程中的内存数据安全性。

其中,上述识别过程为处理线程在正常执行相应处理时进行的并行过程,其通过监测运行状态并判断是否发生线程切换来判断是否需要进行特定的初始化操作;当不存在线程切换时,仅保持对运行状态的监测而不对内存分区进行处理,直至处理线程退出或关闭。

在一个实施例中,于执行步骤S43的过程中还包括:

判断处理线程是否需要跨越内存分区组,并依照判断结果调整待初始化分区。

具体地,在确定需要初始化的内存分区的过程中,为实现较好内存安全性,还进一步对处理线程是否需要访问当前的内存分区组以外的内存分区,若是,则增加需要初始化的内存分区以提高安全性。

在一个实施例中,某个应用程序的内存分区组中依次设置有第1-13内存分区,分别为1、代码起始段;2、应用代码起始段;3、所属应用代码段;4、应用代码结束段;5、代码结束段;6、数据起始段;7、私有数据起始段;8、应用私有数据段;9、线程数据起始段;10、线程数据段;11、线程数据结束段;12、应用数据结束段和13、外部设备段。

当触发线程切换时,先对切换前后的分区编号进行识别并分类,归类为以下几类:

自可信应用切换至另一个可信应用、自不可信应用切换至另一个不可信应用、自可信应用切换至不可信应用、自不可信应用切换至可信应用;

随后,再对线程的切换是否要跨内存分区组进行判断,并最终生成需要初始化的内存分区。

比如,在自可信应用切换至另一个可信应用时:

若线程切换需要跨越分区,则最多需要重新初始化9、线程数据起始段;10、线程数据段;11、线程数据结束段;

若不需要跨越分区,则仅初始化10、线程数据段;

在自不可信应用切换至另一个不可信应用时:

若线程切换需要跨越分区,则最多需要重新初始化4、应用代码结束段;5、代码结束段;6、数据起始段;9、线程数据起始段;10、线程数据段;11、线程数据结束段;

若不需要跨越分区,则仅初始化10、线程数据段;

在自可信应用切换至不可信应用,或者,自不可信应用切换至可信应用时,需要对2-11的内存分区全部进行初始化。

一种存储器,存储器中存储有计算机指令,计算机指令适用于在计算机设备中执行,当计算机设备执行计算机指令时,执行上述的内存保护方法。

其中,当计算机设备读取该计算机指令时,通常是由操作系统本身对于指令进行加载,并依照上述的内存保护方法对应用程序的处理线程进行控制、对内存分区进行创建等操作。

存储器可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。

计算机中的处理器读取存储在存储器中的计算机指令,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。

应当理解的是,计算机中的处理器可以被理解为一个或多个应用专用集成电路(ASIC)、DSP、可编程逻辑器件(PLD)、复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、通用处理器、控制器、微控制器(MCU)、微处理器(Microprocessor)、或者其他电子元件实现,用于执行前述计算机指令。

计算机指令可以完全在用户的本地计算机上执行、部分在用户的本地计算机上执行、作为单独的软件包、部分在用户的本地计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。

以上仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。

相关技术
  • 一种复合型光催化剂及其制备方法和应用
  • 一种复合型微藻生物吸附剂及其制备方法和应用
  • 一种Ti3C2-FeOOH复合型过渡金属催化剂及其制备方法和应用
  • 一种多功能复合型纳米比率荧光化学传感器及其制备方法和应用
  • 一种深度脱氮除磷的复合型微藻及其制备方法和应用
  • 一种复合型颗粒状银粉及其制备方法与应用
  • 一种导电银粉的制备方法、制得的导电银粉及其应用
技术分类

06120116549531