设备以及设备的启动方法
文献发布时间:2023-06-19 11:45:49
技术领域
本公开属于设备启动优化的技术领域,更具体地讲,涉及一种设备以及设备的启动方法。
背景技术
一些对于时间要求紧迫的应用程序,能够快速运行应用的启动设备是至关重要的。例如,在汽车领域中,汽车一般会配置后视镜头(Rear View Camera,RVC)这一设备,当司机按下后视镜头的启动键,通常期望后视镜头能够快速地启动以进入工作状态,从而保证行车安全。另外,能够快速启动设备也可以显著地改善用户体验。
如上所述,要实现设备的快速启动,需要设备的操作系统快速启动,通常操作系统内核的启动过程包括单核初始化阶段和多核初始化阶段。相关技术中,会利用一些优化方案来加速操作系统的多核初始化阶段启动过程,进而达到缩短设备的启动时间的目的。但是,相关技术中的优化方案未实现针对单核初始化阶段进行优化,限制了设备的启动时间的优化效果。也就是说,如果忽略了针对单核初始化阶段的优化,则会对设备的启动时间产生不利影响。例如,在操作系统内核的单核初始化阶段,只有主处理器处于工作状态才能启动预设的操作系统,而其他处理器处于非工作状态。
发明内容
本公开的示例性实施例可至少解决上述问题,也可不解决上述问题。
在一个方面,提供了一种设备的启动方法,所述设备部署有预设操作系统,其中,所述启动方法包括:在预设操作系统内核的预设初始化阶段,由主处理器执行所述预设操作系统内核的至少一个第一内核任务;以及将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理;其中,所述主处理器和所述辅处理器均为所述设备的处理器,其中,由所述主处理器启动所述预设操作系统,所述预设初始化阶段的预设操作系统内核任务被划分为至少一个第一内核任务和至少一个第二内核任务。
根据本公开提供的设备的启动方法,将预设操作系统内核的预设初始化阶段(预设操作系统内核基于现有技术启动时的单核初始化阶段)的内核任务划分为由主处理器执行的第一内核任务和由辅处理器执行的第二内核任务,主处理器和至少一个辅处理器可以并行执行预设初始化阶段的多个内核任务,缩短了预设初始化阶段的时间,从而加快了操作系统内核的启动过程,相比于现有技术,能够进一步缩短设备启动的时间,使得设备可以更快速地启动。
可选地,所述将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理包括:所述主处理器切换至虚拟机监视器状态下运行,将所述至少一个第二内核任务分发至处于虚拟机监视器状态下的至少一个辅处理器执行处理。
可选地,所述启动方法还包括:所述设备的虚拟机监视器保存有所述至少一个第二内核任务的特征信息,所述特征信息包括所述第二内核任务的优先级信息;所述虚拟机监视器解析所述至少一个第二内核任务的特征信息,获得所述至少一个第二内核任务的优先级信息;将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理包括:所述主处理器根据所述至少一个第二内核任务的优先级信息,将所述至少一个第二内核任务分发给至少一个辅处理器执行处理。
根据本公开提供的设备的启动方法,可以按照第二内核任务的优先级来确定各个第二内核任务的执行顺序,避免低优先级的任务抢占在高优先级的第二内核任务之前被执行,确保高优先级的第二内核任务可以优先被执行。
可选地,所述特征信息还包括所述第二内核任务的入口地址信息;所述辅处理器执行分发的第二内核任务包括:所述辅处理器依据所述第二内核任务的入口地址以及地址共享信息,访问第二内核任务的入口地址,执行所述第二内核任务;其中,所述地址共享信息包括:所述预设操作系统的地址映射表。
根据本公开提供的设备的启动方法,基于所述地址共享信息(即,所述预设操作系统的地址映射表),所述辅处理器可以访问第二内核任务的虚拟地址,进而保证分发的第二内核任务可以被执行。
可选地,所述辅处理器执行分发的第二内核任务后还包括:所述辅处理器将所述第二内核任务状态更新为完成状态。
根据本公开提供的设备的启动方法,更新状态可确保主处理器实时获取各辅处理器的任务进度,便于后续第二内核任务的分发与管理。
可选地,所述主处理器切换至虚拟机监视器状态下运行包括:所述主处理器调用HVC指令下陷至Hypervisor状态。
根据本公开提供的设备的启动方法,在Hypervisor状态,辅助处理器可以基于共享地址访问分发的第二内核任务并执行,基于状态更新、同步便于主处理器对不同第二内核任务管理,从而可实现利用空闲处理器来并行执行操作系统的单核初始化任务,既加速了内核的启动,又充分利用了处理器资源。
在另一个方面,提供一种设备,所述设备部署有预设操作系统,其中,所述包括主处理器和至少一个辅处理器,所述主处理器,被配置为:启动所述预设操作系统,在预设操作系统内核的预设初始化阶段,执行所述预设操作系统内核的至少一个第一内核任务;以及,将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理;其中,预设初始化阶段的预设操作系统内核任务被划分为至少一个第一内核任务和至少一个第二内核任务。
可选地,所述主处理器被配置为:切换至虚拟机监视器状态下运行,将所述至少一个第二内核任务分发至处于虚拟机监视器状态下的至少一个辅处理器执行处理。
可选地,所述设备还可包括虚拟机监视器,其中,所述虚拟机监视器保存有所述至少一个第二内核任务的特征信息,所述特征信息包括所述第二内核任务的优先级信息;所述虚拟机监视器解析所述至少一个第二内核任务的特征信息,获得所述至少一个第二内核任务的优先级信息;所述主处理器还被配置为:根据所述至少一个第二内核任务的优先级信息,将所述至少一个第二内核任务分发给至少一个辅处理器执行处理。
可选地,所述特征信息还包括所述第二内核任务的入口地址信息;所述辅处理器被配置为:依据所述第二内核任务的入口地址以及地址共享信息,访问第二内核任务的入口地址,执行所述第二内核任务;其中,所述地址共享信息包括:所述预设操作系统的地址映射表。
可选地,所述辅处理器还被配置为:将所述第二内核任务状态更新为完成状态。
可选地,所述主处理器被配置为:调用HVC指令下陷至Hypervisor状态。
在另一个方面,提供一种存储指令的计算机可读存储介质,其中,当指令被主处理器和至少一个辅处理器运行时,促使主处理器和至少一个辅处理器分别执行上述的设备的启动方法的对应步骤。
根据本公开提供的设备以及设备的启动方法,将预设操作系统内核的预设初始化阶段(预设操作系统内核基于现有技术启动时的单核初始化阶段)的内核任务划分为由主处理器执行的第一内核任务和由辅处理器执行的第二内核任务,主处理器和至少一个辅处理器可以并行执行预设初始化阶段的多个内核任务,缩短了预设初始化阶段的时间,从而加快了操作系统内核的启动过程,相比于现有技术,能够进一步缩短设备启动的时间,使得设备可以更快速地启动。
附图说明
通过结合附图,从实施例的下面描述中,本公开这些和/或其它方面及优点将会变得清楚,并且更易于理解,其中:
图1是本公开示例性实施例提供的一种虚拟机监视器辅助并行启动架构的示意图。
图2是本公开示例性实施例提供的主处理器和辅处理器的一种划分示意图。
图3是本公开示例性实施例提供的主处理器和辅处理器的另一种划分示意图。
图4是本公开示例性实施例提供的主处理器和辅处理器的又一种划分示意图。
图5是本公开示例性实施例提供的一种设备的启动方法的流程图。
图6是本公开示例性实施例的设备的启动方法在特定场景下的流程示意图。
具体实施方式
提供参照附图的以下描述以帮助对由权利要求及其等同物限定的本公开的实施例的全面理解。包括各种特定细节以帮助理解,但这些细节仅被视为是示例性的。因此,本领域的普通技术人员将认识到在不脱离本公开的范围和精神的情况下,可对描述于此的实施例进行各种改变和修改。此外,为了清楚和简洁,可省略对公知的功能和结构的描述。
现有的设备(如嵌入式设备)的启动流程通常包括三个过程:Boot Loader代码的运行过程、虚拟机监视器的运行过程、以及操作系统内核的启动过程。
其中,Boot Loader代码是在虚拟机监视器和操作系统内核运行之前需要运行的一段程序。
虚拟机监视器即Hypervisor,是一种运行在基础物理硬件和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。
操作系统内核的启动过程可以包括单核初始化阶段和多核初始化阶段。其中,在所述单核初始化阶段,执行操作系统运行所需的基本内容的初始化。例如,内存初始化、时钟初始化以及中断初始化可在单核初始化阶段被执行。在所述多核初始化阶段,执行操作系统运行所需的设备驱动的初始化。例如,图形处理器的初始化、显示处理器的初始化以及温度监测处理器初始化可在多核初始化阶段被执行。现有设备可以配置多个处理器,然而,在操作系统内核的单核初始化阶段,只有一个处理器处于工作状态,其他的处理器处于非工作状态。因此,单核初始化阶段的所有内核任务均由一个处理器串行执行,这就导致即使单核初始化阶段的时间在操作系统内核的整体启动时间中所占比例较小,单核初始化阶段也需要耗费相对较长的时间。然而,本申请的发明人发现,随着设备的硬件资源的越来越丰富,单核初始化阶段的绝对时间也随之增加,因此如果能缩短单核初始化阶段的时间,也可以显著地缩短设备的启动时间。
有鉴于此,本公开示例性实施例提供的一种设备的启动方法,针对现有的操作系统内核的启动过程进行优化,更具体地,上述设备的启动方法可以优化操作系统内核的单核初始化阶段,通过缩短设备的操作系统内核的单核初始化阶段的时间来缩短操作系统内核的启动时间,进而达到缩短设备的启动时间的目的。
本公开示例性实施例基于设备还提供了一种虚拟机监视器辅助并行启动(Hypervisor-assisted Parallel Boot,HPB)架构,本公开示例性实施例提供的设备的启动方法可以基于该架构来执行。
图1示出了设备100的虚拟机监视器辅助并行启动架构的示意图。参照图1,设备100的架构包括设备的硬件、虚拟机监视器113、设备100的第一操作系统111以及设备100的第二操作系统112,其中,硬件可以包括设备100的一个或更多个处理器、存储器和子设备(如显示器、扬声器和摄像器等)。
在此需要说明的是,基于图1的示例性实施例提供的设备100配置有至少两个处理器,例如,设备100可以包括4个处理器,分别为第一处理器101、第二处理器102、第三处理器103和第四处理器104(未示出)。4个处理器在设备100中可以在物理上彼此分离,并且在功能上可以彼此独立。
在基于图1的示例性实施例中,虚拟机监视器113可以包括地址共享模块和状态同步模块。在基于图1的示例性实施例中,一些处理器可以通过地址共享模块在Hypervisor113中无缝地访问设备100的操作系统中的一个操作系统的内核的地址空间,从而高效地执行操作系统内核的内核任务。本文描述的内核任务可以包括被执行以实现并完成设备100的操作系统的内核的初始化阶段的处理和/或功能。一些处理器在执行完成操作系统内核的一个内核任务后,可以更新该内核任务的状态。例如,一些处理器可以将该内核任务的状态更改为已完成,状态同步模块可以将该内核任务的更新后状态同步到操作系统的内核。
虚拟机监视器113还存储有操作系统内核的一部分内核任务,例如,可以在操作系统(OS,operating system)编译阶段,将操作系统内核的一部分内核任务的入口地址信息和优先级信息等注入虚拟机监视器113。
基于图1的示例性实施例提供的设备100中可以部署有一个操作系统,也可以部署至少两个操作系统。例如,在图1的设备100中部署第一操作系统111和第二操作系统112。设备100中部署的操作系统的类型可以包括Linux系统、Windows系统、IOS系统和Android系统等,当设备100中部署有多个操作系统时,多个操作系统的类型、版本、功能和安全级别之中的至少一个项可以是不同的,例如,第一操作系统111可以为Linux系统,第二操作系统112可以为Windows系统。
为了便于表述,本公开将具有需要被本公开提供的设备100的启动方法进行优化的内核启动处理的操作系统,称为预设操作系统。设备100中可以包括一个或多个预设操作系统,例如,参照图1,设备100的第一操作系统111为预设操作系统,或者设备100的第一操作系统111和第二操作系统112均为预设操作系统。进一步地,本公开还基于预设操作系统,对设备100中的至少一部分处理器基于其功能在名称上进行区分,将该至少一部分处理器命名为主处理器和辅处理器,其中,由主处理器启动预设操作系统。然而,在现有技术中,在操作系统内核的单核初始化阶段,只有上述的主处理器处于工作状态启动预设操作系统,其他的处理器处于非工作状态。
在基于图1的示例性实施例中,可以将设备100中除了主处理器之外的一部分处理器作为辅处理器,可以将设备100中除了主处理器之外的所有的处理器作为辅处理器。
图2至图4分别示出了本公开示例性实施例提供的主处理器和辅处理器的三种划分示意图。
在图2中,设备200包括第一处理器201、第二处理器202、第三处理器203和第四处理器204。在图3中,设备300包括第一处理器301、第二处理器302、第三处理器303和第四处理器304。参照图4,设备400包括第一处理器401、第二处理器402、第三处理器403和第四处理器404。
参照图2和图3,假设设备中的第一操作系统111为预设操作系统,由第一处理器201运行第一操作系统111,则第一处理器201为通常被用作启动处理器的主处理器。图2中的第二处理器202至第四处理器204或者图3中的第二处理器302至第四处理器304中的至少一个为辅处理器,例如,参照图2,将第二处理器202作为辅处理器,或者参照图3,将第二处理器302、第三处理器303和第四处理器304均作为辅处理器。
参照图4,设备400中的第一操作系统111和第二操作系统112均为预设操作系统,由第一处理器401运行第一操作系统111,由第二处理器402运行第二操作系统112,则第一处理器401和第二处理器402分别为预设的第一操作系统111和预设的第二操作系统112的主处理器。也就是说,第一处理器401和第二处理器402可以用作启动处理器。第三处理器403和第四处理器404中的至少一个为辅处理器,例如,可将第三处理器403作为辅处理器,或者参照图4,可将第三处理器403和第四处理器404均作为辅处理器。
图5是本公开示例性实施例提供的一种设备的启动方法的流程图。
参照图5,所述设备的启动方法包括:步骤S110,在预设操作系统内核的预设初始化阶段,由主处理器(即启动处理器)执行所述预设操作系统内核的至少一个第一内核任务;步骤S120,以及将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理。
可以理解,所述主处理器和所述辅处理器可均为所述设备的处理器,其中,可由所述主处理器启动所述预设操作系统。在所述预设初始化阶段,预设操作系统内核任务可以被预先划分为至少一个第一内核任务和至少一个第二内核任务。
所述“预先划分”可通过多种可用的方式实现。例如,在内核任务开发阶段,内核开发者可以选择将开发的在运行过程中不依赖于内核的其他任务的任务代码作为所述第二内核任务,并可标记为HPB任务。而对于运行过程中需要依赖于内核的其他任务的任务代码,可至少将其中一个作为所述第一内核任务,剩余部分可作为所述第二内核任务。其中,所述第一内核任务不标记为HPB任务,第二内核任务可标记为HPB任务。
在一些实施例中,即使任务代码依赖于内核的其他任务,它们仍然可以被标记为HPB任务。这些类型的任务代码可能需要等待到所依赖的任务完成后才能触发分发指令,以便将这些任务代码分发给辅助处理器进行处理。根据情况,预设操作系统内核的预设初始化阶段可能有多个内核任务需要被执行。如前文所述,本公开示例性实施例提供的设备的启动方法用于优化现有的操作系统内核的单核初始化阶段。根据本公开的预设操作系统内核的预设初始化阶段的内核任务,与该预设操作系统内核通常启动时的单核初始化阶段的内核任务是相同的,然而,内核任务可以根据本公开被不同地处理。
作为示例,步骤S110中的预设操作系统内核为4.0版本的Linux内核,在本公开示例性实施例中,该4.0版本的Linux内核的预设初始化阶段的内核任务,与4.0版本的Linux内核通常启动时单核初始化阶段的内核任务是相同的。例如,4.0版本的Linux内核通常启动时,单核初始化阶段的内核任务包括任务1、任务2、任务3和任务4,则在本公开示例性实施例中,该4.0版本的Linux内核的预设初始化阶段的内核任务也包括任务1、任务2、任务3和任务4。作为示例,Linux内核的预设初始化阶段的内核任务可以包括初始化内存和建立页表等。作为所述“预先划分”的示例,可将任务1和任务2作为第一内核任务,将任务3和任务4作为第二内核任务。其中,由主处理器可执行第一内核任务,并借助Hypervisor层将第二内核任务分发给辅处理器,由辅处理器执行第二内核任务。第一内核任务和第二内核任务的数量以及类型可以根据实际的需要预先设定。
在步骤S120中,若辅处理器当前没有执行第二内核任务,则该辅处理器在接收到新的第二内核任务时,该辅处理器可以立即执行该第二内核任务。其余未接收到新的第二内核任务的处理器,可以保持在非工作状态,或者继续执行之前接收到的第二内核任务。
根据本公开提供的设备的启动方法,将预设操作系统内核的预设初始化阶段的内核任务划分为由主处理器执行的第一内核任务和由辅处理器执行的第二内核任务,主处理器和至少一个辅处理器可以并行执行预设初始化阶段的多个内核任务,缩短了预设初始化阶段的时间,从而加快了操作系统内核的启动过程,相比于一般的启动操作,能够缩短设备启动的时间,使得设备可以更快速地启动。
可选地,在步骤S120中,将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理可包括:所述主处理器(即启动处理器)切换至虚拟机监视器状态下运行,将所述至少一个第二内核任务分发至处于虚拟机监视器状态下的至少一个辅处理器执行处理。
在图1示出的虚拟机监视器辅助并行启动架构中,所述主处理器和/或所述辅处理器可采用ARM-v8架构。所述ARM架构的处理器包括四个异常级别(EL,Exception Level),分别为EL0至EL3。其中,应用程序运行在EL0,操作系统内核运行在EL1,Hypervisor 113运行在EL2,安全监视器(Secure Monitor)运行在EL3。
这里需要说明的是,同一时刻,某个处理器(例如,主处理器和/或辅处理器)只能处于一个EL。在预设操作系统启动之前,所有的处理器都处于EL2;在预设操作系统启动的预设初始化阶段,所述主处理器可响应于触发分发指令,从EL1(操作系统状态)进入EL2(Hypervisor状态),即实现上述“主处理器切换至虚拟机监视器状态下运行”的步骤。
在本公开示例性实施例中,主处理器可以调用HVC指令下陷至Hypervisor状态EL2。HVC指令用作Hypervisor调用异常的基础,在ARM-v8体系结构中,处理器模式可通过HVC指令更改为Hypervisor状态EL2。参照图6,主处理器处于OS状态EL1时,为运行在物理处理器上的虚拟处理器0,该虚拟处理器0响应于触发针对第二内核任务的分发指令,从OS状态(EL1)下陷至Hypervisor状态(EL2),成为第一处理器601。
如能理解的,主处理器可以遵循预设的规则来分发第二内核任务,基于该预设的规则确定当前能够分发哪些第二内核任务,确定将由哪些辅处理器接收第二内核任务。下面将介绍主处理器如何确定当前能够分发的第二内核任务、以及如何确定将要接收第二内核任务的辅助处理器实施过程。
如前文所述的,预设操作系统内核的预设初始化阶段的第一内核任务和第二内核任务是预先划分好的。第二内核任务是在预设操作系统内核中分离出来的(这部分内核任务可以指不依赖其他内核任务的执行结果,即可执行的内核任务)。
在本公开示例性实施例中,可在预设操作系统的编译阶段,将第二内核任务的特征信息注入到设备的虚拟机监视器中。因此,所述虚拟机监视器可保存有所述至少一个第二内核任务的特征信息,其中,所述特征信息可包括所述第二内核任务的优先级信息。进一步地,可利用所述虚拟机监视器解析所述至少一个第二内核任务的特征信息,获得所述至少一个第二内核任务的优先级信息。
在该实施例中,所述特征信息可通过任何适用的方式获取。例如,在虚拟机监视器的启动阶段,由虚拟机监视器中指定的处理器解析至少一个第二内核任务,得到每个第二内核任务的特征信息。可以理解,虚拟机监视器的启动阶段可以发生在预设操作系统内核的预设初始化阶段之前。也就是说,所述指定的处理器可以在预设操作系统内核的预设初始化阶段之前解析第二内核任务。所述指定的处理器可以在预设的任务列表中保存每个第二内核任务的特征信息,设备中的各处理器(如主处理器和辅处理器)可以在任务列表获取每个第二内核任务的特征信息。可选地,可利用所述指定的处理器进一步解析所述特征信息,以得到所述第二内核任务的优先级信息。
其中,所述指定的处理器,可以是在设备所有的处理器中被预先选定的处理器。例如可以是上述的主处理器或辅处理器,也可以是主处理器和辅处理器之外的其他处理器。
在步骤S120中,将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理可包括:所述主处理器根据所述至少一个第二内核任务的优先级信息,将所述至少一个第二内核任务分发给至少一个辅处理器执行处理。
可以理解,主处理器可基于每个第二内核任务的优先级信息,确定至少一个在当前所有未被执行的内核任务中当前优先级最高的第二内核任务,其中,确定出的当前优先级最高的第二内核任务为当前能够分发的第二内核任务。
在此需要说明的是,所述当前所有未被执行的内核任务包括当前未被执行的第一内核任务和当前未被执行的第二内核任务。可以理解,多个内核任务的优先级可以是相同的,因此主处理器一次可以确定出至少一个当前优先级最高的第二内核任务,将确定出的至少一个当前优先级最高的第二内核任务分发给至少一个辅处理器。
根据本公开提供的设备的启动方法,可以按照第二内核任务的优先级来确定各个第二内核任务的执行顺序,避免低优先级的任务抢占在高优先级的第二内核任务之前被执行,确保高优先级的第二内核任务可以优先被执行。
在本公开示例性实施例中,可以按照第二内核任务的优先级来确定各个第二内核任务的执行顺序,具体地,主处理器可按照优先级从高到低的顺序依次执行将各个第二内核任务分发给至少一个辅处理器。
在本公开示例性实施例中,一些第二内核任务会依赖其他内核任务的执行结果,而另一些第二内核任务(例如某些IO设备的初始化任务)的执行过程不依赖其他内核任务的执行结果。
对于具有依赖其他内核任务的执行结果的处理的第二内核任务,只有在该第二内核任务所依赖的其他内核任务的被执行完成时,才能开始执行该第二内核任务,其中,该其他内核任务可以是第一内核任务,也可以是第二内核任务。
可选地,将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理的步骤可包括:主处理器(即启动处理器)接收至少一个分发触发信号,将至少一个分发触发信号所针对的第二内核任务,分发给至少一个辅处理器。
分发触发信号所针对的第二内核任务,是上述的具有依赖其他内核任务的执行结果的处理的第二内核任务,当该第二内核任务所依赖的其他内核任务的处理完成时,系统内核可以向主处理器发送针对该第二内核任务的分发触发信号,主处理器(即启动处理器)接收到分发触发信号后,启动处理器可以指示第二内核任务为当前能够分发的第二内核任务,从而将该第二内核任务分发给辅处理器,使得该第二内核任务能够被辅处理器执行。
可选地,在步骤S120中,所述辅处理器执行分发的第二内核任务后可还包括:所述辅处理器将所述第二内核任务状态更新为完成状态。
在此需要说明的是,辅处理器执行完成一个第二内核任务之后,辅助处理器可通过虚拟机监视器,在虚拟机监视器中将第二内核任务的状态更改为已完成。具体地,虚拟机监视器可以包括状态同步模块。辅处理器执行完成一个第二内核任务之后,辅助处理器可在虚拟机监视器中将第二内核任务的状态更改为已完成,并通过状态同步模块将该状态同步给操作系统。
如前文所述,一些第二内核任务(例如任务3)的处理可以依赖其他内核任务(例如任务4)的执行结果,以该其他内核任务是第二内核任务为例,辅处理器执行完成任务4之后,辅助处理器可以通过状态同步模块,在虚拟机监视器中将任务4的状态更改为已完成,此时操作系统内核可以确定任务4已执行完成,从而向主处理器发送针对任务3的分发触发信号,使得主处理器将任务3分发给辅处理器。
可选地,将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理的步骤可包括:主处理器(即启动处理器)确定出具有指定标识(例如,前述部分描述的HPB标记)的第二内核任务,并且将具有指定标识的第二内核任务分发给至少一个辅处理器。
第二内核任务所具有的指定标识,用于表征该第二内核任务的执行过程不需要依赖其他内核任务的执行结果。
对于具有不依赖其他内核任务的执行结果的处理的第二内核任务,可以预先对该第二内核任务标记指定标识,当主处理器确定一个第二内核任务具有指定标识时,启动处理器可以指示该第二内核任务为当前能够分发的第二内核任务,从而将该具有指定标识的第二内核任务分发给至少一个辅处理器。
可选地,可以将上述的确定当前能够分发的第二内核任务的方式进行组合,得到更多种当前能够分发的第二内核任务的方式。
作为示例,主处理器可确定出在当前所有未被执行的内核任务中当前优先级最高的第二内核任务、并且在接收到针对该当前优先级最高的第二内核任务的分发触发信号时,可确定分发触发信号所针对的当前优先级最高的第二内核任务为当前能够分发的第二内核任务,可将该当前能够分发的第二内核任务分发给辅处理器。
作为示例,主处理器可确定出在当前所有未被执行的内核任务中当前优先级最高的第二内核任务、并且在确定出该当前优先级最高的第二内核任务具有指定标识时,确定当前优先级最高且具有指定标识的第二内核任务为当前能够分发的第二内核任务,将该当前能够分发的第二内核任务分发给辅处理器。
可选地,将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理的步骤可包括:将预设操作系统内核的至少一个第二内核任务,分发给至少一个处于空闲状态的辅处理器。
在此需要说明的是,辅处理器在未执行第二内核任务时处于空闲状态,而且,当辅处理器执行完成一个第二内核任务后,辅助处理器可以重新进入空闲状态。主处理器(即启动处理器)可以将第二内核任务分发给处于空闲状态的辅处理器,该第二内核任务能够立即被该处于空闲状态的辅处理器执行,充分地利用了辅处理器的资源,有助于提高第二内核任务的执行速度。
可选地,主处理器可确定出至少一个当前能够分发的第二内核任务,将至少一个当前能够分发的第二内核任务分发给至少一个处于空闲状态的辅处理器。
当主处理器确定出的当前能够分发的第二内核任务的数量小于或等于处于空闲状态的辅处理器时,可以将各个第二内核任务分别发送给不同的处于空闲状态的辅处理器,使得每个第二内核任务可以立即被对应的辅处理器执行,从而提高第二内核任务的执行速度。
当主处理器确定出的当前能够分发的第二内核任务的数量大于处于空闲状态的辅处理器时,可以向每个处于空闲状态的辅处理器分发一个当前能够分发的第二内核任务,使得每个处于空闲状态的辅处理器都能够分发到一个第二内核任务,从而充分地提高辅处理器的资源。当前能够分发的第二内核任务中未被分发的第二内核任务,可以在至少一个辅处理器进入空闲状态后,立即分发给进入空闲状态的辅处理器。
在本公开示例性实施例中,所述特征信息还可包括所述第二内核任务的入口地址信息;在步骤S120中,所述辅处理器可执行分发的第二内核任务可包括:所述辅处理器依据所述第二内核任务的入口地址以及地址共享信息,访问第二内核任务的入口地址,执行所述第二内核任务。所述地址共享信息可包括:所述预设操作系统的地址映射表。
如能理解的,位于虚拟机监视器中的辅处理器可基于地址共享模块,共享操作系统的地址映射表,从而可通过入口地址访问到分发的第二内核任务的任务数据,执行该第二内核任务,较大程度地减少了因访问入口地址而造成的时间消耗。具体地,虚拟机监视器可以包括地址共享模块。辅处理器接收到由主处理器(即启动处理器)分发的第二内核任务后进入地址共享状态,辅处理器处于地址共享状态时,可以基于被分发到的第二内核任务的入口地址信息,通过地址共享模块在虚拟机监视器中访问被分发到的第二内核任务的入口地址,从而执行分发到的第二内核任务。
图6是本公开示例性实施例的设备的启动方法在特定场景下的流程示意图。
参照图6,设备600包括虚拟处理器0、第一处理器601,第二处理器602、第三处理器603和第四处理器604。图6中的虚拟处理器0为运行在操作系统状态下的主处理器。图6中的第一处理器601为运行在虚拟机监视器状态下的主处理器;第三处理器603包括为用于解析第二内核任务的处理器(即前文所述的指定的处理器)以及用于执行第二内核任务的辅处理器,第二处理器602和第四处理器604均为辅处理器。
预设操作系统内核的预设初始化阶段包括第二内核任务a、第二内核任务d、第一内核任务b和第一内核任务c,其中,第二内核任务a的执行过程依赖于第二内核任务d的执行结果。
参照图6,第三处理器603位于图中第一处理器601左侧,作为指定的处理器)。第三处理器603在虚拟机监视器613中解析至少一个第二内核任务,得到每个第二内核任务的特征信息。
接下来,虚拟处理器0触发针对第二内核任务a的分发信号,从操作系统状态(EL1)下陷至虚拟机监视器状态(EL2),切换为第一处理器601。
若第一处理器601确定第二内核任务a是在当前所有未被执行的第二内核任务中当前优先级最高的第二内核任务,并且第二处理器602处于空闲状态,则第一处理器601将第二内核任务a分发给第二处理器602。
接下来,第一处理器601从虚拟机监视器状态(EL2)返回操作系统状态(EL1),切换为虚拟处理器0,执行第一内核任务b。
接下来,第二处理器602接收到由第一处理器601分发的第二内核任务a之后,进入地址共享状态。第二处理器602处于地址共享状态时,可以通过地址共享模块在虚拟机监视器613中访问第二内核任务a的入口地址,从而执行分发到的第二内核任务a。
接下来,第二处理器602执行完成第二内核任务a之后,退出地址共享状态。第二处理器602通过状态同步模块,在虚拟机监视器613中将第二内核任务a的状态更改为已完成。
在上述步骤执行过程中,预设操作系统内核会检查第二内核任务的状态,响应于第二内核任务a的状态更改为已完成,第一处理器601将第二内核任务a的状态反馈给所述预设操作系统内核。
在设备600的启动方法的上述执行过程中,在虚拟处理器0执行第一内核任务b时,第二处理器602可以并行执行第二内核任务a,可见,该执行过程可以较充分地利用空闲的处理器的资源,缩短了预设初始化阶段的时间,从而加快了操作系统内核的启动过程,相比于一般的启动操作,能够进一步缩短设备600的启动时间,使得设备600可以更快速地启动。
本公开示例性实施例提供的设备部署有预设操作系统,所述设备可包括主处理器和至少一个辅处理器,所述主处理器可被配置为启动所述预设操作系统,在预设操作系统内核的预设初始化阶段,执行所述预设操作系统内核的至少一个第一内核任务;以及,将所述预设操作系统内核的至少一个第二内核任务分发给至少一个辅处理器执行处理;其中,预设初始化阶段的预设操作系统内核任务被划分为至少一个第一内核任务和至少一个第二内核任务。
可选地,所述主处理器可被配置为切换至虚拟机监视器状态下运行,将所述至少一个第二内核任务分发至处于虚拟机监视器状态下的至少一个辅处理器执行处理。
可选地,所述虚拟机监视器可保存有所述至少一个第二内核任务的特征信息,所述特征信息可包括所述第二内核任务的优先级信息;所述虚拟机监视器可解析所述至少一个第二内核任务的特征信息,获得所述至少一个第二内核任务的优先级信息;所述主处理器还被可配置为根据所述至少一个第二内核任务的优先级信息,将所述至少一个第二内核任务分发给至少一个辅处理器执行处理。
可选地,所述特征信息还可包括所述第二内核任务的入口地址信息;所述辅处理器可被配置为依据所述第二内核任务的入口地址以及地址共享信息,访问第二内核任务的入口地址,执行所述第二内核任务;其中,所述地址共享信息包括:所述预设操作系统的地址映射表。
可选地,所述辅处理器还可被配置为将所述第二内核任务状态更新为完成状态。
可选地,所述主处理器可被配置为调用HVC指令下陷至Hypervisor状态。
根据本公开提供的设备,主处理器可将第二内核任务分发给处于空闲状态的辅处理器,该第二内核任务能够立即被该处于空闲状态的辅处理器执行,充分地利用了辅处理器的资源,有助于提高第二内核任务的执行速度。
可以理解,主处理器和辅处理器还可用于执行除了上述步骤以外的附加步骤或者在执行上述步骤时执行更为具体的处理,这些附加步骤和进一步处理的内容已经在参照图1及其他附图进行相关方法的描述过程中提及,因此这里为了避免重复将不再进行赘述。
可以理解,设备还包括存储器,主处理器和至少一个辅处理器可运行存储在存储器中的指令或代码,促使主处理器和至少一个辅处理器分别执行上述的设备的启动方法的对应步骤。
存储器还可以存储数据,指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器可与处理器集成为一体,例如,可将RAM或闪存布置(集成有)在集成电路微处理器等之内。此外,存储器可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器和处理器可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器能够读取存储在存储器中的文件。
此外,设备还可包括视频显示器(例如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。设备还可以包括扬声器和摄像器等。设备的所有组件可经由总线和/或网络而彼此连接。
根据本公开提供的设备以及设备的启动方法,将预设操作系统内核的预设初始化阶段(预设操作系统内核基于现有技术启动时的单核初始化阶段)的内核任务划分为由主处理器执行的第一内核任务和由辅处理器执行的第二内核任务,主处理器和至少一个辅处理器可以并行执行预设初始化阶段的多个内核任务,缩短了预设初始化阶段的时间,从而加快了操作系统内核的启动过程。因此,与一般启动操作相比,能够进一步缩短设备启动的时间,使得设备可以更快速地启动。
此外,参照图1及其他附图所描述的设备的启动方法可通过记录在计算机可读存储介质上的程序(或指令)来实现。例如,根据本公开的示例性实施例,可提供存储指令的计算机可读存储介质,其中,当所述指令被主处理器和至少一个辅处理器,促使主处理器和至少一个辅处理器分别执行上述的设备的启动方法的对应步骤。
上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,应注意,计算机程序还可用于执行除了上述步骤以外的附加步骤或者在执行上述步骤时执行更为具体的处理,这些附加步骤和进一步处理的内容已经在参照图1及其他附图进行相关方法的描述过程中提及,因此这里为了避免重复将不再进行赘述。
以上描述了本公开的各示例性实施例,应理解,上述描述仅是示例性的,并非穷尽性的,本公开不限于所披露的各示例性实施例。在不偏离本公开的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。因此,本公开的保护范围应该以权利要求的范围为准。
- 一种展示设备启动方法、启动设备及存储设备
- 设备启动方法及设备启动装置