CN106293792B - 软件启动方法和装置 - Google Patents
软件启动方法和装置 Download PDFInfo
- Publication number
- CN106293792B CN106293792B CN201510295900.8A CN201510295900A CN106293792B CN 106293792 B CN106293792 B CN 106293792B CN 201510295900 A CN201510295900 A CN 201510295900A CN 106293792 B CN106293792 B CN 106293792B
- Authority
- CN
- China
- Prior art keywords
- starting
- target software
- reading
- files
- file
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种软件启动方法和装置,所述方法包括:获取配置信息;根据所述配置信息确定目标软件的启动加速等级;获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量;根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中;根据预读到内存中的数据启动所述目标软件。本发明提供的软件启动方法和装置,通过预读目标软件的启动文件,可以显著加快目标软件的启动速度,减少启动时间。而且可以控制每次预读的文件读操作数量,适用于各种软件不同的启动加速需求,兼容性强。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种软件启动方法和装置。
背景技术
计算机技术的发展为人们的生活、工作带来了巨大的影响,人们可以在计算机或者移动终端上安装各种软件来实现各种功能,比如单机游戏、在线游戏、即时通信或者设计作品等。而软件在使用时需要启动,进而进入到可操作阶段,从开始启动软件到进入到软件的可操作阶段的过程需要花费时间,称为启动时间。不同的软件的启动时间不同,一些大型游戏或者工程设计类软件的启动时间可能有1分钟甚至更多,启动时间过长会导致软件难以及时做出响应,效率低下。
发明内容
基于此,有必要针对目前软件启动时间过长导致效率低下的问题,提供一种软件启动方法和装置。
一种软件启动方法,所述方法包括:
获取配置信息;
根据所述配置信息确定目标软件的启动加速等级;
获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量;
根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中;
根据预读到内存中的数据启动所述目标软件。
一种软件启动装置,所述装置包括:
配置信息获取模块,用于获取配置信息;
启动加速等级确定模块,用于根据所述配置信息确定目标软件的启动加速等级;
获取模块,用于获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量;
预读模块,用于根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中;
启动模块,用于根据预读到内存中的数据启动所述目标软件。
上述软件启动方法和装置,事先划分不同的启动加速等级,通过配置信息可以确定目标软件的启动加速等级。根据启动加速等级所对应的预读次数和/或单次预读文件数量,可以确定单次或多次来打开目标软件的启动文件,从而将打开的启动文件中的数据预读到内存中。这样通过预读目标软件的启动文件,可以显著加快目标软件的启动速度,减少启动时间。而且,通过调整各启动加速等级对应的预读次数和/或单次预读文件数量,可以灵活调整打开启动文件的次数,从而可以控制每次预读的文件读操作数量,适用于各种软件不同的启动加速需求,兼容性强。
附图说明
图1为一个实施例中用于实现软件启动方法的电子设备的结构示意图;
图2为一个实施例中软件启动方法的流程示意图;
图3为一个实施例中生成配置文件的步骤的流程示意图;
图4为另一个实施例中软件启动方法的流程示意图;
图5为再一个实施例中软件启动方法的流程示意图;
图6为一个实施例中软件启动装置的结构框图;
图7为另一个实施例中软件启动装置的结构框图;
图8为再一个实施例中软件启动装置的结构框图;
图9为一个实施例中软件启动装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
Windows操作系统提供了用于预读文件的内核函数MmPrefetchPages,称其为系统预读函数,通过该系统预读函数可以将文件中的数据预读到内存中。本发明实施例基于该系统预读函数产生不同启动加速等级的启动加速方式,从而在不同的应用场景下,采用与应用场景适用的启动加速方式来加速启动目标软件,减少目标软件的启动时间。
如图1所示,在一个实施例中,提供了一种电子设备100,包括通过系统总线连接的处理器、非易失性存储介质和内存储器。其中处理器具有计算功能和控制整个电子设备100工作的功能,该处理器被配置为执行一种软件启动方法。非易失性存储介质包括磁存储介质、光存储介质和闪存式存储介质。非易失性存储介质存储有操作系统和一种软件启动装置,该软件启动装置用于实现一种软件启动方法。内存储器用来为操作系统和软件启动装置提供高速缓存。电子设备100可以是台式计算机,还可以是移动终端。移动终端包括手机和平板电脑。
如图2所示,在一个实施例中,提供了一种软件启动方法,本实施例以该方法应用于上述图1中的电子设备100来举例说明。该方法具体包括如下步骤:
步骤202,获取配置信息。
具体地,配置信息是对软件启动采用何种启动加速方式所进行的配置的信息。在一个实施例中,步骤202包括:从配置文件中读取配置信息。用户可以自定义配置文件,从而为不同的软件配置不同的启动加速方式。在一个实施例中,步骤202包括:从服务器获取配置信息。
在一个实施例中,步骤202包括:通过通信进程获取配置信息并通知加速驱动组件。该通信进程用于与操作系统、加速驱动组件和目标软件的启动进程通信。其中加速驱动组件用于实现对目标软件的启动加速。
步骤204,根据配置信息确定目标软件的启动加速等级。
具体地,可以根据需要划分启动加速等级,从而为不同的软件配置不同的启动加速等级。其中目标软件是指需要进行启动加速的软件。目标软件可以是任意软件,包括:游戏软件、通信软件、工程设计软件、图像处理软件和编程软件等。
在一个实施例中,启动加速等级包括:轻度加速等级、中度加速等级和重度加速等级。在一个实施例中,配置信息包括软件标识和启动加速等级的对应关系,从而可以根据该对应关系查找到目标软件的启动加速等级。在一个实施例中,配置信息包括软件标识和加速窗口标识的对应关系,从而可以根据该对应关系,在目标软件的指定窗口出现时开始执行步骤204或者步骤206。
在一个实施例中,步骤204包括:通过加速驱动组件以根据配置信息确定目标软件的启动加速等级。
步骤206,获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量。
预读是一种加速程序进程启动速度的技术,通过读取目标软件的主要内容以备该软件启动时耗费大量时间来读取本身的数据。将打开目标软件的启动文件并预读打开的启动文件中的数据的过程称为一次预读。预读次数是指相应的目标软件在启动时需要进行打开目标软件的启动文件并预读打开的启动文件中的数据的过程的次数。单次预读文件数量是指相应的目标软件在启动时进行一次打开目标软件的启动文件并预读打开的启动文件中的数据的过程中需要打开和预读的启动文件的数量。
在一个实施例中,步骤206包括:通过加速驱动组件获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量。
步骤208,根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中。
具体地,根据确定的预读次数和/或单次预读文件数量,可以确定一次性还是分几次打开目标软件的启动文件并调用系统预读函数进行预读。若预读次数少,则每次需要打开的启动文件多,会导致大量并发的文件读操作,但启动加速效果明显;若预读次数多,则每次需要打开的启动文件少,并发的文件读操作少,但启动加速效果较弱。启动文件是指目标软件在启动时需要的文件。
电子设备100可调用Windows操作系统用于打开文件的系统函数ZwOpenFile来打开启动文件,并调用于创建共享内存区的系统函数ZwCreateSection来创建共享内存区section,并计算所需要预读的启动文件的页块的信息,以实现将需预读的启动文件的初始化。其中页块的信息包括页块大小和文件偏移属性。将需要预读的启动文件初始化后,就可以通过调用系统预读函数MmPrefetchPages来预读打开的启动文件中的数据到内存中。
在一个实施例中,可以根据系统预读函数封装与每个启动加速等级对应的文件预读接口,每个文件预读接口实现根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中的功能。这样仅需要调用确定的启动加速等级所对应的文件预读接口来处理目标软件的启动文件即可。
在一个实施例中,步骤208包括:通过加速驱动组件以根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中。
步骤210,根据预读到内存中的数据启动目标软件。
具体地,预读到内存中的数据可以被快速调用,这里根据预读到内存中的数据启动目标软件,可以实现目标软件的加速启动。
上述软件启动方法,事先划分不同的启动加速等级,通过配置信息可以确定目标软件的启动加速等级。根据启动加速等级所对应的预读次数和/或单次预读文件数量,可以确定单次或多次来打开目标软件的启动文件,从而将打开的启动文件中的数据预读到内存中。这样通过预读目标软件的启动文件,可以显著加快目标软件的启动速度,减少启动时间。而且,通过调整各启动加速等级对应的预读次数和/或单次预读文件数量,可以灵活调整打开启动文件的次数,从而可以控制每次预读的文件读操作数量,适用于各种软件不同的启动加速需求,兼容性强。
在一个实施例中,确定的启动加速等级为第一启动加速等级;步骤208包括:打开目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中。
具体地,第一启动加速等级对应重度启动加速等级。本实施例中,一次性初始化目标软件的全部启动文件后,调用一次系统预读函数MmPrefetchPages来预读打开的启动文件中的数据到内存中。第一启动加速等级主要针对一些非常耗时、启动文件很多的目标软件,加速效果明显。
本实施例中,通过一次性打开目标软件的全部启动文件后进行预读,可以最大程度地利用预读的方式来对目标软件进行启动加速。
在一个实施例中,在打开目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中的步骤之前,还包括:将目标软件的启动进程挂起;且在打开目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中的步骤之后,还包括:恢复启动进程。
具体地,考虑到重度启动加速等级虽然可以最大程度地利用预读的方式来对目标软件进行启动加速,但也会瞬间并发非常多的文件读操作,而此时目标软件的启动进程本身也会发起相当多的文件读操作,这时会引起磁盘读偏移来回剧烈震动,导致文件的读效率大幅下降,所以这里需要在第一启动加速等级的情况下将目标软件的启动进程挂起,从而避免目标软件的启动进程与启动加速机制同时发起文件读操作从而影响到目标软件的启动速度,影响启动加速效果。相比之下,其它启动加速等级下启动加速时发起的文件读操作较为缓和,可以不对启动进程进行干预。
在一个实施例中,可以根据配置信息确定恢复启动进程的时间点,从而在达到该时间点时恢复启动进程。该时间点可以是自启动进程启动起经过预设时长的时间点,也可以是自启动进程挂起开始经过预设时长的时间点,也可以是指定事件发生时的时间点。
在一个实施例中,将目标软件的启动进程挂起的步骤包括:通过注册到操作系统的自定义函数,接收系统回调函数接口在目标软件的启动进程启动时发出的第一通知并等待;且恢复启动进程的步骤,包括:通过自定义函数向系统回调函数接口反馈第二通知,使操作系统继续运行启动进程。
具体地,为了实现将目标软件的启动进程挂起,利用了操作系统的系统回调函数接口PsSetCreateProcessNotifyRoutine的同步特性,即该系统回调函数接口发出一个消息后接收到对该消息的反馈后才会继续后续的动作。本实施例中,预先将一种自定义函数注册到操作系统,使得该自定义函数可以被系统回调函数接口调用。这样操作系统在启动目标软件的启动进程时,通过系统回调函数接口调用该自定义函数,这样自定义函数会接收到第一通知,自定义函数只需进行空等待就可以实现将启动进程挂起。进一步地,通过自定义函数向系统回调函数接口反馈第二通知,就可以使得操作系统继续运行启动进程,实现恢复启动进程。
在一个实施例中,确定的启动加速等级为第二启动加速等级;步骤208包括:循环执行打开目标软件的数量为单次预读文件数量的启动文件,并预读每次打开的启动文件中的数据到内存中的步骤,直至将目标软件全部启动文件的数据预读到内存中。
第二启动加速等级对应中度启动加速等级,第二启动加速等级是一种可动态配置的启动加速等级,具体配置信息可以包括单次预读文件数量,从而使得第二启动加速等级下的预读次数是可控的。
具体地,电子设备100可以分多次打开目标软件的启动文件并预读数据,每次预读需要先打开数量为单次预读文件数量的启动文件,然后调用一次系统预读函数MmPrefetchPages来预读这些打开的启动文件,然后再打开另外的数量为单次预读文件数量的启动文件,然后再调用一次系统预读函数MmPrefetchPages来预读这些打开的启动文件,如此反复,直至将目标软件全部启动文件的数据预读到内存中。预读次数与调用系统预读函数的次数是相同的。
举例说明,若配置信息中目标软件对应的启动加速等级为第二启动加速等级,且对应的单次预读文件数量为50,且目标软件的启动文件总数量为100,则相应的预读次数为2,表示调用系统预读函数2次。具体在目标软件启动时,先打开50个启动文件并调用一次系统预读函数来预读数据到内存中,然后再打开剩余的50个启动文件并再次调用系统预读函数来预读数据到内存中。
在一个实施例中,确定的启动加速等级为第三启动加速等级;步骤208包括:循环执行打开目标软件的一个启动文件,并预读打开的启动文件中的数据到内存中的步骤,直至将目标软件全部启动文件的数据预读到内存中。
具体地,第三启动加速等级对应轻度启动加速等级。本实施例中,一次预读仅打开一个启动文件进行预读,具体每初始化目标软件的一个启动文件,就调用一次系统预读函数MmPrefetchPages来预读打开的启动文件中的数据到内存中。第三启动加速等级适用于启动时间比较短的目标软件的启动加速。
举例说明,若目标软件的启动文件为100个,且配置信息中目标软件对应的启动加速等级为第三启动加速等级,则在目标软件启动时,先打开一个启动文件并调用一次系统预读函数来预读数据到内存中,然后再打开另一个未预读的启动文件并再次调用系统预读函数来预读数据到内存中,循环执行,直至将这100个启动文件的数据均预读到内存中。
本实施例中,通过每次打开目标软件的一个启动文件进行预读来对目标软件进行启动加速,可以避免并发大量的文件读操作,而且可以同时对多个目标软件进行启动加速。
在一个实施例中,该软件启动方法还包括:通过目标软件的启动进程从目标软件的启动文件中读取数据;且步骤210包括:根据启动进程读取的数据和预读到内存中的数据启动目标软件。
具体地,本实施例主要适用于第二启动加速等级和第三启动加速等级的情形,这两种启动加速等级下发起的文件读操作较为缓和,可以在实施启动加速的同时,目标软件的启动进程从目标软件的启动文件中读取数据。进而,启动进程在启动目标软件时,根据启动进程所读取的数据和预读到内存中的数据进行启动。这样可以进一步加快启动速度,减少启动时间。
在一个实施例中,步骤204包括:根据配置信息确定目标软件的启动阶段划分,并确定各启动阶段的启动加速等级;且步骤208包括:在各启动阶段,分别采用相应启动阶段的启动加速等级对应的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中。
具体地,目标软件的启动过程可以根据目标软件的特性作不同的划分,比如一种网络游戏软件,启动过程可以划分为登录阶段和进入游戏界面的启动阶段;还比如一种应用软件,启动过程可以划分为注册阶段和进入应用界面的启动阶段,在此不一一列举。配置信息可以包括目标软件的启动阶段划分,比如配置信息可以包括各目标启动阶段的窗口标识,从而在相应的窗口出现时表示进入相应的启动阶段。
举例说明,一种多人对战网络游戏软件,启动过程包括登录阶段和进入游戏界面的启动阶段两个阶段。由于登录阶段需要读取的启动文件少,消耗的时间少,可以采用第三启动加速等级的启动加速手段进行加速,这样可以保证不影响登录阶段的时间前提下,预读10%左右的启动文件。而在进入游戏界面的启动阶段,由于消耗的时间相对较长,加速前需要60秒左右,可以在该启动阶段采用第一启动加速等级的启动加速手段进行加速,在该启动阶段预读完剩余的90%的启动文件,启动加速后该启动阶段仅需要30秒左右。
本实施例中,将目标软件的启动过程划分为不同的启动阶段,然后在各个启动阶段可以根据情况使用最合适的启动加速等级的启动加速手段,使得目标软件的启动加速更加灵活、高效。
如图3所示,在一个实施例中,该软件启动方法还包括生成配置文件的步骤,具体包括以下步骤:
步骤302,统计目标软件的启动行为参数;启动行为参数包括:原始启动时长、启动文件数量、启动文件大小、启动阶段划分以及启动时文件读操作行为属性中的至少一种。
具体地,启动行为参数是指表示目标软件在启动时的特性的参数。其中原始启动时长是指在不采用启动加速手段的前提下,目标软件启动所需要的时间长度。启动文件数量是指目标软件的在启动时需要的启动文件的总数量。启动文件大小包括每个启动文件的大小以及各启动文件的平均大小。启动时文件读操作行为属性包括目标软件在启动时发起的文件读操作数量、文件读操作的时间分布等。
步骤304,根据统计的启动行为参数生成相应的启动加速等级记录到配置文件中。且步骤202具体包括:从配置文件中读取配置信息。
具体地,统计的目标软件的启动行为参数可以反映出目标软件的启动加速需求,从而可以根据统计的启动行为参数生成相应的启动加速等级,并与目标软件的软件标识对应记录到配置文件中。
比如,原始启动时长较长的目标软件可以采用第一启动加速等级,而原始启动时长较短的目标软件则可以采用第二或者第三启动加速等级。启动文件数量多或者启动文件大的目标软件可以采用第一启动加速等级,而启动文件数量少或者启动文件小的目标软件可以采用第二或者第三启动加速等级。根据启动阶段划分可以分启动阶段配置启动加速等级。文件读操作数量较多的目标软件可以采用第一启动加速等级,文件读操作数量较少的目标软件可以采用第二或者第三启动加速等级。
本实施例中,通过统计目标软件的启动行为参数并据以生成相应的启动加速等级记录到配置文件中,可以根据目标软件的启动行为特性灵活配置启动加速策略,使得启动加速更加灵活以及高效。
在一个实施例中,该软件启动方法还包括:获取到启动目标软件结束的通知后,上报启动加速结果到服务器;启动加速结果包括:启动加速是否成功,是否预读了目标软件的全部启动文件和预读的启动文件数量中的至少一种。
具体地,启动目标软件结束的通知可以是启动目标软件成功的通知或者启动目标软件失败的通知。可以通过通信进程接收加速驱动组件发出的启动目标软件结束的通知。上报启动加速结果到服务器,服务器可以根据上报的启动加速结果做进一步分析和改进,从而可以反馈优选的配置信息。
具体若启动加速失败,则可以更改配置信息中目标软件对应的启动加速等级。若未能预读目标软件的全部启动文件,则可以更改配置信息中目标软件对应的是否挂起进程的配置。若预读的启动文件数量较少,而目标软件对应的启动加速等级为第一启动加速等级,则可以更改配置信息中目标软件对应的第一启动加速等级为第二或者第三启动加速等级。
如图4所示,在一个实施例中,一种软件启动方法,具体包括如下步骤:
步骤402,从配置文件中读取配置信息。
具体地,参照图5,电子设备100运行通信进程和加速驱动组件,且加速驱动组件准备接收通信进程的加速请求。电子设备100通过通信进程获取配置信息,并向加速驱动组件发送加速请求。通信进程用于读取配置文件中的相关内容,然后和加速驱动进程通信,比如控制加速驱动进程采用何种文件预读接口、是否挂起进程等。
步骤404,根据配置信息确定目标软件的启动加速等级。
具体地,电子设备100可以通过加速驱动组件接收通信进程的加速请求,加速驱动组件根据该加速请求确定目标软件的启动加速等级,并选择相应的文件预读接口进行启动加速。
步骤406(1),若确定目标软件的启动加速等级为第一启动加速等级,则获取第一启动加速等级所对应的预读次数为1次。
步骤406(2),若确定目标软件的启动加速等级为第二启动加速等级,则获取第二启动加速等级所对应的单次预读文件数量;该单次预读文件数量大于1。
步骤406(3),若确定目标软件的启动加速等级为第三启动加速等级,则获取第三启动加速等级所对应的单次预读文件数量为1。
步骤408(1),将目标软件的启动进程挂起,打开目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中,恢复启动进程。
具体地,可以通过注册到操作系统的自定义函数,接收系统回调函数接口在目标软件的启动进程启动时发出的第一通知并等待,以实现将目标软件的启动进程挂起。通过自定义函数向系统回调函数接口反馈第二通知,使操作系统继续运行启动进程,以实现恢复挂起的启动进程。
步骤408(2),循环执行打开目标软件的数量为单次预读文件数量的启动文件,并预读每次打开的启动文件中的数据到内存中的步骤,直至将目标软件全部启动文件的数据预读到内存中。
步骤408(3),循环执行打开目标软件的一个启动文件,并预读打开的启动文件中的数据到内存中的步骤,直至将目标软件全部启动文件的数据预读到内存中。
步骤410,根据预读到内存中的数据启动目标软件。
如图6所示,在一个实施例中,提供了一种软件启动装置600,具有实现上述各个实施例的软件启动方法的功能模块。该软件启动装置600包括:
配置信息获取模块601,用于获取配置信息。
具体地,配置信息是对软件启动采用何种启动加速方式所进行的配置的信息。在一个实施例中,配置信息获取模块601用于从配置文件中读取配置信息。用户可以自定义配置文件,从而为不同的软件配置不同的启动加速方式。在一个实施例中,配置信息获取模块601用于从服务器获取配置信息。
在一个实施例中,配置信息获取模块601用于通过通信进程获取配置信息并通知加速驱动组件。该通信进程用于与操作系统、加速驱动组件和目标软件的启动进程通信。其中加速驱动组件用于实现对目标软件的启动加速。
启动加速等级确定模块602,用于根据配置信息确定目标软件的启动加速等级。
具体地,可以根据需要划分启动加速等级,从而为不同的软件配置不同的启动加速等级。其中目标软件是指需要进行启动加速的软件。目标软件可以是任意软件,包括:游戏软件、通信软件、工程设计软件、图像处理软件和编程软件等。
在一个实施例中,启动加速等级包括:轻度加速等级、中度加速等级和重度加速等级。在一个实施例中,配置信息包括软件标识和启动加速等级的对应关系,从而可以根据该对应关系查找到目标软件的启动加速等级。在一个实施例中,配置信息包括软件标识和加速窗口标识的对应关系,从而可以根据该对应关系,在目标软件的指定窗口出现时通知获取模块603或者预读模块604。
在一个实施例中,启动加速等级确定模块602用于通过加速驱动组件以根据配置信息确定目标软件的启动加速等级。
获取模块603,用于获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量。
预读是一种加速程序进程启动速度的技术,通过读取目标软件的主要内容以备该软件启动时耗费大量时间来读取本身的数据。将打开目标软件的启动文件并预读打开的启动文件中的数据的过程称为一次预读。预读次数是指相应的目标软件在启动时需要进行打开目标软件的启动文件并预读打开的启动文件中的数据的过程的次数。单次预读文件数量是指相应的目标软件在启动时进行一次打开目标软件的启动文件并预读打开的启动文件中的数据的过程中需要打开和预读的启动文件的数量。
在一个实施例中,获取模块603用于通过加速驱动组件获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量。
预读模块604,用于根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中。
具体地,根据确定的预读次数和/或单次预读文件数量,可以确定一次性还是分几次打开目标软件的启动文件并调用系统预读函数进行预读。若预读次数少,则每次需要打开的启动文件多,会导致大量并发的文件读操作,但启动加速效果明显;若预读次数多,则每次需要打开的启动文件少,并发的文件读操作少,但启动加速效果较弱。启动文件是指目标软件在启动时需要的文件。
预读模块604可用于调用Windows操作系统用于打开文件的系统函数ZwOpenFile来打开启动文件,并调用于创建共享内存区的系统函数ZwCreateSection来创建共享内存区section,并计算所需要预读的启动文件的页块的信息,以实现将需预读的启动文件的初始化。其中页块的信息包括页块大小和文件偏移属性。将需要预读的启动文件初始化后,就可以通过调用系统预读函数MmPrefetchPages来预读打开的启动文件中的数据到内存中。
在一个实施例中,可以根据系统预读函数封装与每个启动加速等级对应的文件预读接口,每个文件预读接口实现根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中的功能。这样仅需要调用确定的启动加速等级所对应的文件预读接口来处理目标软件的启动文件即可。
在一个实施例中,预读模块604用于通过加速驱动组件以根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中。
启动模块605,用于根据预读到内存中的数据启动目标软件。
具体地,预读到内存中的数据可以被快速调用,这里根据预读到内存中的数据启动目标软件,可以实现目标软件的加速启动。
在一个实施例中,确定的启动加速等级为第一启动加速等级;预读模块604还用于打开目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中。
具体地,第一启动加速等级对应重度启动加速等级。本实施例中,预读模块604用于一次性初始化目标软件的全部启动文件后,调用一次系统预读函数MmPrefetchPages来预读打开的启动文件中的数据到内存中。第一启动加速等级主要针对一些非常耗时、启动文件很多的目标软件,加速效果明显。
本实施例中,通过一次性打开目标软件的全部启动文件后进行预读,可以最大程度地利用预读的方式来对目标软件进行启动加速。
如图7所示,在一个实施例中,该软件启动装置600还包括:启动进程挂起模块606和启动进程恢复模块607。
启动进程挂起模块606,用于打开目标软件的全部启动文件之前,将目标软件的启动进程挂起。
启动进程恢复模块607,用于在从打开的全部启动文件中预读数据到内存中之后,恢复启动进程。
具体地,考虑到重度启动加速等级虽然可以最大程度地利用预读的方式来对目标软件进行启动加速,但也会瞬间并发非常多的文件读操作,而此时目标软件的启动进程本身也会发起相当多的文件读操作,这时会引起磁盘读偏移来回剧烈震动,导致文件的读效率大幅下降,所以这里需要在第一启动加速等级的情况下将目标软件的启动进程挂起,从而避免目标软件的启动进程与启动加速机制同时发起文件读操作从而影响到目标软件的启动速度,影响启动加速效果。相比之下,其它启动加速等级下启动加速时发起的文件读操作较为缓和,可以不对启动进程进行干预。
在一个实施例中,启动进程恢复模块607可用于根据配置信息确定恢复启动进程的时间点,从而在达到该时间点时恢复启动进程。该时间点可以是自启动进程启动起经过预设时长的时间点,也可以是自启动进程挂起开始经过预设时长的时间点,也可以是指定事件发生时的时间点。
在一个实施例中,启动进程挂起模块606还用于通过注册到操作系统的自定义函数,接收系统回调函数接口在目标软件的启动进程启动时发出的第一通知并等待。
启动进程恢复模块607还用于通过自定义函数向系统回调函数接口反馈第二通知,使操作系统继续运行启动进程。
具体地,为了实现将目标软件的启动进程挂起,利用了操作系统的系统回调函数接口PsSetCreateProcessNotifyRoutine的同步特性,即该系统回调函数接口发出一个消息后接收到对该消息的反馈后才会继续后续的动作。本实施例中,预先将一种自定义函数注册到操作系统,使得该自定义函数可以被系统回调函数接口调用。这样操作系统在启动目标软件的启动进程时,通过系统回调函数接口调用该自定义函数,这样自定义函数会接收到第一通知,自定义函数只需进行空等待就可以实现将启动进程挂起。进一步地,通过自定义函数向系统回调函数接口反馈第二通知,就可以使得操作系统继续运行启动进程,实现恢复启动进程。
在一个实施例中,确定的启动加速等级为第二启动加速等级;预读模块604还用于循环执行打开目标软件的数量为单次预读文件数量的启动文件,并预读每次打开的启动文件中的数据到内存中,直至将目标软件全部启动文件的数据预读到内存中。
第二启动加速等级对应中度启动加速等级,第二启动加速等级是一种可动态配置的启动加速等级,具体配置信息可以包括单次预读文件数量,从而使得第二启动加速等级下的预读次数是可控的。
具体地,预读模块604可用于分多次打开目标软件的启动文件并预读数据,每次预读需要先打开数量为单次预读文件数量的启动文件,然后调用一次系统预读函数MmPrefetchPages来预读这些打开的启动文件,然后再打开另外的数量为单次预读文件数量的启动文件,然后再调用一次系统预读函数MmPrefetchPages来预读这些打开的启动文件,如此反复,直至将目标软件全部启动文件的数据预读到内存中。预读次数与调用系统预读函数的次数是相同的。
在一个实施例中,确定的启动加速等级为第三启动加速等级;预读模块604还用于循环执行打开目标软件的一个启动文件,并预读打开的启动文件中的数据到内存中,直至将目标软件全部启动文件的数据预读到内存中。
具体地,第三启动加速等级对应轻度启动加速等级。本实施例中,一次预读仅打开一个启动文件进行预读,具体预读模块604用于每初始化目标软件的一个启动文件,就调用一次系统预读函数MmPrefetchPages来预读打开的启动文件中的数据到内存中。第三启动加速等级适用于启动时间比较短的目标软件的启动加速。
本实施例中,通过每次打开目标软件的一个启动文件进行预读来对目标软件进行启动加速,可以避免并发大量的文件读操作,而且可以同时对多个目标软件进行启动加速。
在一个实施例中,启动模块605还用于根据预读到内存中的数据和目标软件的启动进程从启动文件中读取到的数据启动目标软件。
具体地,本实施例主要适用于第二启动加速等级和第三启动加速等级的情形,这两种启动加速等级下发起的文件读操作较为缓和,可以在实施启动加速的同时,目标软件的启动进程从目标软件的启动文件中读取数据。进而,启动进程在启动目标软件时,根据启动进程所读取的数据和预读到内存中的数据进行启动。这样可以进一步加快启动速度,减少启动时间。
在一个实施例中,启动加速等级确定模块602还用于根据配置信息确定目标软件的启动阶段划分,并确定各启动阶段的启动加速等级。
预读模块604还用于在各启动阶段,分别采用相应启动阶段的启动加速等级对应的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中。
具体地,目标软件的启动过程可以根据目标软件的特性作不同的划分,比如一种网络游戏软件,启动过程可以划分为登录阶段和进入游戏界面的启动阶段;还比如一种应用软件,启动过程可以划分为注册阶段和进入应用界面的启动阶段,在此不一一列举。配置信息可以包括目标软件的启动阶段划分,比如配置信息可以包括各目标启动阶段的窗口标识,从而在相应的窗口出现时表示进入相应的启动阶段。
本实施例中,将目标软件的启动过程划分为不同的启动阶段,然后在各个启动阶段可以根据情况使用最合适的启动加速等级的启动加速手段,使得目标软件的启动加速更加灵活、高效。
如图8所示,在一个实施例中,该软件启动装置600还包括:启动行为参数统计模块608和记录模块609。
启动行为参数统计模块608,用于统计目标软件的启动行为参数;启动行为参数包括:原始启动时长、启动文件数量、启动文件大小、启动阶段划分以及启动时文件读操作行为属性中的至少一种。
具体地,启动行为参数是指表示目标软件在启动时的特性的参数。其中原始启动时长是指在不采用启动加速手段的前提下,目标软件启动所需要的时间长度。启动文件数量是指目标软件的在启动时需要的启动文件的总数量。启动文件大小包括每个启动文件的大小以及各启动文件的平均大小。启动时文件读操作行为属性包括目标软件在启动时发起的文件读操作数量、文件读操作的时间分布等。
记录模块609,用于根据统计的启动行为参数生成相应的启动加速等级记录到配置文件中。
配置信息获取模块601还用于从配置文件中读取配置信息。
具体地,统计的目标软件的启动行为参数可以反映出目标软件的启动加速需求,从而可以根据统计的启动行为参数生成相应的启动加速等级,并与目标软件的软件标识对应记录到配置文件中。
比如,原始启动时长较长的目标软件可以采用第一启动加速等级,而原始启动时长较短的目标软件则可以采用第二或者第三启动加速等级。启动文件数量多或者启动文件大的目标软件可以采用第一启动加速等级,而启动文件数量少或者启动文件小的目标软件可以采用第二或者第三启动加速等级。根据启动阶段划分可以分启动阶段配置启动加速等级。文件读操作数量较多的目标软件可以采用第一启动加速等级,文件读操作数量较少的目标软件可以采用第二或者第三启动加速等级。
本实施例中,通过统计目标软件的启动行为参数并据以生成相应的启动加速等级记录到配置文件中,可以根据目标软件的启动行为特性灵活配置启动加速策略,使得启动加速更加灵活以及高效。
如图9所示,在一个实施例中,该软件启动装置600还包括:上报模块610,用于在获取到启动目标软件结束的通知后,上报启动加速结果到服务器;启动加速结果包括:启动加速是否成功,是否预读了目标软件的全部启动文件和预读的启动文件数量中的至少一种。
具体地,启动目标软件结束的通知可以是启动目标软件成功的通知或者启动目标软件失败的通知。可以通过通信进程接收加速驱动组件发出的启动目标软件结束的通知。上报启动加速结果到服务器,服务器可以根据上报的启动加速结果做进一步分析和改进,从而可以反馈优选的配置信息。
具体若启动加速失败,则可以更改配置信息中目标软件对应的启动加速等级。若未能预读目标软件的全部启动文件,则可以更改配置信息中目标软件对应的是否挂起进程的配置。若预读的启动文件数量较少,而目标软件对应的启动加速等级为第一启动加速等级,则可以更改配置信息中目标软件对应的第一启动加速等级为第二或者第三启动加速等级。
上述软件启动装置600,事先划分不同的启动加速等级,通过配置信息可以确定目标软件的启动加速等级。根据启动加速等级所对应的预读次数和/或单次预读文件数量,可以确定单次或多次来打开目标软件的启动文件,从而将打开的启动文件中的数据预读到内存中。这样通过预读目标软件的启动文件,可以显著加快目标软件的启动速度,减少启动时间。而且,通过调整各启动加速等级对应的预读次数和/或单次预读文件数量,可以灵活调整打开启动文件的次数,从而可以控制每次预读的文件读操作数量,适用于各种软件不同的启动加速需求,兼容性强。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (22)
1.一种软件启动方法,所述方法包括:
获取配置信息;
根据所述配置信息确定目标软件的启动加速等级;
获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量;
根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中;
根据预读到内存中的数据启动所述目标软件。
2.根据权利要求1所述的方法,其特征在于,所述确定的启动加速等级为第一启动加速等级;所述根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中,包括:
打开所述目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中。
3.根据权利要求2所述的方法,其特征在于,所述打开所述目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中之前,还包括:
将所述目标软件的启动进程挂起;
所述打开所述目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中之后,还包括:
恢复所述启动进程。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标软件的启动进程挂起,包括:
通过注册到操作系统的自定义函数,接收系统回调函数接口在目标软件的启动进程启动时发出的第一通知并等待;
所述恢复所述启动进程,包括:
通过所述自定义函数向所述系统回调函数接口反馈第二通知,使所述操作系统继续运行所述启动进程。
5.根据权利要求1所述的方法,其特征在于,当所述确定的启动加速等级为第二启动加速等级时,所述单次预读文件数量大于1且小于所述目标软件的启动文件总数量;所述根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中,包括:
循环执行打开所述目标软件的数量为单次预读文件数量的启动文件,并预读每次打开的启动文件中的数据到内存中的步骤,直至将所述目标软件全部启动文件的数据预读到内存中。
6.根据权利要求1所述的方法,其特征在于,所述确定的启动加速等级为第三启动加速等级;所述根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中,包括:
循环执行打开所述目标软件的一个启动文件,并预读打开的启动文件中的数据到内存中的步骤,直至将所述目标软件全部启动文件的数据预读到内存中。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
通过目标软件的启动进程从目标软件的启动文件中读取数据;
所述根据预读到内存中的数据启动所述目标软件,包括:
根据所述启动进程读取的数据和预读到内存中的数据启动所述目标软件。
8.根据权利要求1所述的方法,其特征在于,所述根据所述配置信息确定目标软件的启动加速等级,包括:
根据所述配置信息确定目标软件的启动阶段划分,并确定各启动阶段的启动加速等级;
所述根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中,包括:
在各启动阶段,分别采用相应启动阶段的启动加速等级对应的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
统计目标软件的启动行为参数;所述启动行为参数包括:原始启动时长、启动文件数量、启动文件大小、启动阶段划分以及启动时文件读操作行为属性中的至少一种;
根据统计的启动行为参数生成相应的启动加速等级记录到配置文件中;
所述获取配置信息,包括:
从配置文件中读取配置信息。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取到启动所述目标软件结束的通知后,上报启动加速结果到服务器;所述启动加速结果包括:启动加速是否成功,是否预读了目标软件的全部启动文件和预读的启动文件数量中的至少一种。
11.一种软件启动装置,其特征在于,所述装置包括:
配置信息获取模块,用于获取配置信息;
启动加速等级确定模块,用于根据所述配置信息确定目标软件的启动加速等级;
获取模块,用于获取确定的启动加速等级所对应的预读次数和/或单次预读文件数量;
预读模块,用于根据确定的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中;
启动模块,用于根据预读到内存中的数据启动所述目标软件。
12.根据权利要求11所述的装置,其特征在于,所述确定的启动加速等级为第一启动加速等级;所述预读模块还用于打开所述目标软件的全部启动文件后,从打开的全部启动文件中预读数据到内存中。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
启动进程挂起模块,用于打开所述目标软件的全部启动文件之前,将所述目标软件的启动进程挂起;
启动进程恢复模块,用于在从打开的全部启动文件中预读数据到内存中之后,恢复所述启动进程。
14.根据权利要求13所述的装置,其特征在于,所述启动进程挂起模块还用于通过注册到操作系统的自定义函数,接收系统回调函数接口在目标软件的启动进程启动时发出的第一通知并等待;
所述启动进程恢复模块还用于通过所述自定义函数向所述系统回调函数接口反馈第二通知,使所述操作系统继续运行所述启动进程。
15.根据权利要求11所述的装置,其特征在于,当所述确定的启动加速等级为第二启动加速等级时,所述单次预读文件数量大于1且小于所述目标软件的启动文件总数量;所述预读模块还用于循环执行打开所述目标软件的数量为单次预读文件数量的启动文件,并预读每次打开的启动文件中的数据到内存中,直至将所述目标软件全部启动文件的数据预读到内存中。
16.根据权利要求11所述的装置,其特征在于,所述确定的启动加速等级为第三启动加速等级;所述预读模块还用于循环执行打开所述目标软件的一个启动文件,并预读打开的启动文件中的数据到内存中,直至将所述目标软件全部启动文件的数据预读到内存中。
17.根据权利要求15或16所述的装置,其特征在于,所述启动模块还用于根据预读到内存中的数据和目标软件的启动进程从启动文件中读取到的数据启动所述目标软件。
18.根据权利要求11所述的装置,其特征在于,所述启动加速等级确定模块还用于根据所述配置信息确定目标软件的启动阶段划分,并确定各启动阶段的启动加速等级;
所述预读模块还用于在各启动阶段,分别采用相应启动阶段的启动加速等级对应的预读次数和/或单次预读文件数量,按次打开目标软件的启动文件并预读数据到内存中。
19.根据权利要求11所述的装置,其特征在于,所述装置还包括:
启动行为参数统计模块,用于统计目标软件的启动行为参数;所述启动行为参数包括:原始启动时长、启动文件数量、启动文件大小、启动阶段划分以及启动时文件读操作行为属性中的至少一种;
记录模块,用于根据统计的启动行为参数生成相应的启动加速等级记录到配置文件中;
所述配置信息获取模块还用于从配置文件中读取配置信息。
20.根据权利要求11所述的装置,其特征在于,所述装置还包括:
上报模块,用于在获取到启动所述目标软件结束的通知后,上报启动加速结果到服务器;所述启动加速结果包括:启动加速是否成功,是否预读了目标软件的全部启动文件和预读的启动文件数量中的至少一种。
21.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至10中任一项所述方法的步骤。
22.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至10中任一项所述方法的步骤。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510295900.8A CN106293792B (zh) | 2015-06-02 | 2015-06-02 | 软件启动方法和装置 |
MYPI2017704027A MY193465A (en) | 2015-06-02 | 2016-04-28 | Method, terminal and storage medium for starting software |
PCT/CN2016/080552 WO2016192498A1 (zh) | 2015-06-02 | 2016-04-28 | 软件启动方法、终端及存储介质 |
US15/721,950 US10747550B2 (en) | 2015-06-02 | 2017-10-01 | Method, terminal and storage medium for starting software |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510295900.8A CN106293792B (zh) | 2015-06-02 | 2015-06-02 | 软件启动方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106293792A CN106293792A (zh) | 2017-01-04 |
CN106293792B true CN106293792B (zh) | 2019-12-20 |
Family
ID=57440171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510295900.8A Active CN106293792B (zh) | 2015-06-02 | 2015-06-02 | 软件启动方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10747550B2 (zh) |
CN (1) | CN106293792B (zh) |
MY (1) | MY193465A (zh) |
WO (1) | WO2016192498A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763104B (zh) * | 2018-05-23 | 2022-04-08 | 北京小米移动软件有限公司 | 预读取文件页的方法、装置及存储介质 |
CN111061516B (zh) | 2018-10-15 | 2021-09-14 | 华为技术有限公司 | 加速应用的冷启动的方法、装置和终端 |
US12093702B2 (en) * | 2021-08-03 | 2024-09-17 | Samsung Electronics Co., Ltd. | Method and electronic device for managing a boost time required for an application launch |
CN114461588B (zh) * | 2021-08-20 | 2023-01-24 | 荣耀终端有限公司 | 调节预读窗口的方法及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707966A (zh) * | 2012-04-12 | 2012-10-03 | 腾讯科技(深圳)有限公司 | 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端 |
CN103488495A (zh) * | 2013-08-13 | 2014-01-01 | 广东欧珀移动通信有限公司 | 一种通过动态调整开机预加载资源加速开机的方法 |
CN103677900A (zh) * | 2013-11-15 | 2014-03-26 | 北京奇虎科技有限公司 | 一种计算机设备系统启动加速的方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748457B2 (en) * | 2000-02-03 | 2004-06-08 | Realtime Data, Llc | Data storewidth accelerator |
US8239841B2 (en) * | 2008-04-04 | 2012-08-07 | International Business Machines Corporation | Prefetching irregular data references for software controlled caches |
US8230442B2 (en) * | 2008-09-05 | 2012-07-24 | International Business Machines Corporation | Executing an accelerator application program in a hybrid computing environment |
US8533830B1 (en) | 2009-03-31 | 2013-09-10 | Mcafee, Inc. | System, method, and computer program product for mounting an image of a computer system in a pre-boot environment for validating the computer system |
CN102123318B (zh) * | 2010-12-17 | 2014-04-23 | 曙光信息产业(北京)有限公司 | 一种iptv应用的io加速方法 |
US20130232215A1 (en) * | 2012-03-05 | 2013-09-05 | Riverbed Technology, Inc. | Virtualized data storage system architecture using prefetching agent |
CN102662690B (zh) * | 2012-03-14 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 应用程序启动方法和装置 |
CN103678342B (zh) * | 2012-09-07 | 2018-04-27 | 腾讯科技(深圳)有限公司 | 启动项识别方法及装置 |
CN103608768B (zh) * | 2013-04-01 | 2017-03-01 | 华为技术有限公司 | 一种数据预取方法、相关装置及系统 |
CN103646090A (zh) * | 2013-12-16 | 2014-03-19 | 百度在线网络技术(北京)有限公司 | 应用程序推荐方法、程序启动速度的优化方法和装置 |
KR102262102B1 (ko) * | 2014-04-09 | 2021-06-09 | 삼성전자 주식회사 | 애플리케이션 실행 방법 및 장치 |
CN104133691B (zh) * | 2014-05-05 | 2016-08-31 | 腾讯科技(深圳)有限公司 | 加速启动的方法及装置 |
CN104572205B (zh) * | 2015-01-12 | 2018-02-23 | 安一恒通(北京)科技有限公司 | 一种用于软件加速的方法和装置 |
-
2015
- 2015-06-02 CN CN201510295900.8A patent/CN106293792B/zh active Active
-
2016
- 2016-04-28 MY MYPI2017704027A patent/MY193465A/en unknown
- 2016-04-28 WO PCT/CN2016/080552 patent/WO2016192498A1/zh active Application Filing
-
2017
- 2017-10-01 US US15/721,950 patent/US10747550B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707966A (zh) * | 2012-04-12 | 2012-10-03 | 腾讯科技(深圳)有限公司 | 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端 |
CN103488495A (zh) * | 2013-08-13 | 2014-01-01 | 广东欧珀移动通信有限公司 | 一种通过动态调整开机预加载资源加速开机的方法 |
CN103677900A (zh) * | 2013-11-15 | 2014-03-26 | 北京奇虎科技有限公司 | 一种计算机设备系统启动加速的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20180024849A1 (en) | 2018-01-25 |
US10747550B2 (en) | 2020-08-18 |
MY193465A (en) | 2022-10-14 |
CN106293792A (zh) | 2017-01-04 |
WO2016192498A1 (zh) | 2016-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106293792B (zh) | 软件启动方法和装置 | |
WO2019174473A1 (zh) | 用户界面渲染方法、装置及终端 | |
CN109343902B (zh) | 音频处理组件的运行方法、装置、终端及存储介质 | |
WO2017211226A1 (zh) | 展示媒体文件的方法、终端和存储介质 | |
US11882336B2 (en) | Method and system for interaction in live streaming | |
CN110795056B (zh) | 调节显示参数的方法、装置、终端及存储介质 | |
CN105915583B (zh) | 一种启动服务集群的方法及服务集群 | |
CN112463066B (zh) | 一种控制分布式块存储逻辑卷突发服务质量的方法和设备 | |
CN103810009A (zh) | 一种计算机操作系统启动加速的方法和装置 | |
EP4123983A1 (en) | Video stream playing control method and apparatus, and storage medium | |
CN111522597A (zh) | 一种游戏启动方法、装置、电子设备及存储介质 | |
CN107911700B (zh) | 一种基于虚拟化的硬件解码方法、解码设备及存储介质 | |
CN113672757B (zh) | 一种音频播放方法及装置 | |
CN103150186B (zh) | 一种设备运行速度优化方法和装置 | |
CN112540801A (zh) | 网卡配置方法、主机设备、网卡设备及存储介质 | |
CN107621976B (zh) | 一种保持应用程序实例处于激活状态的方法及云服务器 | |
CN105118020A (zh) | 用于快速图片处理的方法及装置 | |
CN116610450A (zh) | 渲染方法、装置、操作系统、设备和存储介质 | |
CN114116040A (zh) | 加速应用启动的方法、电子设备及计算机存储介质 | |
CN108174245B (zh) | 一种基于视频数据进行动态内容呈现的方法及系统 | |
CN115877950A (zh) | 基于虚拟形象的交互方法、装置、设备及存储介质 | |
CN113867831B (zh) | 智能设备控制方法、智能设备、存储介质及电子设备 | |
CN114880042A (zh) | 应用启动方法、装置、电子设备及计算机可读存储介质 | |
CN105094896B (zh) | 虚拟化平台上客户端启动方法、设备和系统 | |
CN112423099A (zh) | 视频加载方法、装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |