CN115168837B - 软件运行控制方法、微处理器、计算机设备及存储介质 - Google Patents
软件运行控制方法、微处理器、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115168837B CN115168837B CN202211057415.3A CN202211057415A CN115168837B CN 115168837 B CN115168837 B CN 115168837B CN 202211057415 A CN202211057415 A CN 202211057415A CN 115168837 B CN115168837 B CN 115168837B
- Authority
- CN
- China
- Prior art keywords
- execution environment
- software
- memory space
- storage address
- target software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提出一种软件运行控制方法、微处理器、计算机设备及存储介质,该微处理器搭载有第一执行环境和第二执行环境,第一执行环境的安全级别高于第二执行环境;微处理器包括控制单元和第一内存空间,该软件运行控制方法包括由控制单元执行以下操作:当运行在第一执行环境下的目标软件被启动时,从目标软件的映像文件中获取运行目标软件所需的数据;其中,目标软件的映像文件存储在第一内存空间中的第一存储地址,第一内存空间的第一存储地址低于第二存储地址,第二存储地址为运行在第一执行环境下的软件的映像文件加载至第一内存空间时的默认加载地址。采用上述方案能够扩大运行在第一执行环境下的软件的内存空间。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种软件运行控制方法、微处理器、计算机设备及计算机可读存储介质。
背景技术
在计算机***中设置安全级别更高的执行环境,并且对计算机***的硬件资源进行划分,是保证计算机***数据安全的常用方案。
对于内存资源而言,会将内存中的部分内存空间分配给安全级别更高的执行环境所独享。运行于该安全级别更高的执行环境中的软件在启动运行之前,先将其映像文件加载到该安全级别更高的执行环境所独享的内存空间,然后当该软件启动时,从该映像文件中读取运行该软件所需的数据。
但是随着软件应用的种类和功能越来越丰富,这些内存空间已经无法满足运行于该安全级别更高的执行环境的软件对内存的需求。
发明内容
基于上述技术现状,本申请提出一种软件运行控制方法、微处理器、计算机设备及计算机可读存储介质,能够扩大安全级别更高的执行环境的可用内存空间,从而能够满足运行于安全级别更高的执行环境的软件对内存的需求。
本申请第一方面提出一种软件运行控制方法,该方法应用于微处理器,该微处理器搭载有第一执行环境和第二执行环境,第一执行环境的安全级别高于第二执行环境的安全级别;该微处理器包括控制单元和第一内存空间,该软件运行控制方法包括由控制单元执行以下操作:当运行在第一执行环境下的目标软件被启动时,从目标软件的映像文件中,获取运行目标软件所需的数据;其中,目标软件的映像文件存储在第一内存空间中的第一存储地址,第一存储地址为对第二存储地址按照预设地址变化得到的存储地址,第一内存空间的第一存储地址低于第一内存空间的第二存储地址,第二存储地址为运行在第一执行环境下的任意一个软件的映像文件加载至第一内存空间时的默认加载地址。
本申请第二方面提出一种微处理器,该微处理器搭载有第一执行环境和第二执行环境,第一执行环境的安全级别高于第二执行环境的安全级别;该微处理器包括控制单元和第一内存空间,控制单元,用于:当运行在第一执行环境下的目标软件被启动时,从目标软件的映像文件中,获取运行目标软件所需的数据;其中,目标软件的映像文件存储在第一内存空间中的第一存储地址,第一存储地址为对第二存储地址按照预设地址变化得到的存储地址,第一内存空间的第一存储地址低于第一内存空间的第二存储地址,第二存储地址为运行在第一执行环境下的任意一个软件的映像文件加载至第一内存空间时的默认加载地址。
本申请第三方面提出另一种微处理器,该微处理器搭载有第一执行环境和第二执行环境,第一执行环境的安全级别高于第二执行环境的安全级别;该微处理器包括控制单元和第一内存空间;第一内存空间至少用于存储运行在第一执行环境下的任意一个软件的映像文件;控制单元用于执行上述的软件运行控制方法。
本申请第四方面提出一种计算机设备,包括上述的微处理器。
本申请第五方面提出一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时,实现上述的软件运行控制方法。
根据上述的第一方面至第五方面的任意一项,运行在第一执行环境下的目标软件的映像文件加载至第一内存空间中的默认加载地址后,目标软件的映像文件的存储地址被更新为比默认加载地址更低的第一存储地址。在此基础上,当运行在第一执行环境下的目标软件被启动时,微处理器从存储于第一内存空间的第一存储地址的目标软件的映像文件中,获取运行该目标软件所需的数据,由此使得目标软件运行时所实际访问到的内存空间是第一内存空间中的从第一存储地址以上的内存空间,也就是访问到相比从默认加载地址以上的内存空间更大的内存空间。因此,本申请所提出的上述方案,能够使得运行在第一执行环境的软件访问到更大的内存空间,因此能够满足运行于第一执行环境的软件对内存空间的需求。
在一个实现方式中,从目标软件的映像文件中,获取运行目标软件所需的数据,包括:以第一内存空间的第一存储地址为基址进行寻址,获取运行目标软件所需的数据。按照这种方式,将第一内存空间的第一存储地址设定为控制单元从第一内存空间获取运行目标软件所需的数据的基址,可以使控制单元在不改变既有的数据获取方式的情况下,按照常规的基址+偏移量的寻址方式,从目标软件的映像文件中获取到运行目标软件所需的数据。
在一个实现方式中,上述软件运行控制方法还包括:将加载至第一内存空间的第二存储地址的目标软件的映像文件迁移至第一内存空间的第一存储地址。经过该处理,控制单元对运行于第一执行环境的目标软件的映像文件进行存储位置迁移,从而可以使得当控制单元访问目标软件的映像文件时,能够访问到更大的内存空间。同时,由控制单元来执行映像文件迁移,有利于控制单元实现对软件运行的全面控制,即,可以在允许的情况下由控制单元决定映像文件迁移的目标地址,使得内存扩大更灵活。
在一个实现方式中,目标软件的映像文件携带有文件迁移指令,该文件迁移指令指示了上述预设地址变化,以按照上述预设地址变化将目标软件的映像文件迁移至第一内存空间的第一存储地址。按照这种方式,直接将文件迁移指令嵌入目标软件的映像文件中,可以使得控制单元不必单独记忆哪些软件的映像文件需要迁移,或者记忆何时进行映像文件迁移,也不必在控制单元单独配置文件迁移程序,控制单元可以在目标软件被启动时,通过执行目标软件的映像文件中文件迁移指令实现文件迁移,从而提高了文件迁移的实时性和机动性。
在一个实现方式中,文件迁移指令为将目标软件编译为目标软件的映像文件时,添加至目标软件的映像文件起始位置的boot指令。按照这种方式,将文件迁移指令以boot指令的方式添加至目标软件的映像文件的起始位置,可以使得微处理器在访问目标软件的映像文件的第一时刻执行该文件迁移指令,实现映像文件的迁移,从而保证后续的数据获取动作的顺利执行。
在一个实现方式中,第一执行环境包括可信执行环境,第二执行环境包括普通执行环境。按照这种方式,在可信执行环境中实施本申请提出的软件运行控制方法,能够使得运行在可信执行环境下的软件享有更大的内存空间,从而可以使得可信执行环境下能够运行更多的软件,提高运行在可信执行环境下的软件的运行流畅度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的内存空间划分示意图。
图2为本申请实施例提供的微处理器的结构示意图。
图3为本申请实施例提供的计算机***架构示意图。
图4为本申请实施例提供的一种软件运行控制方法的流程示意图。
图5为本申请实施例提供的目标软件的映像文件在第一内存空间的存储位置示意图。
图6为本申请实施例提供的另一种软件运行控制方法的流程示意图。
图7为本申请实施例提供的TEE软件映像文件加载示意图。
图8为本申请实施例提供的另一个TEE软件映像文件加载示意图。
图9为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
申请概述
在计算机***中设置安全级别更高的执行环境,并且对计算机***的硬件资源进行划分,是保证计算机***数据安全的常用方案。例如将计算机***的执行环境划分为可信执行环境(Trusted Execution Environment,TEE),以及普通执行环境(Rich ExecutionEnvironment,REE)(也可称为富执行环境)。
其中,REE可以基于片上***(System on Chip,SOC)的普通区域运行,例如可以运行普通操作***、普通程序并存储普通数据等。
而TEE则是相对于REE安全级别更高的执行环境,其可以基于SOC的安全区域,在与REE完全隔离的硬件环境中进行数据通信、数据处理、数据存储等,保证TEE中的数据和数据处理过程的安全性,并且可以为REE提供安全服务。
软件在运行之前,要先经过编译处理,将软件代码编译成软件映像文件并存储至非易失性存储器,然后,将软件映像文件从非易失性存储器加载至***内存(例如,本申请中的第一内存空间)中。当软件运行时,通过访问内存,从软件的映像文件中读取指令和数据,以实现软件的运行。
基于上述技术思想,要想保证安全级别更高的执行环境的安全性,需要将安全级别更高的执行环境与安全级别一般的执行环境相隔离。对于内存资源来说,则需要为安全级别更高的执行环境设置独享的内存空间。这部分内存空间只能由运行于安全级别更高的执行环境中的软件所访问,而不能被运行于一般安全级别的执行环境中的软件访问。
参见图1所示,将内存中的R1部分内存空间设置为只能允许运行在TEE的软件所访问,不允许运行在REE的软件访问。同时在R1内存空间中设置默认加载地址,运行于TEE中的软件在启动之前,先将其映像文件加载到R1内存空间的默认加载地址处,当软件启动之后,从R1的默认加载地址处存储的映像文件中读取指令和数据,使软件运行起来。
上述的默认加载地址在***搭建完成,并且为TEE划分内存空间后便不能再进行更改,运行在TEE中的任意软件在运行时,都必须将软件的映像文件通过该默认加载地址加载到内存中。
同时,软件运行时采用基址+偏移量的方式寻址,而偏移量均为向上的偏移量,从而使得软件只能访问基址以上的内存空间。而基址,就是软件映像文件的起始地址。因此,运行于TEE中的软件所能访问到的内存空间,就是图1所示的R1内存空间中的默认加载地址以上的内存空间。即便TEE专用的内存空间具有比上述默认加载地址更低的首地址(如图1中虚线所在位置),仍无法扩大TEE中的软件所能访问到的内存空间。
但是随着软件应用的种类和功能越来越丰富,这些内存空间已经无法满足运行于该安全级别更高的执行环境的软件对内存的需求。即便给安全级别更高的执行环境分配更大的内存空间,运行在其中的软件所能够访问到的内存空间,也只是默认加载地址以上的内存空间。
鉴于上述技术现状,本申请提出一种新的技术方案,该技术方案实现了对运行于上述的安全级别更高的执行环境中的软件运行过程的改进,使得运行在安全级别更高的执行环境中的软件能够访问到更大的内存空间,从而能够满足运行在安全级别更高的执行环境下的软件对内存空间的需求,使得该安全级别更高的执行环境可以支撑更多软件、更多功能的运行和执行。
示例性实施环境
请参考图2,图2为本申请技术方案所适用的硬件实施环境的示意图。
本申请实施例技术方案适用于图2所示的微处理器100中,该微处理器100包括控制单元101和第一内存空间102。在该微处理器100上搭载有第一执行环境200和第二执行环境210。
其中,微处理器100可以是片上***(SOC)或其一部分,或者是能够进行逻辑运算和数据处理的其他的***或其一部分。可以理解的是,在实际情况中,微处理器100还可以包括更多其他的模块或结构,而在本申请实施例中则主要展示和介绍了微处理器100中的主要结构单元。
微处理器100上搭载有第一执行环境200和第二执行环境210,此外,还可以搭载更多的执行环境,例如第三执行环境、第四执行环境等。这些执行环境的安全级别有所不同。其中,以第一执行环境200和第二执行环境210为例,第一执行环境200的安全级别高于第二执行环境210的安全级别。例如,第一执行环境200为TEE,第二执行环境210为REE。
第一执行环境200和第二执行环境210相互隔离,第一执行环境200可以接收第一类请求、运行能够响应第一类请求的软件或程序;第二执行环境210可以接收第二类请求、运行能够响应第二类请求的软件或程序。其中,第一类请求对数据安全性的要求高于第二类请求。这样,可以使得对数据安全性要求更高的处理和运算均在独立的执行环境中执行,从而可以保证数据安全性。
在常规方案中,采用执行等级(Execution Level,EL)EL0 — EL3来定处理器的运行等级,其中EL0-EL2等级分为安全世界(Secure world)和普通世界(Normal world),如图3所示。其中,安全世界比普通世界的安全等级更高,即,安全世界对应上述的第一执行环境200,普通世界对应上述的第二执行环境210。
EL0为用户模式,运行应用程序;
EL1为操作***内核模式(OS Kernel mode),运行操作***,分为在正常世界运行的通用操作***(Guest OS)(等级为EL1)和在安全世界运行的可信操作***(Trust OS)(等级为S-EL1);
EL2为虚拟机监视器模式,运行虚拟机;
EL3为安全监控模式secure monitor,负责处理器安全世界和正常世界的切换。
为了保障第一执行环境200的内存需求和内存安全,本申请实施例在微处理器100中设置第一内存空间102被第一执行环境200所独享。该第一内存空间102,可以是内存中的由特定存储首地址和存储末地址限定的部分特定的内存空间,例如图1所示的从完整的内存中所划分出的R1内存空间,或者也可以是单独配置的完整内存,例如专门分配给第一执行环境200的DDR。为了能够满足第一执行环境200中的软件的对内存的需求,该第一内存空间可以被配置为允许范围内的较大值或最大值,该允许范围,以不影响其他执行环境对内存空间的需求为准,或者经与其他执行环境协商划分内存空间确定。
除此之外,微处理器100中还可以包括其他的内存或内存空间,用于被其他执行环境所使用。例如图1中的除R1之外的内存空间,或者其他单独设置的内存,可以被其他执行环境下的软件所共享或独享。
控制单元101主要用于实现对内存的访问和数据读写。具体而言,不论是第一执行环境200下运行的软件,或者是第二执行环境210下运行的软件,当存在访问内存的需求时,均需要通过控制单元101实现对内存的访问。
在本申请实施例中,主要介绍运行于第一执行环境200的软件在运行时,控制单元101访问内存的处理过程。当其他执行环境下的软件在运行时,控制单元101对的内存访问过程,也可以参照本申请各实施例的介绍而执行。
示例性方法
本申请实施例提出一种软件运行控制方法,该方法可应用于图2所示的微处理器100,并且由图2所示的微处理器100中的控制单元101执行。
参见图4所示,该方法包括:
S101、判断运行在第一执行环境下的目标软件是否被启动;
当运行在第一执行环境下的目标软件被启动时,执行步骤S102、从目标软件的映像文件中,获取运行目标软件所需的数据。
其中,上述的目标软件被启动,可以是运行在第一执行环境下的任意一个或多个软件被启动,或者是运行在第一执行环境下的任意一个或多个软件中的某一个或多个软件功能被启动。例如,支付软件被启动,或者支付软件中的部分功能,比如加解密功能等被启动或被触发。
运行在第一执行环境下的目标软件被启动之前,该目标软件的映像文件已经预先被加载至第一执行环境专用的第一内存空间。因此,当运行在第一执行环境下的目标软件被启动时,控制单元101从第一内存空间中存储的目标软件的映像文件中,获取运行目标软件所需的数据。
在本申请实施例中,上述目标软件的映像文件的存储于第一内存空间的第一存储地址。该第一存储地址,是对第二存储地址按照预设地址变化得到的存储地址。
其中,第一内存空间的第一存储地址低于第一内存空间的第二存储地址,而第一内存空间的第二存储地址,是运行在第一执行环境下的任意一个软件的映像文件加载至第一内存空间时的默认加载地址。
上述的预设地址变化,是指预设的对目标软件的映像文件进行存储地址调整的规则。
如图1中所示,R1所示的内存空间作为上述的第一内存空间,其中的默认加载地址,即为第一内存空间的第二存储地址。按照常规的***软件运行规则,运行在第一执行环境下的任意一个软件的映像文件,在加载至第一内存空间时,必须加载至第一内存空间默认加载地址,即加载至第一内存空间的第二存储地址。运行在第一执行环境下的任意一个软件被启动时,控制单元101从存储于第一内存空间的第二存储地址处的映像文件中,获取运行该软件所需的数据,以便实现该软件的运行。
而在本申请实施例中,在将目标软件的映像文件加载至第一内存空间的第二存储地址后,按照预设地址变化,对目标软件的映像文件的存储地址进行调整,将目标软件的映像文件的存储地址调整为比第二存储地址更低的存储地址,并将调整后的目标软件的映像文件的存储地址作为第一存储地址。因此,在本申请实施例中,目标软件的映像文件最终被存储在第一内存空间的第一存储地址处。
则,按照本申请实施例提出的软件运行控制方法,当运行于第一执行环境下的目标软件被启动时,控制单元101从存储于第一内存空间的第一存储地址处的目标软件的映像文件中,获取运行目标软件所需的数据,对获取的数据进行处理即实现目标软件在微处理器100上的运行。
参见图5可以理解,第一内存空间中的第一存储地址是比第一内存空间的默认加载地址更低的存储地址。将运行在第一执行环境下的目标软件的映像文件存储在第一内存空间的第一存储地址,并且使微处理器100启动运行目标软件时,通过控制单元101从第一内存空间的第一存储地址处存储的目标软件的映像文件中,获取运行目标软件所需的数据,这样可以使得目标软件运行时所访问到的内存空间是第一内存空间中的从第一存储地址以上的内存空间。相比于将目标软件的映像文件存储至第一内存空间的第一存储地址,本申请实施例技术方案可以使控制单元101访问到更大的内存空间,也就是使运行于第一执行环境下的软件在运行时能够访问到更大的内存空间,从而能够进一步提升运行在第一执行环境下的软件的运行流畅度,满足运行在第一执行环境下的软件对内存的需求,有利于使有限的内存空间支撑更多的软件和软件功能。
在一些实施例中,上述的第一内存空间的第一存储地址,可以是低于第一内存空间的任意一个存储地址,也就是位于第一内存空间的第二存储地址以下的任意一个存储地址。可以理解,当将运行于第一执行环境下的任意一个软件的映像文件加载至第一内存空间的第二存储地址后,按照预设地址变化,对该软件的映像文件的存储地址进行调整,将其调整为第一内存空间的第一存储地址,也就是调整到更低的存储地址,这样在该软件运行时,微处理器100可以访问到更到的内存空间,从而使得软件运行更流畅,同时可以使得第一内存空间能够支撑更多软件、更多功能的运行。
作为一种优选的实施方式,上述的第一内存空间的第一存储地址,可以是第一内存空间的最低存储地址。在这种实施方式下,微处理器100运行第一执行环境200下的任意软件时,可以访问到第一内存空间的全部,一方面可以将可访问内存空间最大化,另一方面可以避免内存空间浪费,提高内存资源的使用率。
在一些实施例中,上述的第一执行环境200,可以是可信执行环境(TrustedExecution Environment,TEE),还可以是安全元件(Secure Element,SE)子***环境等安全级别较高的执行环境;上述的第二执行环境210,可以是普通执行环境(Rich ExecutionEnvironment,REE)(也可称为富执行环境)。
通常情况下,大部分的计算机软件运行在普通执行环境即可,而只有相对少数的软件需要运行在安全级别较高的执行环境。因此,常规的内存划分方式是将大部分的内存划分给第二执行环境,而将少部分的内存划分给第一执行环境。但是随着互联网、计算机技术和人工智能的发展,越来越多的软件或软件功能涉及用户隐私或数据安全,因此需要在更加安全的执行环境中运行,由此使得第一执行环境对内存的需求越来越高,也就使得第一执行环境的可用内存变得更加紧张。因此,本申请实施例提出的软件运行控制方法主要针对第一执行环境下的软件。
在一些实施例中,控制单元101从目标软件的映像文件中,获取运行目标软件所需的数据,可以通过寻址的方式进行数据获取。
具体而言,在计算机***内部,软件运行时采用基址+偏移量的方式进行寻址,这也是保证计算机***正常运行所需符合的规则。因此,微处理器100启动目标软件时,通过控制单元101采用基址+偏移量的方式,从目标软件的映像文件中获取运行目标软件所需的数据。
由于目标软件的映像文件存储于第一内存空间的第一存储地址处,因此,控制单元101以第一内存空间的第一存储地址为基址向上寻址,访问目标软件的映像文件,从中获取运行目标软件所需的数据。
在一些实施例中,微处理器100的控制单元101在从目标软件的映像文件中获取运行目标软件所需的数据之前,还将加载至第一内存空间的第二存储地址的目标软件的映像文件,迁移至第一内存空间的第一存储地址。
作为一种可选的实施方式,参见图6所示,当运行在第一执行环境下的目标软件被启动时,控制单元101先执行步骤202、将加载至第一内存空间的第二存储地址的目标软件的映像文件迁移至第一内存空间的第一存储地址。在此基础上,再执行步骤S203、从目标软件的映像文件中,获取运行目标软件所需的数据。
示例性的,当目标软件的映像文件被加载至第一内存空间的第二存储地址后,控制单元101对目标软件的映像文件整体进行存储位置迁移,将其迁移至第一内存空间的第一存储地址。例如,控制单元101通过执行文件迁移程序,将目标软件的映像文件从第一内存空间的第二存储地址,迁移至第一内存空间的第一存储地址。
其中,需要说明的是,在本申请各实施例中所论述的,软件的映像文件存储在第一内存空间的第一存储地址或第二存储地址,具体是指软件在第一内存空间中的存储位置,以第一内存空间的第一存储地址或第二存储地址为起始地址。例如假设目标软件的映像文件为10M大小,则目标软件的映像文件存储在第一内存空间的第一存储地址或第二存储地址,实际上是目标软件的映像文件存储在以第一内存空间的第一存储地址或第二存储地址为起始地址的10M存储空间内。
例如图7所示,运行在TEE的软件经过编译生成TEE软件映像文件后,先将TEE软件映像文件烧写至spi Flash,然后将spi Flash中的TEE软件映像文件加载至DDR内存(第一内存空间)的第二存储地址0xFC000000。
当该TEE软件被启动时,控制单元101将DDR内存中存储于第二存储地址0xFC000000的TEE软件映像文件,迁移至第一存储地址0xF0000000,则TEE软件映像文件在DDR内存中的存储地址由0xFC000000变为0xF0000000。控制单元101从DDR内存的0xF0000000处存储的TEE软件映像文件中获取运行该TEE软件所需的数据。可见,控制单元101实际访问到的DDR内存空间是从0xF0000000以上的内存空间,相比于从0xFC000000以上的内存空间,控制单元101实际访问的内存空间增大了192M。
需要说明的是,图7所示举例中的第一存储地址,还可以是比0xF0000000更低的存储地址,并不限定必须是0xF0000000。第一存储地址理论上可以是分配给TEE专用的内存空间中的任意存储地址,而在计算机***的全部内存资源中,分配给TEE的内存空间的地址范围,则可以视TEE和其他执行环境的内存需求而确定。
图6所示实施例中的步骤S201和S203分别与图4所示实施例中的步骤S101、S102相对应。对于上述步骤S201和S203的具体处理内容,可参见图4所示实施例中的相应内容。
在一些实施例中,在对运行在第一执行环境的目标软件进行编译时,在目标软件的映像文件中添加文件迁移指令,使得最终编译得到的目标软件的映像文件携带有文件迁移指令。
其中,该文件迁移指令指示了上述的预设地址变化,以按照上述的预设地址变化将目标软件的映像文件迁移至第一内存空间的第一存储地址。
即,该文件迁移指令被执行时,能够按照上述的预设地址变化,将目标软件的映像文件从第一内存空间的第二存储地址,迁移到第一内存空间的第一存储地址。
上述的文件迁移指令,可以是任意形式、任意类型的能够被微处理器100中的控制单元101所执行的计算机指令。
在一些实施例中,上述的文件迁移指令被设置为具有明显标识、被存储在特定存储地址,或者被配置为优先执行或优先获取。这样当控制单元101在访问目标软件的映像文件时,可以更加快速、准确地获取到该文件迁移指令并执行,或者在访问目标软件的映像文件的第一时刻获取到该文件迁移指令并执行,从而实现对目标软件的映像文件的迁移。
在一些实施例中,上述的文件迁移指令,可以采用boot指令的形式。当对运行于第一执行环境的目标软件进行编译时,在编译得到的目标软件的映像文件的起始位置处,添加用于按照预设地址变化将目标软件的映像文件迁移至第一内存空间的第一存储地址的boot指令。
参见图8所示,对TEE软件进行编译后得到的TEE软件映像文件的起始位置为boot指令。该TEE软件映像文件被加载至DDR内存的第二存储地址0xFC000000后,当该TEE软件被启动时,该TEE软件映像文件的起始位置的boot指令首先被执行,通过执行该boot指令可将TEE软件映像文件整体迁移至DDR内存的0xF0000000地址处。然后,控制单元101从0xF0000000地址处的TEE软件映像文件中获取运行该TEE软件所需要的数据。
需要说明的是,由于上述的boot指令需要占用一定的存储空间,并且其被设置于TEE软件映像文件的起始位置,因此可知,在图8所示的TEE软件映像文件中,实际上是从boot指令结束位置开始,才是TEE软件映像文件的实际映像文件存储位置。
因此,当通过上述的boot指令实现对TEE软件硬件文件的迁移后,控制单元101从TEE软件映像文件中获取运行该TEE软件所需的数据时,可以直接跳过该TEE软件映像文件头部的boot指令。
例如,假设在图8所示的场景中,boot指令的大小为34个字节,则当控制单元101从存储于0xF0000000地址处的TEE软件映像文件中获取运行该TEE软件所需要的数据时,以0xF0000034为基址向上寻址获取运行该TEE软件所需要的数据。
示例性装置
与上述的软件运行控制方法相对应的,本申请实施例还提出一种微处理器,参见图2所示,微处理器100搭载有第一执行环境200和第二执行环境210,第一执行环境200的安全级别高于第二执行环境210的安全级别;微处理器包括控制单元101和第一内存空间102,控制单元101,用于:
当运行在第一执行环境下的目标软件被启动时,从目标软件的映像文件中,获取运行目标软件所需的数据;
其中,目标软件的映像文件存储在第一内存空间中的第一存储地址,第一存储地址为对第二存储地址按照预设地址变化得到的存储地址,第一内存空间的第一存储地址低于第一内存空间的第二存储地址,第二存储地址为运行在第一执行环境下的任意一个软件的映像文件加载至第一内存空间时的默认加载地址。
本申请的另一实施例还提出了另一种微处理器,同样参见图2所示,该微处理器搭载有第一执行环境200和第二执行环境210,第一执行环境200的安全级别高于第二执行环境210的安全级别;该微处理器包括控制单元101和第一内存空间102;
第一内存空间102至少用于存储运行在第一执行环境下的任意一个软件的映像文件;
控制单元101用于执行上述任一实施例所介绍的软件运行控制方法。
在上述的微处理器中,运行在第一执行环境下的目标软件的映像文件加载至第一内存空间中的默认加载地址后,被迁移至比默认加载地址更低的第一存储地址。在此基础上,当运行在第一执行环境下的目标软件被启动时,控制单元101从存储于第一内存空间的第一存储地址的目标软件的映像文件中,获取运行该目标软件所需的数据,在这一过程中,目标软件所能够实际访问到的内存空间是第一内存空间中的从第一存储地址以上的内存空间,相比于从默认加载地址以上的内存空间,本申请提出的软件运行控制方法能够使得运行在第一执行环境的软件访问到更大的内存空间,因此能够满足运行于第一执行环境的软件对内存空间的需求。
在上述的微处理器的一些实施例中,控制单元101被配置为,当从目标软件的映像文件中获取运行目标软件所需的数据时,以第一内存空间的第一存储地址为基址进行寻址,获取运行目标软件所需的数据。按照这种方式,将第一内存空间的第一存储地址设定为控制单元101从第一内存空间获取运行目标软件所需的数据的基址,可以使控制单元101通过执行常规的基址+偏移量的寻址方式,从目标软件的映像文件中获取到运行目标软件所需的数据。
在上述的微处理器的一些实施例中,控制单元101还用于将加载至第一内存空间的第二存储地址的目标软件的映像文件迁移至第一内存空间的第一存储地址。经过该处理,控制单元101对运行于第一执行环境的目标软件的映像文件进行存储位置迁移,从而可以使得当控制单元101访问目标软件的映像文件时,能够访问到更大的内存空间。
在上述的微处理器的一些实施例中,目标软件的映像文件携带有文件迁移指令,该文件迁移指令指示了上述的预设地址变化,以按照上述的预设地址变化将目标软件的映像文件迁移至第一内存空间的第一存储地址。按照这种方式,直接将文件迁移指令嵌入目标软件的映像文件中,可以使得控制单元不必单独记忆哪些软件的映像文件需要迁移,或者记忆何时进行映像文件迁移,也不必在控制单元单独配置文件迁移程序,控制单元可以在目标软件被启动时,通过执行目标软件的映像文件中文件迁移指令实现文件迁移,从而提高了文件迁移的实时性和机动性。
在上述的微处理器的一些实施例中,上述的文件迁移指令为将目标软件编译为目标软件的映像文件时,添加至目标软件的映像文件起始位置的boot指令。按照这种方式,将文件迁移指令以boot指令的方式添加至目标软件的映像文件的起始位置,可以使得微处理器在访问目标软件的映像文件的第一时刻执行该文件迁移指令,实现映像文件的迁移,从而保证后续的数据获取动作的顺利执行。
在上述的微处理器的一些实施例中,上述的第一执行环境包括可信执行环境,上述的第二执行环境包括普通执行环境。按照这种方式,在可信执行环境中实施本申请提出的软件运行控制方法,能够使得运行在可信执行环境下的软件享有更大的内存空间,从而可以使得可信执行环境下能够运行更多的软件,提高运行在可信执行环境下的软件的运行流畅度。
本实施例提供的微处理器,与本申请上述实施例所提供的软件运行控制方法属于同一申请构思,可执行本申请上述任意实施例所提供的软件运行控制方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的软件运行控制方法的具体处理内容,此处不再加以赘述。
示例性电子设备
本申请另一实施例还提出一种计算机设备,该计算机设备包括一个或多个上述任一实施例介绍的微处理器。
参见图9所示,该计算机设备包括:
一个或多个存储器200和一个或多个微处理器210;
其中,存储器200与微处理器210连接,用于存储程序;
微处理器210,用于通过运行存储器200中存储的程序,实现上述任一实施例公开的软件运行控制方法。
在一些实施例中,上述计算机设备还可以包括:总线、通信接口220、输入设备230和输出设备240。
微处理器210、存储器200、通信接口220、输入设备230和输出设备240通过总线相互连接。其中:
总线可包括一通路,在计算机设备各个部件之间传送信息。
微处理器210可以是通用处理器,例如通用中央处理器(CPU)等,也可以是特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
微处理器210还可以包括主处理器,还可包括基带芯片、调制解调器等。
存储器200中保存有执行本发明技术方案的程序,还可以保存有操作***和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器200可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
输入设备230可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
输出设备240可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
通信接口220可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
微处理器210执行存储器200中所存放的程序,以及调用其他设备,可用于实现本申请上述实施例所提供的任意一种软件运行控制方法的各个步骤。
示例性计算机程序产品和存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的软件运行控制方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器运行时,实现本说明书上述“示例性方法”部分中描述的任意一种软件运行控制方法中的步骤。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,各实施例中记载的技术特征可以进行替换或者组合。
本申请各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种软件运行控制方法,其特征在于,应用于微处理器,所述微处理器搭载有第一执行环境和第二执行环境,所述第一执行环境的安全级别高于所述第二执行环境的安全级别;所述微处理器包括控制单元和第一内存空间,所述软件运行控制方法包括由所述控制单元执行以下操作:
当运行在所述第一执行环境下的目标软件被启动时,从所述目标软件的映像文件中,获取运行所述目标软件所需的数据;
其中,所述目标软件的映像文件存储在所述第一内存空间中的第一存储地址,所述第一存储地址为对第二存储地址按照预设地址变化得到的存储地址,所述第一内存空间的第一存储地址低于所述第一内存空间的第二存储地址,所述第二存储地址为运行在所述第一执行环境下的任意一个软件的映像文件加载至所述第一内存空间时的默认加载地址。
2.根据权利要求1所述的方法,其特征在于,从所述目标软件的映像文件中,获取运行所述目标软件所需的数据,包括:
以所述第一内存空间的第一存储地址为基址进行寻址,获取运行所述目标软件所需的数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将加载至所述第一内存空间的第二存储地址的所述目标软件的映像文件迁移至所述第一内存空间的第一存储地址。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述目标软件的映像文件携带有文件迁移指令,所述文件迁移指令指示了所述预设地址变化,以按照所述预设地址变化将所述目标软件的映像文件迁移至所述第一内存空间的第一存储地址。
5.根据权利要求4所述的方法,其特征在于,所述文件迁移指令为将所述目标软件编译为目标软件的映像文件时,添加至所述目标软件的映像文件起始位置的boot指令。
6.根据权利要求1所述的方法,其特征在于,所述第一执行环境包括可信执行环境,所述第二执行环境包括普通执行环境。
7.一种微处理器,所述微处理器搭载有第一执行环境和第二执行环境,所述第一执行环境的安全级别高于所述第二执行环境的安全级别;所述微处理器包括控制单元和第一内存空间,所述控制单元,用于:
当运行在所述第一执行环境下的目标软件被启动时,从所述目标软件的映像文件中,获取运行所述目标软件所需的数据;
其中,所述目标软件的映像文件存储在所述第一内存空间中的第一存储地址,所述第一存储地址为对第二存储地址按照预设地址变化得到的存储地址,所述第一内存空间的第一存储地址低于所述第一内存空间的第二存储地址,所述第二存储地址为运行在所述第一执行环境下的任意一个软件的映像文件加载至所述第一内存空间时的默认加载地址。
8.一种微处理器,其特征在于,所述微处理器搭载有第一执行环境和第二执行环境,所述第一执行环境的安全级别高于所述第二执行环境的安全级别;所述微处理器包括控制单元和第一内存空间;
所述第一内存空间至少用于存储运行在所述第一执行环境下的任意一个软件的映像文件;
所述控制单元用于执行如权利要求1至6中任意一项所述的软件运行控制方法。
9.一种计算机设备,其特征在于,包括如权利要求8所述的微处理器。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现如权利要求1至6中任意一项所述的软件运行控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211057415.3A CN115168837B (zh) | 2022-08-30 | 2022-08-30 | 软件运行控制方法、微处理器、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211057415.3A CN115168837B (zh) | 2022-08-30 | 2022-08-30 | 软件运行控制方法、微处理器、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115168837A CN115168837A (zh) | 2022-10-11 |
CN115168837B true CN115168837B (zh) | 2023-01-10 |
Family
ID=83481219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211057415.3A Active CN115168837B (zh) | 2022-08-30 | 2022-08-30 | 软件运行控制方法、微处理器、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115168837B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135908A (zh) * | 2010-01-25 | 2011-07-27 | 研祥智能科技股份有限公司 | 一种操作***的切换方法、装置和计算机*** |
CN107621927A (zh) * | 2017-09-29 | 2018-01-23 | 南京宏海科技有限公司 | 一种基于超融合***的纵向扩展方法及其装置 |
CN113282239A (zh) * | 2021-05-21 | 2021-08-20 | 维沃移动通信有限公司 | 数据迁移方法、存储器及控制器 |
CN113641413A (zh) * | 2021-08-25 | 2021-11-12 | Oppo广东移动通信有限公司 | 目标模型加载更新方法及装置、可读介质和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130051820A (ko) * | 2011-11-10 | 2013-05-21 | 삼성전자주식회사 | 모바일 환경에서의 소프트웨어 마이그레이션 장치 및 방법 |
-
2022
- 2022-08-30 CN CN202211057415.3A patent/CN115168837B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135908A (zh) * | 2010-01-25 | 2011-07-27 | 研祥智能科技股份有限公司 | 一种操作***的切换方法、装置和计算机*** |
CN107621927A (zh) * | 2017-09-29 | 2018-01-23 | 南京宏海科技有限公司 | 一种基于超融合***的纵向扩展方法及其装置 |
CN113282239A (zh) * | 2021-05-21 | 2021-08-20 | 维沃移动通信有限公司 | 数据迁移方法、存储器及控制器 |
CN113641413A (zh) * | 2021-08-25 | 2021-11-12 | Oppo广东移动通信有限公司 | 目标模型加载更新方法及装置、可读介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115168837A (zh) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10423435B1 (en) | Page swapping in virtual machine environment | |
US7082509B2 (en) | Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time | |
US7797507B2 (en) | Virtual machine system and operating method thereof | |
US8954697B2 (en) | Access to shared memory segments by multiple application processes | |
US12007906B2 (en) | Method and apparatus for first operating system to access resource of second operating system | |
JP6258940B2 (ja) | Bpramを使用したソフトウェア・アプリケーションのレイアウトおよび実行 | |
US7882198B2 (en) | Shared JAVA JAR files | |
CN110765379B (zh) | 加载资源文件的方法、装置、计算机设备及存储介质 | |
US10140139B1 (en) | Ensuring the privacy and integrity of a hypervisor | |
CN104583948A (zh) | 使用bpram来布局和执行操作*** | |
US11556468B2 (en) | Multi-ring shared, traversable, and dynamic advanced database | |
US20170277632A1 (en) | Virtual computer system control method and virtual computer system | |
CN112925718A (zh) | 调用栈回溯方法、装置、设备和介质 | |
US8458434B2 (en) | Unified virtual contiguous memory manager | |
CN115168837B (zh) | 软件运行控制方法、微处理器、计算机设备及存储介质 | |
US11604656B2 (en) | Method and apparatus for managing application | |
US7395400B2 (en) | Adaptive address space operating system | |
US9158701B2 (en) | Process-specific views of large frame pages with variable granularity | |
US11422823B2 (en) | Starting method for multi-mode IoT device, multi-mode IoT device, and storage medium | |
CN115774701A (zh) | 数据共享方法、装置、电子设备及存储介质 | |
US20230029331A1 (en) | Dynamically allocatable physically addressed metadata storage | |
US9892055B2 (en) | Embedded device and memory management method thereof | |
EP3819771B1 (en) | Data processing method and device, apparatus, and system | |
US8813075B2 (en) | Virtual computer system and method of installing virtual computer system | |
US20230168822A1 (en) | Memory management method and semiconductor device adjusting size of contiguous memory allocation area |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |