本发明涉及计算机技术领域,特别涉及一种程序启动方法、装置和设备。
背景技术:随着计算机技术和Windows技术的发展,为了加快计算机上常用的程序的启动或运行速度,可以在计算机在操作系统启动后将常用的程序在启动时所需要的数据预先加载到内存中。当在计算机运行过程中启动程序时,可以直接根据内存中已加载的数据启动,而无需从磁盘加载该部分数据,从而减少了系统的磁盘I/O(Input/Output,输入输出),加快了系统的运行速度。在实现本发明的过程中,发明人发现现有技术至少存在以下问题:在操作系统运行过程中,启动的程序可能多种多样,每启动一个程序,均需将该程序对应的数据加载至内存。而当预先加载的数据占用内存空间太大时,为了保证程序的正常运行,需要将已加载的程序置换出去或销毁掉,以加载待运行程序的数据,则在启动上述被置换或者被销毁的数据对应的程序时,就需要重新从磁盘中重新读取数据,无法实现加快系统运行速度的目的,影响了系统的操作性能。
技术实现要素:为了解决现有技术的问题,本发明实施例提供了一种程序启动方法、装置和设备。所述技术方案如下:第一方面,提供了一种程序启动方法,所述方法包括:根据预取数据库中每个程序的历史启动信息,确定至少一个目标程序,所述历史启动信息至少包括程序的启动时间点;在操作系统自启动项的启动过程中,将所述至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据;当检测到第一目标程序的启动事件时,将所述第一目标程序对应的预取数据解锁,所述第一目标程序为任一目标程序;从所述内存中加载所述第一目标程序对应的预取数据;运行所述第一目标程序的代码,以启动所述第一目标程序。第二方面,提供了一种程序启动装置,所述装置包括:目标程序确定模块,用于根据预取数据库中每个程序的历史启动信息,确定至少一个目标程序,所述历史启动信息至少包括程序的启动时间点;加载锁定模块,用于在操作系统自启动项的启动过程中,将所述至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据;解锁模块,用于当检测到第一目标程序的启动事件时,将所述第一目标程序对应的预取数据解锁,所述第一目标程序为任一目标程序;数据加载模块,用于从所述内存中加载所述第一目标程序对应的预取数据;代码运行模块,用于运行所述第一目标程序的代码,以启动所述第一目标程序。第三方面,提供了一种终端设备,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:根据预取数据库中每个程序的历史启动信息,确定至少一个目标程序,所述历史启动信息至少包括程序的启动时间点;在操作系统自启动项的启动过程中,将所述至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据;当检测到第一目标程序的启动事件时,将所述第一目标程序对应的预取数据解锁,所述第一目标程序为任一目标程序;从所述内存中加载所述第一目标程序对应的预取数据;运行所述第一目标程序的代码,以启动所述第一目标程序。本发明实施例提供的技术方案带来的有益效果是:本发明提供的方法、装置和设备,通过根据历史启动信息确定需要进行数据预取的目标程序,在启动过程中,优先将目标程序的预取数据加载入内存,使得在目标程序启动时,直接从内存中访问到预取数据,避免了大量的磁盘I/O,节省了该目标程序的启动时间,加快了该目标程序的启动速度,且通过锁定加载的数据,保证了预取的数据不会在操作系统的运行过程中被置换或者被销毁。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种程序启动方法的流程图;图2是本发明实施例提供的一种程序启动方法的流程图;图3是本发明实施例提供的一种程序启动装置结构示意图;图4是本发明实施例涉及的终端设备结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。图1是本发明实施例提供的一种程序启动方法的流程图。该发明实施例的执行主体为终端设备,参见图1,所述方法包括:101:根据预取数据库中操作系统已安装的每个程序的历史启动信息,确定至少一个目标程序,该历史启动信息至少包括程序的启动时间点;其中,本发明实施例应用于终端设备操作系统的启动过程中,该每个程序是指该操作系统中已安装的程序,该程序可以为应用程序,还可以是操作系统使用过程中需要启动的后台程序或进程等,本发明实施例对此不做限定。程序的启动时间点是指以终端设备开机时间为零点时间的相对时间点,如当终端设备开机后的25s时,应用程序A启动,则该应用程序A的启动时间点为25s。需要说明的是,该预设数据库中所包含的历史启动信息可以包括终端设备多次运行过程中所启动程序的启动时间点,在终端设备运行过程中,程序每启动一次,终端设备均将该程序的启动时间点保存于预取数据库中。具体地,根据操作系统已安装的每个程序的历史启动信息,确定需要在操作系统启动过程中预取数据的至少一个目标程序。由于预设数据库中包括了程序的启动时间点,也即是可以通过启动时间点获知程序的启动次数,将启动次数大于预设阈值的程序确定为目标程序,或按照启动次数从大到小,将预设数目个程序确定为目标程序,上述仅以启动次数为确定目标程序的标准,而事实上,根据预设数据库中所记录的历史启动信息,还可以获知程序的启动频率、真实启动时间等,结合启动时间点、启动频率以及真实启动时间也可以确定目标程序,在本发明实施例对此不做限定。该步骤101可以在操作系统的启动过程中执行,来确定本次需要预取数据的至少一个目标程序,也可以在操作系统关机时执行,来确定下一次启动操作系统时需要预取数据的至少一个目标程序,本发明实施例对此不做限定。102:在该操作系统自启动项启动过程中,将该至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据;本领域的技术人员可以获知,在启动该操作系统后,执行该操作系统启动所需的基本程序和进程,在执行完这些基本程序后,进入操作系统自启动项的启动过程。本发明实施例中的加载过程是在基本程序执行完成后,操作系统的自启动项的启动过程中执行。其中,目标程序对应的预取数据是指在该目标程序启动时运行该目标程序所需要的磁盘I/O(Input/Output,输入输出)数据。在程序的启动过程时,需要进行大量的磁盘I/O,磁盘I/O时磁头的读取位置不连续,就会造成磁头在磁盘上的跳跃,大大减慢了每一次加载的速度,从而使得应用程序的启动速度慢。因此,在该目标程序启动之前将磁盘I/O数据加载到该内存中,可以在运行目标程序代码时,能够在内存中访问到该磁盘I/O数据,节省了该目标程序的启动时间,加快了该目标程序的启动速度。进一步地,将预取数据加载入该内存后,锁定加载的数据可以保证预取的数据不会被置换或者被销毁。103:当检测到第一目标程序的启动事件时,将该第一目标程序对应的预取数据解锁,该第一目标程序为任一目标程序;104:从该内存中加载该第一目标程序对应的预取数据;105:运行该第一目标程序的代码,以启动该第一目标程序。在步骤103-105中,当检测到该第一目标程序的启动事件时,将该第一目标程序对应的预取数据解锁,并运行该第一目标程序的代码,在运行代码的过程中,从该内存中分别加载每一条代码所需的数据,用于启动该第一目标程序。当运行的代码对应的预取数据已经加载入该内存中,可以直接从该内存中加载该代码对应的预取数据,而不需要进行磁盘I/O,因此节省了该第一目标程序的启动时间,加快了该第一目标程序的启动速度。本发明实施例提供的方法,通过根据程序的历史启动信息确定需要进行数据预取的目标程序,在启动过程中,优先将目标程序的预取数据加载入内存,使得在目标程序启动时,可以直接从内存中访问到预取数据,避免了大量的磁盘I/O,节省了该目标程序的启动时间,加快了该目标程序的启动速度,且通过锁定加载的数据,保证了预取的数据不会在操作系统的运行过程中被置换或者被销毁。可选地,根据预取数据库中的该系统已安装的每个程序的历史启动信息,确定至少一个目标程序,包括:按照第一预设时长内该每个程序的启动次数从大到小的顺序,从该每个程序中获取预设数目的目标程序;或,根据该每个程序的启动次数,将启动次数大于预设阈值的程序确定为该至少一个目标程序。可选地,该历史启动信息还包括程序的启动时间点,相应地,在该操作系统自启动项启动过程中,将该至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据之前,该方法还包括:根据每个目标程序的启动时间点,获取每个目标程序的启动时间点平均值;根据每个目标程序的启动时间点平均值和预设预取耗时,确定每个目标程序的预取时间点;相应地,在该操作系统自启动项启动过程中,将该至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据,包括:在该操作系统自启动项启动过程中,按照每个目标程序的预取时间点,分别将每个目标程序对应的预取数据加载入该内存,并锁定加载的数据。可选地,该方法还包括:收集该操作系统启动第二预设时长内该操作系统已安装的每个程序的启动信息,将收集到的启动信息保存至该预设数据库。可选地,在该操作系统自启动项启动过程中,将该至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据之后,该方法还包括:当在将第二目标程序对应的预取数据锁定结束后的超时阈值内未检测到该第二目标程序的启动事件时,将所述内存中加载的所述第二目标程序的预取数据解锁,所述第二目标程序为所述第一目标程序之外的任一目标程序。可选地,每个目标程序的超时阈值根据每个目标程序的最早启动时间点、最晚启动时间点和预设最大超时阈值确定,超时阈值=min(预设最大超时阈值,最晚启动时间点-最早启动时间点)。上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。以及根据每个程序的启动时间点确定的每个程序的启动次数、启动时间点平均值等参数。图2是本发明实施例提供的一种程序启动方法的流程图。该发明实施例的执行主体为终端设备,参见图2,所述方法包括:201:终端设备根据预取数据库中操作系统已安装的每个程序的历史启动信息,确定至少一个目标程序,该历史启动信息至少包括程序的启动时间点;优选地,该步骤201包括:终端设备从预取数据库中每个程序的历史启动信息中获取第一预设时长内的历史启动信息,根据该第一预设时长内的历史启动信息,确定至少一个目标程序。其中,历史启动信息还包括程序的真实启动时间,真实启动时间是指程序启动时间点的真实时间,如,当终端设备在2013年3月3日12:00分启动应用程序A,则该应用程序A的真实启动时间为2013年3月3日12:00。因此,通过真实启动时间可以获知程序在某个时间段内的启动次数,如该预设时间段为30天,则获取预设数据库中在本次操作系统启动以前的30天内每个程序的启动次数,根据每个程序的启动次数确定该至少一个目标程序。该第一预设时长可以由技术人员在开发时设置,还可以由用户在使用过程中设置。本发明实施例对该第一预设时长的具体值不做限定。可选地,根据该第一预设时长内的历史启动信息,确定至少一个目标程序包括:按照第一预设时长内该每个程序的启动次数从大到小的顺序,从该每个程序中获取预设数目的目标程序。如,在本次操作系统启动以前的30天内,应用程序A、B、C和D的历史启动信息如下表1所示。表1程序名称启动次数真实启动时间A5TA1…TA5B19TB1…TB19C10TC1…TC10D22TD1…TD22通过上表1,可以看出在30天内,启动次数的排序如下:D>B>C>A,而预设数目为2,则将程序D和B确定为目标程序。或,可选地,根据该第一预设时长内的历史启动信息,确定至少一个目标程序包括:根据第一预设时长内该每个程序的启动次数,将启动次数大于预设阈值的程序确定为该至少一个目标程序。仍以上表1中的数据、预设阈值为6次为例进行说明,则根据该确定方法,程序B、C和D的启动次数均超过6次,则将程序B、C和D确定为目标程序。其中,上述预设数目和预设阈值均可以由技术人员预先设定,还可以由用户在使用过程中进行调整,本发明实施例对此不做限定。202:根据每个目标程序的历史启动信息中的启动时间点,获取每个目标程序的启动时间点平均值;根据在该第一预设时长内每个目标程序的启动时间点,获取启动时间点平均值,还可以根据在比该第一预设时长更小的时长内的每个目标程序的启动时间点,获取启动时间点平均值。如该第一预设时长为30天,即在步骤201中根据30天内的启动次数,确定了该至少一个目标程序,而该启动时间点平均值可以根据30天内每个目标程序的启动时间点确定,还可以根据10天内每个目标程序的启动时间点确定。本发明实施例对此不做限定。203:根据每个目标程序的启动时间点平均值和预设预取耗时,确定每个目标程序的预取时间点;在该操作系统自启动项启动过程中,需要预取该至少一个目标程序对应的预取数据,而为了保证数据的预取在目标程序的启动之前进行,需要确定该至少一个目标程序的预取时间点。其中,该目标程序的预取时间点是指以终端设备开机时间为零点时间,开始获取该目标程序对应的预取数据的时刻。对于任一目标程序,当该目标程序的预取时间点早于启动时间点太长时间时,会造成该内存的存储资源的浪费,而当该目标程序的预取时间点晚于启动时间点时,会导致启动该目标程序的速度较慢,无法达到预取数据以加快启动速度的目的。因此,需要根据该预取数据库中的历史启动信息对该目标程序的启动时间点进行推测,并根据推测的启动时间点确定该目标程序的预取时间点,使得该预取时间点到该启动时间点的时间间隔最小,即保证在启动该目标程序之前完成预取数据的过程,又可以保证不会造成该内存的存储资源的过多浪费,将预取数据过程对该操作系统的影响降至最低。可选地,该步骤203包括:将每个目标程序的启动时间点平均值和预设预取耗时之差确定为每个目标程序的预取时间点。其中,该预设预取耗时是指将该目标程序对应的预取数据从硬盘中加载入该内存中所消耗的时间预估值,可以由技术人员在开发时根据该预取数据的大小和数据读取速度进行预先估计,本发明实施例对此不做限定。具体地,根据该预取数据库中的历史启动信息,将每个目标程序的启动时间点的平均值确定为每个目标程序的推测启动时间点,将该推测启动时间点与该预设预取耗时之差确定为每个目标程序的预取时间点,使得在预取时间点开始获取每个目标程序对应的预取数据,经过该预设预取耗时的时间间隔后获取预取数据的过程完成,此时到达该推测启动时间点,保证了该预取时间点到该启动时间点的时间间隔最小,将预取数据过程对该操作系统的影响降至最低。可选地,在本发明实施例的另一实现方式中,该步骤203包括:将每个目标程序的启动时间点平均值和预设预取耗时之差确定为每个目标程序的预取时间点,并根据每个目标程序的启动次数,调整每个目标程序的预取时间点。对于在该第一预设时长内启动次数较小的目标程序,启动的可能性很小。若仅根据该目标程序的启动时间点平均值和预设预取耗时确定该目标程序的预取时间点,该预取时间点相较于其他目标程序可能会很小,即该目标程序预取数据的时刻早于其他目标程序,而由于该目标程序的启动可能性很小,当该目标程序未启动时,会造成该内存的存储资源的浪费。因此,可以结合该目标程序的在近期的第一预设时长内的启动次数,调整该目标程序的预取时间点。本发明实施例对具体的调整算法不做限定,只需保证将预取数据过程对该操作系统的影响降至最低即可。204:在该操作系统自启动项启动过程中,按照每个目标程序的预取时间点,分别将每个目标程序对应的预取数据加载入该内存,并锁定加载的数据,执行步骤205或步骤208;在确定了每个目标程序的预取时间点之后,按照每个目标程序的预取时间点,分别将每个目标程序对应的预取数据加载入该内存,在加载后锁定加载的数据,保证预取数据不会被置换或被销毁。205:当检测到第一目标程序的启动事件时,将该第一目标程序对应的预取数据解锁,该第一目标程序为任一目标程序;206:从该内存中加载该第一目标程序对应的预取数据;207:运行该第一目标程序的代码,以启动该第一目标程序,结束。本发明实施例以该第一目标程序为例进行说明。当检测到该第一目标程序的启动事件时,将该第一目标程序对应的预取数据解锁,并根据该内存中的该第一目标程序对应的预取数据,运行该第一目标程序的代码,以启动该第一目标程序。208:当在将该第一目标程序对应的预取数据锁定结束后的超时阈值内未检测到该第一目标程序的启动事件时,将该内存中加载的该第一目标程序的预取数据解锁。在将该第一目标程序对应的预取数据锁定结束后,开始计时,当计时时间到达超时阈值,且在该计时时间内未检测到该第一目标程序的启动事件时,认为该第一目标程序超时未启动,因此,为了避免长时间占用内存的存储资源,将该第一目标程序对应的预取数据解锁。可选地,该第一目标程序的超时阈值根据该第一目标程序的最早启动时间点、最晚启动时间点和预设最大超时阈值确定,超时阈值=min(预设最大超时阈值,最晚启动时间点-最早启动时间点);其中,该预设最大超时阈值可以由技术人员在开发时设置,本发明实施例对此不做限定。具体地,当该最晚启动时间点与该最早启动时间点的差值大于等于该预设最大超时阈值时,将该最大超时阈值确定为该超时阈值,当该最晚启动时间点与该最早启动时间点的差值小于该预设最大超时阈值时,将该最晚启动时间点与该最早启动时间点的差值确定为该超时阈值。例如,表2是本发明实施例提供的一种历史启动信息表,表明在最近30天内程序A、B、C、D的历史启动信息。表2程序名称启动次数启动时间点平均值最早启动时间点最晚启动时间点A555.2s30s88sB1944.8s42s55sC1058.3s48s63sD2259.7s52s90s根据30天内每个程序的启动次数,确定该至少一个目标程序为程序B和程序D。以程序D为例,启动时间点平均值为59.7s,假设程序D的预设预取耗时为10s,则程序D的预取时间点为49.7s,即在该操作系统启动49.7s后,开始将程序D对应的预取数据加载入该内存中。程序D的最早启动时间点为52s,最晚启动时间点为90s,则该最晚启动时间点与该最早启动时间点的差值为38s,假设该预设最大超时阈值为60s,则该最晚启动时间点与该最早启动时间点的差值小于该预设最大超时阈值,将该最晚启动时间点与该最早启动时间点的差值确定为该超时阈值,即确定该超时阈值为38s。程序D的启动时间点平均值为59.7s,假设在60s时锁定加载的数据过程结束,则若计时时间到达38s即当前的时间到达98s时还未检测到程序D的启动事件,则认为程序D的超时未启动,将程序D锁定的数据解锁。在上述步骤201-208之后,该方法还包括:收集该操作系统启动第二预设时长内该操作系统已安装的每个程序的启动信息,将收集到的启动信息保存至该预设数据库。收集该操作系统启动第二预设时长内该操作系统已安装的每个程序的启动信息,将该启动信息保存至该预设数据库中相应的历史启动信息中,便于在下次操作系统启动时根据更新后的历史启动信息再次执行上述步骤201-208,实现程序的启动加速。相应地,在收集到每个程序的启动信息,并更新了历史启动信息之后,由于每个程序的最早启动时间点和最晚启动时间点可能会发生变化,因此根据更新后的历史启动信息重新确定每个程序的超时阈值,即随着收集每个程序的启动信息,可以动态地改变每个程序的超时阈值。该启动信息的收集过程可以在该操作系统启动后经过该第二预设时长后进行,也可以在检测到关机指令时,在关机程序之前进行。该重新确定每个程序的超时阈值的过程可以在该收集过程之后进行。本发明实施例对此均不做限定。本发明实施例提供的方法,通过根据程序的历史启动信息确定需要进行数据预取的目标程序以及每个目标程序的预取时间点,在启动过程中,按照每个目标程序的预取时间点,分别将目标程序的预取数据加载入内存,使得在目标程序启动时,可以直接从内存中访问到预取数据,避免了大量的磁盘I/O,节省了该目标程序的启动时间,加快了该目标程序的启动速度,且通过锁定加载的数据,保证了预取的数据不会在操作系统的运行过程中被置换或者被销毁。同时保证了每个目标程序的预取时间点到启动时间点的时间间隔最小,使得预取数据过程对该操作系统的影响达到最小。图3是本发明实施例提供的一种程序启动装置结构示意图。该发明实施例的执行主体为终端设备,参见图3,所述装置包括:目标程序确定模块31、加载锁定模块32、解锁模块33、数据加载模块34、代码运行模块35,其中,目标程序确定模块31用于根据预取数据库中每个程序的历史启动信息,确定至少一个目标程序,所述历史启动信息至少包括程序的启动时间点;加载锁定模块32与目标程序确定模块31连接,加载锁定模块32用于在操作系统自启动项的启动过程中,将所述至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据;解锁模块33与加载锁定模块32连接,解锁模块33用于当检测到第一目标程序的启动事件时,将所述第一目标程序对应的预取数据解锁,所述第一目标程序为任一目标程序;数据加载模块34与解锁模块33连接,数据加载模块34用于从所述内存中加载所述第一目标程序对应的预取数据;代码运行模块35与数据加载模块34连接,代码运行模块35用于运行所述第一目标程序的代码,以启动所述第一目标程序。可选地,所述目标程序确定模块31包括:排序确定单元,用于按照第一预设时长内所述每个程序的启动次数从大到小的顺序,从所述每个程序中获取预设数目的目标程序;或,阈值确定单元,用于根据所述每个程序的启动次数,将启动次数大于预设阈值的程序确定为所述至少一个目标程序。可选地,所述历史启动信息还包括程序的启动时间点,相应地,所述装置还包括:平均值获取模块,用于根据每个目标程序的启动时间点,获取每个目标程序的启动时间点平均值;时间点确定模块,用于根据每个目标程序的启动时间点平均值和预设预取耗时,确定每个目标程序的预取时间点;相应地,所述加载锁定模块32用于在所述操作系统自启动项启动过程中,按照每个目标程序的预取时间点,分别将每个目标程序对应的预取数据加载入所述内存,并锁定加载的数据。可选地,所述装置还包括:信息收集模块,用于收集所述操作系统启动第二预设时长内所述操作系统已安装的每个程序的启动信息,将收集到的启动信息保存至所述预设数据库。可选地,所述装置还包括:启动超时模块,用于当在将第二目标程序对应的预取数据锁定结束后的超时阈值内未检测到所述第二目标程序的启动事件时,将所述内存中加载的所述第二目标程序的预取数据解锁,所述第二目标程序为所述第一目标程序之外的任一目标程序。可选地,每个目标程序的超时阈值根据每个目标程序的最早启动时间点、最晚启动时间点和预设最大超时阈值确定,超时阈值=min(预设最大超时阈值,最晚启动时间点-最早启动时间点)。本发明实施例提供的装置,通过根据程序的历史启动信息确定需要进行数据预取的目标程序以及每个目标程序的预取时间点,在启动过程中,按照每个目标程序的预取时间点,分别将目标程序的预取数据加载入内存,使得在目标程序启动时,可以直接从内存中访问到预取数据,避免了大量的磁盘I/O,节省了该目标程序的启动时间,加快了该目标程序的启动速度,且通过锁定加载的数据,保证了预取的数据不会在操作系统的运行过程中被置换或者被销毁。同时保证了每个目标程序的预取时间点到启动时间点的时间间隔最小,使得预取数据过程对该操作系统的影响达到最小。需要说明的是:上述实施例提供的程序启动的装置在程序启动时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将终端设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的程序启动的装置与程序启动的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。由于本发明的实施例通常结合一定的计算环境、计算机系统或者说硬件来实现。故图4及相应的描述旨在提供对可以实现本发明的实施例中的合适的计算环境进行简单和概括的描述。尽管图4中利用在服务器或者个人计算机系统上执行的计算环境作为一般性环境来描述本发明,但是本领域的技术人员应该意识到,本发明也可以结合其它类型的计算机系统和程序模块来实现。一般而言,程序模块包括执行特定任务或实现特定的抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。而且,本领域的技术人员将了解,本发明可以用诸如包括手持式设备、多处理器系统、基于微处理器的或者可编程消费电子产品、小型计算机、大型计算机等计算机系统配置来实施。并且,本发明也可以在分布式计算环境中来实施,其可以用通过网络连接的远程处理设备来执行任务,在分布式计算环境中,程序模块可以位于本地和远程存储设备两者中的任意位置。图4是本发明实施例涉及的终端设备结构示意图。所述计算机400为常规的台式计算机或者膝上型笔记本,所述计算机400包括中央处理单元(CPU)401、包括随机存取存储器(RAM)402和只读存储器(ROM)403的系统存储器404,以及连接系统存储器404和中央处理单元401的系统总线405。所述计算机400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)406,和用于存储操作系统、应用程序和其他程序模块的大容量存储设备407。所述基本输入/输出系统406包括有用于显示信息的显示器408和用于用户输入信息的诸如鼠标、键盘之类的输入设备409。其中所述显示器408和输入设备409都通过连接到系统总线405的输入输出控制器410连接到中央处理单元401。所述基本输入/输出系统406还可以包括输入输出控制器410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器410还提供输出到显示屏、打印机或其他类型的输出设备。所述大容量存储设备407通过连接到系统总线405的大容量存储控制器(未示出)连接到中央处理单元401。所述大容量存储设备407及其相关联的计算机可读介质为计算机400提供非易失性存储。也就是说,所述大容量存储设备407可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。根据本发明的各种实施例,所述计算机400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机400可以通过连接在所述系统总线405上的网络接口单元411连接到网络412,或者说,也可以使用网络接口单元111来连接到其他类型的网络或远程计算机系统(未示出)。终端设备还包括一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器404中,且经配置以由一个或者一个以上中央处理单元401执行所述一个或者一个以上程序包含用于进行以下操作的指令:根据预取数据库中每个程序的历史启动信息,确定至少一个目标程序,所述历史启动信息至少包括程序的启动时间点;在操作系统自启动项的启动过程中,将所述至少一个目标程序对应的预取数据加载入内存,并锁定加载的数据;当检测到第一目标程序的启动事件时,将所述第一目标程序对应的预取数据解锁,所述第一目标程序为任一目标程序;从所述内存中加载所述第一目标程序对应的预取数据;运行所述第一目标程序的代码,以启动所述第一目标程序。可选地,还包含用于进行以下操作的指令:按照第一预设时长内所述每个程序的启动次数从大到小的顺序,从所述每个程序中获取预设数目的目标程序;或,根据所述每个程序的启动次数,将启动次数大于预设阈值的程序确定为所述至少一个目标程序。可选地,还包含用于进行以下操作的指令:根据每个目标程序的启动时间点,获取每个目标程序的启动时间点平均值;根据每个目标程序的启动时间点平均值和预设预取耗时,确定每个目标程序的预取时间点;相应地,还包含用于进行以下操作的指令:在所述操作系统自启动项启动过程中,按照每个目标程序的预取时间点,分别将每个目标程序对应的预取数据加载入所述内存,并锁定加载的数据。可选地,还包含用于进行以下操作的指令:收集所述操作系统启动第二预设时长内所述操作系统已安装的每个程序的启动信息,将收集到的启动信息保存至所述预设数据库。可选地,还包含用于进行以下操作的指令:当在将第二目标程序对应的预取数据锁定结束后的超时阈值内未检测到所述第二目标程序的启动事件时,将所述内存中加载的所述第二目标程序的预取数据解锁,所述第二目标程序为所述第一目标程序之外的任一目标程序。可选地,每个目标程序的超时阈值根据每个目标程序的最早启动时间点、最晚启动时间点和预设最大超时阈值确定,超时阈值=min(预设最大超时阈值,最晚启动时间点-最早启动时间点)。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。