发明内容
本申请实施例提供了一种用于运行进程的容器的构建方法、装置和电子设备,通过在不同的平面内分别运行系统进程和应用程序进程,将运行系统进程和应用程序进程运行时占用的硬件资源进行隔离,使得运行系统进程和应用程序进程均能够流畅的运行,从而提升用户体验。
第一方面,本申请实施例提供了一种用于运行进程的容器的构建方法,所述用于运行进程的容器的构建方法包括:
在主机操作系统启动后,构建至少两个容器。
在各容器内,启动不同的虚拟机操作系统。
在各所述容器内部均构建控制平面和数据平面,所述数据平面独立于所述控制平面。
针对每个所述容器,在所述容器的控制平面内运行对应的虚拟机操作系统的系统进程,并在所述容器的数据平面内运行应用程序进程。
在一种可能的实现方式中,所述在所述容器的数据平面内运行应用程序进程,包括:
在所述数据平面内初始化应用程序进程。
创建所述应用程序进程内的业务线程。
根据所述业务线程访问的硬件资源,构建特性平面,所述特性平面用于对所述特性平面中每一个业务线程访问的硬件资源进行限定。
将所述业务线程加入所述特性平面内,并在所述特性平面内运行所述业务线程。
在一种可能的实现方式中,所述特性平面包括共享特性平面;所述根据所述业务线程访问的硬件资源,构建特性平面,包括:
判断所述业务线程访问的硬件资源是否为所述不同的虚拟机操作系统的共享资源。
若所述业务线程访问的硬件资源为所述不同的虚拟机操作系统的共享资源,则构建共享特性平面。
在一种可能的实现方式中,所述特性平面还包括独占特性平面;所述根据所述业务线程访问的硬件资源,构建特性平面,包括:
若所述业务线程访问的硬件资源为所述不同的虚拟机操作系统中任一虚拟机操作系统的资源,则构建独占特性平面。
在一种可能的实现方式中,所述将所述业务线程加入所述特性平面内,包括:
判断所述特性平面内已加入业务线程的数量是否小于预设阈值。
若所述已加入业务线程的数量小于预设阈值,则将所述业务线程加入所述特性平面。
若所述已加入业务线程的数量等于预设阈值,则重复执行判断所述特性平面内已加入业务线程的数量是否小于预设阈值的步骤,直至所述已加入业务线程的数量小于预设阈值,将所述业务线程加入所述特性平面。
在一种可能的实现方式中,所述在所述特性平面内运行所述业务线程,包括:
根据所述特性平面内已加入业务线程和所述业务线程的优先级,对所述特性平面内已加入业务线程和所述业务线程进行硬件资源调度处理,并确定所述业务线程对应的硬件资源。
根据所述业务线程对应的硬件资源,在所述特性平面内运行所述业务线程。
在一种可能的实现方式中,所述在所述容器的控制平面内运行对应的虚拟机操作系统的系统进程,包括:
获取所述控制平面的至少一个系统进。
按照所述至少一个系统进程的排列顺序,对所述至少一个系统进程进行初始化,并在所述控制平面内运行初始化的所述系统进程。
在一种可能的实现方式中,所述不同的虚拟机操作系统通过时分复用、空分复用、共同使用中的至少一种方式,使用硬件资源。
第二方面,本申请实施例提供了一种用于运行进程的容器的构建装置,所述用于运行进程的容器的构建装置包括:
构建模块,用于在主机操作系统启动后,构建至少两个容器;
启动模块,用于在各容器内,启动不同的虚拟机操作系统;
所述构建模块,还用于在各所述容器内部均构建控制平面和数据平面,所述数据平面独立于所述控制平面;
运行模块,用于针对每个所述容器,在所述容器的控制平面内运行对应的虚拟机操作系统的系统进程,并在所述容器的数据平面内运行应用程序进程。
在一种可能的实现方式中,所述运行模块,具体用于在所述数据平面内初始化应用程序进程;创建所述应用程序进程内的业务线程。
所述构建模块,还用于根据所述业务线程访问的硬件资源,构建特性平面,所述特性平面用于对所述特性平面中每一个业务线程访问的硬件资源进行限定。
所述运行模块,具体用于将所述业务线程加入所述特性平面内,并在所述特性平面内运行所述业务线程。
在一种可能的实现方式中,所述特性平面包括共享特性平面;所述构建模块,具体用于判断所述业务线程访问的硬件资源是否为所述不同的虚拟机操作系统的共享资源;在所述业务线程访问的硬件资源为所述不同的虚拟机操作系统的共享资源时,构建共享特性平面。
在一种可能的实现方式中,所述特性平面还包括独占特性平面;所述构建模块,具体用于在所述业务线程访问的硬件资源为所述不同的虚拟机操作系统中任一虚拟机操作系统的资源时,构建独占特性平面。
在一种可能的实现方式中,所述运行模块,具体用于判断所述特性平面内已加入业务线程的数量是否小于预设阈值;在所述已加入业务线程的数量小于预设阈值时,将所述业务线程加入所述特性平面;在所述已加入业务线程的数量等于预设阈值时,重复执行判断所述特性平面内已加入业务线程的数量是否小于预设阈值的步骤,直至所述已加入业务线程的数量小于预设阈值,将所述业务线程加入所述特性平面。
在一种可能的实现方式中,所述运行模块,具体用于根据所述特性平面内已加入业务线程和所述业务线程的优先级,对所述特性平面内已加入业务线程和所述业务线程进行硬件资源调度处理,并确定所述业务线程对应的硬件资源;根据所述业务线程对应的硬件资源,在所述特性平面内运行所述业务线程。
在一种可能的实现方式中,所述运行模块,具体用于获取所述控制平面的至少一个系统进程;按照所述至少一个系统进程的排列顺序,对所述至少一个系统进程进行初始化,并在所述控制平面内运行初始化的所述系统进程。
在一种可能的实现方式中,所述不同的虚拟机操作系统通过时分复用、空分复用、共同使用中的至少一种方式,使用硬件资源。
第三方面,本申请实施例还提供了一种电子设备,该电子设备包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现上述第一方面任一种可能的实现方式中所述的用于运行进程的容器的构建方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述第一方面任一种可能的实现方式中所述的用于运行进程的容器的构建方法。
第五方面,本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现上述第一方面任一种可能的实现方式中所述的用于运行进程的容器的构建方法。
由此可见,本申请实施例提供了用于运行进程的容器的构建方法、装置和电子设备,通过在主机操作系统启动后,构建至少两个容器;在各容器内,启动不同的虚拟机操作系统;在各容器内部均构建控制平面和数据平面,数据平面独立于控制平面;针对每个容器,在容器的控制平面内运行对应的虚拟机操作系统的系统进程,并在容器的数据平面内运行应用程序进程。本申请的技术方案通过在各容器内启动不同的虚拟机操作系统,能够避免因虚拟机操作系统抢占资源而导致其他虚拟机操作系统运行缓慢的问题,保证各虚拟机操作系统均能够流畅的运行。此外,在各容器内部构建相互独立的用于运行对应的虚拟机操作系统的系统进程的控制平面和用于运行应用程序进程的数据平面,使得系统进程和应用程序进程适用各自的硬件资源运行,避免了应用程序进程抢占系统进程硬件资源的问题,能够保证系统进程和应用程序进程流畅运行,从而提升了用户体验。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本申请的实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。在本申请的文字描述中,字符“/”一般表示前后关联对象是一种“或”的关系。
本申请实施例提供的技术方案可以应用于程序运行的场景中。在电子设备的使用过程中,可能需要同时运行系统和应用程序,即运行系统进程和应用程序进程。而系统进程和应用程序进程在运行过程中均需要占用一定的硬件资源,以保证其能够流程的运行。目前,可以通过开启操作系统的负载均衡能力,使得能够对系统进程和应用程序进程在运行过程中占用的硬件资源进行均匀的分配。
但是,负载均衡能力的分配情况有限,对于用户的错误操作或者操作系统的程序问题造成的应用程序进程恶意占用硬件资源的问题无法解决,可能造成系统进程占用的硬件资源较少而导致系统运行缓慢的问题。此外,还可能会由于应用程序占用的硬件资源较多,而导致图形处理器(graphics processing unit,GPU)的负荷较大造成GPU阻塞而导致界面卡顿,从而降低了用户体验。
为了解决因应用程序进程恶意占用硬件资源,使得系统进程占用了较少的硬件资源而导致系统进程运行缓慢用户体验较差的问题,可以构建相互独立的数据平面和控制平面,以在控制平面内运行系统进程,并在数据平面内运行应用程序进程,使得系统进程和应用程序进程独立运行,即应用程序进程无法占用系统进程的硬件资源。此外,对于多个操作系统的情况,可以通过构建容器的方式,在容器内启动不同的操作系统,即在各容器内均构建控制平面和数据平面,避免了各操作系统之间抢占硬件资源的问题,避免出现系统进程运行缓慢的问题,从而提升了用户体验。
其中,控制平面为运行对应的操作系统的系统进程占用的硬件资源,数据平面为运行的应用程序进程占用的硬件资源,即控制平面和数据平面用于将对系统进程和应用程序进行分组。由于数据平面独立于控制平面,因此,在数据平面运行的应用程序进程占用的硬件资源,与,在数据平面运行的对应的操作系统的进程占用的硬件资源为相互独立的,使得两者无法占用属于彼此的硬件资源,从而保证了系统进程和应用程序进程能够流畅的运行。
图1为本申请实施例提供的一种用于运行进程的容器的构建方法的应用场景示意图。根据图1所示,在主机操作系统启动后,可以构建第一容器和第二容器,并在第一容器内启动第一虚拟机操作系统,在第二容器内启动第二虚拟机操作系统,使得第一虚拟机操作系统和第二虚拟机操作系统能够相互独立,互补干扰的运行。进一步的,在容器内构建第一数据平面和第一控制平面,并在第二容器内构建第二数据平面和第二控制平面。在第一数据平面内运行第一虚拟机操作系统的应用程序进程,在第一控制平面运行第一虚拟机操作系统的系统进程;在第二数据平面内运行第二虚拟机操作系统的应用程序进程,在第二控制平面运行第二虚拟机操作系统的系统进程。
根据图1可知,第一数据平面独立于第一控制平面,第二数据平面独立于第二控制平面,因此,第一虚拟机操作系统的系统进程和应用程序进程在运行过程中占用的硬件资源是相互独立的,第二虚拟机操作系统的系统进程和应用程序进程在运行过程中占用的硬件资源是相互独立的。即,将两个虚拟机操作系统中各自的系统进程和应用程序进程运行时占用的硬件资源进行分组。
示例的,为了进一步保证应用程序进程在运行过程中不会占用系统进程的硬件资源,可以设置数据平面的运行优先权低于控制平面,即第一数据平面的运行优先权低于第一控制平面,第二数据平面的运行优先权低于第二控制平面,使得在设备的硬件资源不足时,依然能够保证系统进程的流畅运行。
下面,将通过具体的实施例对本申请提供的用于运行进程的容器的构建方法进行详细地说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本申请实施例提供的一种用于运行进程的容器的构建方法的流程示意图。该用于运行进程的容器的构建方法可以由软件和/或硬件装置执行,例如,该硬件装置可以为用于运行进程的容器的构建装置,该用于运行进程的容器的构建装置可以为终端或者终端中的处理芯片。示例的,请参见图2所示,该用于运行进程的容器的构建方法可以包括:
S201、在主机操作系统启动后,构建至少两个容器。
示例的,在主机操作系统(Host Operating System,简称Host OS)启动之前,需要进行操作系统内核的初始化,例如,Linux内核初始化,并在Linux内核初始化完成后,启动Host OS的根文件,就绪Linux系统的虚拟化环境,为启动虚拟机操作系统做准备。其中,Host OS为Linux系统的虚拟化环境中,运行在物理硬件上的操作系统。
可以理解的是,在主机操作系统启动后,在构建容器时,可以根据虚拟机操作系统的数量确定需要构建的容器的数量,即待启动的虚拟机操作系统的数量与构建的容器的数量是相同的。
在构建至少两个容器后,可以执行下述步骤S202:
S202、在各容器内,启动不同的虚拟机操作系统。
示例的,虚拟机操作系统(Guest Operating System,简称Guest OS)为LinuxContainer的虚拟化环境中,运行在Linux Container上的虚拟机操作系统。本申请实施例仅以此为例进行说明,但并不代表本申请实施例仅局限于此。
根据S201所述,可以在构建完成一个容器后,在该容器内启动对应的虚拟机操作系统,其中,虚拟机操作系统的启动具有优先级,可以根据优先级构建容器,并启动虚拟机操作系统,或者,在所有容器构建完成后,在各容器内启动不同虚拟机操作系统,或者,同时构建至少两个容器,并在容器构建完成后,同时在各容器内启动不同的虚拟机操作系统,具体的启动方式和顺序可根据实际情况进行设定,本申请实施例对此不做任何限定。
示例的,虚拟机操作系统在使设备的硬件资源时,不同的虚拟机操作系统可以通过时分复用、空分复用、共同使用中的至少一种方式,使用硬件资源。具体的使用方式可根据实际情况进行设定,例如,对于利用率较高的硬件资源,可以使用时分复用或控分复用的方式,而对于利用率较低的硬件资源,可以通过共同使用的方式,本申请实施例对此不作任何限定。不同的虚拟机操作系统使用硬件资源的方式不同,可以保证每个虚拟机操作系统均能够流畅的运行,从而提升了用户体验。
S203、在各容器内部均构建控制平面和数据平面,数据平面独立于控制平面。
示例的,在各容器内部构建控制平面和数据平面时,可以同时在各容器内构建控制平面和数据平面,也可以依次在各容器内构建控制平面和数据平面,本申请实施例对于具体的构建方式不做任何限定。
S204、针对每个容器,在容器的控制平面内运行对应的虚拟机操作系统的系统进程,并在容器的数据平面内运行应用程序进程。
示例的,针对每个容器,在容器的控制平面内运行对应的虚拟机操作系统的系统进程时,可以获取控制平面的至少一个系统进程;按照至少一个系统进程的排列顺序,对至少一个系统进程进行初始化,并在控制平面内运行初始化的系统进程。
可以理解的是,系统进程一般由原生操作系统提供,且系统进程可以包括系统界面进程、资源管理进程和资源回收进程等,本申请实施例对此不做任何限定。
在本申请实施例中,通过在控制平面内对系统进程进行初始化,并运行初始化的系统进程,能够保证系统进程运行时能够占有充足的硬件资源,即保证刺痛进程运行的流畅度。
示例的,在容器的数据平面内运行应用程序进程时,可以在数据平面内初始化应用程序进程,并运行初始化后的应用程序进程和进程内的各个线程。
由此可见,本申请实施例提供的用于运行进程的容器的构建方法,通过在主机操作系统启动后,构建至少两个容器;在各容器内,启动不同的虚拟机操作系统;在各容器内部均构建控制平面和数据平面,数据平面独立于控制平面;针对每个容器,在容器的控制平面内运行对应的虚拟机操作系统的系统进程,并在容器的数据平面内运行应用程序进程。本申请提供的技术方案通过在不同的容器内运行不同的虚拟机操作系统,使得个虚拟机操作系统之间互不干扰,并在各容器内构建相互独立的控制平面和数据平面,分别用于运行对应的虚拟机操作系统的系统进程和应用程序进程,能够避免应用程序进程抢占系统进程的硬件资源以及硬件资源分配不均的问题,使得应用程序进程和系统进程均能够流畅运行,保证了系统进程的运行速度,从而提升了用户体验。
示例的,为了进一步解决应用程序之间硬件资源分配不均,导致应用程序运行缓慢,或者造成运行阻塞,例如,GPU阻塞的问题。在容器的数据平面内运行应用程序进程时,可以在数据平面创建特性平面,以在特性片面内运行不同的应用程序的进程对应的线程。具体的,可参见图3所示,图3为本申请实施例提供的一种在容器的数据平面内运行应用程序进程的方法流程示意图。根据图3所示,该在容器的数据平面内运行应用程序进程的方法,包括:
S301、在数据平面内初始化应用程序进程,并创建应用程序进程内的业务线程。
示例的,应用程序可以为对应的虚拟机操作系统内安装的应用程序。应用系统进程中包括至少一个业务线程。因此,在数据平面初始化应用程序进程完成后,创建应用程序内的业务进程。本申请实施例对于业务进程的数量不做任何限定。
S302、根据业务线程访问的硬件资源,构建特性平面,特性平面用于对特性平面中每一个业务线程访问的硬件资源进行限定。
示例的,特性平面可以为软件系统中具有共同特征的平面,且占用或消耗硬件资源具有某种特征的线程平面,例如,安卓系统中每个进程的主线程均为UI线程,即所有UI线程组成的平面为特性平面。同一个特性平面中的业务线程可以访问的硬件资源具有共同的特征。例如,同一个特性平面中的业务线程可以访问的硬件资源为不同虚拟机操作系统的共享资源,或者,为多个虚拟机操作系统中某一个虚拟机操作系统的资源。
示例的,特性平面可以包括共享特性平面。在根据业务线程访问的硬件资源,构建特性平面时,可以判断业务线程访问的硬件资源是否为不同的虚拟机操作系统的共享资源;若业务线程访问的硬件资源为不同的虚拟机操作系统的共享资源,则构建共享特性平面。例如,GPU资源为不同的虚拟机操作系统的共享资源,则其对应的平面为共享特性平面,
在本申请实施例中,在业务线程访问的硬件资源为不同的虚拟机操作系统的共享资源时,构建共享特性平面,用于与访问的硬件资源为非共享资源的业务线程进行区分隔离,避免不同的业务线程之间抢占资源而导致硬件资源分配不均,使得部分业务进程无法完成的问题。
示例的,特性平面还包括独占特性平面。在根据业务线程访问的硬件资源,构建特性平面时,若业务线程访问的硬件资源为不同的虚拟机操作系统中任一虚拟机操作系统的资源,则构建独占特性平面。
可以理解的是,在创建应用程序进程的业务线程时,可能存在创建业务线程时仅需要访问一个虚拟机操作系统的资源,则构建独占特性平面,该独占特性平面用于承载仅需要访问一个虚拟机操作系统的资源的业务程序。本申请实施例对于具体的业务线程不做任何限定。
在本申请实施例中,在业务线程访问的硬件资源为不同的虚拟机操作系统中任一虚拟机操作系统的资源时,构建独占特性平面,通过独占特性平面能够将应用系统进程内的业务线程进行隔离,能够解决业务线程之间恶意占用硬件资源的问题,从而提升用户体验。
S303、将业务线程加入特性平面内。
示例的,在将业务线程加入特性平面内时,可以判断特性平面内已加入业务线程的数量是否小于预设阈值;若已加入业务线程的数量小于预设阈值,则将业务线程加入特性平面;若已加入业务线程的数量等于预设阈值,则重复执行判断特性平面内已加入业务线程的数量是否小于预设阈值的步骤,直至已加入业务线程的数量小于预设阈值,将业务线程加入特性平面。
可以理解的是,上述特性平面包括共享特性平面和独占特性平面。且特性平面内的能够容纳的业务数量的预设阈值可以根据在维持必须的系统进程和应用程序进程运行所需要的硬件资源之外的剩余硬件资源的多少,进行动态配置。若剩余硬件资源较多,则可以设置较大的预设阈值,若剩余硬件资源较少,则可以设置较小的预设阈值。本申请实施例对于预设阈值的具体数值不做任何限定。
示例的,若已加入业务线程的数量等于预设阈值,可以判断业务线程和已加入业务线程的优先级,在已加入业务线程中确定出优先级低于业务线程的已加入业务线程,并将低于业务线程的已加入业务线程中优先级较低的至少一个已加入业务线程移出特性平面,以将业务线程加入该特性平面内。或者,在已加入业务线程中任一已加入业务线程运行结束退出该特性平面时,将业务线程加入该特性平面内。或者通过其他方式,本申请实施例对此不做任何限定。
在本申请实施例中,对特性平面内的业务线程数量设置预设阈值,并在已加入业务线程的数量小于预设阈值时,将业务线程加入特性平面,通过预设阈值对加入特性平面内的业务线程的数量进行限定,使得已加入特性平面内的已加入线程能够充分的使用硬件资源,在保证个业务线程流畅运行的情况下提高了硬件资源的利用率。
S304、在特性平面内运行业务线程。
示例的,在特性平面内运行业务线程时,可以根据特性平面内已加入业务线程和业务线程的优先级,对特性平面内已加入业务线程和业务线程进行硬件资源调度处理,并确定业务线程对应的硬件资源;根据业务线程对应的硬件资源,在特性平面内运行业务线程。
可以理解的是,特性平面内已加入业务线程和业务线程的优先级可以根据各业务线程的重要性确定。在对特性平面内已加入业务线程和业务线程进行硬件资源调度处理时,可以根据业务线程的优先级从高到低的顺序,进行硬件资源调度处理,优先保证优先级较高的业务线程的运行。
在本申请实施例中,根据特性平面内已加入业务线程和业务线程的优先级,对特性平面内已加入业务线程和业务线程进行硬件资源调度处理,使得优先级较高的业务线程能够正常且流畅的运行,同时能够提高特性平面的硬件资源的利用率。
由此可见,本申请实施例提供的在容器的数据平面内运行应用程序进行的方法,在数据平面内初始化应用程序进程,并创建应用程序进程内的业务线程;根据业务线程访问的硬件资源,构建特性平面,特性平面用于对特性平面中每一个业务线程访问的硬件资源进行限定;将业务线程加入特性平面内,并在特性平面内运行业务线程。能够有效地避免个应用程序进程之间抢占资源,造成部分应用程序进程无法正常运行的问题,例如造成GPU资源阻塞,而导致界面卡顿的问题,从而提升了用户体验。
为了便于理解本申请实施例提供的用于运行进程的容器的构建方法,下面,将以虚拟机操作系统为仪表操作系统和中控操作系统为例,对本申请实施例提供的技术方案进行详细的描述,具体的可参见图4所示,图4为本申请实施例提供的另一种用于运行进程的容器的构建方法的流程示意图。
根据图4所示,在Linux内核初始化完成后,可以启动Host OS的根文件系统,即启动主机操作系统,就绪Linux Container的虚拟化环境,为启动虚拟机操作系统Guest OS,即中控操作系统和仪表操作系统做准备。在主机操作系统Host OS运行后,构建第一容器,运行中控操作系统,并构建系统控制平面101,在系统控制平面101构建完成后,初始化中控操作系统的系统进程,根据上述实施例所述,可以读取平面配置信息按序完成各个系统进程的初始化,其中,系统进程包括系统界面进程、资源管理进程和资源回收进程等,本申请实施例对于具体的系统进程不做任何限定。在第一容器内构建系统数据平面102,系统数据平面102独立于系统控制平面101,并初始化中控操作系统的应用程序进程。示例的,在构建容器时,
进一步的,还需要构建第二容器,运行仪表操作系统,并构建系统控制平面201,在系统控制平面201构建完成后,初始化仪表操作系统的系统进程,根据上述实施例所述,可以读取平面配置信息按序完成各个系统进程的初始化,其中,系统进程包括系统界面进程、资源管理进程和资源回收进程等,本申请实施例对于具体的系统进程不做任何限定。在第二容器内构建系统数据平面202,系统数据平面202独立于系统控制平面201,并初始化仪表操作系统的应用程序进程。
进一步地,在初始化操作系统的应用程序进程之后,可以创建各应用程序进程内的业务线程。在创建业务线程时,可以判断业务线程是否访问共享资源,该共享资源为中控操作系统和仪表操作系统的共享资源,若业务线程访问共享资源,则构建共享特性平面;若业务线程未访问共享资源,即该业务线程仅访问中控操作系统的资源,而不需要访问仪表操作系统的资源,则构建独占特性平面。在创建共享特性平面和独占特性平面后,可以将相应的业务线程加入共享特性平面或独占特性平面。例如,操作系统在创建前台进程时将主线程作为UI线程,即UI线程为中控操作系统和仪表操作系统的共享资源,则可以将UI线程加入共享特性平面内。或者,部分硬件资源可能会被中控操作系统独占,而仪表操作系统无需使用该部分硬件资源,则可以将使用该部分硬件资源的业务线程加入独占特性平面内。
在将业务线程加入特性平面时,可以判断特性平面内的业务进程是否满员,即判断特性平面内的业务线程的数量是否达到预设阈值,若特性平面内的业务进程未满员,则将业务线程加入特性平面,并根据业务线程的优先级进行资源调度,具体的资源调度方式可参见上述实施例所述,本申请实施例在此不再赘述。若特性平面内的业务进程满员,则业务线程创建失败,回滚系统资源,即特性平面拒绝加入新线程,直到出现空缺位置。
根据图4所示的用于运行进程的容器的构建方法,可以构建出如图5所示的框架示意图。图5为本申请实施例提供的一种容器和平面的框架示意图。在图5中,在第一容器内启动中控操作系统,在第二容器内启动仪表操作系统,在系统控制平面101内运行中控操作系统的系统进程,在系统数据平面102内运行中控操作系统的应用程序进程。在系统控制平面201内运行仪表操作系统的系统进程,在系统数据平面202内运行仪表操作系统的应用程序进程。在共享特性平面内运行访问中控操作系统和仪表操作系统共享资源的业务线程,在独占特性平面内运行访问中控操作系统资源的业务线程。
综上所述,本申请实施例提供的用于运行进程的容器的构建方法,基于LinuxContainer的多系统启动仪表系统和中控系统场景中,通过第一容器和第二容器区分不同容器运行平面,实现仪表操作系统和中控操作系统互不干扰。通过在容器内构建系统控制平面和系统数据平面,将系统进程绑定在系统控制平面,普通应用程序进程绑定在系统数据平面,且系统数据平面的运行优先权低于系统控制平面,使得应用无法恶意侵占硬件资源,避免影响系统进程正常运行。此外,通过分析应用程序对CPU等硬件资源的使用规律,构建特性平面,将应用程序的业务线程绑定在特定平面内,能够有效地解决其他硬件资源,例如GPU资源,阻塞带来的竞争不公平的问题。通过其他资源的硬件能力,配置特性平面的业务线程的装载容量,保证已加入特性平面的业务线程能够充分使用该硬件资源。例如,Android系统的前台应用程序的主线程一般为UI线程,UI线程的繁忙程度反映了前台应用的使用情况。中控操作系统通过增加GPU资源对应的特性平面,使得前台应用的UI线程创建后在GPU特性平面上占位,在该特性平面内容纳的业务线程即将满员时,中控操作系统拒绝承载下一前台应用程序的UI线程,保证已加入特性平面的前台应用充分使用GPU资源,有效提升UI界面的流畅度。
图6为本申请实施例提供的一种用于运行进程的容器的构建装置60的结构示意图,示例的,请参见图6所示,该用于运行进程的容器的构建装置60可以包括:
构建模块601,用于在主机操作系统启动后,构建至少两个容器。
启动模块602,用于在各容器内,启动不同的虚拟机操作系统。
构建模块601,还用于在各容器内部均构建控制平面和数据平面,数据平面独立于控制平面。
运行模块603,用于针对每个容器,在容器的控制平面内运行对应的虚拟机操作系统的系统进程,并在容器的数据平面内运行应用程序进程。
可选的,运行模块603,具体用于在数据平面内初始化应用程序进程;创建应用程序进程内的业务线程。
构建模块601,还用于根据业务线程访问的硬件资源,构建特性平面,特性平面用于对特性平面中每一个业务线程访问的硬件资源进行限定。
运行模块603,具体用于将业务线程加入特性平面内,并在特性平面内运行业务线程。
可选的,特性平面包括共享特性平面;构建模块601,具体用于判断业务线程访问的硬件资源是否为不同的虚拟机操作系统的共享资源;在业务线程访问的硬件资源为不同的虚拟机操作系统的共享资源时,构建共享特性平面。
可选的,特性平面还包括独占特性平面;构建模块601,具体用于在业务线程访问的硬件资源为不同的虚拟机操作系统中任一虚拟机操作系统的资源时,构建独占特性平面。
可选的,运行模块603,具体用于判断特性平面内已加入业务线程的数量是否小于预设阈值;在已加入业务线程的数量小于预设阈值时,将业务线程加入特性平面;在已加入业务线程的数量等于预设阈值时,重复执行判断特性平面内已加入业务线程的数量是否小于预设阈值的步骤,直至已加入业务线程的数量小于预设阈值,将业务线程加入特性平面。
可选的,运行模块603,具体用于根据特性平面内已加入业务线程和业务线程的优先级,对特性平面内已加入业务线程和业务线程进行硬件资源调度处理,并确定业务线程对应的硬件资源;根据业务线程对应的硬件资源,在特性平面内运行业务线程。
可选的,运行模块603,具体用于获取控制平面的至少一个系统进程;按照至少一个系统进程的排列顺序,对至少一个系统进程进行初始化,并在控制平面内运行初始化的系统进程。
可选的,不同的虚拟机操作系统通过时分复用、空分复用、共同使用中的至少一种方式,使用硬件资源。
本申请实施例提供的用于运行进程的容器的构建装置,可以执行上述任一实施例中的用于运行进程的容器的构建方法的技术方案,其实现原理以及有益效果与用于运行进程的容器的构建方法的实现原理及有益效果类似,可参见用于运行进程的容器的构建方法的实现原理及有益效果,此处不再进行赘述。
图7为本申请提供的一种电子设备结构示意图。如图7所示,该电子设备700可以包括:至少一个处理器701和存储器702。
存储器702,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
存储器702可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器701用于执行存储器702存储的计算机执行指令,以实现前述方法实施例所描述的用于运行进程的容器的构建方法。其中,处理器701可能是一个中央处理器(CentralProcessing Unit,简称为CPU),或者是特定集成电路(Application Specific IntegratedCircuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。具体的,在实现前述方法实施例所描述的用于运行进程的容器的构建方法时,该电子设备例如可以是终端、服务器等具有处理功能的电子设备。在实现前述方法实施例所描述的用于运行进程的容器的构建方法时,该电子设备例如可以是车辆上的电子控制单元。
可选的,该电子设备700还可以包括通信接口703。在具体实现上,如果通信接口703、存储器702和处理器701独立实现,则通信接口703、存储器702和处理器701可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口703、存储器702和处理器701集成在一块芯片上实现,则通信接口703、存储器702和处理器701可以通过内部接口完成通信。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
本申请还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得电子设备实施上述的各种实施方式提供的用于运行进程的容器的构建方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。