一种基于TrustZone的资源分配方法及设备与流程

文档序号:11519431阅读:250来源:国知局
一种基于TrustZone的资源分配方法及设备与流程

本发明涉及计算机技术领域,尤其涉及一种基于trustzone的资源分配方法及设备。



背景技术:

在以控制面-数据面为模型的场景中,控制面负责非实时性的管理和策略控制任务,数据面负责承载高速的数据分组处理;这对数据面的高效、高可靠、低延迟等方面的要求越来越高。正是由于这种高要求,使得数据面的处理程序在实现上以简单为主,这通常就舍弃了传统的操作系统,最终的呈现方式以某个任务程序直接运行在一个cpu上,如图1所示,三个业务处理程序分别运行在cpu1、cpu2和cpu3上,可以理解为系统以单核单任务方式运行。

当业务处理程序能充分利用该业务处理程序所运行的cpu时,这种方式是一种很好的选择,但是当业务处理程序不能充分利用该业务处理程序所运行的cpu时,cpu性能得不到充分发挥,系统资源被浪费。在这种情况下,多任务系统应运而生,多任务系统首先需要解决的问题是任务之间如何切换,其次是如何保证任务的安全执行,多个任务运行在统一的实地址空间,虽然不同的任务的内存空间不同,但是不同的内存空间相互之间内容可见(即内存空间不能有效的隔离),如图2所示,图2示出了任务1的内存空间和任务2的内存空间,其中一个任务的错误运行引起的错误内存访问很有可能导致其他任务的运行异常,比如飞指针、数组越界等在多任务系统中是不可避免的,上述业务处理程序可以看作此处描述的任务。

为了实现不同业务处理程序之间的有效隔离,现有技术通常把业务处理程序放到虚拟化的环境中来达到多业务处理程序隔离的目的,同时可以利用控制面实现对各个业务处理程序的调度。然后,虚拟化的解决方案在提高便利性的同时也提高了诸多额外开销,例如,虚拟化层带来性能损失;再如,业务处理程序切换需要进出虚拟模式,等等。



技术实现要素:

本发明实施例公开了一种基于trustzone的资源调度方法及设备,能够各个程序之间的有效隔离。

第一方面,本发明实施例提供了一种基于trustzone的资源调度方法,该方法包括:当需要运行第一程序时,将第一程序的相关数据所占用的内存配置于普通世界normalworld,以及将预设的多个程序中除该第一程序外的程序的数据所占用的内存配置于安全世界secureworld;当需要运行第二程序时,将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界;该多个程序至少包括该第一程序和该第二程序,该多个程序的相关数据所占用的内存被配置在同一个cpu上运行。

通过执行上述步骤,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

结合第一方面,在第一方面的第一种可能的实现方式中,该多个程序中任意一个程序的相关数据包括该程序最近一次运行结束时的上下文状态的信息,用于该程序再次运行时恢复到该程序最近一次运行结束时的状态。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界,包括:将该cpu置于监控状态monitormode;将该第一程序的相关数据所占用的内存配置于该安全世界,且将该第二程序的相关数据所占用的内存配置于该普通世界;将该cpu退出该监控状态monitormode。

结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该将该cpu置于监控状态monitormode之后,将该第一程序的相关数据所占用的内存配置于该安全世界之前,还包括:生成该第一程序当前运行时的上下文状态的信息,以作为该第一程序最近一次运行结束时的上下文状态的信息。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界之后,还包括:根据程序最近一次运行结束时的上下文状态的信息,将该第二程序恢复到该第二程序上一次运行结束时的状态。

第二方面,本发明实施例提供一种基于trustzone的资源调度设备,该设备包括第一配置单元和第二配置单元,其中,第一配置单元,用于在需要运行第一程序时,将第一程序的相关数据所占用的内存配置于普通世界normalworld,以及将预设的多个程序中除该第一程序外的程序的数据所占用的内存配置于安全世界secureworld;第二配置单元,用于在需要运行第二程序时,将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界;该多个程序至少包括该第一程序和该第二程序,该多个程序的相关数据所占用的内存被配置在同一个cpu上运行。

通过运行上述单元,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

结合第二方面,在第二方面的第一种可能的实现方式中,该多个程序中任意一个程序的相关数据包括该程序最近一次运行结束时的上下文状态的信息,用于该程序再次运行时恢复到该程序最近一次运行结束时的状态。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该第二配置单元具体用于:将该cpu置于监控状态monitormode;将该第一程序的相关数据所占用的内存配置于该安全世界,且将该第二程序的相关数据所占用的内存配置于该普通世界;将该cpu退出该监控状态monitormode。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,还包括生成单元,生成单元用于在上述第二配置单元将该cpu置于监控状态monitormode之后,以及将该第一程序的相关数据所占用的内存配置于该安全世界之前,生成该第一程序当前运行时的上下文状态的信息,以作为该第一程序最近一次运行结束时的上下文状态的信息。

结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,还包括恢复单元,恢复单元用于在该第二配置单元将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界之后,根据程序最近一次运行结束时的上下文状态的信息,将该第二程序恢复到该第二程序上一次运行结束时的状态。

第三方面,本发明实施例提供了一种基于trustzone的资源调度设备,该设备包括处理器和存储器,该存储器用于存储程序和数据,该处理器调用该存储器中的程序,用于执行如下操作:当需要运行第一程序时,将第一程序的相关数据所占用的内存配置于普通世界normalworld,以及将预设的多个程序中除该第一程序外的程序的数据所占用的内存配置于安全世界secureworld;当需要运行第二程序时,将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界;该多个程序至少包括该第一程序和该第二程序,该多个程序的相关数据所占用的内存被配置在同一个cpu上运行。

通过执行上述操作,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

结合第三方面,在第三方面的第一种可能的实现方式中,该多个程序中任意一个程序的相关数据包括该程序最近一次运行结束时的上下文状态的信息,用于该程序再次运行时恢复到该程序最近一次运行结束时的状态。

结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,该处理器将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界,具体为:将该cpu置于监控状态monitormode;将该第一程序的相关数据所占用的内存配置于该安全世界,且将该第二程序的相关数据所占用的内存配置于该普通世界;将该cpu退出该监控状态monitormode。

结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,该将该cpu置于监控状态monitormode之后,该处理器将该第一程序的相关数据所占用的内存配置于该安全世界之前,还用于:生成该第一程序当前运行时的上下文状态的信息,以作为该第一程序最近一次运行结束时的上下文状态的信息。

结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,该处理器将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界之后,还用于:根据程序最近一次运行结束时的上下文状态的信息,将该第二程序恢复到该第二程序上一次运行结束时的状态。

通过实施本发明实施例,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1是现有技术中cpu部署方式的场景示意图;

图2是现有技术中内存分配方式的场景示意图;

图3是本发明实施例提供的处理器被划分为安全核和非安全核的示意图;

图4是本发明实施例提供的一种基于trustzone的资源调度方法的流程示意图;

图5是本发明实施例提供的一种普通世界和安全世界配置的场景示意图;

图6是本发明实施例提供的从app1切换到app2的流程示意图;

图7是本发明实施例提供的一种基于trustzone的资源调度设备的结构示意图;

图8是本发明实施例提供的又一种基于trustzone的资源调度设备的结构示意图。

具体实施方式

下面将结合附图对本发明实施例中的技术方案进行清楚地描述。

本发明实施例所描述的设备可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(英文:mobileinternetdevice,简称:mid)、可穿戴设备(例如智能手表(如iwatch等)、智能手环、计步器等)或其他可部署cpu的硬件实体或虚拟装置。

本发明实施例首先对将要涉及到的trustzone技术进行介绍,trustzone是一种全新的安全技术,通过对cpu架构和内存子系统的硬件设计升级,引入安全世界(英文:secureworld)的概念,安全世界和非安全世界(英文:normalworld,也称“普通世界”)硬件隔离,通过监控模式实现二者之间的通信。trustzone技术与cortextm-a处理器紧密集成,并通过axi总线和特定的trustzone系统ip块在系统中进行扩展,此方法可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保它们被安全访问。

如图3所示,为处理器架构上的每个物理的处理器核提供两个虚拟核,一个是非安全核(normal),另一个是安全核(secure),在这二者之间切换的机制叫做监控模式(英文:monitormode)。非安全核能访问置于普通世界(英文:normalworld)的资源,而安全核能访问普通世界(英文:normalworld)和安全世界(英文:secureworld)的资源。普通世界的软件可以使用smc指令或者通过硬件异常机制的一个子集来进入到monitormode。可以配置(英文:interruptrequest,简称:irq),快速中断请求(英文:fastinterruptrequest,简称:fiq),外部dataabort,外部prefetchabort这几个异常进入到monitormode。较简单的情况是,当普通世界使用安全世界的服务时,通过调用smc使处理器将进入到monitormode,在monitormode下备份普通世界的上下文,然后在安全世界执行相应的安全服务。目前,trustzone的使用方式主要为,普通世界的应用与运行在安全世界中的安全应用进行通信,完成对普通世界的应用的密码输入、指纹验证、安全显示等操作的保护。

请参见图4,图4是本发明实施例提供的一种基于trustzone的资源调度方法的流程示意图,该方法包括但不限于如下步骤。

步骤s401:设备确定需要运行第一程序。

具体地,该设备上部署有至少一个cpu,其中至少存在一个中央处理器(英文:centralprocessingunit,简称:cpu)用于运行多个程序(可以理解为多个任务系统),为了描述方便可以称一个用于运行多个程序的cpu为目标cpu。在该目标cpu上运行的多个程序至少包括第一程序和第二程序,即该多个程序除了包括第一程序和第二程序外,还可能包括其他程序,该第一程序和第二程序为两个不同的程序,可选的,该第一程序和第二程序分别为两个不同的应用程序(英文:application,简称:app)。

该设备可以通过检测指令、操作等来确定是否需要运行第一程序,举例来说,当用户需要使用第一程序的相关功能时,该用户可以向该设备输入(例如,通过触控、声控、按键等方式来进行输入)一个针对该第一程序的操作,相应地,该设备检测到用户输入的针对该第一程序的操作时该设备就可以确定需要运行第一程序。当然,针对该第一程序的操作还可以是该设备自身触发的,例如,定时触发、该设备执行的其他事件触发等等。

步骤s402:设备将第一程序的相关数据所占用的内存配置于普通世界,以及将预设的多个程序中除该第一程序外的程序的数据所占用的内存配置于安全世界。

具体地,此处的预设的多个程序为预先部署在该目标cpu上运行的所有程序。不同的程序会占用不同的内存,此处将第一程序的相关数据所占用的内存配置于普通世界,将该多个应用程序中除第一程序外的程序的相关数据所占用的内存配置在安全世界,这样一来,该第一程序在运行时就可以访问到该第一程序的相关数据,而访问不到除该第一程序外的程序的相关数据,既保证了该第一程序的自身的相关数据,也保证了除该第一程序外的程序的安全运行。程序的相关数据通常包括该程序运行时需要的代码或者参数,或者运行时产生的代码或者参数,或者其他与该程序存在关联的信息;可选的,该多个程序中任意一个程序的相关数据包括该程序最近一次运行结束时的上下文状态的信息,用于该程序再次运行时恢复到该程序最近一次运行结束时的状态。

步骤s403:设备确定需要运行第二程序。

具体地,设备在运行完第一程序之后可能还会第二程序,此时就不再运行第一程序了,因此这里涉及到由第一程序到第二程序的切换。确定需要运行第二程序的方式可以参照确定需要运行第一程序的方式,此处不再赘述。

步骤s404:设备将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界。

具体地,进行上述配置之后,该第二程序在运行时就可以访问到该第二程序的相关数据,而访问不到除该第二程序外的程序的相关数据,既保证了该第二程序的自身的相关数据,也保证了除该第二程序外的程序的安全运行。可选的,该第二程序的相关数据包括该第二程序最近一次运行结束时的上下文状态的信息,因此可以根据该上下文状态的信息,将该第二程序恢复到该第二程序上一次运行结束时的状态。

在一种可选的方案中,将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界,可以具体为:将该cpu置于monitormode状态;将该第一程序的相关数据所占用的内存配置于该安全世界,且将该第二程序的相关数据所占用的内存配置于该普通世界;将该cpu退出该monitormode状态。可选的,该将该cpu置于monitormode状态之后,该将该第一程序的相关数据所占用的内存配置于该安全世界之前,还可以包括:生成该第一程序当前运行时的上下文状态的信息,以作为该第一程序最近一次运行结束时的上下文状态的信息,这样一来,该第一程序再次运行时就可以根据该上下文状态的信息恢复到该第一程序最近一次运行结束时的状态。

为了更好地理解本发明实施例的方案,以下结合具体场景作更具体的描述。

假设第一程序为app1(即应用程序1)且该第二程序为app2(即应用程序2),用于在目标cpu上运行的内存数据为app1的相关数据app1-men、app2的相关数据app2-men和其他程序的数据sys-men。

1、当需要运行app1时,将app1-men置于普通世界,以及将app2-men和sys-men置于安全世界,如图5中的a部分所示。

2、运行app1并使得app2处于睡眠(sleep)状态,这样app1就只能访问自己的相关数据app1-men,而不能访问安全世界保护下的app2-men和sys-men,避免了app1对其他数据的非法访问。

3、当需要从app1切换到app2时,即从运行app1转为运行app2时,首先由app1执行smc使得目标cpu进入到monitormode,由monitor中的代码(通常称为scheduler)进行如下操作,图6为对应的流程示意图:

a、保存app1当期运行时的上下文的状态信息,以用于下次再运行app1时根据该上下文的状态信息恢复到app1当前运行时的状态。

b、选择即将被执行的新任务,假设该新任务为app2。

c、将app1的相关数据置于安全世界(包括保存的app1的上下文的状态信息),以及将app2的相关数据置于普通世界,该app2的相关数据包括该app2上一次运行结束时的上下文状态的信息,如图5中的b部分所示。

d、根据该app2的上下文状态的信息将该app2恢复到上一次运行结束时的状态。

e、退出monitormode。

4、运行app2并使得app1处于睡眠(sleep)状态,这样app2就只能访问自己的相关数据app2-men,而不能访问安全世界保护下的app1-men和sys-men,避免了app2对其他数据的非法访问。

在图4所描述的方法中,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

上述详细阐述了本发明实施例的方法,为了便于更好地实施本发明实施例的上述方案,相应地,下面提供了本发明实施例的装置。

请参见图7,图7是本发明实施例提供的一种基于trustzone的资源调度设备70的结构示意图,该设备70可以包括第一配置单元701和第二配置单元702,其中,各个单元的详细描述如下。

第一配置单元701用于在需要运行第一程序时,将第一程序的相关数据所占用的内存配置于普通世界normalworld,以及将预设的多个程序中除该第一程序外的程序的数据所占用的内存配置于安全世界secureworld;

第二配置单元702用于在需要运行第二程序时,将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界;该多个程序至少包括该第一程序和该第二程序,该多个程序的相关数据所占用的内存被配置在同一个cpu上运行。

通过运行上述单元,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

在一种可选的方案中,该多个程序中任意一个程序的相关数据包括该程序最近一次运行结束时的上下文状态的信息,用于该程序再次运行时恢复到该程序最近一次运行结束时的状态。

在又一种可选的方案中,该第二配置单元具体用于:将该cpu置于监控状态monitormode;将该第一程序的相关数据所占用的内存配置于该安全世界,且将该第二程序的相关数据所占用的内存配置于该普通世界;将该cpu退出该监控状态monitormode。

在又一种可选的方案中,设备70还包括生成单元,生成单元用于在上述第二配置单元将该cpu置于监控状态monitormode之后,以及将该第一程序的相关数据所占用的内存配置于该安全世界之前,生成该第一程序当前运行时的上下文状态的信息,以作为该第一程序最近一次运行结束时的上下文状态的信息。

在又一种可选的方案中,设备70还包括恢复单元,恢复单元用于在该第二配置单元将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界之后,根据程序最近一次运行结束时的上下文状态的信息,将该第二程序恢复到该第二程序上一次运行结束时的状态。

需要说明的是,各个单元的具体实现还可以对应参照图4所示的方法实施例的相应描述。

在图7所描述的设备70中,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

请参见图8,图8是本发明实施例提供的一种基于trustzone的资源调度设备80,该设备80包括处理器801、存储器802和收发器803,该处理器801与存储器802以及与收发器803通过总线相互连接。

存储器802包括但不限于是随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或者快闪存储器)、或便携式只读存储器(cd-rom),该存储器802用于相关指令及数据。

处理器801可以是一个或多个中央处理器(英文:centralprocessingunit,简称:cpu),在处理器801是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。

该设备80中的处理器801用于读取该存储器802中存储的程序代码,执行以下操作:

当需要运行第一程序时,将第一程序的相关数据所占用的内存配置于普通世界normalworld,以及将预设的多个程序中除该第一程序外的程序的数据所占用的内存配置于安全世界secureworld;当需要运行第二程序时,将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界;该多个程序至少包括该第一程序和该第二程序,该多个程序的相关数据所占用的内存被配置在同一个cpu上运行。

通过执行上述步骤,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

在一种可选的方案中,该多个程序中任意一个程序的相关数据包括该程序最近一次运行结束时的上下文状态的信息,用于该程序再次运行时恢复到该程序最近一次运行结束时的状态。

在又一种可选的方案中,该处理器801将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界,具体为:将该cpu置于监控状态monitormode;将该第一程序的相关数据所占用的内存配置于该安全世界,且将该第二程序的相关数据所占用的内存配置于该普通世界;将该cpu退出该监控状态monitormode。

在又一种可选的方案中,该将该cpu置于监控状态monitormode之后,该处理器801将该第一程序的相关数据所占用的内存配置于该安全世界之前,还用于:生成该第一程序当前运行时的上下文状态的信息,以作为该第一程序最近一次运行结束时的上下文状态的信息。

在又一种可选的方案中,该处理器801将第二程序的相关数据所占用的内存配置于该普通世界,以及将该多个程序中除该第二程序外的程序的数据所占用的内存配置于该安全世界之后,还用于:根据程序最近一次运行结束时的上下文状态的信息,将该第二程序恢复到该第二程序上一次运行结束时的状态。

需要说明的是,各个单元的具体实现还可以对应参照图4所示的方法实施例的相应描述。

在图8所描述的设备80中,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

综上所述,通过实施本发明实施例,设备基于trustzone技术实现了各个程序的内存之间的有效地隔离,同时也保证了各个程序之间的顺利切换,不需要像现有技术那样为每个程序配置一个独立的虚拟cpu,节省了整体开销。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上实施例仅揭露了本发明中较佳实施例,不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

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